From 87367cbf4ef3e7fb440de769a48d8f918f4c7cf1 Mon Sep 17 00:00:00 2001 From: Chris Jackson Date: Tue, 27 Aug 2013 23:18:05 +0100 Subject: [PATCH] Initial Checkin --- .gitignore | 215 + app/app.js | 542 + app/automation/automation.js | 81 + app/automation/notificationList.js | 47 + app/automation/ruleList.js | 47 + app/config/bindingList.js | 87 + app/config/bindingProperties.js | 168 + app/config/config.js | 82 + app/config/groupProperties.js | 167 + app/config/itemBindings.js | 49 + app/config/itemList.js | 108 + app/config/itemProperties.js | 208 + app/config/mappingList.js | 48 + app/config/mappingProperties.js | 213 + app/config/sitemapList.js | 85 + app/config/sitemapProperties.js | 186 + app/config/zwaveDeviceList.js | 49 + app/config/zwaveNetwork.js | 49 + app/graph/graph.js | 84 + app/graph/graphHighcharts.js | 545 + app/graph/graphList.js | 46 + app/graph/graphTable.js | 109 + app/graph/itemList.js | 214 + app/graph/saveGraph.js | 300 + app/habmin.css | 267 + app/system/logViewer.js | 49 + app/system/system.js | 61 + app/system/systemBindings.js | 112 + debug.html | 44 + images/application-list.png | Bin 0 -> 504 bytes images/arrow_left.png | Bin 0 -> 345 bytes images/arrow_right.png | Bin 0 -> 349 bytes images/battery-charge.png | Bin 0 -> 743 bytes images/bell.png | Bin 0 -> 764 bytes images/block.png | Bin 0 -> 630 bytes images/brightness.png | Bin 0 -> 743 bytes images/calendar-select-month.png | Bin 0 -> 627 bytes images/calendar-select-week.png | Bin 0 -> 638 bytes images/calendar-select.png | Bin 0 -> 635 bytes images/calendar.png | Bin 0 -> 710 bytes images/category-group.png | Bin 0 -> 578 bytes images/chain.png | Bin 0 -> 430 bytes images/chart-up.png | Bin 0 -> 721 bytes images/chart_curve_add.png | Bin 0 -> 761 bytes images/chart_yaxis.png | Bin 0 -> 531 bytes images/chart_yaxis2.png | Bin 0 -> 537 bytes images/clipboard--exclamation.png | Bin 0 -> 690 bytes images/clipboard.png | Bin 0 -> 517 bytes images/clock--plus.png | Bin 0 -> 754 bytes images/clock.png | Bin 0 -> 692 bytes images/co2.png | Bin 0 -> 1726 bytes images/color.png | Bin 0 -> 811 bytes images/compass.png | Bin 0 -> 850 bytes images/computer.png | Bin 0 -> 566 bytes images/counter.png | Bin 0 -> 424 bytes images/cross-circle-24.png | Bin 0 -> 2307 bytes images/cross-small.png | Bin 0 -> 344 bytes images/cross.png | Bin 0 -> 544 bytes images/curtain.png | Bin 0 -> 1500 bytes images/dashboard.png | Bin 0 -> 646 bytes images/database-sql.png | Bin 0 -> 748 bytes images/disk.png | Bin 0 -> 507 bytes images/disks.png | Bin 0 -> 617 bytes images/document-node.png | Bin 0 -> 668 bytes images/door-open.png | Bin 0 -> 553 bytes images/edit.png | Bin 0 -> 445 bytes images/exclamation-24.png | Bin 0 -> 1065 bytes images/exclamation-small-red.png | Bin 0 -> 334 bytes images/exclamation-small.png | Bin 0 -> 378 bytes images/exclamation.png | Bin 0 -> 654 bytes images/external.png | Bin 0 -> 685 bytes images/fire.png | Bin 0 -> 606 bytes images/flag-green.png | Bin 0 -> 777 bytes images/flag-white.png | Bin 0 -> 698 bytes images/flag.png | Bin 0 -> 728 bytes images/gear.png | Bin 0 -> 736 bytes images/ghost.png | Bin 0 -> 363 bytes images/hammer-screwdriver.png | Bin 0 -> 786 bytes images/information-balloon.png | Bin 0 -> 745 bytes images/layer--pencil.png | Bin 0 -> 694 bytes images/light-bulb-code.png | Bin 0 -> 802 bytes images/light-bulb-off.png | Bin 0 -> 723 bytes images/light-bulb-small-off.png | Bin 0 -> 341 bytes images/light-bulb-small.png | Bin 0 -> 345 bytes images/light-bulb.png | Bin 0 -> 743 bytes images/loading.gif | Bin 0 -> 4773 bytes images/lock.png | Bin 0 -> 1535 bytes images/maps-stack.png | Bin 0 -> 1493 bytes images/minus-button.png | Bin 0 -> 479 bytes images/network-ethernet.png | Bin 0 -> 577 bytes images/node-select-child.png | Bin 0 -> 655 bytes images/node-select.png | Bin 0 -> 630 bytes images/node.png | Bin 0 -> 548 bytes images/null.png | Bin 0 -> 495 bytes images/pencil-small.png | Bin 0 -> 384 bytes images/plug.png | Bin 0 -> 678 bytes images/plus-button.png | Bin 0 -> 583 bytes images/property.png | Bin 0 -> 769 bytes images/question.png | Bin 0 -> 766 bytes images/remote-control.png | Bin 0 -> 1458 bytes images/settings.png | Bin 0 -> 434 bytes images/socket--arrow.png | Bin 0 -> 630 bytes images/status-busy.png | Bin 0 -> 439 bytes images/status-offline.png | Bin 0 -> 448 bytes images/status.png | Bin 0 -> 433 bytes images/sum.png | Bin 0 -> 292 bytes images/switch.png | Bin 0 -> 541 bytes images/system-monitor-24.png | Bin 0 -> 836 bytes images/system-monitor.png | Bin 0 -> 547 bytes images/table-export.png | Bin 0 -> 650 bytes images/tables-relation.png | Bin 0 -> 673 bytes images/tag.png | Bin 0 -> 712 bytes images/television.png | Bin 0 -> 533 bytes images/thermometer-high.png | Bin 0 -> 1647 bytes images/thermometer-low.png | Bin 0 -> 1607 bytes images/thermometer.png | Bin 0 -> 1510 bytes images/tick-red.png | Bin 0 -> 1515 bytes images/tick-small.png | Bin 0 -> 283 bytes images/tick.png | Bin 0 -> 634 bytes images/ui-slider.png | Bin 0 -> 404 bytes images/water.png | Bin 0 -> 615 bytes images/weather-cloudy.png | Bin 0 -> 723 bytes images/weather-moon-half.png | Bin 0 -> 1426 bytes images/webcam.png | Bin 0 -> 771 bytes images/zoom_in.png | Bin 0 -> 725 bytes images/zoom_out.png | Bin 0 -> 708 bytes index.html | 13 + js/ext-all-debug.js | 130568 +++++++++++++++ js/ext-all.js | 21 + js/extux/statusbar/StatusBar.js | 405 + js/extux/statusbar/ValidationStatus.js | 210 + js/extux/statusbar/css/statusbar.css | 116 + js/extux/statusbar/images/accept.png | Bin 0 -> 781 bytes js/extux/statusbar/images/exclamation.gif | Bin 0 -> 996 bytes js/extux/statusbar/images/loading.gif | Bin 0 -> 771 bytes js/extux/statusbar/images/saved.png | Bin 0 -> 537 bytes js/extux/statusbar/images/saving.gif | Bin 0 -> 2255 bytes js/highcharts-more.js | 50 + js/highcharts.js | 277 + js/jquery-1.6.4.js | 4 + js/jquery.atmosphere.js | 1756 + js/jquery.min.js | 4 + openhab/owserver.xml | 188 + openhab/snmp.xml | 182 + resources/css/ext-all-debug.css | 1 + resources/css/ext-all.css | 1 + resources/ext-theme-classic/Readme.md | 3 + .../ext-theme-classic-all-debug.css | 19527 +++ .../ext-theme-classic-all-rtl-debug.css | 20927 +++ .../ext-theme-classic-all-rtl.css | 1 + .../ext-theme-classic-all.css | 1 + .../images/boundlist/trigger-arrow.png | Bin 0 -> 2869 bytes .../images/box/corners-blue.gif | Bin 0 -> 1010 bytes .../ext-theme-classic/images/box/corners.gif | Bin 0 -> 1005 bytes .../ext-theme-classic/images/box/l-blue.gif | Bin 0 -> 810 bytes resources/ext-theme-classic/images/box/l.gif | Bin 0 -> 810 bytes .../ext-theme-classic/images/box/r-blue.gif | Bin 0 -> 810 bytes resources/ext-theme-classic/images/box/r.gif | Bin 0 -> 810 bytes .../ext-theme-classic/images/box/tb-blue.gif | Bin 0 -> 851 bytes resources/ext-theme-classic/images/box/tb.gif | Bin 0 -> 839 bytes .../btn-group-default-framed-corners.gif | Bin 0 -> 110 bytes ...n-group-default-framed-notitle-corners.gif | Bin 0 -> 110 bytes ...btn-group-default-framed-notitle-sides.gif | Bin 0 -> 99 bytes .../btn-group-default-framed-sides.gif | Bin 0 -> 106 bytes .../images/btn/btn-default-large-bg.gif | Bin 0 -> 166 bytes .../images/btn/btn-default-large-corners.gif | Bin 0 -> 133 bytes .../btn/btn-default-large-disabled-bg.gif | Bin 0 -> 166 bytes .../btn-default-large-disabled-corners.gif | Bin 0 -> 134 bytes .../btn/btn-default-large-disabled-fbg.gif | Bin 0 -> 162 bytes .../btn/btn-default-large-disabled-sides.gif | Bin 0 -> 457 bytes .../images/btn/btn-default-large-fbg.gif | Bin 0 -> 162 bytes .../images/btn/btn-default-large-focus-bg.gif | Bin 0 -> 212 bytes .../btn/btn-default-large-focus-corners.gif | Bin 0 -> 184 bytes .../btn/btn-default-large-focus-fbg.gif | Bin 0 -> 212 bytes .../btn/btn-default-large-focus-sides.gif | Bin 0 -> 517 bytes .../images/btn/btn-default-large-over-bg.gif | Bin 0 -> 212 bytes .../btn/btn-default-large-over-corners.gif | Bin 0 -> 184 bytes .../images/btn/btn-default-large-over-fbg.gif | Bin 0 -> 212 bytes .../btn/btn-default-large-over-sides.gif | Bin 0 -> 517 bytes .../btn/btn-default-large-pressed-bg.gif | Bin 0 -> 220 bytes .../btn/btn-default-large-pressed-corners.gif | Bin 0 -> 187 bytes .../btn/btn-default-large-pressed-fbg.gif | Bin 0 -> 216 bytes .../btn/btn-default-large-pressed-sides.gif | Bin 0 -> 535 bytes .../images/btn/btn-default-large-sides.gif | Bin 0 -> 457 bytes .../images/btn/btn-default-medium-bg.gif | Bin 0 -> 158 bytes .../images/btn/btn-default-medium-corners.gif | Bin 0 -> 133 bytes .../btn/btn-default-medium-disabled-bg.gif | Bin 0 -> 158 bytes .../btn-default-medium-disabled-corners.gif | Bin 0 -> 134 bytes .../btn/btn-default-medium-disabled-fbg.gif | Bin 0 -> 158 bytes .../btn/btn-default-medium-disabled-sides.gif | Bin 0 -> 435 bytes .../images/btn/btn-default-medium-fbg.gif | Bin 0 -> 158 bytes .../btn/btn-default-medium-focus-bg.gif | Bin 0 -> 208 bytes .../btn/btn-default-medium-focus-corners.gif | Bin 0 -> 184 bytes .../btn/btn-default-medium-focus-fbg.gif | Bin 0 -> 205 bytes .../btn/btn-default-medium-focus-sides.gif | Bin 0 -> 492 bytes .../images/btn/btn-default-medium-over-bg.gif | Bin 0 -> 208 bytes .../btn/btn-default-medium-over-corners.gif | Bin 0 -> 184 bytes .../btn/btn-default-medium-over-fbg.gif | Bin 0 -> 205 bytes .../btn/btn-default-medium-over-sides.gif | Bin 0 -> 492 bytes .../btn/btn-default-medium-pressed-bg.gif | Bin 0 -> 212 bytes .../btn-default-medium-pressed-corners.gif | Bin 0 -> 187 bytes .../btn/btn-default-medium-pressed-fbg.gif | Bin 0 -> 208 bytes .../btn/btn-default-medium-pressed-sides.gif | Bin 0 -> 510 bytes .../images/btn/btn-default-medium-sides.gif | Bin 0 -> 435 bytes .../images/btn/btn-default-small-bg.gif | Bin 0 -> 152 bytes .../images/btn/btn-default-small-corners.gif | Bin 0 -> 131 bytes .../btn/btn-default-small-disabled-bg.gif | Bin 0 -> 152 bytes .../btn-default-small-disabled-corners.gif | Bin 0 -> 134 bytes .../btn/btn-default-small-disabled-fbg.gif | Bin 0 -> 149 bytes .../btn/btn-default-small-disabled-sides.gif | Bin 0 -> 405 bytes .../images/btn/btn-default-small-fbg.gif | Bin 0 -> 149 bytes .../images/btn/btn-default-small-focus-bg.gif | Bin 0 -> 151 bytes .../btn/btn-default-small-focus-corners.gif | Bin 0 -> 184 bytes .../btn/btn-default-small-focus-fbg.gif | Bin 0 -> 148 bytes .../btn/btn-default-small-focus-sides.gif | Bin 0 -> 404 bytes .../images/btn/btn-default-small-over-bg.gif | Bin 0 -> 151 bytes .../btn/btn-default-small-over-corners.gif | Bin 0 -> 184 bytes .../images/btn/btn-default-small-over-fbg.gif | Bin 0 -> 148 bytes .../btn/btn-default-small-over-sides.gif | Bin 0 -> 404 bytes .../btn/btn-default-small-pressed-bg.gif | Bin 0 -> 202 bytes .../btn/btn-default-small-pressed-corners.gif | Bin 0 -> 187 bytes .../btn/btn-default-small-pressed-fbg.gif | Bin 0 -> 198 bytes .../btn/btn-default-small-pressed-sides.gif | Bin 0 -> 468 bytes .../images/btn/btn-default-small-sides.gif | Bin 0 -> 405 bytes ...default-toolbar-large-disabled-corners.gif | Bin 0 -> 124 bytes ...n-default-toolbar-large-disabled-sides.gif | Bin 0 -> 315 bytes .../btn-default-toolbar-large-focus-bg.gif | Bin 0 -> 217 bytes ...tn-default-toolbar-large-focus-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-large-focus-fbg.gif | Bin 0 -> 215 bytes .../btn-default-toolbar-large-focus-sides.gif | Bin 0 -> 529 bytes .../btn/btn-default-toolbar-large-over-bg.gif | Bin 0 -> 217 bytes ...btn-default-toolbar-large-over-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-large-over-fbg.gif | Bin 0 -> 215 bytes .../btn-default-toolbar-large-over-sides.gif | Bin 0 -> 529 bytes .../btn-default-toolbar-large-pressed-bg.gif | Bin 0 -> 220 bytes ...-default-toolbar-large-pressed-corners.gif | Bin 0 -> 188 bytes .../btn-default-toolbar-large-pressed-fbg.gif | Bin 0 -> 215 bytes ...tn-default-toolbar-large-pressed-sides.gif | Bin 0 -> 527 bytes ...efault-toolbar-medium-disabled-corners.gif | Bin 0 -> 124 bytes ...-default-toolbar-medium-disabled-sides.gif | Bin 0 -> 315 bytes .../btn-default-toolbar-medium-focus-bg.gif | Bin 0 -> 210 bytes ...n-default-toolbar-medium-focus-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-medium-focus-fbg.gif | Bin 0 -> 208 bytes ...btn-default-toolbar-medium-focus-sides.gif | Bin 0 -> 507 bytes .../btn-default-toolbar-medium-over-bg.gif | Bin 0 -> 210 bytes ...tn-default-toolbar-medium-over-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-medium-over-fbg.gif | Bin 0 -> 208 bytes .../btn-default-toolbar-medium-over-sides.gif | Bin 0 -> 507 bytes .../btn-default-toolbar-medium-pressed-bg.gif | Bin 0 -> 211 bytes ...default-toolbar-medium-pressed-corners.gif | Bin 0 -> 188 bytes ...btn-default-toolbar-medium-pressed-fbg.gif | Bin 0 -> 208 bytes ...n-default-toolbar-medium-pressed-sides.gif | Bin 0 -> 505 bytes ...default-toolbar-small-disabled-corners.gif | Bin 0 -> 124 bytes ...n-default-toolbar-small-disabled-sides.gif | Bin 0 -> 315 bytes .../btn-default-toolbar-small-focus-bg.gif | Bin 0 -> 201 bytes ...tn-default-toolbar-small-focus-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-small-focus-fbg.gif | Bin 0 -> 150 bytes .../btn-default-toolbar-small-focus-sides.gif | Bin 0 -> 467 bytes .../btn/btn-default-toolbar-small-over-bg.gif | Bin 0 -> 201 bytes ...btn-default-toolbar-small-over-corners.gif | Bin 0 -> 187 bytes .../btn-default-toolbar-small-over-fbg.gif | Bin 0 -> 150 bytes .../btn-default-toolbar-small-over-sides.gif | Bin 0 -> 467 bytes .../btn-default-toolbar-small-pressed-bg.gif | Bin 0 -> 202 bytes ...-default-toolbar-small-pressed-corners.gif | Bin 0 -> 188 bytes .../btn-default-toolbar-small-pressed-fbg.gif | Bin 0 -> 198 bytes ...tn-default-toolbar-small-pressed-sides.gif | Bin 0 -> 468 bytes .../ext-theme-classic/images/button/arrow.gif | Bin 0 -> 828 bytes .../ext-theme-classic/images/button/btn.gif | Bin 0 -> 4298 bytes .../images/button/group-cs.gif | Bin 0 -> 2459 bytes .../images/button/group-lr.gif | Bin 0 -> 861 bytes .../images/button/group-tb.gif | Bin 0 -> 846 bytes .../images/button/s-arrow-b-noline.gif | Bin 0 -> 898 bytes .../images/button/s-arrow-b.gif | Bin 0 -> 937 bytes .../images/button/s-arrow-bo.gif | Bin 0 -> 139 bytes .../images/button/s-arrow-light-rtl.gif | Bin 0 -> 96 bytes .../images/button/s-arrow-light.gif | Bin 0 -> 116 bytes .../images/button/s-arrow-noline-rtl.gif | Bin 0 -> 76 bytes .../images/button/s-arrow-noline.gif | Bin 0 -> 863 bytes .../images/button/s-arrow-o-rtl.gif | Bin 0 -> 151 bytes .../images/button/s-arrow-o.gif | Bin 0 -> 937 bytes .../images/button/s-arrow-rtl.gif | Bin 0 -> 151 bytes .../images/button/s-arrow.gif | Bin 0 -> 937 bytes .../datepicker/datepicker-footer-bg.gif | Bin 0 -> 208 bytes .../datepicker/datepicker-header-bg.gif | Bin 0 -> 208 bytes .../ext-theme-classic/images/dd/drop-add.gif | Bin 0 -> 1001 bytes .../ext-theme-classic/images/dd/drop-no.gif | Bin 0 -> 949 bytes .../ext-theme-classic/images/dd/drop-yes.gif | Bin 0 -> 1016 bytes .../images/editor/tb-sprite.gif | Bin 0 -> 2072 bytes .../images/form/checkbox.gif | Bin 0 -> 2061 bytes .../images/form/clear-trigger-rtl.gif | Bin 0 -> 1958 bytes .../images/form/clear-trigger.gif | Bin 0 -> 1988 bytes .../images/form/date-trigger-rtl.gif | Bin 0 -> 988 bytes .../images/form/date-trigger.gif | Bin 0 -> 1603 bytes .../images/form/error-tip-corners.gif | Bin 0 -> 4183 bytes .../images/form/exclamation.gif | Bin 0 -> 996 bytes .../ext-theme-classic/images/form/radio.gif | Bin 0 -> 1744 bytes .../images/form/search-trigger-rtl.gif | Bin 0 -> 2201 bytes .../images/form/search-trigger.gif | Bin 0 -> 2182 bytes .../images/form/spinner-rtl.gif | Bin 0 -> 1975 bytes .../images/form/spinner-small-rtl.gif | Bin 0 -> 747 bytes .../images/form/spinner-small.gif | Bin 0 -> 743 bytes .../ext-theme-classic/images/form/spinner.gif | Bin 0 -> 1975 bytes .../ext-theme-classic/images/form/text-bg.gif | Bin 0 -> 819 bytes .../images/form/trigger-rtl.gif | Bin 0 -> 1817 bytes .../images/form/trigger-square-rtl.gif | Bin 0 -> 1798 bytes .../images/form/trigger-square.gif | Bin 0 -> 1810 bytes .../images/form/trigger-tpl-rtl.gif | Bin 0 -> 845 bytes .../images/form/trigger-tpl.gif | Bin 0 -> 1487 bytes .../ext-theme-classic/images/form/trigger.gif | Bin 0 -> 1816 bytes ...-editor-buttons-default-bottom-corners.gif | Bin 0 -> 207 bytes ...ow-editor-buttons-default-bottom-sides.gif | Bin 0 -> 100 bytes ...row-editor-buttons-default-top-corners.gif | Bin 0 -> 206 bytes ...d-row-editor-buttons-default-top-sides.gif | Bin 0 -> 100 bytes .../images/grid/arrow-left-white.gif | Bin 0 -> 825 bytes .../images/grid/arrow-right-white.gif | Bin 0 -> 825 bytes .../images/grid/cell-special-bg.gif | Bin 0 -> 1636 bytes .../images/grid/cell-special-bg.png | Bin 0 -> 121 bytes .../images/grid/cell-special-selected-bg.gif | Bin 0 -> 1640 bytes .../images/grid/cell-special-selected-bg.png | Bin 0 -> 136 bytes .../images/grid/col-move-bottom.gif | Bin 0 -> 868 bytes .../images/grid/col-move-top.gif | Bin 0 -> 869 bytes .../images/grid/column-header-bg.gif | Bin 0 -> 203 bytes .../images/grid/column-header-over-bg.gif | Bin 0 -> 104 bytes .../ext-theme-classic/images/grid/columns.gif | Bin 0 -> 962 bytes .../images/grid/dd-insert-arrow-left.gif | Bin 0 -> 299 bytes .../images/grid/dd-insert-arrow-left.png | Bin 0 -> 345 bytes .../images/grid/dd-insert-arrow-right.gif | Bin 0 -> 301 bytes .../images/grid/dd-insert-arrow-right.png | Bin 0 -> 349 bytes .../images/grid/dirty-rtl.gif | Bin 0 -> 56 bytes .../ext-theme-classic/images/grid/dirty.gif | Bin 0 -> 832 bytes .../ext-theme-classic/images/grid/done.gif | Bin 0 -> 133 bytes .../ext-theme-classic/images/grid/drop-no.gif | Bin 0 -> 947 bytes .../images/grid/drop-yes.gif | Bin 0 -> 860 bytes .../images/grid/footer-bg.gif | Bin 0 -> 834 bytes .../images/grid/grid-blue-hd.gif | Bin 0 -> 829 bytes .../images/grid/grid-blue-split.gif | Bin 0 -> 817 bytes .../images/grid/grid-hrow.gif | Bin 0 -> 855 bytes .../images/grid/grid-loading.gif | Bin 0 -> 701 bytes .../images/grid/grid-split.gif | Bin 0 -> 817 bytes .../images/grid/grid-vista-hd.gif | Bin 0 -> 829 bytes .../images/grid/grid3-hd-btn-left.gif | Bin 0 -> 596 bytes .../images/grid/grid3-hd-btn.gif | Bin 0 -> 1229 bytes .../images/grid/grid3-hrow-over.gif | Bin 0 -> 823 bytes .../images/grid/grid3-hrow.gif | Bin 0 -> 836 bytes .../images/grid/grid3-rowheader.gif | Bin 0 -> 43 bytes .../images/grid/group-by.gif | Bin 0 -> 917 bytes .../images/grid/group-collapse.gif | Bin 0 -> 861 bytes .../images/grid/group-expand-sprite.gif | Bin 0 -> 955 bytes .../images/grid/group-expand.gif | Bin 0 -> 864 bytes .../ext-theme-classic/images/grid/hd-pop.gif | Bin 0 -> 839 bytes .../images/grid/hmenu-asc.gif | Bin 0 -> 929 bytes .../images/grid/hmenu-desc.gif | Bin 0 -> 930 bytes .../images/grid/hmenu-lock.gif | Bin 0 -> 955 bytes .../images/grid/hmenu-lock.png | Bin 0 -> 648 bytes .../images/grid/hmenu-unlock.gif | Bin 0 -> 971 bytes .../images/grid/hmenu-unlock.png | Bin 0 -> 697 bytes .../images/grid/invalid_line.gif | Bin 0 -> 815 bytes .../ext-theme-classic/images/grid/loading.gif | Bin 0 -> 771 bytes .../ext-theme-classic/images/grid/mso-hd.gif | Bin 0 -> 875 bytes .../ext-theme-classic/images/grid/nowait.gif | Bin 0 -> 884 bytes .../images/grid/page-first-disabled.gif | Bin 0 -> 925 bytes .../images/grid/page-first.gif | Bin 0 -> 925 bytes .../images/grid/page-last-disabled.gif | Bin 0 -> 923 bytes .../images/grid/page-last.gif | Bin 0 -> 923 bytes .../images/grid/page-next-disabled.gif | Bin 0 -> 875 bytes .../images/grid/page-next.gif | Bin 0 -> 875 bytes .../images/grid/page-prev-disabled.gif | Bin 0 -> 879 bytes .../images/grid/page-prev.gif | Bin 0 -> 879 bytes .../images/grid/pick-button.gif | Bin 0 -> 1036 bytes .../images/grid/property-cell-bg.gif | Bin 0 -> 155 bytes .../images/grid/property-cell-selected-bg.gif | Bin 0 -> 843 bytes .../images/grid/refresh-disabled.gif | Bin 0 -> 577 bytes .../ext-theme-classic/images/grid/refresh.gif | Bin 0 -> 977 bytes .../images/grid/row-check-sprite.gif | Bin 0 -> 1083 bytes .../images/grid/row-expand-sprite.gif | Bin 0 -> 955 bytes .../images/grid/row-over.gif | Bin 0 -> 823 bytes .../ext-theme-classic/images/grid/row-sel.gif | Bin 0 -> 823 bytes .../ext-theme-classic/images/grid/sort-hd.gif | Bin 0 -> 1473 bytes .../images/grid/sort_asc.gif | Bin 0 -> 59 bytes .../images/grid/sort_desc.gif | Bin 0 -> 59 bytes .../ext-theme-classic/images/grid/wait.gif | Bin 0 -> 1100 bytes .../images/layout/mini-bottom.gif | Bin 0 -> 856 bytes .../images/layout/mini-left.gif | Bin 0 -> 871 bytes .../images/layout/mini-right.gif | Bin 0 -> 872 bytes .../images/layout/mini-top.gif | Bin 0 -> 856 bytes .../ext-theme-classic/images/menu/checked.gif | Bin 0 -> 959 bytes .../images/menu/group-checked.gif | Bin 0 -> 891 bytes .../images/menu/item-over.gif | Bin 0 -> 47 bytes .../images/menu/menu-item-active-bg.gif | Bin 0 -> 160 bytes .../images/menu/menu-parent-left.gif | Bin 0 -> 165 bytes .../images/menu/menu-parent.gif | Bin 0 -> 854 bytes .../ext-theme-classic/images/menu/menu.gif | Bin 0 -> 834 bytes .../images/menu/scroll-bottom.gif | Bin 0 -> 856 bytes .../images/menu/scroll-top.gif | Bin 0 -> 856 bytes .../images/menu/unchecked.gif | Bin 0 -> 941 bytes .../panel-header-default-bottom-bg.gif | Bin 0 -> 206 bytes .../panel-header-default-framed-bottom-bg.gif | Bin 0 -> 206 bytes ...l-header-default-framed-bottom-corners.gif | Bin 0 -> 210 bytes ...panel-header-default-framed-bottom-fbg.gif | Bin 0 -> 200 bytes ...nel-header-default-framed-bottom-sides.gif | Bin 0 -> 569 bytes ...der-default-framed-collapsed-bottom-bg.gif | Bin 0 -> 206 bytes ...efault-framed-collapsed-bottom-corners.gif | Bin 0 -> 325 bytes ...er-default-framed-collapsed-bottom-fbg.gif | Bin 0 -> 200 bytes ...-default-framed-collapsed-bottom-sides.gif | Bin 0 -> 569 bytes ...r-default-framed-collapsed-left-bg-rtl.gif | Bin 0 -> 203 bytes ...eader-default-framed-collapsed-left-bg.gif | Bin 0 -> 203 bytes ...ault-framed-collapsed-left-corners-rtl.gif | Bin 0 -> 351 bytes ...-default-framed-collapsed-left-corners.gif | Bin 0 -> 346 bytes ...-default-framed-collapsed-left-fbg-rtl.gif | Bin 0 -> 198 bytes ...ader-default-framed-collapsed-left-fbg.gif | Bin 0 -> 198 bytes ...efault-framed-collapsed-left-sides-rtl.gif | Bin 0 -> 396 bytes ...er-default-framed-collapsed-left-sides.gif | Bin 0 -> 399 bytes ...-default-framed-collapsed-right-bg-rtl.gif | Bin 0 -> 203 bytes ...ader-default-framed-collapsed-right-bg.gif | Bin 0 -> 203 bytes ...ult-framed-collapsed-right-corners-rtl.gif | Bin 0 -> 348 bytes ...default-framed-collapsed-right-corners.gif | Bin 0 -> 351 bytes ...default-framed-collapsed-right-fbg-rtl.gif | Bin 0 -> 198 bytes ...der-default-framed-collapsed-right-fbg.gif | Bin 0 -> 198 bytes ...fault-framed-collapsed-right-sides-rtl.gif | Bin 0 -> 399 bytes ...r-default-framed-collapsed-right-sides.gif | Bin 0 -> 396 bytes ...header-default-framed-collapsed-top-bg.gif | Bin 0 -> 206 bytes ...r-default-framed-collapsed-top-corners.gif | Bin 0 -> 326 bytes ...eader-default-framed-collapsed-top-fbg.gif | Bin 0 -> 200 bytes ...der-default-framed-collapsed-top-sides.gif | Bin 0 -> 574 bytes ...anel-header-default-framed-left-bg-rtl.gif | Bin 0 -> 203 bytes .../panel-header-default-framed-left-bg.gif | Bin 0 -> 203 bytes ...header-default-framed-left-corners-rtl.gif | Bin 0 -> 232 bytes ...nel-header-default-framed-left-corners.gif | Bin 0 -> 232 bytes ...nel-header-default-framed-left-fbg-rtl.gif | Bin 0 -> 198 bytes .../panel-header-default-framed-left-fbg.gif | Bin 0 -> 198 bytes ...l-header-default-framed-left-sides-rtl.gif | Bin 0 -> 396 bytes ...panel-header-default-framed-left-sides.gif | Bin 0 -> 399 bytes ...nel-header-default-framed-right-bg-rtl.gif | Bin 0 -> 203 bytes .../panel-header-default-framed-right-bg.gif | Bin 0 -> 203 bytes ...eader-default-framed-right-corners-rtl.gif | Bin 0 -> 232 bytes ...el-header-default-framed-right-corners.gif | Bin 0 -> 229 bytes ...el-header-default-framed-right-fbg-rtl.gif | Bin 0 -> 198 bytes .../panel-header-default-framed-right-fbg.gif | Bin 0 -> 198 bytes ...-header-default-framed-right-sides-rtl.gif | Bin 0 -> 399 bytes ...anel-header-default-framed-right-sides.gif | Bin 0 -> 396 bytes .../panel-header-default-framed-top-bg.gif | Bin 0 -> 206 bytes ...anel-header-default-framed-top-corners.gif | Bin 0 -> 212 bytes .../panel-header-default-framed-top-fbg.gif | Bin 0 -> 200 bytes .../panel-header-default-framed-top-sides.gif | Bin 0 -> 574 bytes .../panel-header-default-left-bg-rtl.gif | Bin 0 -> 203 bytes .../panel-header-default-left-bg.gif | Bin 0 -> 203 bytes .../panel-header-default-right-bg-rtl.gif | Bin 0 -> 203 bytes .../panel-header-default-right-bg.gif | Bin 0 -> 203 bytes .../panel-header-default-top-bg.gif | Bin 0 -> 206 bytes .../panel/panel-default-framed-corners.gif | Bin 0 -> 209 bytes .../panel/panel-default-framed-sides.gif | Bin 0 -> 88 bytes .../images/progress/progress-default-bg.gif | Bin 0 -> 200 bytes .../images/shared/blue-loading.gif | Bin 0 -> 3236 bytes .../images/shared/calendar.gif | Bin 0 -> 979 bytes .../images/shared/glass-bg.gif | Bin 0 -> 873 bytes .../images/shared/hd-sprite.gif | Bin 0 -> 1099 bytes .../images/shared/icon-error.gif | Bin 0 -> 1669 bytes .../images/shared/icon-info.gif | Bin 0 -> 1586 bytes .../images/shared/icon-question.gif | Bin 0 -> 1607 bytes .../images/shared/icon-warning.gif | Bin 0 -> 1483 bytes .../images/shared/large-loading.gif | Bin 0 -> 3236 bytes .../images/shared/left-btn.gif | Bin 0 -> 870 bytes .../images/shared/loading-balls.gif | Bin 0 -> 2118 bytes .../images/shared/right-btn.gif | Bin 0 -> 871 bytes .../images/shared/shadow-c.png | Bin 0 -> 118 bytes .../images/shared/shadow-lr.png | Bin 0 -> 135 bytes .../images/shared/shadow.png | Bin 0 -> 311 bytes .../images/shared/warning.gif | Bin 0 -> 960 bytes .../images/sizer/e-handle-dark.gif | Bin 0 -> 1062 bytes .../images/sizer/e-handle.gif | Bin 0 -> 1586 bytes .../images/sizer/ne-handle-dark.gif | Bin 0 -> 839 bytes .../images/sizer/ne-handle.gif | Bin 0 -> 854 bytes .../images/sizer/nw-handle-dark.gif | Bin 0 -> 839 bytes .../images/sizer/nw-handle.gif | Bin 0 -> 853 bytes .../images/sizer/s-handle-dark.gif | Bin 0 -> 1060 bytes .../images/sizer/s-handle.gif | Bin 0 -> 1318 bytes .../images/sizer/se-handle-dark.gif | Bin 0 -> 838 bytes .../images/sizer/se-handle.gif | Bin 0 -> 853 bytes .../ext-theme-classic/images/sizer/square.gif | Bin 0 -> 864 bytes .../images/sizer/sw-handle-dark.gif | Bin 0 -> 839 bytes .../images/sizer/sw-handle.gif | Bin 0 -> 855 bytes .../images/slider/slider-bg.gif | Bin 0 -> 139 bytes .../images/slider/slider-bg.png | Bin 0 -> 1068 bytes .../images/slider/slider-thumb.gif | Bin 0 -> 542 bytes .../images/slider/slider-thumb.png | Bin 0 -> 933 bytes .../images/slider/slider-v-bg.gif | Bin 0 -> 145 bytes .../images/slider/slider-v-bg.png | Bin 0 -> 220 bytes .../images/slider/slider-v-thumb.gif | Bin 0 -> 533 bytes .../images/slider/slider-v-thumb.png | Bin 0 -> 883 bytes .../tab-bar/default-scroll-bottom-left.gif | Bin 0 -> 354 bytes .../tab-bar/default-scroll-bottom-right.gif | Bin 0 -> 357 bytes .../tab-bar/default-scroll-left-bottom.gif | Bin 0 -> 347 bytes .../tab-bar/default-scroll-left-top.gif | Bin 0 -> 344 bytes .../tab-bar/default-scroll-right-bottom.gif | Bin 0 -> 345 bytes .../tab-bar/default-scroll-right-top.gif | Bin 0 -> 347 bytes .../tab-bar/default-scroll-top-left.gif | Bin 0 -> 355 bytes .../tab-bar/default-scroll-top-right.gif | Bin 0 -> 354 bytes .../tab-bar/tab-bar-default-bottom-bg.gif | Bin 0 -> 206 bytes .../tab-bar/tab-bar-default-left-bg.gif | Bin 0 -> 203 bytes .../tab-bar/tab-bar-default-right-bg.gif | Bin 0 -> 203 bytes .../images/tab-bar/tab-bar-default-top-bg.gif | Bin 0 -> 206 bytes .../tab/tab-default-bottom-active-bg.gif | Bin 0 -> 149 bytes .../tab/tab-default-bottom-active-corners.gif | Bin 0 -> 205 bytes .../tab/tab-default-bottom-active-fbg.gif | Bin 0 -> 120 bytes .../tab/tab-default-bottom-active-sides.gif | Bin 0 -> 487 bytes .../images/tab/tab-default-bottom-bg.gif | Bin 0 -> 149 bytes .../images/tab/tab-default-bottom-corners.gif | Bin 0 -> 209 bytes .../tab/tab-default-bottom-disabled-bg.gif | Bin 0 -> 201 bytes .../tab-default-bottom-disabled-corners.gif | Bin 0 -> 215 bytes .../tab/tab-default-bottom-disabled-fbg.gif | Bin 0 -> 146 bytes .../tab/tab-default-bottom-disabled-sides.gif | Bin 0 -> 496 bytes .../images/tab/tab-default-bottom-fbg.gif | Bin 0 -> 121 bytes .../images/tab/tab-default-bottom-over-bg.gif | Bin 0 -> 149 bytes .../tab/tab-default-bottom-over-corners.gif | Bin 0 -> 209 bytes .../tab/tab-default-bottom-over-fbg.gif | Bin 0 -> 121 bytes .../tab/tab-default-bottom-over-sides.gif | Bin 0 -> 490 bytes .../images/tab/tab-default-bottom-sides.gif | Bin 0 -> 490 bytes .../images/tab/tab-default-close.gif | Bin 0 -> 896 bytes .../images/tab/tab-default-top-active-bg.gif | Bin 0 -> 142 bytes .../tab/tab-default-top-active-corners.gif | Bin 0 -> 206 bytes .../images/tab/tab-default-top-active-fbg.gif | Bin 0 -> 115 bytes .../tab/tab-default-top-active-sides.gif | Bin 0 -> 470 bytes .../images/tab/tab-default-top-bg.gif | Bin 0 -> 143 bytes .../images/tab/tab-default-top-corners.gif | Bin 0 -> 307 bytes .../tab/tab-default-top-disabled-bg.gif | Bin 0 -> 201 bytes .../tab/tab-default-top-disabled-corners.gif | Bin 0 -> 216 bytes .../tab/tab-default-top-disabled-fbg.gif | Bin 0 -> 146 bytes .../tab/tab-default-top-disabled-sides.gif | Bin 0 -> 496 bytes .../images/tab/tab-default-top-fbg.gif | Bin 0 -> 116 bytes .../images/tab/tab-default-top-over-bg.gif | Bin 0 -> 143 bytes .../tab/tab-default-top-over-corners.gif | Bin 0 -> 211 bytes .../images/tab/tab-default-top-over-fbg.gif | Bin 0 -> 116 bytes .../images/tab/tab-default-top-over-sides.gif | Bin 0 -> 475 bytes .../images/tab/tab-default-top-sides.gif | Bin 0 -> 475 bytes .../images/tip/tip-default-corners.gif | Bin 0 -> 183 bytes .../images/tip/tip-default-sides.gif | Bin 0 -> 99 bytes .../images/tip/tip-form-invalid-corners.gif | Bin 0 -> 347 bytes .../images/tip/tip-form-invalid-sides.gif | Bin 0 -> 123 bytes .../images/toolbar/more-left.gif | Bin 0 -> 843 bytes .../ext-theme-classic/images/toolbar/more.gif | Bin 0 -> 845 bytes .../images/toolbar/scroll-left.gif | Bin 0 -> 1861 bytes .../images/toolbar/scroll-right.gif | Bin 0 -> 1865 bytes .../images/toolbar/toolbar-default-bg.gif | Bin 0 -> 207 bytes .../images/tools/tool-sprite-tpl.gif | Bin 0 -> 971 bytes .../images/tools/tool-sprites.gif | Bin 0 -> 5421 bytes .../images/tools/tools-sprites-trans.gif | Bin 0 -> 2843 bytes .../images/tree/arrows-rtl.gif | Bin 0 -> 618 bytes .../ext-theme-classic/images/tree/arrows.gif | Bin 0 -> 619 bytes .../images/tree/drop-above.gif | Bin 0 -> 911 bytes .../images/tree/drop-add.gif | Bin 0 -> 1001 bytes .../images/tree/drop-append.gif | Bin 0 -> 1001 bytes .../images/tree/drop-below.gif | Bin 0 -> 911 bytes .../images/tree/drop-between.gif | Bin 0 -> 907 bytes .../ext-theme-classic/images/tree/drop-no.gif | Bin 0 -> 949 bytes .../images/tree/drop-over.gif | Bin 0 -> 911 bytes .../images/tree/drop-under.gif | Bin 0 -> 911 bytes .../images/tree/drop-yes.gif | Bin 0 -> 1016 bytes .../images/tree/elbow-end-minus-rtl.gif | Bin 0 -> 151 bytes .../images/tree/elbow-end-minus.gif | Bin 0 -> 157 bytes .../images/tree/elbow-end-plus-rtl.gif | Bin 0 -> 153 bytes .../images/tree/elbow-end-plus.gif | Bin 0 -> 159 bytes .../images/tree/elbow-end-rtl.gif | Bin 0 -> 70 bytes .../images/tree/elbow-end.gif | Bin 0 -> 70 bytes .../images/tree/elbow-line-rtl.gif | Bin 0 -> 72 bytes .../images/tree/elbow-line.gif | Bin 0 -> 72 bytes .../images/tree/elbow-minus-nl-rtl.gif | Bin 0 -> 146 bytes .../images/tree/elbow-minus-nl.gif | Bin 0 -> 151 bytes .../images/tree/elbow-minus-rtl.gif | Bin 0 -> 152 bytes .../images/tree/elbow-minus.gif | Bin 0 -> 159 bytes .../images/tree/elbow-plus-nl-rtl.gif | Bin 0 -> 149 bytes .../images/tree/elbow-plus-nl.gif | Bin 0 -> 152 bytes .../images/tree/elbow-plus-rtl.gif | Bin 0 -> 155 bytes .../images/tree/elbow-plus.gif | Bin 0 -> 160 bytes .../images/tree/elbow-rtl.gif | Bin 0 -> 73 bytes .../ext-theme-classic/images/tree/elbow.gif | Bin 0 -> 73 bytes .../images/tree/folder-open-rtl.gif | Bin 0 -> 356 bytes .../images/tree/folder-open.gif | Bin 0 -> 356 bytes .../images/tree/folder-rtl.gif | Bin 0 -> 350 bytes .../ext-theme-classic/images/tree/folder.gif | Bin 0 -> 351 bytes .../images/tree/leaf-rtl.gif | Bin 0 -> 346 bytes .../ext-theme-classic/images/tree/leaf.gif | Bin 0 -> 945 bytes .../ext-theme-classic/images/tree/loading.gif | Bin 0 -> 771 bytes resources/ext-theme-classic/images/tree/s.gif | Bin 0 -> 43 bytes .../images/util/splitter/mini-bottom.gif | Bin 0 -> 856 bytes .../images/util/splitter/mini-left.gif | Bin 0 -> 871 bytes .../images/util/splitter/mini-right.gif | Bin 0 -> 872 bytes .../images/util/splitter/mini-top.gif | Bin 0 -> 856 bytes .../window-header-default-bottom-corners.gif | Bin 0 -> 228 bytes .../window-header-default-bottom-sides.gif | Bin 0 -> 87 bytes ...eader-default-collapsed-bottom-corners.gif | Bin 0 -> 343 bytes ...-header-default-collapsed-bottom-sides.gif | Bin 0 -> 99 bytes ...der-default-collapsed-left-corners-rtl.gif | Bin 0 -> 343 bytes ...-header-default-collapsed-left-corners.gif | Bin 0 -> 342 bytes ...ow-header-default-collapsed-left-sides.gif | Bin 0 -> 262 bytes ...er-default-collapsed-right-corners-rtl.gif | Bin 0 -> 341 bytes ...header-default-collapsed-right-corners.gif | Bin 0 -> 341 bytes ...w-header-default-collapsed-right-sides.gif | Bin 0 -> 263 bytes ...w-header-default-collapsed-top-corners.gif | Bin 0 -> 346 bytes ...dow-header-default-collapsed-top-sides.gif | Bin 0 -> 99 bytes ...window-header-default-left-corners-rtl.gif | Bin 0 -> 214 bytes .../window-header-default-left-corners.gif | Bin 0 -> 217 bytes .../window-header-default-left-sides.gif | Bin 0 -> 380 bytes ...indow-header-default-right-corners-rtl.gif | Bin 0 -> 216 bytes .../window-header-default-right-corners.gif | Bin 0 -> 212 bytes .../window-header-default-right-sides.gif | Bin 0 -> 551 bytes .../window-header-default-top-corners.gif | Bin 0 -> 224 bytes .../window-header-default-top-sides.gif | Bin 0 -> 87 bytes .../images/window/window-default-corners.gif | Bin 0 -> 344 bytes .../images/window/window-default-sides.gif | Bin 0 -> 252 bytes .../default/boundlist/trigger-arrow.png | Bin 0 -> 2869 bytes .../images/default/box/corners-blue.gif | Bin 0 -> 1010 bytes .../themes/images/default/box/corners.gif | Bin 0 -> 1005 bytes .../themes/images/default/box/l-blue.gif | Bin 0 -> 810 bytes resources/themes/images/default/box/l.gif | Bin 0 -> 810 bytes .../themes/images/default/box/r-blue.gif | Bin 0 -> 810 bytes resources/themes/images/default/box/r.gif | Bin 0 -> 810 bytes .../themes/images/default/box/tb-blue.gif | Bin 0 -> 851 bytes resources/themes/images/default/box/tb.gif | Bin 0 -> 839 bytes .../themes/images/default/button/arrow.gif | Bin 0 -> 828 bytes .../themes/images/default/button/btn.gif | Bin 0 -> 4298 bytes .../themes/images/default/button/group-cs.gif | Bin 0 -> 2459 bytes .../themes/images/default/button/group-lr.gif | Bin 0 -> 861 bytes .../themes/images/default/button/group-tb.gif | Bin 0 -> 846 bytes .../default/button/s-arrow-b-noline.gif | Bin 0 -> 898 bytes .../images/default/button/s-arrow-b.gif | Bin 0 -> 937 bytes .../images/default/button/s-arrow-bo.gif | Bin 0 -> 139 bytes .../images/default/button/s-arrow-light.gif | Bin 0 -> 116 bytes .../images/default/button/s-arrow-noline.gif | Bin 0 -> 863 bytes .../images/default/button/s-arrow-o.gif | Bin 0 -> 937 bytes .../themes/images/default/button/s-arrow.gif | Bin 0 -> 937 bytes .../datepicker/datepicker-footer-bg.gif | Bin 0 -> 1833 bytes .../datepicker/datepicker-footer-bg.png | Bin 0 -> 328 bytes .../datepicker/datepicker-header-bg.gif | Bin 0 -> 1860 bytes .../datepicker/datepicker-header-bg.png | Bin 0 -> 309 bytes .../themes/images/default/dd/drop-add.gif | Bin 0 -> 1001 bytes .../themes/images/default/dd/drop-no.gif | Bin 0 -> 949 bytes .../themes/images/default/dd/drop-yes.gif | Bin 0 -> 1016 bytes .../images/default/editor/tb-sprite.gif | Bin 0 -> 2072 bytes .../themes/images/default/form/checkbox.gif | Bin 0 -> 2061 bytes .../images/default/form/clear-trigger.gif | Bin 0 -> 1988 bytes .../images/default/form/date-trigger.gif | Bin 0 -> 1603 bytes .../images/default/form/error-tip-corners.gif | Bin 0 -> 4183 bytes .../images/default/form/exclamation.gif | Bin 0 -> 996 bytes .../themes/images/default/form/radio.gif | Bin 0 -> 1746 bytes .../images/default/form/search-trigger.gif | Bin 0 -> 2182 bytes .../images/default/form/spinner-small.gif | Bin 0 -> 743 bytes .../themes/images/default/form/spinner.gif | Bin 0 -> 1975 bytes .../themes/images/default/form/text-bg.gif | Bin 0 -> 819 bytes .../images/default/form/trigger-square.gif | Bin 0 -> 1810 bytes .../images/default/form/trigger-tpl.gif | Bin 0 -> 1487 bytes .../themes/images/default/form/trigger.gif | Bin 0 -> 1816 bytes .../images/default/grid/arrow-left-white.gif | Bin 0 -> 825 bytes .../images/default/grid/arrow-right-white.gif | Bin 0 -> 825 bytes .../images/default/grid/cell-special-bg.gif | Bin 0 -> 1636 bytes .../images/default/grid/cell-special-bg.png | Bin 0 -> 121 bytes .../default/grid/cell-special-selected-bg.gif | Bin 0 -> 1640 bytes .../default/grid/cell-special-selected-bg.png | Bin 0 -> 136 bytes .../themes/images/default/grid/checked.gif | Bin 0 -> 959 bytes .../images/default/grid/col-move-bottom.gif | Bin 0 -> 868 bytes .../images/default/grid/col-move-top.gif | Bin 0 -> 869 bytes .../images/default/grid/column-header-bg.gif | Bin 0 -> 1858 bytes .../images/default/grid/column-header-bg.png | Bin 0 -> 293 bytes .../default/grid/column-header-over-bg.gif | Bin 0 -> 1767 bytes .../default/grid/column-header-over-bg.png | Bin 0 -> 283 bytes .../themes/images/default/grid/columns.gif | Bin 0 -> 962 bytes .../default/grid/dd-insert-arrow-left.gif | Bin 0 -> 299 bytes .../default/grid/dd-insert-arrow-left.png | Bin 0 -> 345 bytes .../default/grid/dd-insert-arrow-right.gif | Bin 0 -> 301 bytes .../default/grid/dd-insert-arrow-right.png | Bin 0 -> 349 bytes .../themes/images/default/grid/dirty.gif | Bin 0 -> 832 bytes resources/themes/images/default/grid/done.gif | Bin 0 -> 133 bytes .../themes/images/default/grid/drop-no.gif | Bin 0 -> 947 bytes .../themes/images/default/grid/drop-yes.gif | Bin 0 -> 860 bytes .../themes/images/default/grid/footer-bg.gif | Bin 0 -> 834 bytes .../images/default/grid/grid-blue-hd.gif | Bin 0 -> 829 bytes .../images/default/grid/grid-blue-split.gif | Bin 0 -> 817 bytes .../themes/images/default/grid/grid-hrow.gif | Bin 0 -> 855 bytes .../images/default/grid/grid-loading.gif | Bin 0 -> 701 bytes .../themes/images/default/grid/grid-split.gif | Bin 0 -> 817 bytes .../images/default/grid/grid-vista-hd.gif | Bin 0 -> 829 bytes .../images/default/grid/grid3-hd-btn.gif | Bin 0 -> 1229 bytes .../images/default/grid/grid3-hrow-over.gif | Bin 0 -> 823 bytes .../themes/images/default/grid/grid3-hrow.gif | Bin 0 -> 836 bytes .../images/default/grid/grid3-rowheader.gif | Bin 0 -> 43 bytes .../themes/images/default/grid/group-by.gif | Bin 0 -> 917 bytes .../images/default/grid/group-collapse.gif | Bin 0 -> 881 bytes .../default/grid/group-expand-sprite.gif | Bin 0 -> 955 bytes .../images/default/grid/group-expand.gif | Bin 0 -> 884 bytes .../themes/images/default/grid/hd-pop.gif | Bin 0 -> 839 bytes .../themes/images/default/grid/hmenu-asc.gif | Bin 0 -> 931 bytes .../themes/images/default/grid/hmenu-desc.gif | Bin 0 -> 930 bytes .../themes/images/default/grid/hmenu-lock.gif | Bin 0 -> 955 bytes .../themes/images/default/grid/hmenu-lock.png | Bin 0 -> 648 bytes .../images/default/grid/hmenu-unlock.gif | Bin 0 -> 971 bytes .../images/default/grid/hmenu-unlock.png | Bin 0 -> 697 bytes .../images/default/grid/invalid_line.gif | Bin 0 -> 815 bytes .../themes/images/default/grid/loading.gif | Bin 0 -> 771 bytes .../themes/images/default/grid/mso-hd.gif | Bin 0 -> 875 bytes .../themes/images/default/grid/nowait.gif | Bin 0 -> 884 bytes .../default/grid/page-first-disabled.gif | Bin 0 -> 925 bytes .../themes/images/default/grid/page-first.gif | Bin 0 -> 925 bytes .../default/grid/page-last-disabled.gif | Bin 0 -> 923 bytes .../themes/images/default/grid/page-last.gif | Bin 0 -> 923 bytes .../default/grid/page-next-disabled.gif | Bin 0 -> 875 bytes .../themes/images/default/grid/page-next.gif | Bin 0 -> 875 bytes .../default/grid/page-prev-disabled.gif | Bin 0 -> 879 bytes .../themes/images/default/grid/page-prev.gif | Bin 0 -> 879 bytes .../images/default/grid/pick-button.gif | Bin 0 -> 1036 bytes .../images/default/grid/property-cell-bg.gif | Bin 0 -> 155 bytes .../grid/property-cell-selected-bg.gif | Bin 0 -> 843 bytes .../images/default/grid/refresh-disabled.gif | Bin 0 -> 577 bytes .../themes/images/default/grid/refresh.gif | Bin 0 -> 977 bytes .../images/default/grid/row-check-sprite.gif | Bin 0 -> 1083 bytes .../images/default/grid/row-expand-sprite.gif | Bin 0 -> 955 bytes .../themes/images/default/grid/row-over.gif | Bin 0 -> 823 bytes .../themes/images/default/grid/row-sel.gif | Bin 0 -> 823 bytes .../themes/images/default/grid/sort-hd.gif | Bin 0 -> 1473 bytes .../themes/images/default/grid/sort_asc.gif | Bin 0 -> 830 bytes .../themes/images/default/grid/sort_desc.gif | Bin 0 -> 833 bytes .../themes/images/default/grid/unchecked.gif | Bin 0 -> 941 bytes resources/themes/images/default/grid/wait.gif | Bin 0 -> 1100 bytes .../images/default/layout/mini-bottom.gif | Bin 0 -> 856 bytes .../images/default/layout/mini-left.gif | Bin 0 -> 871 bytes .../images/default/layout/mini-right.gif | Bin 0 -> 872 bytes .../themes/images/default/layout/mini-top.gif | Bin 0 -> 856 bytes .../themes/images/default/menu/checked.gif | Bin 0 -> 959 bytes .../images/default/menu/group-checked.gif | Bin 0 -> 891 bytes .../themes/images/default/menu/item-over.gif | Bin 0 -> 47 bytes .../default/menu/menu-item-active-bg.gif | Bin 0 -> 1833 bytes .../default/menu/menu-item-active-corners.gif | Bin 0 -> 1621 bytes .../default/menu/menu-item-active-sides.gif | Bin 0 -> 1909 bytes .../images/default/menu/menu-parent.gif | Bin 0 -> 854 bytes resources/themes/images/default/menu/menu.gif | Bin 0 -> 834 bytes .../themes/images/default/menu/unchecked.gif | Bin 0 -> 941 bytes .../default/progress/progress-default-bg.gif | Bin 0 -> 1837 bytes .../images/default/shared/blue-loading.gif | Bin 0 -> 3236 bytes .../themes/images/default/shared/calendar.gif | Bin 0 -> 979 bytes .../themes/images/default/shared/glass-bg.gif | Bin 0 -> 873 bytes .../images/default/shared/hd-sprite.gif | Bin 0 -> 1099 bytes .../images/default/shared/icon-error.gif | Bin 0 -> 1669 bytes .../images/default/shared/icon-info.gif | Bin 0 -> 1586 bytes .../images/default/shared/icon-question.gif | Bin 0 -> 1607 bytes .../images/default/shared/icon-warning.gif | Bin 0 -> 1483 bytes .../images/default/shared/large-loading.gif | Bin 0 -> 3236 bytes .../themes/images/default/shared/left-btn.gif | Bin 0 -> 870 bytes .../images/default/shared/loading-balls.gif | Bin 0 -> 2118 bytes .../images/default/shared/right-btn.gif | Bin 0 -> 871 bytes .../themes/images/default/shared/shadow-c.png | Bin 0 -> 118 bytes .../images/default/shared/shadow-lr.png | Bin 0 -> 135 bytes .../themes/images/default/shared/shadow.png | Bin 0 -> 311 bytes .../themes/images/default/shared/warning.gif | Bin 0 -> 960 bytes .../images/default/sizer/e-handle-dark.gif | Bin 0 -> 1062 bytes .../themes/images/default/sizer/e-handle.gif | Bin 0 -> 1586 bytes .../images/default/sizer/ne-handle-dark.gif | Bin 0 -> 839 bytes .../themes/images/default/sizer/ne-handle.gif | Bin 0 -> 854 bytes .../images/default/sizer/nw-handle-dark.gif | Bin 0 -> 839 bytes .../themes/images/default/sizer/nw-handle.gif | Bin 0 -> 853 bytes .../images/default/sizer/s-handle-dark.gif | Bin 0 -> 1060 bytes .../themes/images/default/sizer/s-handle.gif | Bin 0 -> 1318 bytes .../images/default/sizer/se-handle-dark.gif | Bin 0 -> 838 bytes .../themes/images/default/sizer/se-handle.gif | Bin 0 -> 853 bytes .../themes/images/default/sizer/square.gif | Bin 0 -> 864 bytes .../images/default/sizer/sw-handle-dark.gif | Bin 0 -> 839 bytes .../themes/images/default/sizer/sw-handle.gif | Bin 0 -> 855 bytes .../images/default/slider/slider-bg.gif | Bin 0 -> 145 bytes .../images/default/slider/slider-bg.png | Bin 0 -> 1494 bytes .../images/default/slider/slider-thumb.gif | Bin 0 -> 542 bytes .../images/default/slider/slider-thumb.png | Bin 0 -> 933 bytes .../images/default/slider/slider-v-bg.gif | Bin 0 -> 150 bytes .../images/default/slider/slider-v-bg.png | Bin 0 -> 288 bytes .../images/default/slider/slider-v-thumb.gif | Bin 0 -> 533 bytes .../images/default/slider/slider-v-thumb.png | Bin 0 -> 883 bytes .../images/default/tab-bar/scroll-left.gif | Bin 0 -> 457 bytes .../images/default/tab-bar/scroll-right.gif | Bin 0 -> 460 bytes .../default/tab-bar/tab-bar-default-bg.gif | Bin 0 -> 1829 bytes .../themes/images/default/tip/tip-corners.gif | Bin 0 -> 1621 bytes .../themes/images/default/tip/tip-sides.gif | Bin 0 -> 1623 bytes .../themes/images/default/toolbar/more.gif | Bin 0 -> 845 bytes .../images/default/toolbar/scroll-left.gif | Bin 0 -> 1861 bytes .../images/default/toolbar/scroll-right.gif | Bin 0 -> 1865 bytes .../default/toolbar/toolbar-default-bg.gif | Bin 0 -> 1837 bytes .../images/default/tools/tool-sprite-tpl.gif | Bin 0 -> 971 bytes .../images/default/tools/tool-sprites.gif | Bin 0 -> 5421 bytes .../default/tools/tools-sprites-trans.gif | Bin 0 -> 2843 bytes .../themes/images/default/tree/arrows.gif | Bin 0 -> 617 bytes .../themes/images/default/tree/drop-above.gif | Bin 0 -> 911 bytes .../themes/images/default/tree/drop-add.gif | Bin 0 -> 1001 bytes .../images/default/tree/drop-append.gif | Bin 0 -> 1001 bytes .../themes/images/default/tree/drop-below.gif | Bin 0 -> 911 bytes .../images/default/tree/drop-between.gif | Bin 0 -> 907 bytes .../themes/images/default/tree/drop-no.gif | Bin 0 -> 949 bytes .../themes/images/default/tree/drop-over.gif | Bin 0 -> 911 bytes .../themes/images/default/tree/drop-under.gif | Bin 0 -> 911 bytes .../themes/images/default/tree/drop-yes.gif | Bin 0 -> 1016 bytes .../default/tree/elbow-end-minus-nl.gif | Bin 0 -> 151 bytes .../images/default/tree/elbow-end-minus.gif | Bin 0 -> 157 bytes .../images/default/tree/elbow-end-plus-nl.gif | Bin 0 -> 152 bytes .../images/default/tree/elbow-end-plus.gif | Bin 0 -> 159 bytes .../themes/images/default/tree/elbow-end.gif | Bin 0 -> 70 bytes .../themes/images/default/tree/elbow-line.gif | Bin 0 -> 72 bytes .../images/default/tree/elbow-minus-nl.gif | Bin 0 -> 151 bytes .../images/default/tree/elbow-minus.gif | Bin 0 -> 159 bytes .../images/default/tree/elbow-plus-nl.gif | Bin 0 -> 152 bytes .../themes/images/default/tree/elbow-plus.gif | Bin 0 -> 160 bytes .../themes/images/default/tree/elbow.gif | Bin 0 -> 73 bytes .../images/default/tree/folder-open.gif | Bin 0 -> 356 bytes .../themes/images/default/tree/folder.gif | Bin 0 -> 351 bytes resources/themes/images/default/tree/leaf.gif | Bin 0 -> 945 bytes .../themes/images/default/tree/loading.gif | Bin 0 -> 771 bytes resources/themes/images/default/tree/s.gif | Bin 0 -> 43 bytes .../default/util/splitter/mini-bottom.gif | Bin 0 -> 856 bytes .../default/util/splitter/mini-left.gif | Bin 0 -> 871 bytes .../default/util/splitter/mini-right.gif | Bin 0 -> 872 bytes .../images/default/util/splitter/mini-top.gif | Bin 0 -> 856 bytes 814 files changed, 178517 insertions(+) create mode 100644 .gitignore create mode 100644 app/app.js create mode 100644 app/automation/automation.js create mode 100644 app/automation/notificationList.js create mode 100644 app/automation/ruleList.js create mode 100644 app/config/bindingList.js create mode 100644 app/config/bindingProperties.js create mode 100644 app/config/config.js create mode 100644 app/config/groupProperties.js create mode 100644 app/config/itemBindings.js create mode 100644 app/config/itemList.js create mode 100644 app/config/itemProperties.js create mode 100644 app/config/mappingList.js create mode 100644 app/config/mappingProperties.js create mode 100644 app/config/sitemapList.js create mode 100644 app/config/sitemapProperties.js create mode 100644 app/config/zwaveDeviceList.js create mode 100644 app/config/zwaveNetwork.js create mode 100644 app/graph/graph.js create mode 100644 app/graph/graphHighcharts.js create mode 100644 app/graph/graphList.js create mode 100644 app/graph/graphTable.js create mode 100644 app/graph/itemList.js create mode 100644 app/graph/saveGraph.js create mode 100644 app/habmin.css create mode 100644 app/system/logViewer.js create mode 100644 app/system/system.js create mode 100644 app/system/systemBindings.js create mode 100644 debug.html create mode 100644 images/application-list.png create mode 100644 images/arrow_left.png create mode 100644 images/arrow_right.png create mode 100644 images/battery-charge.png create mode 100644 images/bell.png create mode 100644 images/block.png create mode 100644 images/brightness.png create mode 100644 images/calendar-select-month.png create mode 100644 images/calendar-select-week.png create mode 100644 images/calendar-select.png create mode 100644 images/calendar.png create mode 100644 images/category-group.png create mode 100644 images/chain.png create mode 100644 images/chart-up.png create mode 100644 images/chart_curve_add.png create mode 100644 images/chart_yaxis.png create mode 100644 images/chart_yaxis2.png create mode 100644 images/clipboard--exclamation.png create mode 100644 images/clipboard.png create mode 100644 images/clock--plus.png create mode 100644 images/clock.png create mode 100644 images/co2.png create mode 100644 images/color.png create mode 100644 images/compass.png create mode 100644 images/computer.png create mode 100644 images/counter.png create mode 100644 images/cross-circle-24.png create mode 100644 images/cross-small.png create mode 100644 images/cross.png create mode 100644 images/curtain.png create mode 100644 images/dashboard.png create mode 100644 images/database-sql.png create mode 100644 images/disk.png create mode 100644 images/disks.png create mode 100644 images/document-node.png create mode 100644 images/door-open.png create mode 100644 images/edit.png create mode 100644 images/exclamation-24.png create mode 100644 images/exclamation-small-red.png create mode 100644 images/exclamation-small.png create mode 100644 images/exclamation.png create mode 100644 images/external.png create mode 100644 images/fire.png create mode 100644 images/flag-green.png create mode 100644 images/flag-white.png create mode 100644 images/flag.png create mode 100644 images/gear.png create mode 100644 images/ghost.png create mode 100644 images/hammer-screwdriver.png create mode 100644 images/information-balloon.png create mode 100644 images/layer--pencil.png create mode 100644 images/light-bulb-code.png create mode 100644 images/light-bulb-off.png create mode 100644 images/light-bulb-small-off.png create mode 100644 images/light-bulb-small.png create mode 100644 images/light-bulb.png create mode 100644 images/loading.gif create mode 100644 images/lock.png create mode 100644 images/maps-stack.png create mode 100644 images/minus-button.png create mode 100644 images/network-ethernet.png create mode 100644 images/node-select-child.png create mode 100644 images/node-select.png create mode 100644 images/node.png create mode 100644 images/null.png create mode 100644 images/pencil-small.png create mode 100644 images/plug.png create mode 100644 images/plus-button.png create mode 100644 images/property.png create mode 100644 images/question.png create mode 100644 images/remote-control.png create mode 100644 images/settings.png create mode 100644 images/socket--arrow.png create mode 100644 images/status-busy.png create mode 100644 images/status-offline.png create mode 100644 images/status.png create mode 100644 images/sum.png create mode 100644 images/switch.png create mode 100644 images/system-monitor-24.png create mode 100644 images/system-monitor.png create mode 100644 images/table-export.png create mode 100644 images/tables-relation.png create mode 100644 images/tag.png create mode 100644 images/television.png create mode 100644 images/thermometer-high.png create mode 100644 images/thermometer-low.png create mode 100644 images/thermometer.png create mode 100644 images/tick-red.png create mode 100644 images/tick-small.png create mode 100644 images/tick.png create mode 100644 images/ui-slider.png create mode 100644 images/water.png create mode 100644 images/weather-cloudy.png create mode 100644 images/weather-moon-half.png create mode 100644 images/webcam.png create mode 100644 images/zoom_in.png create mode 100644 images/zoom_out.png create mode 100644 index.html create mode 100644 js/ext-all-debug.js create mode 100644 js/ext-all.js create mode 100644 js/extux/statusbar/StatusBar.js create mode 100644 js/extux/statusbar/ValidationStatus.js create mode 100644 js/extux/statusbar/css/statusbar.css create mode 100644 js/extux/statusbar/images/accept.png create mode 100644 js/extux/statusbar/images/exclamation.gif create mode 100644 js/extux/statusbar/images/loading.gif create mode 100644 js/extux/statusbar/images/saved.png create mode 100644 js/extux/statusbar/images/saving.gif create mode 100644 js/highcharts-more.js create mode 100644 js/highcharts.js create mode 100644 js/jquery-1.6.4.js create mode 100644 js/jquery.atmosphere.js create mode 100644 js/jquery.min.js create mode 100644 openhab/owserver.xml create mode 100644 openhab/snmp.xml create mode 100644 resources/css/ext-all-debug.css create mode 100644 resources/css/ext-all.css create mode 100644 resources/ext-theme-classic/Readme.md create mode 100644 resources/ext-theme-classic/ext-theme-classic-all-debug.css create mode 100644 resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css create mode 100644 resources/ext-theme-classic/ext-theme-classic-all-rtl.css create mode 100644 resources/ext-theme-classic/ext-theme-classic-all.css create mode 100644 resources/ext-theme-classic/images/boundlist/trigger-arrow.png create mode 100644 resources/ext-theme-classic/images/box/corners-blue.gif create mode 100644 resources/ext-theme-classic/images/box/corners.gif create mode 100644 resources/ext-theme-classic/images/box/l-blue.gif create mode 100644 resources/ext-theme-classic/images/box/l.gif create mode 100644 resources/ext-theme-classic/images/box/r-blue.gif create mode 100644 resources/ext-theme-classic/images/box/r.gif create mode 100644 resources/ext-theme-classic/images/box/tb-blue.gif create mode 100644 resources/ext-theme-classic/images/box/tb.gif create mode 100644 resources/ext-theme-classic/images/btn-group/btn-group-default-framed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-corners.gif create mode 100644 resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-sides.gif create mode 100644 resources/ext-theme-classic/images/btn-group/btn-group-default-framed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-disabled-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-disabled-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-large-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-disabled-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-disabled-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-medium-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-disabled-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-disabled-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-small-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-sides.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-bg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-corners.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-fbg.gif create mode 100644 resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-sides.gif create mode 100644 resources/ext-theme-classic/images/button/arrow.gif create mode 100644 resources/ext-theme-classic/images/button/btn.gif create mode 100644 resources/ext-theme-classic/images/button/group-cs.gif create mode 100644 resources/ext-theme-classic/images/button/group-lr.gif create mode 100644 resources/ext-theme-classic/images/button/group-tb.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-b-noline.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-b.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-bo.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-light-rtl.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-light.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-noline-rtl.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-noline.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-o-rtl.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-o.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow-rtl.gif create mode 100644 resources/ext-theme-classic/images/button/s-arrow.gif create mode 100644 resources/ext-theme-classic/images/datepicker/datepicker-footer-bg.gif create mode 100644 resources/ext-theme-classic/images/datepicker/datepicker-header-bg.gif create mode 100644 resources/ext-theme-classic/images/dd/drop-add.gif create mode 100644 resources/ext-theme-classic/images/dd/drop-no.gif create mode 100644 resources/ext-theme-classic/images/dd/drop-yes.gif create mode 100644 resources/ext-theme-classic/images/editor/tb-sprite.gif create mode 100644 resources/ext-theme-classic/images/form/checkbox.gif create mode 100644 resources/ext-theme-classic/images/form/clear-trigger-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/clear-trigger.gif create mode 100644 resources/ext-theme-classic/images/form/date-trigger-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/date-trigger.gif create mode 100644 resources/ext-theme-classic/images/form/error-tip-corners.gif create mode 100644 resources/ext-theme-classic/images/form/exclamation.gif create mode 100644 resources/ext-theme-classic/images/form/radio.gif create mode 100644 resources/ext-theme-classic/images/form/search-trigger-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/search-trigger.gif create mode 100644 resources/ext-theme-classic/images/form/spinner-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/spinner-small-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/spinner-small.gif create mode 100644 resources/ext-theme-classic/images/form/spinner.gif create mode 100644 resources/ext-theme-classic/images/form/text-bg.gif create mode 100644 resources/ext-theme-classic/images/form/trigger-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/trigger-square-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/trigger-square.gif create mode 100644 resources/ext-theme-classic/images/form/trigger-tpl-rtl.gif create mode 100644 resources/ext-theme-classic/images/form/trigger-tpl.gif create mode 100644 resources/ext-theme-classic/images/form/trigger.gif create mode 100644 resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif create mode 100644 resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif create mode 100644 resources/ext-theme-classic/images/grid/arrow-left-white.gif create mode 100644 resources/ext-theme-classic/images/grid/arrow-right-white.gif create mode 100644 resources/ext-theme-classic/images/grid/cell-special-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/cell-special-bg.png create mode 100644 resources/ext-theme-classic/images/grid/cell-special-selected-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/cell-special-selected-bg.png create mode 100644 resources/ext-theme-classic/images/grid/col-move-bottom.gif create mode 100644 resources/ext-theme-classic/images/grid/col-move-top.gif create mode 100644 resources/ext-theme-classic/images/grid/column-header-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/column-header-over-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/columns.gif create mode 100644 resources/ext-theme-classic/images/grid/dd-insert-arrow-left.gif create mode 100644 resources/ext-theme-classic/images/grid/dd-insert-arrow-left.png create mode 100644 resources/ext-theme-classic/images/grid/dd-insert-arrow-right.gif create mode 100644 resources/ext-theme-classic/images/grid/dd-insert-arrow-right.png create mode 100644 resources/ext-theme-classic/images/grid/dirty-rtl.gif create mode 100644 resources/ext-theme-classic/images/grid/dirty.gif create mode 100644 resources/ext-theme-classic/images/grid/done.gif create mode 100644 resources/ext-theme-classic/images/grid/drop-no.gif create mode 100644 resources/ext-theme-classic/images/grid/drop-yes.gif create mode 100644 resources/ext-theme-classic/images/grid/footer-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-blue-hd.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-blue-split.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-hrow.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-loading.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-split.gif create mode 100644 resources/ext-theme-classic/images/grid/grid-vista-hd.gif create mode 100644 resources/ext-theme-classic/images/grid/grid3-hd-btn-left.gif create mode 100644 resources/ext-theme-classic/images/grid/grid3-hd-btn.gif create mode 100644 resources/ext-theme-classic/images/grid/grid3-hrow-over.gif create mode 100644 resources/ext-theme-classic/images/grid/grid3-hrow.gif create mode 100644 resources/ext-theme-classic/images/grid/grid3-rowheader.gif create mode 100644 resources/ext-theme-classic/images/grid/group-by.gif create mode 100644 resources/ext-theme-classic/images/grid/group-collapse.gif create mode 100644 resources/ext-theme-classic/images/grid/group-expand-sprite.gif create mode 100644 resources/ext-theme-classic/images/grid/group-expand.gif create mode 100644 resources/ext-theme-classic/images/grid/hd-pop.gif create mode 100644 resources/ext-theme-classic/images/grid/hmenu-asc.gif create mode 100644 resources/ext-theme-classic/images/grid/hmenu-desc.gif create mode 100644 resources/ext-theme-classic/images/grid/hmenu-lock.gif create mode 100644 resources/ext-theme-classic/images/grid/hmenu-lock.png create mode 100644 resources/ext-theme-classic/images/grid/hmenu-unlock.gif create mode 100644 resources/ext-theme-classic/images/grid/hmenu-unlock.png create mode 100644 resources/ext-theme-classic/images/grid/invalid_line.gif create mode 100644 resources/ext-theme-classic/images/grid/loading.gif create mode 100644 resources/ext-theme-classic/images/grid/mso-hd.gif create mode 100644 resources/ext-theme-classic/images/grid/nowait.gif create mode 100644 resources/ext-theme-classic/images/grid/page-first-disabled.gif create mode 100644 resources/ext-theme-classic/images/grid/page-first.gif create mode 100644 resources/ext-theme-classic/images/grid/page-last-disabled.gif create mode 100644 resources/ext-theme-classic/images/grid/page-last.gif create mode 100644 resources/ext-theme-classic/images/grid/page-next-disabled.gif create mode 100644 resources/ext-theme-classic/images/grid/page-next.gif create mode 100644 resources/ext-theme-classic/images/grid/page-prev-disabled.gif create mode 100644 resources/ext-theme-classic/images/grid/page-prev.gif create mode 100644 resources/ext-theme-classic/images/grid/pick-button.gif create mode 100644 resources/ext-theme-classic/images/grid/property-cell-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/property-cell-selected-bg.gif create mode 100644 resources/ext-theme-classic/images/grid/refresh-disabled.gif create mode 100644 resources/ext-theme-classic/images/grid/refresh.gif create mode 100644 resources/ext-theme-classic/images/grid/row-check-sprite.gif create mode 100644 resources/ext-theme-classic/images/grid/row-expand-sprite.gif create mode 100644 resources/ext-theme-classic/images/grid/row-over.gif create mode 100644 resources/ext-theme-classic/images/grid/row-sel.gif create mode 100644 resources/ext-theme-classic/images/grid/sort-hd.gif create mode 100644 resources/ext-theme-classic/images/grid/sort_asc.gif create mode 100644 resources/ext-theme-classic/images/grid/sort_desc.gif create mode 100644 resources/ext-theme-classic/images/grid/wait.gif create mode 100644 resources/ext-theme-classic/images/layout/mini-bottom.gif create mode 100644 resources/ext-theme-classic/images/layout/mini-left.gif create mode 100644 resources/ext-theme-classic/images/layout/mini-right.gif create mode 100644 resources/ext-theme-classic/images/layout/mini-top.gif create mode 100644 resources/ext-theme-classic/images/menu/checked.gif create mode 100644 resources/ext-theme-classic/images/menu/group-checked.gif create mode 100644 resources/ext-theme-classic/images/menu/item-over.gif create mode 100644 resources/ext-theme-classic/images/menu/menu-item-active-bg.gif create mode 100644 resources/ext-theme-classic/images/menu/menu-parent-left.gif create mode 100644 resources/ext-theme-classic/images/menu/menu-parent.gif create mode 100644 resources/ext-theme-classic/images/menu/menu.gif create mode 100644 resources/ext-theme-classic/images/menu/scroll-bottom.gif create mode 100644 resources/ext-theme-classic/images/menu/scroll-top.gif create mode 100644 resources/ext-theme-classic/images/menu/unchecked.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-bottom-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-corners.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-fbg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-sides.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg-rtl.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg.gif create mode 100644 resources/ext-theme-classic/images/panel-header/panel-header-default-top-bg.gif create mode 100644 resources/ext-theme-classic/images/panel/panel-default-framed-corners.gif create mode 100644 resources/ext-theme-classic/images/panel/panel-default-framed-sides.gif create mode 100644 resources/ext-theme-classic/images/progress/progress-default-bg.gif create mode 100644 resources/ext-theme-classic/images/shared/blue-loading.gif create mode 100644 resources/ext-theme-classic/images/shared/calendar.gif create mode 100644 resources/ext-theme-classic/images/shared/glass-bg.gif create mode 100644 resources/ext-theme-classic/images/shared/hd-sprite.gif create mode 100644 resources/ext-theme-classic/images/shared/icon-error.gif create mode 100644 resources/ext-theme-classic/images/shared/icon-info.gif create mode 100644 resources/ext-theme-classic/images/shared/icon-question.gif create mode 100644 resources/ext-theme-classic/images/shared/icon-warning.gif create mode 100644 resources/ext-theme-classic/images/shared/large-loading.gif create mode 100644 resources/ext-theme-classic/images/shared/left-btn.gif create mode 100644 resources/ext-theme-classic/images/shared/loading-balls.gif create mode 100644 resources/ext-theme-classic/images/shared/right-btn.gif create mode 100644 resources/ext-theme-classic/images/shared/shadow-c.png create mode 100644 resources/ext-theme-classic/images/shared/shadow-lr.png create mode 100644 resources/ext-theme-classic/images/shared/shadow.png create mode 100644 resources/ext-theme-classic/images/shared/warning.gif create mode 100644 resources/ext-theme-classic/images/sizer/e-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/e-handle.gif create mode 100644 resources/ext-theme-classic/images/sizer/ne-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/ne-handle.gif create mode 100644 resources/ext-theme-classic/images/sizer/nw-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/nw-handle.gif create mode 100644 resources/ext-theme-classic/images/sizer/s-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/s-handle.gif create mode 100644 resources/ext-theme-classic/images/sizer/se-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/se-handle.gif create mode 100644 resources/ext-theme-classic/images/sizer/square.gif create mode 100644 resources/ext-theme-classic/images/sizer/sw-handle-dark.gif create mode 100644 resources/ext-theme-classic/images/sizer/sw-handle.gif create mode 100644 resources/ext-theme-classic/images/slider/slider-bg.gif create mode 100644 resources/ext-theme-classic/images/slider/slider-bg.png create mode 100644 resources/ext-theme-classic/images/slider/slider-thumb.gif create mode 100644 resources/ext-theme-classic/images/slider/slider-thumb.png create mode 100644 resources/ext-theme-classic/images/slider/slider-v-bg.gif create mode 100644 resources/ext-theme-classic/images/slider/slider-v-bg.png create mode 100644 resources/ext-theme-classic/images/slider/slider-v-thumb.gif create mode 100644 resources/ext-theme-classic/images/slider/slider-v-thumb.png create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-left.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-right.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-left-bottom.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-left-top.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-right-bottom.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-right-top.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-top-left.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/default-scroll-top-right.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/tab-bar-default-bottom-bg.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/tab-bar-default-left-bg.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/tab-bar-default-right-bg.gif create mode 100644 resources/ext-theme-classic/images/tab-bar/tab-bar-default-top-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-active-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-active-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-active-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-active-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-over-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-over-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-over-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-close.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-active-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-active-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-active-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-active-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-disabled-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-disabled-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-disabled-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-disabled-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-over-bg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-over-corners.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-over-fbg.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-over-sides.gif create mode 100644 resources/ext-theme-classic/images/tab/tab-default-top-sides.gif create mode 100644 resources/ext-theme-classic/images/tip/tip-default-corners.gif create mode 100644 resources/ext-theme-classic/images/tip/tip-default-sides.gif create mode 100644 resources/ext-theme-classic/images/tip/tip-form-invalid-corners.gif create mode 100644 resources/ext-theme-classic/images/tip/tip-form-invalid-sides.gif create mode 100644 resources/ext-theme-classic/images/toolbar/more-left.gif create mode 100644 resources/ext-theme-classic/images/toolbar/more.gif create mode 100644 resources/ext-theme-classic/images/toolbar/scroll-left.gif create mode 100644 resources/ext-theme-classic/images/toolbar/scroll-right.gif create mode 100644 resources/ext-theme-classic/images/toolbar/toolbar-default-bg.gif create mode 100644 resources/ext-theme-classic/images/tools/tool-sprite-tpl.gif create mode 100644 resources/ext-theme-classic/images/tools/tool-sprites.gif create mode 100644 resources/ext-theme-classic/images/tools/tools-sprites-trans.gif create mode 100644 resources/ext-theme-classic/images/tree/arrows-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/arrows.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-above.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-add.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-append.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-below.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-between.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-no.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-over.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-under.gif create mode 100644 resources/ext-theme-classic/images/tree/drop-yes.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end-minus-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end-minus.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end-plus-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end-plus.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-end.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-line-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-line.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-minus-nl-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-minus-nl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-minus-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-minus.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-plus-nl-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-plus-nl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-plus-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-plus.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/elbow.gif create mode 100644 resources/ext-theme-classic/images/tree/folder-open-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/folder-open.gif create mode 100644 resources/ext-theme-classic/images/tree/folder-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/folder.gif create mode 100644 resources/ext-theme-classic/images/tree/leaf-rtl.gif create mode 100644 resources/ext-theme-classic/images/tree/leaf.gif create mode 100644 resources/ext-theme-classic/images/tree/loading.gif create mode 100644 resources/ext-theme-classic/images/tree/s.gif create mode 100644 resources/ext-theme-classic/images/util/splitter/mini-bottom.gif create mode 100644 resources/ext-theme-classic/images/util/splitter/mini-left.gif create mode 100644 resources/ext-theme-classic/images/util/splitter/mini-right.gif create mode 100644 resources/ext-theme-classic/images/util/splitter/mini-top.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-left-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-left-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-left-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-right-corners-rtl.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-right-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-right-sides.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-top-corners.gif create mode 100644 resources/ext-theme-classic/images/window-header/window-header-default-top-sides.gif create mode 100644 resources/ext-theme-classic/images/window/window-default-corners.gif create mode 100644 resources/ext-theme-classic/images/window/window-default-sides.gif create mode 100644 resources/themes/images/default/boundlist/trigger-arrow.png create mode 100644 resources/themes/images/default/box/corners-blue.gif create mode 100644 resources/themes/images/default/box/corners.gif create mode 100644 resources/themes/images/default/box/l-blue.gif create mode 100644 resources/themes/images/default/box/l.gif create mode 100644 resources/themes/images/default/box/r-blue.gif create mode 100644 resources/themes/images/default/box/r.gif create mode 100644 resources/themes/images/default/box/tb-blue.gif create mode 100644 resources/themes/images/default/box/tb.gif create mode 100644 resources/themes/images/default/button/arrow.gif create mode 100644 resources/themes/images/default/button/btn.gif create mode 100644 resources/themes/images/default/button/group-cs.gif create mode 100644 resources/themes/images/default/button/group-lr.gif create mode 100644 resources/themes/images/default/button/group-tb.gif create mode 100644 resources/themes/images/default/button/s-arrow-b-noline.gif create mode 100644 resources/themes/images/default/button/s-arrow-b.gif create mode 100644 resources/themes/images/default/button/s-arrow-bo.gif create mode 100644 resources/themes/images/default/button/s-arrow-light.gif create mode 100644 resources/themes/images/default/button/s-arrow-noline.gif create mode 100644 resources/themes/images/default/button/s-arrow-o.gif create mode 100644 resources/themes/images/default/button/s-arrow.gif create mode 100644 resources/themes/images/default/datepicker/datepicker-footer-bg.gif create mode 100644 resources/themes/images/default/datepicker/datepicker-footer-bg.png create mode 100644 resources/themes/images/default/datepicker/datepicker-header-bg.gif create mode 100644 resources/themes/images/default/datepicker/datepicker-header-bg.png create mode 100644 resources/themes/images/default/dd/drop-add.gif create mode 100644 resources/themes/images/default/dd/drop-no.gif create mode 100644 resources/themes/images/default/dd/drop-yes.gif create mode 100644 resources/themes/images/default/editor/tb-sprite.gif create mode 100644 resources/themes/images/default/form/checkbox.gif create mode 100644 resources/themes/images/default/form/clear-trigger.gif create mode 100644 resources/themes/images/default/form/date-trigger.gif create mode 100644 resources/themes/images/default/form/error-tip-corners.gif create mode 100644 resources/themes/images/default/form/exclamation.gif create mode 100644 resources/themes/images/default/form/radio.gif create mode 100644 resources/themes/images/default/form/search-trigger.gif create mode 100644 resources/themes/images/default/form/spinner-small.gif create mode 100644 resources/themes/images/default/form/spinner.gif create mode 100644 resources/themes/images/default/form/text-bg.gif create mode 100644 resources/themes/images/default/form/trigger-square.gif create mode 100644 resources/themes/images/default/form/trigger-tpl.gif create mode 100644 resources/themes/images/default/form/trigger.gif create mode 100644 resources/themes/images/default/grid/arrow-left-white.gif create mode 100644 resources/themes/images/default/grid/arrow-right-white.gif create mode 100644 resources/themes/images/default/grid/cell-special-bg.gif create mode 100644 resources/themes/images/default/grid/cell-special-bg.png create mode 100644 resources/themes/images/default/grid/cell-special-selected-bg.gif create mode 100644 resources/themes/images/default/grid/cell-special-selected-bg.png create mode 100644 resources/themes/images/default/grid/checked.gif create mode 100644 resources/themes/images/default/grid/col-move-bottom.gif create mode 100644 resources/themes/images/default/grid/col-move-top.gif create mode 100644 resources/themes/images/default/grid/column-header-bg.gif create mode 100644 resources/themes/images/default/grid/column-header-bg.png create mode 100644 resources/themes/images/default/grid/column-header-over-bg.gif create mode 100644 resources/themes/images/default/grid/column-header-over-bg.png create mode 100644 resources/themes/images/default/grid/columns.gif create mode 100644 resources/themes/images/default/grid/dd-insert-arrow-left.gif create mode 100644 resources/themes/images/default/grid/dd-insert-arrow-left.png create mode 100644 resources/themes/images/default/grid/dd-insert-arrow-right.gif create mode 100644 resources/themes/images/default/grid/dd-insert-arrow-right.png create mode 100644 resources/themes/images/default/grid/dirty.gif create mode 100644 resources/themes/images/default/grid/done.gif create mode 100644 resources/themes/images/default/grid/drop-no.gif create mode 100644 resources/themes/images/default/grid/drop-yes.gif create mode 100644 resources/themes/images/default/grid/footer-bg.gif create mode 100644 resources/themes/images/default/grid/grid-blue-hd.gif create mode 100644 resources/themes/images/default/grid/grid-blue-split.gif create mode 100644 resources/themes/images/default/grid/grid-hrow.gif create mode 100644 resources/themes/images/default/grid/grid-loading.gif create mode 100644 resources/themes/images/default/grid/grid-split.gif create mode 100644 resources/themes/images/default/grid/grid-vista-hd.gif create mode 100644 resources/themes/images/default/grid/grid3-hd-btn.gif create mode 100644 resources/themes/images/default/grid/grid3-hrow-over.gif create mode 100644 resources/themes/images/default/grid/grid3-hrow.gif create mode 100644 resources/themes/images/default/grid/grid3-rowheader.gif create mode 100644 resources/themes/images/default/grid/group-by.gif create mode 100644 resources/themes/images/default/grid/group-collapse.gif create mode 100644 resources/themes/images/default/grid/group-expand-sprite.gif create mode 100644 resources/themes/images/default/grid/group-expand.gif create mode 100644 resources/themes/images/default/grid/hd-pop.gif create mode 100644 resources/themes/images/default/grid/hmenu-asc.gif create mode 100644 resources/themes/images/default/grid/hmenu-desc.gif create mode 100644 resources/themes/images/default/grid/hmenu-lock.gif create mode 100644 resources/themes/images/default/grid/hmenu-lock.png create mode 100644 resources/themes/images/default/grid/hmenu-unlock.gif create mode 100644 resources/themes/images/default/grid/hmenu-unlock.png create mode 100644 resources/themes/images/default/grid/invalid_line.gif create mode 100644 resources/themes/images/default/grid/loading.gif create mode 100644 resources/themes/images/default/grid/mso-hd.gif create mode 100644 resources/themes/images/default/grid/nowait.gif create mode 100644 resources/themes/images/default/grid/page-first-disabled.gif create mode 100644 resources/themes/images/default/grid/page-first.gif create mode 100644 resources/themes/images/default/grid/page-last-disabled.gif create mode 100644 resources/themes/images/default/grid/page-last.gif create mode 100644 resources/themes/images/default/grid/page-next-disabled.gif create mode 100644 resources/themes/images/default/grid/page-next.gif create mode 100644 resources/themes/images/default/grid/page-prev-disabled.gif create mode 100644 resources/themes/images/default/grid/page-prev.gif create mode 100644 resources/themes/images/default/grid/pick-button.gif create mode 100644 resources/themes/images/default/grid/property-cell-bg.gif create mode 100644 resources/themes/images/default/grid/property-cell-selected-bg.gif create mode 100644 resources/themes/images/default/grid/refresh-disabled.gif create mode 100644 resources/themes/images/default/grid/refresh.gif create mode 100644 resources/themes/images/default/grid/row-check-sprite.gif create mode 100644 resources/themes/images/default/grid/row-expand-sprite.gif create mode 100644 resources/themes/images/default/grid/row-over.gif create mode 100644 resources/themes/images/default/grid/row-sel.gif create mode 100644 resources/themes/images/default/grid/sort-hd.gif create mode 100644 resources/themes/images/default/grid/sort_asc.gif create mode 100644 resources/themes/images/default/grid/sort_desc.gif create mode 100644 resources/themes/images/default/grid/unchecked.gif create mode 100644 resources/themes/images/default/grid/wait.gif create mode 100644 resources/themes/images/default/layout/mini-bottom.gif create mode 100644 resources/themes/images/default/layout/mini-left.gif create mode 100644 resources/themes/images/default/layout/mini-right.gif create mode 100644 resources/themes/images/default/layout/mini-top.gif create mode 100644 resources/themes/images/default/menu/checked.gif create mode 100644 resources/themes/images/default/menu/group-checked.gif create mode 100644 resources/themes/images/default/menu/item-over.gif create mode 100644 resources/themes/images/default/menu/menu-item-active-bg.gif create mode 100644 resources/themes/images/default/menu/menu-item-active-corners.gif create mode 100644 resources/themes/images/default/menu/menu-item-active-sides.gif create mode 100644 resources/themes/images/default/menu/menu-parent.gif create mode 100644 resources/themes/images/default/menu/menu.gif create mode 100644 resources/themes/images/default/menu/unchecked.gif create mode 100644 resources/themes/images/default/progress/progress-default-bg.gif create mode 100644 resources/themes/images/default/shared/blue-loading.gif create mode 100644 resources/themes/images/default/shared/calendar.gif create mode 100644 resources/themes/images/default/shared/glass-bg.gif create mode 100644 resources/themes/images/default/shared/hd-sprite.gif create mode 100644 resources/themes/images/default/shared/icon-error.gif create mode 100644 resources/themes/images/default/shared/icon-info.gif create mode 100644 resources/themes/images/default/shared/icon-question.gif create mode 100644 resources/themes/images/default/shared/icon-warning.gif create mode 100644 resources/themes/images/default/shared/large-loading.gif create mode 100644 resources/themes/images/default/shared/left-btn.gif create mode 100644 resources/themes/images/default/shared/loading-balls.gif create mode 100644 resources/themes/images/default/shared/right-btn.gif create mode 100644 resources/themes/images/default/shared/shadow-c.png create mode 100644 resources/themes/images/default/shared/shadow-lr.png create mode 100644 resources/themes/images/default/shared/shadow.png create mode 100644 resources/themes/images/default/shared/warning.gif create mode 100644 resources/themes/images/default/sizer/e-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/e-handle.gif create mode 100644 resources/themes/images/default/sizer/ne-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/ne-handle.gif create mode 100644 resources/themes/images/default/sizer/nw-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/nw-handle.gif create mode 100644 resources/themes/images/default/sizer/s-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/s-handle.gif create mode 100644 resources/themes/images/default/sizer/se-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/se-handle.gif create mode 100644 resources/themes/images/default/sizer/square.gif create mode 100644 resources/themes/images/default/sizer/sw-handle-dark.gif create mode 100644 resources/themes/images/default/sizer/sw-handle.gif create mode 100644 resources/themes/images/default/slider/slider-bg.gif create mode 100644 resources/themes/images/default/slider/slider-bg.png create mode 100644 resources/themes/images/default/slider/slider-thumb.gif create mode 100644 resources/themes/images/default/slider/slider-thumb.png create mode 100644 resources/themes/images/default/slider/slider-v-bg.gif create mode 100644 resources/themes/images/default/slider/slider-v-bg.png create mode 100644 resources/themes/images/default/slider/slider-v-thumb.gif create mode 100644 resources/themes/images/default/slider/slider-v-thumb.png create mode 100644 resources/themes/images/default/tab-bar/scroll-left.gif create mode 100644 resources/themes/images/default/tab-bar/scroll-right.gif create mode 100644 resources/themes/images/default/tab-bar/tab-bar-default-bg.gif create mode 100644 resources/themes/images/default/tip/tip-corners.gif create mode 100644 resources/themes/images/default/tip/tip-sides.gif create mode 100644 resources/themes/images/default/toolbar/more.gif create mode 100644 resources/themes/images/default/toolbar/scroll-left.gif create mode 100644 resources/themes/images/default/toolbar/scroll-right.gif create mode 100644 resources/themes/images/default/toolbar/toolbar-default-bg.gif create mode 100644 resources/themes/images/default/tools/tool-sprite-tpl.gif create mode 100644 resources/themes/images/default/tools/tool-sprites.gif create mode 100644 resources/themes/images/default/tools/tools-sprites-trans.gif create mode 100644 resources/themes/images/default/tree/arrows.gif create mode 100644 resources/themes/images/default/tree/drop-above.gif create mode 100644 resources/themes/images/default/tree/drop-add.gif create mode 100644 resources/themes/images/default/tree/drop-append.gif create mode 100644 resources/themes/images/default/tree/drop-below.gif create mode 100644 resources/themes/images/default/tree/drop-between.gif create mode 100644 resources/themes/images/default/tree/drop-no.gif create mode 100644 resources/themes/images/default/tree/drop-over.gif create mode 100644 resources/themes/images/default/tree/drop-under.gif create mode 100644 resources/themes/images/default/tree/drop-yes.gif create mode 100644 resources/themes/images/default/tree/elbow-end-minus-nl.gif create mode 100644 resources/themes/images/default/tree/elbow-end-minus.gif create mode 100644 resources/themes/images/default/tree/elbow-end-plus-nl.gif create mode 100644 resources/themes/images/default/tree/elbow-end-plus.gif create mode 100644 resources/themes/images/default/tree/elbow-end.gif create mode 100644 resources/themes/images/default/tree/elbow-line.gif create mode 100644 resources/themes/images/default/tree/elbow-minus-nl.gif create mode 100644 resources/themes/images/default/tree/elbow-minus.gif create mode 100644 resources/themes/images/default/tree/elbow-plus-nl.gif create mode 100644 resources/themes/images/default/tree/elbow-plus.gif create mode 100644 resources/themes/images/default/tree/elbow.gif create mode 100644 resources/themes/images/default/tree/folder-open.gif create mode 100644 resources/themes/images/default/tree/folder.gif create mode 100644 resources/themes/images/default/tree/leaf.gif create mode 100644 resources/themes/images/default/tree/loading.gif create mode 100644 resources/themes/images/default/tree/s.gif create mode 100644 resources/themes/images/default/util/splitter/mini-bottom.gif create mode 100644 resources/themes/images/default/util/splitter/mini-left.gif create mode 100644 resources/themes/images/default/util/splitter/mini-right.gif create mode 100644 resources/themes/images/default/util/splitter/mini-top.gif diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b9d6bd92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,215 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg diff --git a/app/app.js b/app/app.js new file mode 100644 index 00000000..ab5b19d3 --- /dev/null +++ b/app/app.js @@ -0,0 +1,542 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +var force_transport = 'auto'; + +Ext.Loader.setConfig({ + enabled:true, + disableCaching:true, // For debug only + 'paths':{ + 'Ext.ux':'js/extux', + 'openHAB':'app' + } +}); + +Ext.require([ + 'Ext.tab.*', + 'Ext.grid.*', + 'Ext.data.*', + 'Ext.util.*', + 'Ext.form.*', + 'Ext.tree.Panel', + 'Ext.container.Viewport', + 'Ext.selection.CellModel', + 'Ext.layout.container.Border', + 'Ext.layout.container.Accordion', + 'Ext.ux.statusbar.StatusBar', + 'openHAB.graph.graph', + 'openHAB.graph.saveGraph', + 'openHAB.graph.itemList', + 'openHAB.graph.graphList', + 'openHAB.graph.graphTable', + 'openHAB.graph.graphHighcharts', + 'openHAB.config.config', + 'openHAB.config.bindingList', + 'openHAB.config.bindingProperties', + 'openHAB.config.groupProperties', + 'openHAB.config.itemBindings', + 'openHAB.config.itemList', + 'openHAB.config.itemProperties', + 'openHAB.config.mappingList', + 'openHAB.config.mappingProperties', + 'openHAB.config.sitemapList', + 'openHAB.config.zwaveDeviceList', + 'openHAB.config.zwaveNetwork', + 'openHAB.config.sitemapProperties', + 'openHAB.system.system', + 'openHAB.system.logViewer', + 'openHAB.system.systemBindings', + 'openHAB.automation.automation', + 'openHAB.automation.notificationList', + 'openHAB.automation.ruleList' +]); + +var viewPort; +var statusTooltip; + +// Global data stores from openHAB +var itemStore; +var sitemapStore; +var bindingStore; + +var iconTypeArray = [ + {'id':0, 'icon':'../images/bluetooth.png', 'name':'Bluetooth'}, + {'id':1, 'icon':'../images/heating.png', 'name':'Heating'}, + {'id':2, 'icon':'../images/lock.png', 'name':'Lock'}, + {'id':3, 'icon':'../images/temperature.png', 'name':'Temperature'}, + {'id':4, 'icon':'../images/switch.png', 'name':'Switch'} +]; + + +var initState = 0; +var initList = [ + {type:0, name:"openHAB Version", variable:"openHABVersion", url:"/static/version", fatal:true, notify:"Unable to get openHAB version"}//, +// {type:1, name:"openHAB Version", variable:"openHABItems", url:"/rest/items", fatal:true, notify:"Unable to get openHAB items"} +]; + + +Ext.application({ + name:'HABmin', + launch:function () { + initState = 0; + loadNextConfig(); + } +}); + +function loadNextConfig() { + Ext.Ajax.request({ + url:initList[initState].url, + headers:{'Accept':'application/json'}, + + success:function (response, opts) { + if (response.responseText == "No handler") { + loadError(initList[initState].notify); + return; + } + + if (initList[initState].type == 0) { + openHABVersion = response.responseText; + Ext.fly('openHABVersion').update(openHABVersion, false); +// Ext.fly('guiVersion').update(guiVersion, false); + } + else + window[initList[initState].variable] = Ext.decode(response.responseText); + + + initState++; + + if (initState < initList.length) { + loadNextConfig(); + return; + } + + // All configs loaded + createUI(); + }, + failure:function (response, opts) { + if (initList[initState].fatal == true) { + loadError(initList[initState].notify); + return; + } + + // Error was non-fatal. Ignore and continue + initState++; + + if (initState < initList.length) { + loadNextConfig(); + return; + } + + // All configs loaded + createUI(); + } + }); +} +function loadError(errorText) { +} + +function handleOnlineStatus(newStatus) { + if (newStatus == 0) { + Ext.get('statusicon').dom.src = 'images/status.png'; + statusTooltip.update("openHAB is online") + } + else if (newStatus == 1) { + Ext.get('statusicon').dom.src = 'images/status-busy.png'; + statusTooltip.update("openHAB is busy") + } + else if (newStatus == 2) { + Ext.get('statusicon').dom.src = 'images/status-offline.png'; + statusTooltip.update("openHAB is offline") + } +} + + +var detectedTransport = null; +var socket = $.atmosphere; +var fallbackProtocol = null; + +function subscribe(location) { + var request = { url:location, + maxRequest:256, + timeout:59000, + attachHeadersAsQueryString:true, + executeCallbackBeforeReconnect:false, + //transport: 'long-polling', + transport:force_transport, + fallbackTransport:fallbackProtocol, + headers:{'Accept':'application/json'}}; + + request.onError = function (response) { + console.log('------ ERROR -------'); + handleOnlineStatus(2); + console.log(response); + } + request.onOpen = function (response) { + console.log('-------- OPEN --------'); + console.log(response); + handleOnlineStatus(1); + detectedTransport = response.transport; + } + + request.onMessage = function (response) { + + if (response.status == 200) { + handleOnlineStatus(0); + var data = response.responseBody; + if (data.length > 0) { + try { + console.log('-------- INPUT --------'); + console.log(response); + // updateWidgets(Ext.JSON.decode(data)); + } catch (e) { + } + } + } + }; + + socket.subscribe(request); +} + +function unsubscribe() { + socket.unsubscribe(); +} + +function loadUIData(sitemap_name) { + Ext.Ajax.request({ + url:'/rest/sitemaps/' + sitemap_name, + headers:{ + 'Accept':'application/json' + }, success:function (result_obj) { + try { + result = Ext.JSON.decode(result_obj.responseText); + } catch (error) { + loadUIData(sitemap_name); + return; + } + //try { + buildUIArray(result.homepage, UInavPanel); + clearEmptyFrames(); + + Ext.getCmp('content').unmask(); + broadCrumb[0] = new Array(result.homepage.id, result.homepage.title); + Ext.getCmp('title').setHtml(result.homepage.title); + //console.log(UInavPanel); + + goToPage(result.homepage.id); + + + if (Ext.getCmp('leftPanel')) { + leftPanelstore.setRoot(UInavPanel); + setCurrentLeftNavPage(result.homepage.id); + } + + + //} catch (error) { + Ext.getCmp('content').unmask(); + // alert(OpenHAB.i18n_strings[ui_language].error_build_interface + "\r\n(" + error + ")"); + //} + + }, failure:function () { + alert("OpenHAB.i18n_strings[ui_language].error_server_connection"); + } + }); +} + +function loadSitemapList() { + Ext.Ajax.request({ + url:'/rest/sitemaps/', + headers:{ + 'Accept':'application/json' + }, success:function (result_obj) { + var result = Ext.JSON.decode(result_obj.responseText); + + if (result == null) + return; + + openHABSitemaps = result.sitemap; + sitemapStore.loadData(openHABSitemaps); + }, failure:function () { + Ext.MessageBox.alert('Error', 'Error downloading sitemap data.'); + } + }); +} + +function getIconByValue(value) { + var numIcons = iconTypeArray.length; + for (var iIcon = 0; iIcon < numIcons; ++iIcon) { + if (iconTypeArray[iIcon].id == value) { + return iconTypeArray[iIcon]; + } + } + + return null; +} + +// Return an icon based on the ItemType +function getItemTypeIcon(type) { + if (type == "GroupItem") + return "images/category-group.png"; + if (type == "SwitchItem") + return "images/switch.png"; + if (type == "NumberItem") + return "images/counter.png"; + if (type == "ColorItem") + return "images/color.png"; + if (type == "ContactItem") + return "images/door-open.png"; + if (type == "DateTimeItem") + return "images/clock.png"; + if (type == "DimmerItem") + return "images/ui-slider.png"; + if (type == "RollerShutterItem") + return "images/curtain.png"; + if (type == "StringItem") + return "images/edit.png"; +} + +var iterationCnt = 0; + +function makeItemGroupTree(parent, group) { + return; + // Keep track of the number of iterations + iterationCnt++; + if (iterationCnt == 8) + return; + + // Loop through the configuration + openHABItems = itemStore.getProxy().getReader().getResponseData(); + var numItems = openHABItems.item.length; + for (var iItem = 0; iItem < numItems; ++iItem) { + var newItem = []; + var newItemPnt; + + // Ensure the groups is an array! + var itemGroups = [].concat(openHABItems.item[iItem].groups); + + // Check if the item is in the required group + if (itemGroups.indexOf(group) == -1) { + continue; + } + + // Create the new item + newItem.Parent = openHABItems.item[iItem].name; + newItem.State = openHABItems.item[iItem].state; + newItem.Type = openHABItems.item[iItem].type; + newItem.iconCls = 'node-device'; + newItem.children = []; + + // Check if this is a group + if (openHABItems.item[iItem].type == "GroupItem") { + makeItemGroupTree(newItem.children, newItem.Parent) + } + + parent.push(newItem); + } + iterationCnt--; +} + +function createUI() { + delete Ext.tip.Tip.prototype.minWidth; + + Ext.define('ItemsModel', { + extend:'Ext.data.Model', + fields:[ + {name:'name'}, + {name:'state'}, + {name:'type'}, + {name:'link'}, + {name:'binding'}, + {name:'groups'} + ] + }); + + // Create the Item data store + itemStore = Ext.create('Ext.data.ArrayStore', { + model:'ItemsModel', + proxy:{ + type:'rest', + url:'/rest/items', + reader:{ + type:'json', + root:'item' + }, + headers:{'Accept':'application/json'}, + pageParam:undefined, + startParam:undefined, + sortParam:undefined, + limitParam:undefined + }, + autoLoad:true + }); + + Ext.define('SitemapsModel', { + extend:'Ext.data.Model', + fields:[ + {name:'name'}, + {name:'leaf'}, + {name:'link'} + ] + }); + + // Create the Sitemap data store + sitemapStore = Ext.create('Ext.data.ArrayStore', { + model:'SitemapsModel', + proxy:{ + type:'rest', + url:'/rest/sitemaps', + reader:{ + type:'json', + root:'sitemap' + }, + headers:{'Accept':'application/json'}, + pageParam:undefined, + startParam:undefined, + sortParam:undefined, + limitParam:undefined + }, + autoLoad:true + }); + + Ext.define('BundlesModel', { + extend:'Ext.data.Model', + fields:[ + {name:'id'}, + {name:'name'}, + {name:'version'}, + {name:'state'}, + {name:'modified', type:'int'}, + {name:'link'} + ] + }); + + // Create the Item data store + bindingStore = Ext.create('Ext.data.ArrayStore', { + model:'BundlesModel', + proxy:{ + type:'rest', + url:'/rest/bundle', + reader:{ + type:'json', + root:'bundle' + }, + headers:{'Accept':'application/json'}, + pageParam:undefined, + startParam:undefined, + sortParam:undefined, + limitParam:undefined + }, + autoLoad:true + }); + + var configTab = Ext.create('openHAB.config.config'); + var chartTab = Ext.create('openHAB.graph.graph'); + var automationTab = Ext.create('openHAB.automation.automation'); + var systemTab = Ext.create('openHAB.system.system'); + + Ext.define('StatusBar', { + extend:'Ext.Component', + alias:'widget.statusbar', + html:'
openHAB Status
', + style:{ + 'width':250 + } + }); + + Ext.define('StatusBar', { + extend:'Ext.Component', + alias:'widget.statusbar', + html:'
Online Status
' + }); + + var tabMain = Ext.create('Ext.tab.Panel', { + id:'mainTab', + layout:'fit', + items:[chartTab, configTab, automationTab, systemTab], + listeners:{ + render:function () { + this.tabBar.add( + { xtype:'tbfill' }, + { xtype:'statusbar' } + ); + }, + tabchange:function (tabPanel, newCard, oldCard, eOpts) { + if (newCard.id == 'maintabGraph') { + itemStore.filterBy(function (rec) { + if (rec.get('type').substring(0, 19) == "GroupItem") + return false; + return true; + }); + } + else if (newCard.id == 'maintabSystem') { + bindingStore.clearFilter(); + } + else if (newCard.id == 'maintabConfig') { + itemStore.clearFilter(); + bindingStore.filterBy(function (rec) { + if (rec.get('name').substring(0, 19) == "org.openhab.binding") + return true; + if (rec.get('name').substring(0, 18) == "org.openhab.action") + return true; + if (rec.get('name').substring(0, 23) == "org.openhab.persistence") + return true; + return false; + }); + } + } + } + + }); + + viewPort = Ext.create('Ext.container.Viewport', { + el:'openHAB', + layout:'fit', + renderTo:'HABmin', + hidden:true, + items:[tabMain] + }); + + viewPort.show(true); + + Ext.get('splashscreen').fadeOut({ + duration:500, + remove:true + }); + + Ext.get('HABmin').show(true); + + statusTooltip = Ext.create('Ext.tip.ToolTip', {target:'onlineStatus', html:'Offline'}); + +// subscribe("/rest/items"); + +} diff --git a/app/automation/automation.js b/app/automation/automation.js new file mode 100644 index 00000000..22c94ba7 --- /dev/null +++ b/app/automation/automation.js @@ -0,0 +1,81 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.automation.automation', { + extend:'Ext.panel.Panel', + layout:'border', + icon:'images/compass.png', + id:'maintabAutomation', + tabTip:'Automation information', + title:'Automation', + cls:'empty', + + initComponent:function () { + + var ruleList = Ext.create('openHAB.automation.ruleList'); + var notificationList = Ext.create('openHAB.automation.notificationList'); + + var accordion = Ext.create('Ext.Panel', { + split:true, + border:false, + region:'west', + width:600, + layout:{ + type:'accordion', + hideCollapseTool:true + }, + items:[ruleList, notificationList] + }); + + var propertyContainer = Ext.create('Ext.panel.Panel', { + region:'center', + id:'automationPropertyContainer', + header:false, + border:false, + layout:'fit', + setNewProperty:function(newProperties) { + // Remove the current editor + this.removeAll(true); + + // Display the property sheet + this.add(newProperties); + } + }); + + this.items = [accordion, propertyContainer]; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/automation/notificationList.js b/app/automation/notificationList.js new file mode 100644 index 00000000..9ba9b29b --- /dev/null +++ b/app/automation/notificationList.js @@ -0,0 +1,47 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.automation.notificationList', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/bell.png', + title: 'Notifications', + + initComponent:function () { + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/automation/ruleList.js b/app/automation/ruleList.js new file mode 100644 index 00000000..8c2811ff --- /dev/null +++ b/app/automation/ruleList.js @@ -0,0 +1,47 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.automation.ruleList', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/application-list.png', + title: 'Rules', + + initComponent:function () { + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/bindingList.js b/app/config/bindingList.js new file mode 100644 index 00000000..707eed1e --- /dev/null +++ b/app/config/bindingList.js @@ -0,0 +1,87 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.bindingList', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Binding list', + title:'Bindings', + icon:'images/chain.png', + + + initComponent:function () { + + var bindingList = Ext.create('Ext.grid.Panel', { + store:bindingStore, + header:false, + columns:[ + { + text:'Binding Name', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'name' + } + ], + layout:'fit', + viewConfig:{ + stripeRows:false, + enableTextSelection:false, + markDirty:false + }, + listeners:{ + select:function (grid, record, index, eOpts) { + if (record == null) + return; + + var newName = record.get('name'); + var pid = newName.slice(newName.lastIndexOf(".")+1); + + // Create a new bindingProperties + var newProperties = Ext.create('openHAB.config.bindingProperties', {binding: pid}); + newProperties.setItem(newName); + + if(newProperties != null) + Ext.getCmp('configPropertyContainer').setNewProperty(newProperties); + } + } + }); + + this.items = bindingList; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/bindingProperties.js b/app/config/bindingProperties.js new file mode 100644 index 00000000..8b8ecff5 --- /dev/null +++ b/app/config/bindingProperties.js @@ -0,0 +1,168 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.config.bindingProperties', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Binding Properties', + header:false, + binding:"", + + initComponent:function () { + + var tbProperties = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/cross.png', + id:'configPropTb-cancel', + text:'Cancel', + cls:'x-btn-icon', + disabled:true, + tooltip:'Cancel changes made to the variable configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + + // Reset to the current data + var prop = Ext.getCmp('configProperties').getStore(); + var Service = prop.getAt(1).get('value'); + var Variable = prop.getAt(2).get('value'); + } + }, + { + icon:'images/disk.png', + id:'configPropTb-save', + text:'Save', + cls:'x-btn-icon', + disabled:true, + tooltip:'Save changes to the binding configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + } + } + ] + }); + + Ext.define('BindingConfigModel', { + extend:'Ext.data.Model', + fields:[ + {name:'name'}, + {name:'label'}, + {name:'value'}, + {name:'description'}, + {name:'optional'}, + {name:'default'}, + {name:'minimum'}, + {name:'maximum'}, + {name:'options'} + ] + }); + + // Create the Item data store + var configBindingStore = Ext.create('Ext.data.ArrayStore', { + model:'BindingConfigModel', + proxy:{ + type:'rest', + url:'/rest/config/binding/'+this.binding, + reader:{ + type:'json', + root:'config' + }, + headers:{'Accept':'application/json'}, + pageParam:undefined, + startParam:undefined, + sortParam:undefined, + limitParam:undefined + }, + autoLoad:true, + listeners:{ + load:function(store, records, successful, operation, eOpts ){ + var source = []; + var sourceConfig = []; + for(var c = 0; c < records.length; c++) { + var id = records[c].get('name'); + sourceConfig[id] = {}; + sourceConfig[id].displayName = records[c].get('label'); + + if(records[c].get('value') != null) + source[id] = records[c].get('value'); + else + source[id] = ""; + } + + var bindingProperties = Ext.create('Ext.grid.property.Grid', { + title:'Properties', + id:'configItemProperties', + icon:'images/gear.png', + tbar:tbProperties, + hideHeaders:true, + sortableColumns:false, + nameColumnWidth:300, + split:true, + source: source, + sourceConfig:sourceConfig, + viewConfig:{ + markDirty:false + }, + listeners:{ + propertychange:function (source, recordId, value, oldValue, eOpts) { + Ext.getCmp("configPropTb-save").enable(); + Ext.getCmp("configPropTb-cancel").enable(); + } + } + }); + + tabs.add(bindingProperties); + } + } + }); + + var tabs = Ext.create('Ext.tab.Panel', { + layout:'fit', + border:false, + id:'tabsBindingProperties' + }); + + this.items = tabs; + + this.callParent(); + + // Class members. + this.setItem = function (newItem) { + } + } +}) +; \ No newline at end of file diff --git a/app/config/config.js b/app/config/config.js new file mode 100644 index 00000000..da5f8a0d --- /dev/null +++ b/app/config/config.js @@ -0,0 +1,82 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.config', { + extend:'Ext.panel.Panel', + layout:'border', + title:'Configuration', + id:'maintabConfig', + icon:'images/gear.png', + tabTip:'Display openHAB configuration page', + cls:'empty', + + initComponent:function () { + var mapList = Ext.create('openHAB.config.mappingList'); + var sitemapList = Ext.create('openHAB.config.sitemapList'); + var itemList = Ext.create('openHAB.config.itemList'); + var bindingList = Ext.create('openHAB.config.bindingList'); + + var accordion = Ext.create('Ext.Panel', { + split:true, + border:false, + region:'west', + width:600, + layout:{ + type:'accordion', + hideCollapseTool:true + }, + items:[itemList, sitemapList, mapList, bindingList] + }); + + var propertyContainer = Ext.create('Ext.panel.Panel', { + region:'center', + id:'configPropertyContainer', + header:false, + border:false, + layout:'fit', + setNewProperty:function(newProperties) { + // Remove the current editor + this.removeAll(true); + + // Display the property sheet + this.add(newProperties); + } + }); + + this.items = [accordion, propertyContainer]; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/groupProperties.js b/app/config/groupProperties.js new file mode 100644 index 00000000..958bbedc --- /dev/null +++ b/app/config/groupProperties.js @@ -0,0 +1,167 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +var lookupStore; + +Ext.define('openHAB.config.groupProperties', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Group configuration', + header:false, + + initComponent:function () { + Ext.define('ItemIcons', { + extend:'Ext.data.Model', + fields:[ + {type:'number', name:'id'}, + {type:'string', name:'icon'}, + {type:'string', name:'name'} + ] + }); + + var tbProperties = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/cross.png', + id:'configPropTb-cancel', + text:'Cancel', + cls:'x-btn-icon', + disabled:true, + tooltip:'Cancel changes made to the group configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + + // Reset to the current data + } + }, + { + icon:'images/disk.png', + id:'configPropTb-save', + text:'Save', + cls:'x-btn-icon', + disabled:true, + tooltip:'Save changes to the group configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + } + } + ] + }); + + var groupOptions = Ext.create('Ext.grid.property.Grid', { + title:'Properties', + id:'configGroupProperties', + icon:'images/gear.png', + tbar:tbProperties, + hideHeaders:true, + sortableColumns:false, + nameColumnWidth:300, + split:true, + source:{ + "ItemName":"", + "Icon":"" + }, + sourceConfig:{ + ItemName:{ + displayName:"Group Name" + }, + Icon:{ + renderer:function (v) { + var icon = getIconByValue(v); + if (icon == null) + return null; + return '
' + + '  ' + + icon.name+'
'; + }, + editor:Ext.create('Ext.form.ComboBox', { + store:{model:'ItemIcons', data:iconTypeArray}, + queryMode:'local', + typeAhead:false, + editable:false, + displayField:'name', + valueField:'id', + forceSelection:true, + editable:false, + allowBlank:false, + listConfig:{ + getInnerTpl:function () { + var tpl = '
' + + '  ' + + '{name}
'; + return tpl; + } + } + }) + } + }, + viewConfig:{ + markDirty:false + }, + listeners:{ + propertychange:function (source, recordId, value, oldValue, eOpts) { + Ext.getCmp("configPropTb-save").enable(); + Ext.getCmp("configPropTb-cancel").enable(); + } + } + }); + + var tabs = Ext.create('Ext.tab.Panel', { + layout:'fit', + border:false, + id:'tabsGroupProperties', + items:[groupOptions] + }); + + this.items = tabs; + + this.callParent(); + + // Class members. + this.setItem = function (newItem) { + var item = itemStore.findExact("name", newItem); + if (item == -1) + return; + + var rec = itemStore.getAt(item); + + groupOptions.setProperty("ItemName", rec.get('name')); +// itemOptions.setProperty("Type", rec.get('type')); + } + } +}) +; diff --git a/app/config/itemBindings.js b/app/config/itemBindings.js new file mode 100644 index 00000000..b96cb5c3 --- /dev/null +++ b/app/config/itemBindings.js @@ -0,0 +1,49 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.config.itemBindings', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/chain.png', + title: 'Bindings', + + initComponent:function () { + +// this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/itemList.js b/app/config/itemList.js new file mode 100644 index 00000000..2266623c --- /dev/null +++ b/app/config/itemList.js @@ -0,0 +1,108 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.itemList', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/document-node.png', + tabTip:'Configure items and groups', + title:'Items and Groups', + + initComponent:function () { + + var itemsTree = Ext.create('Ext.grid.Panel', { + id:'configItemTree', + store:itemStore, + header:false, + split:true, + collapsible:false, + multiSelect:false, + columns:[ + { + text:'Item', + flex:5, + dataIndex:'name' + }, + { + text:'Type', + flex:2, + dataIndex:'type', + renderer:function (value, metaData, record, row, col, store, gridView) { + var img = 'node.png'; + if (record.get("type") != null) + img = getItemTypeIcon(record.get("type")); + return '  ' + value; + } + }, + { + text:'Binding', + flex:2, + dataIndex:'binding' + }, + { + text:'State', + flex:2, + dataIndex:'state' + } + ], + listeners:{ + select:function (grid, record, index, eOpts) { + if (record == null) + return; + + var newName = record.get('name'); + var newProperties = null; + if (record.get("type") == "GroupItem") { + // Create a new groupProperties + newProperties = Ext.create('openHAB.config.groupProperties'); + newProperties.setItem(newName); + } + else { + // Create a new itemProperties + newProperties = Ext.create('openHAB.config.itemProperties'); + newProperties.setItem(newName); + } + + if(newProperties != null) + Ext.getCmp('configPropertyContainer').setNewProperty(newProperties); + } + } + }); + + this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/itemProperties.js b/app/config/itemProperties.js new file mode 100644 index 00000000..f959801b --- /dev/null +++ b/app/config/itemProperties.js @@ -0,0 +1,208 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.config.itemProperties', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Item Properties', + header:false, + + initComponent:function () { + Ext.define('ItemIcons', { + extend:'Ext.data.Model', + fields:[ + {type:'number', name:'id'}, + {type:'string', name:'icon'}, + {type:'string', name:'name'} + ] + }); + + var tbProperties = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/cross.png', + id:'configPropTb-cancel', + text:'Cancel', + cls:'x-btn-icon', + disabled:true, + tooltip:'Cancel changes made to the item configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + + // Reset to the current data + } + }, + { + icon:'images/disk.png', + id:'configPropTb-save', + text:'Save', + cls:'x-btn-icon', + disabled:true, + tooltip:'Save changes to the item configuration', + handler:function () { + Ext.getCmp("configPropTb-save").disable(); + Ext.getCmp("configPropTb-cancel").disable(); + } + } + ] + }); + + var graphTypeStore = Ext.create('Ext.data.Store', { + fields:['id', 'name'] + }); + var graphTypes = [ + {id:0,name:'Spline'}, + {id:1,name:'Line'}, + {id:2,name:'Bar'} + ]; + + graphTypeStore.loadData(graphTypes); + + var itemOptions = Ext.create('Ext.grid.property.Grid', { + title:'Properties', + id:'configItemProperties', + icon:'images/gear.png', + tbar:tbProperties, + hideHeaders:true, + sortableColumns:false, + nameColumnWidth:300, + split:true, + source:{ + "ItemName":"", + "Type":"", + "Label":"", + "Units":"", + "Icon":"" + }, + sourceConfig:{ + ItemName:{ + displayName:"Item Name" + }, + GraphType:{ + displayName:"Graph Type", + renderer:function (v) { +// return getGraphType(v); + }, + editor:Ext.create('Ext.form.ComboBox', { + store:graphTypeStore, + queryMode:'local', + typeAhead:false, + editable:false, + displayField:'name', + valueField:'id' + }) + }, + Icon:{ + renderer:function (v) { + var icon = getIconByValue(v); + if(icon == null) + return null; + return '
' + + '  ' + + icon.name+'
'; + }, + editor:Ext.create('Ext.form.ComboBox', { + store:{model:'ItemIcons', data:iconTypeArray}, + queryMode:'local', + typeAhead:false, + editable:false, + displayField:'name', + valueField:'id', + forceSelection:true, + editable:false, + allowBlank:false, + listConfig:{ + getInnerTpl:function () { + var tpl = '
' + + '  ' + + '{name}
'; + return tpl; + } + } + }) + }, + Mapping:{ + displayName:"Mapping", + renderer:function (v) { + }, + editor:Ext.create('Ext.form.ComboBox', { +// store:graphTypeStore, + queryMode:'local', + typeAhead:false, + editable:false, + displayField:'name', + valueField:'id' + }) + } + }, + viewConfig:{ + markDirty:false + }, + listeners:{ + propertychange:function (source, recordId, value, oldValue, eOpts) { + Ext.getCmp("configPropTb-save").enable(); + Ext.getCmp("configPropTb-cancel").enable(); + } + } + }); + + var itemBindings = Ext.create('openHAB.config.itemBindings'); + + var tabs = Ext.create('Ext.tab.Panel', { + layout:'fit', + border:false, + id:'tabsItemProperties', + items:[itemOptions, itemBindings] + }); + + this.items = tabs; + + this.callParent(); + + // Class members. + this.setItem = function (newItem) { + var item = itemStore.findExact("name", newItem); + if(item == -1) + return; + + var rec = itemStore.getAt(item); + + itemOptions.setProperty("ItemName", rec.get('name')); + itemOptions.setProperty("Type", rec.get('type')); + } + } +}) +; \ No newline at end of file diff --git a/app/config/mappingList.js b/app/config/mappingList.js new file mode 100644 index 00000000..de3be560 --- /dev/null +++ b/app/config/mappingList.js @@ -0,0 +1,48 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.mappingList', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Mapping list', + id:'mappingList', + title:'Mapping', + icon:'images/tables-relation.png', + + initComponent:function () { + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/mappingProperties.js b/app/config/mappingProperties.js new file mode 100644 index 00000000..1626c015 --- /dev/null +++ b/app/config/mappingProperties.js @@ -0,0 +1,213 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +var lookupStore; + +Ext.define('openHAB.config.mappingProperties', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Mapping configuration', + header:false, + + initComponent:function () { + Ext.define('MapList', { + extend:'Ext.data.Model', + fields:[ + {name:'minimum'}, + {name:'maximum'}, + {name:'label'}, + {name:'colour'}, + {name:'icon'} + ] + }); + // create the data store + lookupStore = Ext.create('Ext.data.ArrayStore', { + model:'MapList' + }); + + var tbMapping = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/cross.png', + id:'configLookupTb-cancel', + text:'Cancel', + cls:'x-btn-icon', + disabled:true, + tooltip:'Cancel changes made to the lookup table', + handler:function () { + Ext.getCmp("configLookupTb-save").disable(); + Ext.getCmp("configLookupTb-cancel").disable(); + Ext.getCmp("configLookupTb-add").enable(); + Ext.getCmp("configLookupTb-delete").disable(); + + // Reset to the current data + var prop = Ext.getCmp('configProperties').getStore(); + var Service = prop.getAt(1).get('value'); + var Variable = prop.getAt(2).get('value'); + SetConfigVariableData(configDeviceId, Service, Variable); + } + }, + { + icon:'images/disk.png', + id:'configLookupTb-save', + text:'Save', + cls:'x-btn-icon', + disabled:true, + tooltip:'Save changes to the lookup table', + handler:function () { + Ext.getCmp("configLookupTb-save").disable(); + Ext.getCmp("configLookupTb-cancel").disable(); + Ext.getCmp("configLookupTb-add").enable(); + SaveConfigVariableData(); + } + }, + { + icon:'images/plus-button.png', + id:'configLookupTb-add', + text:'Add', + cls:'x-btn-icon', + disabled:true, + tooltip:'Add a row to the lookup table', + handler:function () { + Ext.getCmp("configLookupTb-save").enable(); + Ext.getCmp("configLookupTb-cancel").enable(); + + var newVar = {}; + newVar.value = 0; + newVar.label = "New Label"; + + lookupStore.add(newVar); + } + }, + { + icon:'images/minus-button.png', + id:'configLookupTb-delete', + text:'Delete', + cls:'x-btn-icon', + disabled:true, + tooltip:'Remove highlighted row from the lookup table', + handler:function () { + Ext.getCmp("configLookupTb-save").enable(); + Ext.getCmp("configLookupTb-cancel").enable(); + Ext.getCmp("configLookupTb-add").enable(); + Ext.getCmp("configLookupTb-delete").disable(); + + var selection = Ext.getCmp("gridLookup").getView().getSelectionModel().getSelection()[0]; + if (selection) { + lookupStore.remove(selection); + } + } + } + ] + }); + + this.cellEditing = new Ext.grid.plugin.CellEditing({ + clicksToEdit:1 + }); + + var itemMapping = Ext.create('Ext.grid.Panel', { + xtype:'cell-editing', + id:'gridLookup', + title: 'Mapping Properties', + icon:'images/tables-relation.png', + header:false, + plugins:[this.cellEditing], + store:lookupStore, + columns:[ + { + header:'Minimum', + dataIndex:'minimum', + width:75, + editor:{ + allowBlank:false + } + }, + { + header:'Maximum', + dataIndex:'maximum', + width:75, + editor:{ + allowBlank:false + } + }, + { + header:'Label', + dataIndex:'label', + width:300, + editor:{ + allowBlank:false + } + }, + { + header:'Value', + dataIndex:'value', + editor:{ + allowBlank:false + } + }, + { + header:'Icon', + dataIndex:'icon', + editor:{ + allowBlank:false + } + } + ], + selModel:{ + selType:'cellmodel' + }, + tbar:tbMapping, + listeners:{ + beforeedit:function (dv, record, item, index, e) { + Ext.getCmp("configLookupTb-delete").enable(); + }, + edit:function (dv, record, item, index, e) { + Ext.getCmp("configLookupTb-save").enable(); + } + } + }); + + var tabs = Ext.create('Ext.tab.Panel', { + layout:'fit', + border:false, + id:'tabsMappingProperties', + items:[itemMapping] + }); + + this.items = tabs; + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/sitemapList.js b/app/config/sitemapList.js new file mode 100644 index 00000000..79079403 --- /dev/null +++ b/app/config/sitemapList.js @@ -0,0 +1,85 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.sitemapList', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Sitemap list', + id:'sitemapList', + title:'Sitemaps', + icon:'images/maps-stack.png', + + initComponent:function () { + + var sitemapList = Ext.create('Ext.grid.Panel', { + id:'configSitemapList', + store:sitemapStore, + header:false, + columns:[ + { + text:'Sitemap Name', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'name' + } + ], + layout:'fit', + viewConfig:{ + stripeRows:false, + enableTextSelection:false, + markDirty:false + }, + listeners:{ + select:function (grid, record, index, eOpts) { + if (record == null) + return; + + // Create a new itemProperties + var newProperties = Ext.create('openHAB.config.sitemapProperties'); + var newName = record.get('name'); +// newProperties.setItem(newName); + + Ext.getCmp('configPropertyContainer').setNewProperty(newProperties); + } + } + }); + + this.items = sitemapList; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/sitemapProperties.js b/app/config/sitemapProperties.js new file mode 100644 index 00000000..7364b123 --- /dev/null +++ b/app/config/sitemapProperties.js @@ -0,0 +1,186 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.config.sitemapProperties', { + extend:'Ext.panel.Panel', + layout:'fit', + id:'sitemapProperties', + tabTip:'Sitemap Properties', + header:false, + + initComponent:function () { + var configTree = []; + + makeItemGroupTree(configTree, "All"); + + // We want to setup a model and store instead of using dataUrl + Ext.define('ItemTree', { + extend:'Ext.data.Model', + fields:[ + {name:'Parent', type:'string'}, + {name:'State', type:'string'}, + {name:'Type', type:'string'} + ] + }); + + var sitemapItemStore = Ext.create('Ext.data.TreeStore', { + model:'ItemTree', + proxy:{ + type:'memory' + }, + folderSort:true + }); + + var rootHere = []; + rootHere.text = "ROOT!!!"; + rootHere.children = configTree; + var configRootNode = sitemapItemStore.setRootNode(rootHere); + + var itemsTree = Ext.create('Ext.tree.Panel', { + id:'sitemapItemTree', + store:sitemapItemStore, + header:true, + title:"Items", + split:true, + flex:1, + collapsible:false, + useArrows:false, + lines:true, + rootVisible:false, + multiSelect:false, + viewConfig:{ + allowCopy: true, + copy: true, + plugins:{ + ptype:'gridviewdragdrop', + dragGroup:'sitemapItemTree', + dropGroup:'sitemapSitemapTree', + enableDrag:true, + enableDrop:false + } + }, + columns:[ + { + xtype:'treecolumn', //this is so we know which column will show the tree + text:'Item', + flex:5, + dataIndex:'Parent' + }, + { + text:'Type', + flex:2, + dataIndex:'type' + } + ] + }); + + var sitemapTree = Ext.create('Ext.tree.Panel', { + id:'sitemapSitemapTree', +// store:sitemapItemStore, + header:true, + title:"Sitemap Configuration", + split:true, + flex:3, + collapsible:false, + useArrows:false, + lines:true, + rootVisible:false, + multiSelect:false, + viewConfig:{ + plugins:{ + ptype:'gridviewdragdrop', + dragGroup:'sitemapSitemapTree', + dropGroup:'sitemapItemTree', + enableDrag:false, + enableDrop:true + }, + listeners:{ + beforedrop:function (node, data, overModel, dropPosition, dropFunction, eOpts) { +// var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view'; +// Ext.example.msg('Drag from right to left', 'Dropped ' + data.records[0].get('name') + dropOn); +// return 0; + }, + drop:function (node, data, dropRec, dropPosition) { + var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view'; +// Ext.example.msg('Drag from right to left', 'Dropped ' + data.records[0].get('name') + dropOn); + } + } + + }, + columns:[ + { + xtype:'treecolumn', //this is so we know which column will show the tree + text:'Item', + flex:5, + dataIndex:'Parent' + }, + { + text:'Type', + flex:2, + dataIndex:'type' + } + ] + }); + + var sitemapDesign = Ext.create('Ext.panel.Panel', { + itemId:'sitemapPanel', + title:'Properties', + id:'sitemapPanel', + icon:'images/maps-stack.png', + xtype:'panel', +// tbar:highchartsToolbar, + maintainFlex:true, + border:false, + layout:'fit', + layout:{ + type:'hbox', + align:'stretch' + //, padding: 5 + }, + items:[itemsTree, sitemapTree] + }); + + var tabs = Ext.create('Ext.tab.Panel', { + layout:'fit', + border:false, + id:'tabsSitemapProperties', + items:[sitemapDesign] + }); + + this.items = tabs; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/zwaveDeviceList.js b/app/config/zwaveDeviceList.js new file mode 100644 index 00000000..73c96923 --- /dev/null +++ b/app/config/zwaveDeviceList.js @@ -0,0 +1,49 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.config.zwaveDeviceList', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/application-list.png', + title: 'ZWave Devices', + + initComponent:function () { + +// this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/config/zwaveNetwork.js b/app/config/zwaveNetwork.js new file mode 100644 index 00000000..bb4f1de8 --- /dev/null +++ b/app/config/zwaveNetwork.js @@ -0,0 +1,49 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.config.zwaveNetwork', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/application-list.png', + title: 'ZWave Network', + + initComponent:function () { + +// this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/graph/graph.js b/app/graph/graph.js new file mode 100644 index 00000000..04d9f6e2 --- /dev/null +++ b/app/graph/graph.js @@ -0,0 +1,84 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.graph.graph', { + extend:'Ext.panel.Panel', + layout:'border', + icon:'images/database-sql.png', + id:'maintabGraph', + tabTip:'Display chart page', + title:'Persistence', + cls:'empty', + + initComponent:function () { + // Default to local time + Highcharts.setOptions({global:{useUTC:false}}); + + var itemList = Ext.create('openHAB.graph.itemList'); + + var accordion = Ext.create('Ext.Panel', { + split:true, + border:true, + region:'west', + width:450, + preventHeader:true, + layout:{ + type:'accordion', + hideCollapseTool:true + }, + items:[itemList] + }); + + // If we're running on a mobile device, allow the lists to collapse + if (Ext.is.Desktop == false) + accordion.collapsed = true; + + var chartGraph = Ext.create('openHAB.graph.graphHighcharts'); + var chartTable = Ext.create('openHAB.graph.graphTable'); + + var tabPanel = Ext.create('Ext.tab.Panel', { + id:'tabPersistence', + plain:false, + region:'center', + layout:'fit', + tabPosition: 'bottom', + items:[chartGraph, chartTable] + }); + + this.items = [accordion, tabPanel]; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/graph/graphHighcharts.js b/app/graph/graphHighcharts.js new file mode 100644 index 00000000..a79467f1 --- /dev/null +++ b/app/graph/graphHighcharts.js @@ -0,0 +1,545 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.graph.graphHighcharts', { + extend:'Ext.panel.Panel', + title:'Chart', + icon:'images/chart-up.png', + layout:'fit', + header: false, + id:'highchartsChart', + + initComponent:function () { + var chartObject = null; + var chartMin = 0; + var chartMax = 0; + var chartOptions = { + chart:{ + renderTo:'chartIsHere', + animation:false, + type:'spline', + zoomType:'x', + events:{ + selection:function (event) { + event.preventDefault(); + updateChart(chartChannels, Math.floor(event.xAxis[0].min), Math.ceil(event.xAxis[0].max)); + } + } + }, + credits:{ + enabled:false + }, + title:{ + text:null + }, + xAxis:{ + type:'datetime', + dateTimeLabelFormats:{ // don't display the dummy year + month:'%e. %b', + year:'%b' + } + }, + plotOptions:{ + spline:{ + lineWidth:3, + states:{ + hover:{ + lineWidth:5 + } + }, + marker:{ + states:{ + hover:{ + enabled:true, + symbol:'circle', + radius:5, + lineWidth:1 + } + } + } + }, + series:{ + marker:{ + enabled:false + } + } + }, + legend:{ + enabled:true + }, + tooltip:{ + enabled:true, + crosshairs:true, + shared:false, + formatter:function () { + return '' + this.series.name + '
' + + Highcharts.dateFormat('%H:%M:%S %a %d %b %Y', this.x) + ': ' + + Highcharts.numberFormat(this.y, 2); + } + } + }; + + + + + + function toolbarEnable() { + Ext.getCmp('chartTb-zoomIn').enable(); + Ext.getCmp('chartTb-zoomOut').enable(); + Ext.getCmp('chartTb-scrollLeft').enable(); + Ext.getCmp('chartTb-scrollRight').enable(); + Ext.getCmp('chartTb-viewDay').enable(); + Ext.getCmp('chartTb-viewWeek').enable(); + Ext.getCmp('chartTb-viewMonth').enable(); + Ext.getCmp('chartTb-viewYear').enable(); + Ext.getCmp('chartTb-info').enable(); + }; + + + function updateChart(channels, start, stop) { + chartChannels = channels; + var timeStart = (new Date()).getTime(); + var timeInit = timeStart; + + Ext.MessageBox.show({ + msg:'Downloading graph data...', + width:100, + height:40, + icon:'graph-download', + draggable:false, + closable:false + }); + + if(isNaN(start)) + start = 0; + if(isNaN(stop)) + stop = 0; + + + if (start == 0 || stop == 0) { + var ts = Math.round((new Date()).getTime()); + chartMin = ts - (2 * 86400000); + chartMax = ts; + } + + var parms = {}; + parms.starttime = Math.floor(start); + parms.endtime = Math.ceil(stop); + + // Remove the categories from the yAxis + chartOptions.yAxis = []; + for(var cnt = 0; cnt < 4; cnt++) { + chartOptions.yAxis[cnt] = []; + chartOptions.yAxis[cnt].title = ""; + } + + Ext.Ajax.request({ + url:'/rest/history/'+channels[0].name, + timeout:20000, + params:parms, + method:'GET', + headers:{'Accept': 'application/json'}, + success:function (response, opts) { + // Reset the info store + graphInfoItems = []; + + graphInfoItems[1] = []; + graphInfoItems[1].name = "Response Time"; + graphInfoItems[1].value = (new Date()).getTime() - timeStart + " ms"; + + timeStart = (new Date()).getTime(); + + var json = Ext.decode(response.responseText); + + if(json.data == null) { + Ext.MessageBox.show({ + msg:'Warning: No data returned', + width:200, + draggable:false, + icon:'graph-download-warning', + closable:false + }); + setTimeout(function () { + Ext.MessageBox.hide(); + }, 2500); + + return; + } +// graphInfoItems[0] = []; +// graphInfoItems[0].name = "openHAB Processing Time"; +// graphInfoItems[0].value = Math.floor(json.procTime * 1000) + " ms"; + + var options = chartOptions; // Keep a copy of the options - NOT REALLY DOING THIS!!! + + options.series = []; + + var cnt, tot; + cnt = 0; + tot = 0; + + var newSeries = []; + for (var i = 0; i < json.data.length; i++) { + newSeries[i] = []; + newSeries[i][0] = parseInt(json.data[i].time); + newSeries[i][1] = parseFloat(json.data[i].value); + } + var seriesData = newSeries; + +// if (json.series) { +// for (var s = 0; s < json.series.length; s++) { + var s = 0; + +// graphInfoItems[4 + s] = []; +// graphInfoItems[4 + s].name = json.series[s].label + " points"; +// graphInfoItems[4 + s].value = json.series[s].pointsRet + " / " + json.series[s].pointsTot; + + // Get the configuration data +// var dmDev = getDMDevice(json.series[s].Id); + + // Get the axis +// var yAxis = 0; +// for (var c = 0; c < channels.length; c++) { +// if (channels[c].value == dmDev.Id) { +// yAxis = channels[c].axis; +// break; +// } +// } + + + // If ticks are provided, add categories to the graph +// if (json.series[s].ticks) { +// if(json.series[s].ticks.length > 0) { +// chartOptions.yAxis[yAxis].categories = new Array(); +// for (var t = 0; t < json.series[s].ticks.length; t++) { +// chartOptions.yAxis[yAxis].categories[json.series[s].ticks[t][1]] = json.series[s].ticks[t][0]; +// } +// } +// } + + options.series[s] = []; + options.series[s].data = seriesData; + options.series[s].name = json.name;//json.series[s].label; + options.series[s].yAxis = 0;//yAxis; +// options.series[s].color = '#FF0000'; + //options.series[s].marker = true; + +// if (dmDev == null) + options.series[s].type = "spline"; + /* else { + switch (dmDev.Type) { + case 1: + options.series[s].type = "line"; + break; + case 2: + options.series[s].type = "scatter"; + // chartOptions.scatter.marker.enabled = true; + break; + case 3: + case 4: + options.series[s].type = "area"; + break; + default: + options.series[s].type = "spline"; + break; + } + }*/ +// } + + this.chartObject = new Highcharts.Chart(options); +// } + if (json.timestart) { + chartMin = parseInt(json.timestart); + chartMax = parseInt(json.timeend); + + if ((chartMax - chartMin) < 300) + Ext.getCmp('chartTb-zoomIn').disable(); + else + Ext.getCmp('chartTb-zoomIn').enable(); + } + + graphInfoItems[2] = []; + graphInfoItems[2].name = "Render Time"; + graphInfoItems[2].value = (new Date()).getTime() - timeStart + " ms"; + graphInfoItems[3] = []; + graphInfoItems[3].name = "Total Time"; + graphInfoItems[3].value = (new Date()).getTime() - timeInit + " ms"; + + Ext.MessageBox.hide(); + + toolbarEnable(); + if (json.error) { + Ext.MessageBox.show({ + msg:'Warning: ' + json.error, + width:200, + draggable:false, + icon:'graph-download-warning', + closable:false + }); + setTimeout(function () { + Ext.MessageBox.hide(); + }, 2500); + } + }, + failure:function (response, opts) { + Ext.MessageBox.hide(); + Ext.MessageBox.show({ + msg:'Error downloading data from Vera: Response ' + response.status, + width:200, + draggable:false, + icon:'graph-download-error', + closable:false + }); + setTimeout(function () { + Ext.MessageBox.hide(); + }, 2500); + } + }); + }; + + function redrawChart() { + if (this.chartObject != null) { + this.chartObject.destroy(); + this.chartObject = null; + } + + var options = chartOptions; + options.chart.animation = false; + this.chartObject = new Highcharts.Chart(options); + options.chart.animation = true; + }; + + function doGraphTime(days) { + var ts = Math.round((new Date()).getTime()); + updateChart(chartChannels, ts - (days * 86400000), ts); + }; + + + + // ----------------------- + // Main initComponent code + + var highchartsToolbar = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/zoom_in.png', + id:'chartTb-zoomIn', + disabled:true, + cls:'x-btn-icon', + tooltip:'Zoom In', + handler:function () { + var zoom; + var min; + var max; + + zoom = (chartMax - chartMin) / 5; + min = chartMin + zoom; + max = chartMin - zoom; + updateChart(chartChannels, min, max); + } + }, + { + icon:'images/zoom_out.png', + id:'chartTb-zoomOut', + disabled:true, + cls:'x-btn-icon', + tooltip:'Zoom Out', + handler:function () { + var zoom; + + zoom = (chartMax - chartMin) / 5; + updateChart(chartChannels, chartMin - zoom, chartMax + zoom); + } + }, + '-', + { + icon:'images/calendar-select.png', + id:'chartTb-viewDay', + disabled:true, + cls:'x-btn-icon', + tooltip:'Display last day', + handler:function () { + doGraphTime(1); + } + }, + { + icon:'images/calendar-select-week.png', + id:'chartTb-viewWeek', + disabled:true, + cls:'x-btn-icon', + tooltip:'Display last week', + handler:function () { + doGraphTime(7); + } + }, + { + icon:'images/calendar-select-month.png', + id:'chartTb-viewMonth', + disabled:true, + cls:'x-btn-icon', + tooltip:'Display last month', + handler:function () { + doGraphTime(30); + } + }, + { + icon:'images/calendar.png', + id:'chartTb-viewYear', + disabled:true, + cls:'x-btn-icon', + tooltip:'Display last year', + handler:function () { + doGraphTime(365); + } + }, + '-', + { + icon:'images/arrow_left.png', + id:'chartTb-scrollLeft', + disabled:true, + cls:'x-btn-icon', + tooltip:'Scroll left', + handler:function () { + var scroll; + + scroll = (chartMax - chartMin) / 5; + updateChart(chartChannels, chartMin - scroll, chartMax - scroll); + } + }, + { + icon:'images/arrow_right.png', + id:'chartTb-scrollRight', + disabled:true, + cls:'x-btn-icon', + tooltip:'Scroll right', + handler:function () { + var scroll; + + scroll = (chartMax - chartMin) / 5; + updateChart(chartChannels, chartMin + scroll, chartMax + scroll); + } + }, + '-', + { + icon:'images/clock.png', + id:'chartTb-realTime', + disabled:true, + cls:'x-btn-icon', + tooltip:'Display real-time graph', + handler:function () { + } + }, + { xtype:'tbfill' }, + { + icon:'images/information-balloon.png', + id:'chartTb-info', + cls:'x-btn-icon', + disabled:true, + tooltip:'Display information on current graph', + handler:function () { + Ext.create('Ext.data.Store', { + storeId:'graphInfoStore', + fields:['name', 'value'], + data:graphInfoItems + }); + + var graphInfoGrid = Ext.create('Ext.grid.Panel', { + hideHeaders:true, + store:Ext.data.StoreManager.lookup('graphInfoStore'), + columns:[ + { text:'Name', dataIndex:'name', width:250 }, + { text:'Value', dataIndex:'value', flex:1 } + ], + disableSelection:true, + viewConfig:{ + trackOver:false + } + }); + + var grWin = Ext.create('Ext.Window', { + title:'Graph Information', + width:350, + height:300, + modal:true, + resizable:false, + draggable:false, + itemId:'chartInfo', + id:'chartInfo', + items:[graphInfoGrid] + }); + + grWin.show(); + grWin.alignTo(Ext.get("chartIsHere"), "tr-tr"); + } + } + ] + }); + + var highchartsPanel = Ext.create('Ext.panel.Panel', { + itemId:'chartPanel', + id:'chartPanel', + xtype:'panel', + tbar:highchartsToolbar, + flex:1, +// region:'center', + maintainFlex:true, + border:false, + layout:'fit', + items:[ + { + itemId:'chartIsHere', + id:'chartIsHere', + listeners:{ + resize:function (comp, width, height, oldWidth, oldHeight, eOpts) { + if (this.chartObject != null) { + this.chartObject.setSize(width, height); + } + } + } + } + ] + }); + + this.items = highchartsPanel; + + this.callParent(); + + this.chartUpdate=function(channels, start, stop) { + updateChart(channels, start, stop); + } + } +}) +; + + + diff --git a/app/graph/graphList.js b/app/graph/graphList.js new file mode 100644 index 00000000..804333bf --- /dev/null +++ b/app/graph/graphList.js @@ -0,0 +1,46 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.graph.graphList', { + extend:'Ext.panel.Panel', + layout:'fit', + initComponent:function () { + +// this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/graph/graphTable.js b/app/graph/graphTable.js new file mode 100644 index 00000000..1ef50981 --- /dev/null +++ b/app/graph/graphTable.js @@ -0,0 +1,109 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.graph.graphTable', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'Show and edit graph data', + id:'graphData', + title:'Table', + icon:'images/table-export.png', + + initComponent:function () { + + Ext.define('GraphTableModel', { + extend:'Ext.data.Model', + fields:[ + {name:'name'}, + {name:'state'}, + {name:'type'}, + {name:'link'}, + {name:'binding'}, + {name:'groups'} + ] + }); + + // Create the Item data store + var dataStore = Ext.create('Ext.data.ArrayStore', { + model:'GraphTableModel' + }); + + + + + + var itemsTree = Ext.create('Ext.grid.Panel', { + id:'configItemTree', + store:itemStore, + header:false, + split:true, + collapsible:false, + multiSelect:false, + columns:[ + { + text:'Item', + flex:5, + dataIndex:'name' + }, + { + text:'Type', + flex:2, + dataIndex:'type', + renderer:function (value, metaData, record, row, col, store, gridView) { + var img = 'node.png'; + if (record.get("type") != null) + img = getItemTypeIcon(record.get("type")); + return '  ' + value; + } + }, + { + text:'Time', + flex:2, + dataIndex:'binding' + }, + { + text:'State', + flex:2, + dataIndex:'state' + } + ] + }); + + + + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/graph/itemList.js b/app/graph/itemList.js new file mode 100644 index 00000000..6984c138 --- /dev/null +++ b/app/graph/itemList.js @@ -0,0 +1,214 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.graph.itemList', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/chart_curve_add.png', + tabTip:'Items List', + title:'Item List', + initComponent:function () { + var selectedChanList = []; + + var itemToolbar = Ext.create('Ext.toolbar.Toolbar', { + items:[ + { + icon:'images/cross.png', + id:'chartChanTb-clear', + text:'Reset Graph', + cls:'x-btn-icon', + disabled:false, + tooltip:'Clear Selected Channels and Reset Period', + handler:function () { + var selectedChanList = []; + Ext.getCmp("graphItemGrid").clearSelection(); + Ext.getCmp('chartChanTb-update').disable(); + Ext.getCmp('chartChanTb-save').disable(); + } + }, + { + icon:'images/disk.png', + id:'chartChanTb-save', + text:'Save Graph', + cls:'x-btn-icon', + disabled:true, + tooltip:'Save current chart configuration', + handler:function () { + } + }, + { + icon:'images/external.png', + id:'chartChanTb-update', + text:'Update', + cls:'x-btn-icon', + disabled:true, + tooltip:'Retrieve the currently selected channels.', + handler:function () { + if(selectedChanList.length == 0) + return; + + Ext.getCmp('highchartsChart').chartUpdate(selectedChanList); + } + } + ] + }); + + var itemList = Ext.create('Ext.grid.Panel', { + id:'graphItemGrid', + store:itemStore, + tbar:itemToolbar, + header:false, + disableSelection:true, + columns:[ + { + menuDisabled:true, + menuText:"Data Type", + sortable:true, + width:24, + hidden:false, + resizable:false, + dataIndex:'DataType', + renderer:function (value, metaData, record, row, col, store, gridView) { + if (record.get("type") != null) + return ''; + else + return ''; + } + }, + { + text:'Item', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'name' + }, + { + text:'Last Value', + width:75, + hidden:true, + sortable:true, + dataIndex:'state' + } + ], + layout:'fit', + viewConfig:{ + stripeRows:false, + enableTextSelection:false, + markDirty:false, + getRowClass:function (record) { + if(selectedChanList == null) + return ''; + var name = record.get('name'); + for(var i = 0; i < selectedChanList.length; i++) { + if(selectedChanList[i].name == name) { + return 'x-grid-row-selected-override'; + } + } + return ''; + } + }, + listeners:{ + activate:function (grid, eOpts) { + itemStore.filter("type", "GroupItem"); + }, + itemclick:function (grid, record, item, index, element, eOpts) { + if(selectedChanList == null) + selectedChanList = []; + + if (item == null) + return; + + var el = Ext.get(item); + var name = record.get('name'); + var chanRef = -1; + for(var i = 0; i < selectedChanList.length; i++) { + if(selectedChanList[i].name == name) { + chanRef = i; + break; + } + } + + // Check if the name is in the selected list + if(chanRef == -1) { + // No - add it - if there's still room! + if (selectedChanList.length < 8) { + var newRec = {}; + var Max = -1; + var Total = itemStore.getCount(); + var chanCnt = 0; + + newRec.name = name; + newRec.axis = 0; + selectedChanList.push(newRec); + + Ext.getCmp('chartChanTb-update').enable(); + Ext.getCmp('chartChanTb-save').enable(); + + this.getView().refreshNode(index); + el.frame(); + } + } + else { + selectedChanList.splice(chanRef,1); + if (selectedChanList.length == 0) { + Ext.getCmp('chartChanTb-update').disable(); + Ext.getCmp('chartChanTb-save').disable(); + } + + this.getView().refreshNode(index); + el.frame(); + } + } + }, + clearSelection:function () { + selectedChanList = []; + this.getView().refresh(); + + Ext.getCmp('chartChanTb-update').disable(); + Ext.getCmp('chartChanTb-save').disable(); + } + }); + + this.items = itemList; + + this.callParent(); + }, + listeners:{ + activate:function (grid, eOpts) { + itemStore.filter("type", "GroupItem"); + } + } +}) +; \ No newline at end of file diff --git a/app/graph/saveGraph.js b/app/graph/saveGraph.js new file mode 100644 index 00000000..1394242b --- /dev/null +++ b/app/graph/saveGraph.js @@ -0,0 +1,300 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.graph.saveGraph', { + extend:'Ext.panel.Panel', + layout:'fit', + initComponent:function () { + + var saveWin; + + + Ext.define('Icons', { + extend:'Ext.data.Model', + fields:[ + {type:'number', name:'id'}, + {type:'string', name:'icon'}, + {type:'string', name:'name'} + ] + }); + + var chanData = []; + for (var chCnt = 0; chCnt < channels.length; chCnt++) { + var dev = getDMDevice(channels[chCnt].value); + if (dev != null) { + chanData[chCnt] = {}; + chanData[chCnt].id = channels[chCnt].value; + chanData[chCnt].name = dev.Name; + chanData[chCnt].axis = channels[chCnt].axis; + } + } + + var saveGraphStore = Ext.create('Ext.data.Store', { + storeId:'saveGraphStore', + fields:[ + {type:'number', name:'id'}, + {type:'string', name:'name'}, + {type:'number', name:'axis'} + ], + data:chanData + }); + var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', { + clicksToEdit:1 + }); + var chanList = Ext.create('Ext.grid.Panel', { + id:'saveChanGrid', + store:saveGraphStore, + selType:'cellmodel', + hideHeaders:false, + header:false, + disableSelection:true, + height:195, +// stateful:true, +// stateId:'stateGrid', + columns:[ + { + text:'Id', + hidden:true, + dataIndex:'id' + }, + { + text:'Name', + hideable:false, + flex:8, + sortable:true, + dataIndex:'name' + }, + { + text:'Axis', + hideable:false, + flex:1, + sortable:true, + dataIndex:'axis', + field:{ + xtype:'numberfield', + allowBlank:false, + minValue:1, + maxValue:4 + } + } + ], + layout:'fit', + title:'Channels', + viewConfig:{ + stripeRows:false, + enableTextSelection:false, + markDirty:false + }, + plugins:[cellEditing] + }); + + var yesnoStore = Ext.create('Ext.data.Store', { + fields:['id', 'name'], + data:[ + {id:1, name:'Yes'}, + {id:0, name:'No'} + ] + }); + + var form = Ext.widget('form', { + layout:{ + type:'vbox', + align:'stretch' + }, + border:false, + bodyPadding:10, + fieldDefaults:{ + labelAlign:'top', + labelWidth:100, + labelStyle:'font-weight:bold' + }, + items:[ + { + xtype:'textfield', + id:'graphName', + fieldLabel:'Graph Name', + allowBlank:false, + maxLength:50, + enforceMaxLength:true, + afterLabelTextTpl:'*', +// vtype:'name', + allowBlank:false + }, + { + border:false, + layout:'column', + items:[ + { + columnWidth:0.5, + margin:'0 10 0 0', + xtype:'textfield', + id:'graphRef', + fieldLabel:'Quickview reference', + maxLength:15, + enforceMaxLength:true, + afterLabelTextTpl:'', + allowBlank:true + }, + { + columnWidth:0.5, + margin:'0 0 0 10', + xtype:'textfield', + id:'graphDuration', + fieldLabel:'Duration (days)', + maxLength:5, + enforceMaxLength:true, + maskRe:/([0-9]+)/, + regex:/[0-9]/, + allowBlank:false + } + ] + }, + { + border:false, + layout:'column', + items:[ + { + columnWidth:0.33, + margin:'0 5 0 0', + xtype:'combobox', + fieldLabel:'Icon', + id:'graphIcon', + name:'graphIcon', + store:{model:'Icons', data:dataTypeArray}, + allowBlank:false, + value:0, + valueField:'id', + displayField:'name', + queryMode:'local', + forceSelection:true, + editable:false, + typeAhead:false, + queryMode:'local', + listConfig:{ + getInnerTpl:function () { + var tpl = '
' + + '  ' + + '{name}
'; + return tpl; + } + } + } + ] + } + ], + buttons:[ + { + text:'Cancel', + handler:function () { + this.up('window').destroy(); + } + }, + { + text:'Save', + handler:function () { + if (this.up('form').getForm().isValid() == false) { + return; + } + var parms = {}; + parms.id = 'lr_dmCtrl'; + parms.control = 'saveGraph'; + parms.name = Ext.getCmp('graphName').getValue(); + parms.icon = Ext.getCmp('graphIcon').getValue(); + parms.ref = Ext.getCmp('graphRef').getValue(); + parms.period = Ext.getCmp('graphDuration').getValue() * 86400000; + + var data = saveGraphStore.getRange(); + for (var chCnt = 0; chCnt < data.length; chCnt++) { + parms["channel" + chCnt] = data[chCnt].get('id'); + parms["axis" + chCnt] = data[chCnt].get('axis'); + + if (parms["axis" + chCnt] > 4 | parms["axis" + chCnt] < 1) + parms["axis" + chCnt] = 1; + } + + Ext.Ajax.request({ + url:veraServer + '/data_request', + params:parms, + method:'GET', + success:function (response, opts) { + configGraph = Ext.decode(response.responseText); + graphStore.loadData(configGraph); + } + }); + + this.up('window').destroy(); + } + } + ] + }); + + saveWin = Ext.widget('window', { + title:'Save Graph', + closeAction:'destroy', + width:475, + height:430, + layout:'fit', + resizable:false, + draggable:false, + modal:true, + layout:{ + type:'vbox', + align:'stretch' + }, + items:[chanList, form] + }); + + saveWin.show(); + + if (options != null) { + if (options.Name != null) + Ext.getCmp('graphName').setValue(options.Name); + + if (options.Icon != null) + Ext.getCmp('graphIcon').setValue(options.Icon); + + if (options.Period != null) + Ext.getCmp('graphDuration').setValue(options.Period / 86400000); + + if (options.Reference != null) + Ext.getCmp('graphRef').setValue(options.Reference); + } + + this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/habmin.css b/app/habmin.css new file mode 100644 index 00000000..b80a8ca6 --- /dev/null +++ b/app/habmin.css @@ -0,0 +1,267 @@ +#splashscreen { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index:99; + margin-top: 10%; + background-color: white; + vertical-align: middle; + margin:auto; +} + +.x-grid-row-selected-override .x-grid-cell{ + background-color:#00ff99; +} + +.x-action-col-cell img { + height: 16px; + width: 16px; + cursor: pointer; +} +.x-action-col-cell img.chartAxis1 { + background-image: url(../images/chart_yaxis.png); +} +.x-action-col-cell img.chartAxis2 { + background-image: url(images/chart_yaxis2.png); +} +.x-ie6 .x-action-col-cell img.chartAxis1 { + background-image: url(images/chart_yaxis.png); +} +.x-ie6.x-action-col-cell img.chartAxis2 { + background-image: url(images/chart_yaxis2.png); +} + +.x-ie6 .x-action-col-cell img { + position:relative; + top:-1px; +} + +.x-tree-lines img.node-device { + width:16px; + background-image:url(images/node-select.png) +} +.x-tree-lines img.node-service { + width:16px; + background-image:url(images/node-select-child.png) +} +.x-tree-lines img.node-variable { + width:16px; + background-image:url(images/tag.png) +} + +.x-tree-row-selected-override .x-grid-cell{ + background-image:url(images/tick-small.png); + background-repeat:no-repeat; + z-index: 999; +} + + + + + + + + + + + + + + + + + + + + + + + +/* Main GroupTabPanel style */ +.x-grouptabpanel { + background-color: #4E78B1; + border: solid 0px #4E78B1; +} +/* End of GroupTabPanel style */ + +/* Card Layout container */ +.x-grouptabcontainer { + background-color: white; + border-top: 1px solid #d9d9d9 !important; + border-bottom: 1px solid #d9d9d9 !important; + border-right: 1px solid #d9d9d9 !important; +} +/* End of Card Layout container */ + +.x-grouptabpanel .x-grouptab .x-grid-cell-inner { + font-family: tahoma, arial, sans-serif; + text-decoration: none!important; +} + +.x-grouptabpanel .x-grouptab-first .x-grid-cell-inner { + font-size: 13px; + line-height: 18px; + font-weight: bold; +} + +.x-grouptabbar .x-grid-row .x-grid-cell { + background-color: transparent; + padding-left: 6px; +} + +.x-grouptabbar .x-grid-cell-inner { + color: #395B8E; +} + +.x-grouptabpanel .x-active-group .x-grid-cell-inner { + color: #395B8E; +} + +.x-grouptabbar .x-grouptab { + line-height: 24px; + background-color: transparent; + font-size: 12px; + position: relative; + padding-left: 6px; + padding-bottom: 2px; +} + +.x-grouptabbar .x-grouptab-first { + padding-top: 6px; +} + +.x-grouptabbar .x-grouptab-last { + margin-bottom: 3px; +} + +.x-grouptabbar .x-active-tab .x-grid-cell-inner { + background-color: #ffffff; +} + +.x-grouptabbar .x-tree-elbow-line, +.x-grouptabbar .x-tree-elbow-empty { + width: 0; +} + +.x-grouptabbar .x-active-group .x-grouptab { + background-color: white; +} + +.x-grouptabbar .x-active-group .x-grouptab-first { + border-top: 1px solid #d9d9d9; +} + +.x-grouptabbar .x-active-group .x-grouptab-center { + border-left: 1px solid #d9d9d9; +} + +.x-grouptabbar .x-active-group .x-grouptab-last { + border-bottom: 1px solid #d9d9d9; + padding-bottom: 3px; +} + +.x-grouptabbar .x-active-group .x-grouptab-first, +.x-grouptabbar .x-active-group .x-grouptab-last { + border-left: 1px solid #d9d9d9; +} +/* Tab corners */ +.x-grouptabbar .x-grouptabs-corner { + background-image: url('images/x-grouptabs-corners.gif'); + display: none; + width: 11px; + height: 11px; + position: absolute; + font-size: 1px; + line-height: 6px; + overflow: hidden; + zoom:1; +} + +.x-grouptabbar .x-grouptabs-corner { + display: none; +} + +.x-grouptabbar .x-active-group .x-grouptab-first .x-grouptabs-corner-top-left, +.x-grouptabbar .x-active-group .x-grouptab-last .x-grouptabs-corner-bottom-left { + display: block; +} + +.x-grouptabbar .x-grouptabs-corner-top-left { + background-position: top left; + left: 0; top: 0; +} +.x-grouptabbar .x-grouptabs-corner-bottom-left { + background-position: bottom left; + left: 0; bottom: 0; +} +.x-grouptabbar .x-grouptabs-corner-top-right { + background-position: top right; + right: 0; top: 0; +} +.x-grouptabbar .x-grouptabs-corner-bottom-right { + background-position: bottom right; + right: 0; bottom: 0; +} +.x-grouptabbar .x-active-group .x-grouptabs-corner-bottom-left{ + bottom: -4px; left: -4px; +} +.x-grouptabbar .x-active-group .x-grouptabs-corner-bottom-right{ + bottom: -4px; right: -4px; +} +.x-grouptabbar .x-active-group .x-grouptabs-corner-top-left{ + top: -4px; left: -4px; +} +.x-grouptabbar .x-active-group .x-grouptabs-corner-top-right{ + top: -4px; right: -4px; +} + +.x-grouptabbar .x-tree-panel .x-grid-cell { + overflow: visible; +} + +.x-grouptabbar .x-panel-body { + background-color: #CBDBEF; +} + +.x-grouptabbar { + top: 0 !important; + margin-top: -1px !important; +} + +.x-strict .x-ie7 .x-grouptabbar, .x-strict .x-ie6 .x-grouptabbar { + margin-top: -2px !important; +} + +.x-grouptabbar .x-grouptab .x-tree-icon-parent { + display: none; +} + +.x-grouptabbar .x-grouptab .x-tree-elbow, +.x-grouptabbar .x-grouptab .x-tree-elbow-end { + display: none; +} + +.x-grouptabbar .x-grouptab .x-tree-expander { + background: transparent url('images/elbow-plus-nl.gif') no-repeat; +} + +.x-grouptabbar .x-grid-tree-node-expanded .x-grouptab .x-tree-expander { + background: transparent url('images/elbow-minus-nl.gif') no-repeat; +} + +.x-message-box .graph-download { + background: url("images/system-monitor-24.png") no-repeat scroll 6px 0px transparent; + height: 24px!important; +} + +.x-message-box .graph-download-error { + background: url("images/cross-circle-24.png") no-repeat scroll 6px 0px transparent; + height: 24px!important; + } + +.x-message-box .graph-download-warning { + background: url("images/exclamation-24.png") no-repeat scroll 6px 0px transparent; + height: 24px!important; +} \ No newline at end of file diff --git a/app/system/logViewer.js b/app/system/logViewer.js new file mode 100644 index 00000000..1ec1c1e5 --- /dev/null +++ b/app/system/logViewer.js @@ -0,0 +1,49 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + + +Ext.define('openHAB.system.logViewer', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/application-list.png', + title: 'Log Viewer', + + initComponent:function () { + +// this.items = itemsTree; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/system/system.js b/app/system/system.js new file mode 100644 index 00000000..83a1939e --- /dev/null +++ b/app/system/system.js @@ -0,0 +1,61 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.system.system', { + extend:'Ext.panel.Panel', + layout:'fit', + icon:'images/block.png', + id:'maintabSystem', + tabTip:'Display system information', + title:'System', + cls:'empty', + + initComponent:function () { + var bindings = Ext.create('openHAB.system.systemBindings'); + var logViewer = Ext.create('openHAB.system.logViewer'); + + var tabs = Ext.create('Ext.tab.Panel', { + plain:false, + layout:'fit', + border:false, + id:'tabsSystemProperties', + items:[bindings, logViewer] + }); + + this.items = tabs; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/app/system/systemBindings.js b/app/system/systemBindings.js new file mode 100644 index 00000000..d44f387a --- /dev/null +++ b/app/system/systemBindings.js @@ -0,0 +1,112 @@ +/** + * openHAB, the open Home Automation Bus. + * Copyright (C) 2010-2013, openHAB.org + * + * See the contributors.txt file in the distribution for a + * full listing of individual contributors. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + * Additional permission under GNU GPL version 3 section 7 + * + * If you modify this Program, or any covered work, by linking or + * combining it with Eclipse (or a modified version of that library), + * containing parts covered by the terms of the Eclipse Public License + * (EPL), the licensors of this Program grant you additional permission + * to convey the resulting work. + */ + +/** OpenHAB Admin Console HABmin + * + * @author Chris Jackson + */ + +Ext.define('openHAB.system.systemBindings', { + extend:'Ext.panel.Panel', + layout:'fit', + tabTip:'System Bindings', +// id:'configBindingList', + title:'Bindings', + header:true, + icon:'images/chain.png', + + initComponent:function () { + + var bindings = Ext.create('Ext.grid.Panel', { + store:bindingStore, + header:false, + disableSelection:true, + columns:[ + { + text:'ID', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'id' + }, + { + text:'Name', + hideable:false, + flex:3, + width:75, + sortable:true, + dataIndex:'name' + }, + { + text:'Version', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'version' + }, + { + text:'Status', + hideable:false, + flex:1, + width:75, + sortable:true, + dataIndex:'state', + renderer:function (v) { + if(v == 1) + return "Uninstalled"; + if(v == 2) + return "Installed"; + if(v == 4) + return "Resolved"; + if(v == 8) + return "Starting"; + if(v == 16) + return "Stopping"; + if(v == 32) + return "Active"; + return "Unknown ("+v+")" + } + } + ], + layout:'fit', + viewConfig:{ + stripeRows:false, + enableTextSelection:false, + markDirty:false + } + }); + + this.items = bindings; + + this.callParent(); + } +}) +; \ No newline at end of file diff --git a/debug.html b/debug.html new file mode 100644 index 00000000..97fae3ea --- /dev/null +++ b/debug.html @@ -0,0 +1,44 @@ + + + + + openHAB Administration Interface + + + + + + + + + + + + + +
+
+
+
+
+ +
+
+

+ Loading HABmin web administration console +

+

openHAB Version: ---

+

HABmin Version: ---

+
+
+
+ +
+
+ + + + + diff --git a/images/application-list.png b/images/application-list.png new file mode 100644 index 0000000000000000000000000000000000000000..daf0bbf0d03229862a028e2077314c8c2ad8871d GIT binary patch literal 504 zcmVFg$@o~vQ!*Ilw1;f?^1&f zO4SD+cj4~)-uGVKk=bkpy96y3i#lJ=IJ6D9BaROBJkP9DDp&D%JnMNbxUR>+fHB;= z;QKxVCS@Rm3Q)QSgTdgVUVna~{KCO_JkIv}eQ_DVMFrOFIkJsLW1lLD;^*`Et?F+! zn}l+k1QkzT4d@iUpxtgmBoYZP4TnRB#bS_1Bn0L`2*DDCfP}W*EW;fjF{Gnq^vz!;NI`S|9Jcb;lg&*kkdSTs*J%~o5kV>VNdVpLM5GCB6+guSKoldXJiVhchfZWhQtyY6l zsRZ3_7m~>&*tWgYi^*gnYBvlc7-32S2YiSWv{NpZ#erp6V%2qhZ4ZzmxSFP2%Cda4 u%^-2--vs~4-$SAs@^L6eWY_2XE5HCi8tgJmX(5>a0000q$gGR5;6H z{Qv(y10{fofkH6I3@AO3$p*x`Nil#0jeqs;pT9Ds7{CaN1)$9r#n~kE{`~pF@bLXZ zhF?E_GyM7i!oL`P0x_8Wj$ni2F7#hzWPxfvDaIo>#A+qW*AYQLZl(!&BX$x7Ik;qO170ssEM z@$bKXf%rGW?|(r27bf-TSv zD}TdX0CM*JhkLO)8|Y^+n~Q^sK~hqR;q|N647YFGy>NTZJsWr!5CaSfwJm@a><8NX v2&h?|?P)blL+DiR1~e)gNl0Sp%f9slc!2SJV_5yK@d?7Lh*I*QpAI7l`2J4@FqfAJyh|z zcI~cW-A9{^X|j{VnKX-AT^;!NC;$BaH($P)K|MV^z=vs?Ff}y=>2w+#$Kk0Xot=9Q zjE}!~7K_EMsj3Pb(P$I`fq>VON~ItOzsDhl7JrTy;sXPNhr7G?W!U^IgW)61Fj8#_ zeoS^%=g}uOZ}+9Y>-m<3P^c*)G-iv&)5jCjTNWxdvK<$-H_2-6<>B)+n?lfaU8va= zE=k9?uXNhbW@{53`gXm2W;O@Z)}SK+FbtWutRDS~057s&4+)Y$oeewj4_siL7*HUS zo-wQ*|5rf}h%F--=N@K*nY(GvBUzQ9OOA)>GSX`EbzWEPsq4XNA?dyv zeHqks9XN(h+!A8VakBN|y7_t@)GF{6w2EPN4el>qc{F5*VbK*7(OuuaasHF`dBInJ zYZd%O5O4_9s9{Y$m>`C+0J~1_Exkh-jet_AOYo`*(u(ih842`WIF|n+%+7^y zn93+t-$Z@p!x9A|glIWeM*ZhbYQ>0NlCVN$9HA0KXsrU?=MiM@Uu7Tffl}(d5O!z| zZWhat6>(EU5|xl_OGt401@rO+aR^g*Q!S`eXvg5d2x_~NVh0~GWJ)Eo6(`)pst7k%(WstBfup=meW zWRuz5@tbYBrV7q-VCQnqobSvG6GGt9tb+1sL@k|Q$Rrtl)Ppy68>a7zbJ-L_HqD|n zuQmi;z7L?tPCuEN99tfU;r_6p?2x`jSfjD)y}7Vmo!=MJLdG9q1OgXR*4T}iFKhqs@9;MP#P~ZwzpCFSwVBphuw6Mx6&5p$PsXWsDzjn)u8UVLf7?p!nSQNWxwRT zmXDY!5?xQ|DhoN@p%VIR6_e?lPIAOmps6aPh9W}>IEyEZxaY$nK%%b%5rT6uk}Hi5 z395r^K%wmvTEBCPpTlHl{ipYKQk{;0rjem^TZ@j#^f} z#Cs9@0S9AbUjS}5KqeC(F|ye)r!D3amoh@BCyV!DBS#qLdtnc9F%Dvm=*nm;o{8mNNcHlG}wCo0j-=;tV4AR>$ zGAb-HSz5e2SAMa&u}jp4p@6+7s*fK%{hT(k4MiI$1VV()o;-UnxxT)R*UvY;%9}!A z`hq)KO?$UO8CT^RCSPMI!?dj?a@4m72{|!gV&-H4*W~}FDpofe_}IHU@&JDo)2LT$ u;e`Sel-x1dgNFY%d4(K8i@3pW0R{jIx-M6(h76ei0000JP)IGgPFXOrD-o74|)X8xN$Z)e`jD$1E_z}f2vLQyVJ`w-o63qrgMvNyAEi*rvF@JW%O$Q==CyW`|5ODT(#XD4eHr-sJMmx8K%KyURF9~R&+wenvFa$R8m@07*qoM6N<$g6cUWI{*Lx literal 0 HcmV?d00001 diff --git a/images/brightness.png b/images/brightness.png new file mode 100644 index 0000000000000000000000000000000000000000..730a2c4b5455c8d62b815f5348ccfc2cf9b49428 GIT binary patch literal 743 zcmV?P)C0^@*}>{1_S0o5p?w%G_nq6pHVKc5TC!{8?5 zRbUDjNzZyf9ryx#1U7(x1{}B`K7hRMW+(1V&ORyUC+<#XGTC9mfmHmo-FSb{`1)!q z@SA6j-x()PWa40S%QzUyl^)IAdA{hVV=oflNQ=ZfvKuLkmC6^#UtIoNdFk=)zR9`| z&Z>o99{J2WZeii-?PrU`_dF?Dq?G>`q(JK8$h$KCbkWJ=7YxU69VjJuyEZxVxE%T4 zJ*m3%zt0MlH(q>LKHPo1jb+IRH5H%~FO1C*@i@FAWxBnzgJV71^nN(rnfY$8Zrk?INF@=KjVW(-F5V9UB|Ngdk&QcIre4 z!Rv?ZJ;O0v3yO(g-RFFz`eAh~l7bK3n%u0(hLi|>YyEJIbG2ePhHHvw3Q`GzXq5Aw z(_7wD#hLu<)TLY@J7i@UY94Uu*N?i*gZ*Ds;j3ljzT~>BVg~SR7KD`aRx0YBa@jaJ zY25g<-k3Jeo1S-o17H(a%Q&>^x+LhIX%uLKC8cQxEqXnj#$0-4+Ov*P-*#+j4zhj= ZFaXF2cXSy&EzJM`002ovPDHLkV1oUgR`>t_ literal 0 HcmV?d00001 diff --git a/images/calendar-select-month.png b/images/calendar-select-month.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5ed55864bb5b49460b75ee52a3e1e552e3f3c4 GIT binary patch literal 627 zcmV-(0*w8MP)K||Z;C8L{q`bF>X0wU%+FI#mrBd<>lWh{WSyEb+n@9Gp?p+}uQXVF7=sF{bCx;^ItzUt=^H1zZ=5ojSl> zFJFmk26LFJ3U7gcOIvyIwvVgChu0|(F95&5gamB6hnLTmW#ebBi$Z!y*56GNE7`29 z-+es5L?q_|mpUKEN66sF`JO^X?7ef3U(5mrx7H_s3-^ovFZB{deu|iRF z{)SXjh-^VoVgXgf&iflzI!4Bx0Ws#X4Py)p9)?0YxJLXY4s-trFaWk6BPo^63g7?$ N002ovPDHLkV1hJd8Ik}1 literal 0 HcmV?d00001 diff --git a/images/calendar-select-week.png b/images/calendar-select-week.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c71d6b5c6dc66a7a496e090cdfad99d39ffd5a GIT binary patch literal 638 zcmV-^0)hRBP)!AlQ4NkK1O3zDM{EK&lS&@|RG8pR(m zHYL&6-RI2iX5C;9c3}3sH#6V2-^{*6Q&I4q{5d(zQIIwRuxf-oax>WY11Lna2zV7d%vb>D(>1iBxI$r!pj%x`Qun2lm@)|UIJzQU3$E8vUCjtR{ zo18>=ZOtXPoK9mlk-*8ZF>o#6f+GqH3bs~O5Y#mMra+(0A`)>4c#NS?2rx}>?N9-d zwm*=^G{!JimG%pKCbe?+Q5)TE7oAQU?Y6xi3=H^u0z#aErkzGGIF6UAF%ZrNFTtTb z3*5gIqh}0_FQ1V(6SZRXRtvN7xV3-y_&d1PCBTq?dSiR??2|{qrbod?SAkPIqCjQV zd$)h!;?xu!Cs5wqMS5n&O1`dEv5-t!`&Z>MDTuHFb+iRXfxfp#gEk@jer(n2Fbo5l z5Gd(7q|+wX%6}9%1anTW)n*eZ`tEF7J3F{KKX0q4RE7k$f%zf)Gz}4EseG#{Lmt Y09GwDK&m}ev;Y7A07*qoM6N<$g6*FhzW@LL literal 0 HcmV?d00001 diff --git a/images/calendar-select.png b/images/calendar-select.png new file mode 100644 index 0000000000000000000000000000000000000000..f625a45ed2d3cd0a64a7fa24c3ddac2297019549 GIT binary patch literal 635 zcmV->0)+jEP)K@?mCi5rD({0Ci?F1m5sO%TLFtk@DdNt?#nMgvln zwv@z=W?t`oGf6YpMSI}Ree>=;XU@AbgQ^htN-;x0xJB`RGv9yn;;RI-TqkNab<|wb9Y! z=S(KZ``T}}t~$o#LjVt*)PUt#* z_Vpn$IoTGt8js^*EQXU^UEp5gnLYlfTQ((`X z1ztY6t@6`X72FsaQtS6iOBkjZFy1aKfP32lXbF%q-ka%H!Vx8=SawNp!tvBIj}c2)H#h{5Q~+Hau6~M zp{z6Bvv}RW4Plu;{%r7FSo1@a8dJEVcw(2Mzic4E_#0^>VGI94I&I>&gM+ z6V0RLfP1A7I)6i2P0DCYh)6)waJsh_M*;VeY=pUN<4gnib=@$ga18t*4s-Vf7yz>M VJZ>lPgIfRq002ovPDHLkV1i0oAf*5R literal 0 HcmV?d00001 diff --git a/images/calendar.png b/images/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..c346de1378f1f646c6b9f6db768047732e5654dc GIT binary patch literal 710 zcmV;%0y+JOP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*c2 z3p52-xz08K00KryL_t(I%axMfOOsI?#y`isb8gMd6j^3k{z~7lf)Pp}D1moT7j>Qg zf#8KVfryv=6XWYB?aak zzryeKE-pTtSY2g%dz*>z@%Yur$#`wR#M;^!o0^L6&d)ajIHd{?*+PL#KF{X#G?%)& z(Yajh{W@j~1xgSCa6A!!u=PCdFE4XzeVt$^#9>z#%}YzwfZHP@^!4;`;o?QC=i!Nj z>lzr(BRw-iI1-@@6g`io_V#Lk0;161IJPFke1N2%t3<5WJ8mqIo5;f~GG(lNr(!AG{Okb>ALnmtr_)P#&;S4c07*qoM6N<$f;dh(kN^Mx literal 0 HcmV?d00001 diff --git a/images/category-group.png b/images/category-group.png new file mode 100644 index 0000000000000000000000000000000000000000..f559c48f2bb6fb644979d3c7aa177148e1730a0e GIT binary patch literal 578 zcmV-I0=@l-P)9D`R+Yjj4|VaF2S2a#&OT{KuCAY7={HOfSW#1 z^E6-UR6wH13_^0q^HK&9_#C-2J8jI!E6BL6n+(dg2aY^8rTFUIv4p$1y|2Jo-(aUy z#**7YCr|MHZ5pTb>%KlzV4@2BWl?_d+LcJ7(P-wa zZ&&%fW#b}_2ZDkCq3}^=XFt}P`EYyBgXdJLy{wczPd%O9@$DcKnwNZKDM7D#a6!ly zuPqAgQQvyX1&2>$a7=Jq5a8fPmt{*vu>T1#0Gqzaq$TiX QDF6Tf07*qoM6N<$g2G7?1poj5 literal 0 HcmV?d00001 diff --git a/images/chain.png b/images/chain.png new file mode 100644 index 0000000000000000000000000000000000000000..ce799797f6fa0d4fb39ad5ca16f02375872736cd GIT binary patch literal 430 zcmV;f0a5;mP)N97u9MfZ=lm#K0x@>({TdEI@{-h=_ihTa8ER^3y7~C{So897&77Q^#G9L2I$6Gc{mLsSC?o?kammMz9~*$q?Xt46 zWB|Gfh($rp2Wx)w<_*{&pqfIU+J@lZkP47qkO6=0-+%f%K0eiK(xl#^&!0bk+`4re z)&K)~_aiSaZxKi>NDoLaBT&FeR#rZwsHoCcLqkVWKtPE3>(?)TuU@_Iyr-viGe{#Y zxyO$mu3-eq3o$b@y8@l6jU}XSLSsQ4i`-RUfbIqvzzM{>peQ9V3H$-#&y1safdL@E Y01AAtjDgco{Qv*}07*qoM6N<$f`i`0H2?qr literal 0 HcmV?d00001 diff --git a/images/chart-up.png b/images/chart-up.png new file mode 100644 index 0000000000000000000000000000000000000000..f02e90955809a34e523de90adc583c8d88a4c8b4 GIT binary patch literal 721 zcmV;?0xtcDP)$>TJ zN{XaiNKlTuBoQS+LPVIQVu-IsPe$}#6g~G`4@H8o6%=%lR@MjGB!Wdl60hs38@uj0 zvomvMrgJ8wi!b`Y$9MhxzHjE7BY=tbSUYOEM-e)C4vNnQK@{QGHhh(pybM7Q9y3F* zUs7`I?U(TS{qP0?`>LgU9)3>ZI0?sb$l&D$Vi><`k_3#uUxoNTh&2wg>7Ti!th=zi z4PDco8s&20NqiwC2sVmE3RShha{m%=5KE2?^fVD}d2H%B%BnidNY3|mHeC&<#0ikm&HgvYjRKjOCcQVYpsGzJEe$vIGJabie;&RdXVdDxWP^e4j9w)(>pJX8 zFLH@#v{jqM;5Rd0SCgbrBSP2EO z{%#W28Vb07R&=d4m4FehhBZCq#=WN%sHGCNHr8R;wsRLq zBa83f%q*uO+hkn-px3iWUBhj*zEtZ=#J?K1BwoS4fri4we+W?%x_!2UEjG9A57v+ddMu0 zbbp6n;=LcDNq6gD2L9C2J@8#y?*rTbgTj6Ps|^D5|MCj{`@<*H#t`wKg(3XGf2QyU zf0@G{{9_BdAC4aSKNVGeAq>dh`~N>9tN(u{wmT>x9B`-HYmvir?8;%0k4&7Bhd zEv?W0e`Jfprz!qw*Wd=|=k5OglYu4VHv@|}OtaTaOD~U^mM=VJnLmh{;(o1hb>jam zSEl~I@NC!r{@q#s!~1prn`cY*fEDZI?)*PTRKo$L*|EcDnq#NYM~5!MMGifNJhAOA z-#1>K@PFgANuaR$-?Jz6fB&9zkOAMp8g#R_|FB!KO=7K?Xn+=w@yEZBQ3BsxC{u^W@{txca_}{xL1#B~j r2JzuxKnw;d?f~LXAZJ7A4v;ti!dZAcanXRV00000NkvXXu0mjf_r!r> literal 0 HcmV?d00001 diff --git a/images/chart_yaxis.png b/images/chart_yaxis.png new file mode 100644 index 0000000000000000000000000000000000000000..174cf3f7048ffabceb17cedfd90aefcfeb84a02e GIT binary patch literal 531 zcmV+u0_^>XP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iplA z5IQ+;aq*A<00EOpL_t(I%bk-kNYrr@$3K5hD}+3U7NckhU0Onm&Kx>A>>?@t5Qxzd zSk$I83oQ~(*CLWjLm3rBLkG14Ig~+Y6jBfbtu>UF-PQfyd%xFELZTl0?*k9s^8NDo z@_iBD{KMTNQqlrYELBp8YNt+*RR>Rg{&}o0)&=_qX5g zI)a%noa?|;*I(d?+|$dK_PScxca6s8f%&PU{OIey>7uXWg;`>t_u@nD%zq)65&>Q; zRd_m{r7*D+J^4BVAg)&awfwQiMY~Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iplA z5IZyo+q`T500EgvL_t(I%cWDlYm-qFJzw&rf@qUM1(mpIyA(kTMcXc+F=mJ<-_%+h zEDa*1OaFkjE=4lMMMQCv4w4~DKo`Lb3I<|`ga({Db@FRT^W)z8uG43mlva`+c<>(g zzH`szo@=RU7{D(2fMr?g-F+AkiL84*f`Jt@W*-jq67CnsLZ~Ls|_={gqBQPTP zvK7I>Ow>{0`7Q;#x{~MT&xq2?`4iQIu@Ld$_N{#!%tW0-v9{lbqv7rrh?D-*BU?L^ zYCm3_^a8Qz5Pl_JwD$%8NLdQa+V62C9#i5rh_8q0 z6}OkbcO>~IL>RHq5&+n>}9jSr`v__ae9ywAO`^3()b>?00000NkvXXu0mjfVan^| literal 0 HcmV?d00001 diff --git a/images/clipboard--exclamation.png b/images/clipboard--exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..44b201dec9a27dccba857118a4261bf9296d57ac GIT binary patch literal 690 zcmV;j0!{siP)-6q?n**|AD*<=@jA3SDuX1@2m_suNzGyyXx3a!Yw54-Z-Bg16c+gw_YNZ)7r zcNXi`8C`FTOgjzF2nLNwaCMP6dUi-SIX2N}e1A+nF8xZsegGay^XxZ*+h*Y>i59`v zGZ)7OGnouR*C)YoF7Uk1+z`boYPC8F&u=0gkK_Gx(jYi)Dp0kygxL5bKE0U2{Ct`u z^YHuqU|AMbNy3&WLO6W~vC&JIdzozIFsj-nFl=4EdIh;`7M-F$8a2<@a~uj((iu(D z5RODT5~yTPr)k)8911i-plBNY7Yw;BhXO@&R#5D_wx|@RAZ^TnKX4xQ97a){7CI5= z+AgHc1%zTFDCN_{2542b2oxuQ+`+=m#s_d-0i25g=jp+|0V=Tev+LxBa$f&)q& zTdT9^4u&y$V;X^g0O1hTJ#>#^2tdmu(Sl{cj%s-UE|!#%*N{r3uq|e>H++yI1rst+ zPcK((3Yxdjh6=Ip79PJ3#m&!{ow-@b&5z#qZaD!PNZ!520BQ+8Aa6u`!4t^x`^;p1Z4x(vHk%>x-=0(QaQe+Vb2WzA(cxp)b~p+h@?n)w-cd3hOFSy>sreErJs>ElNR zF}orLwa5sD?JMTN^|1W?i!cD>t*Dr2hWq#KF<=9VN=jfg$a+v*@D~^||Ni}BkW)~= zYQSHh+eM(0myn-{`^Jt0wDvK zn3);=pt#@w7ZpHDkGY|vb|7W-b(gVbQ00ImEf6LrK)Q$fY00000NkvXX Hu0mjfS2x@S literal 0 HcmV?d00001 diff --git a/images/clock--plus.png b/images/clock--plus.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e5e329950eb2caaf33eb8cc39eab41980df824 GIT binary patch literal 754 zcmVl2~Zje>47Loxe!7F#0z-fXguiE#6&${;*l#!g@fruxXA(2G{qWL32BHi zX`+-AQoFVdwRF4Atn7+%bT;$<-}&?2pZPPNQB@WGN6a)tA`xI&7EC4+FbuUlz%(_I;Ww%)1)5ZpLbasN<>GbeJL!PT%Z%=G~p3moUah-&v0mHJL z;ka;gdV01+5L~wAW{vT~`nthRHrkuO12D=kVJHoa0CT$T4+cY=-R`n9H37>o8mL;W z8U$pcJuCY3_V zx1ZA;+^wzJTq>1}wdRK>ek&A!dO%5?Qj?d2M1wtYz#P#)6{CU!i_)x zdiwe_%y9y_EX#Qd&tKF}i!Cj|#P~QY#9~GS4?jPKr`4Cxwzcw;Fh&&)4-d2N6A8(T zjZ{Bs5MB^8FwMGdSHD0Y&;!YQN+nFTGygjRyiw^*JpQgP6uPN!oM>iQgM{RM`VmOQ zO;GWZ6&b!43+3H=yD#t&q!@Y&KA(@$@LqDeqtEB&CPftGC=!zJ$}kB1juX{bef>6V zbRyPN`Y1`J=;&y5a%!sg&hT*id8hL%b;M=XT}!-5s)bUaeC2MtxVa>yH4p=7BZ6A3 z2E}3#DwT?WDRon8qv|!JX2?_?z!P!G?cG_(rr{KG3(U-k$3#*djJ3c literal 0 HcmV?d00001 diff --git a/images/clock.png b/images/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..1aed16233c3e6572a7a48165cee9aa56430594a0 GIT binary patch literal 692 zcmV;l0!#ggP)OT7 zNHNR4L{k`vkD!Juq!rSQh(X=y#+{pN`#;>pLLhXJfGzG^7(z%&bF&N=t{?wNDXWk#bBd5DeS5Dte4%d*5`u@Ht~IKWGAdjP`SJ{9mA z4*LaY4h91<91ck;mAVx$*>eZaug(Pmt8;$8>~cC?=%iOyG?&fhbLZ!0O;tSuSMgp3 zI$3f$-$(ZM4?HfHN3_|B_SS%WA1jev*Fc>5|o128=I1LVmgS=T>B=bv48pkZ4wp6uj z6NG2_Y4JpYY;SFmkMX#X0k)jl?UL(8ql_G*2EAVI@@poej6ow|nrMO~X=I#rKmo}k zxQ$#otsuvI3(DtYGTm*p=-^I37cm4#|aSgls6g=PQi zdGuYYDvcf<9#cwBk#nyT!J&Lt6iZ}dqqDQSyYOy({nb;q`!RMziPGwqlarsZSS(Yi zR8l<8D>{$C*XZ;4NEeDzuh&Vt-IgFdKejeNzrzZ)ENVXXrJy5Aca$J*ZK#gRq zTntiBrWVtR^2@rN4e9!>)c)_v)`I)t0|Q8?Rn{{_n_O#$)fg zZc%yo%i=lkQS2KTnL)*MOx>dVWyg0ix*yftOwxjTMsYO-G$9)8x7{LFE2 zB(9=-+J%&-e8|EKwp7B1cKe$lmnZA0+W+9RWZXXU>8?tw zNdeAqciZUeSp?9xZQx$lvZHTvi_>jC9_MxpITo+M>h|>{XsS+jd%gAjX$E+7?V@?r ziJ&0p)iA>&rN;A@v;Bp)s;4#H^(l;wz8+o{pR;O}V_x~`Lrrmvuw@Fzy?cX;A|4$$ zpbwxIcpp2KTHAdTNlOb@Xj?E)&~UR|Jw3x*)H`cxL!h^pe^pmUm*ZjGt>o0u!1*&h zpa8G(TbU2fr_|V1mUOS+mzI{clpYFm*JIq6q=9qK)x3k3UM{aabLQik8dZW?TG-Pt zHD34m)f=p~5&CRHdDrTlK2}}x&pYhJt`5JRyN-FO_3Hd@pX3V!g7w#~VfkucU`l7_ zdDpg+FBn_5$4?2K8n9Wlbz8$f#cp#`4&S@9Z5w0rlT%?)sCQp@gduj*DOyl->$*yH zM9J>^12_72@9x*-SsYaZUN(>BJJJQYo$D?3t?3(E=RYkdn0wkoT2Cca#_T${KMnG4 z>$(z16f3{0<(;oi>F`GcoXb?vhdsD)-5fm;_(Sfd(&Krc+`1c<&WxPq?LG;mQ>di1Vlfg= zC8O#mavNn2br3@2q75}~0Q<6p?HtvlOYx?Fk%ohH9ld3{TgV^{2?}J^30aom za0I|OJt#9G@&`a(1PV2v%-e-^=)Dbrm;sxLBC;?+w?&~24=;cfMPwNw;{?|KLlTR@ zur&mzKJf)@t=;B!*mh7R4@YRV0>KTS}ZGS*{a7)sGcyK(j&*WdHlfA)5;t$R$Al>rXLW)!~WjMPlDq`q5C8!O+Y zPolQ+jB1s6v3klm*L?S^q(T@q<)NSB>WOyMH^g?FLFqxt$OPNxe%xrAB z%}t%Z`~5oSYg=^Ffrt0|zV|%O`<(YXhiPkT0}6&=fXCwraV@}CEkcP9Ax;qigo9<- zpNT{wiYv!48jT=;zoEd5ri#kS+N<^TjRhKwMk$lY!r^de)8+bQo}8RowOTEhXGZL% zNCH%((-mi>(tE8P9bH9bWp$Yn2_u(Cz%(%dH(Ofd6{V%}3we2$tX6CF*zmC8FcccW z!#EKh3J4K5?zFdeY#hm(;nwqpddCGchCk9lz5y2dc%qY^8ARylmIW8NdHv`{|`1f-baWC c3H%md0PYle(PKnOlmGw#07*qoM6N<$g1AYBOaK4? literal 0 HcmV?d00001 diff --git a/images/computer.png b/images/computer.png new file mode 100644 index 0000000000000000000000000000000000000000..887d6b50686de3cc52b86c38d3ccb296896eff47 GIT binary patch literal 566 zcmV-60?GY}P)WxZs1|?#%oAy_tE;aU9r0IBX~)l}i1WBQpJpzrBCdF9JX73@b97PFb;7e6np@ z?R8y;OeS+F(6C=96c&bcLe7;+1?u&>T9c4Jf{V#y!iU2loIgH;^q8P&ngTf*h5@D_ z;o)>w1w>dOV=d;l+x!{i*_qO|RF3TCE1LSZtPn zXpnJ#I{*#_`}}_J`h2Q?oz8%dRq$Xia1Ra=iGCQtS5V%DwDs(y>qucG?&9~n}p^##A_WKM(NT}z)=s6>H5MNBwOvU5zLpOnC zS%2E?_AfOwoL{edWNbcARM!8A;hIu)#Dr}+&hG*Y0N_IWL<|H~O8@`>07*qoM6N<$ Ef(u3dw*UYD literal 0 HcmV?d00001 diff --git a/images/counter.png b/images/counter.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd74636b3c29dfe04f0cb406e09dfa3c1d65414 GIT binary patch literal 424 zcmV;Z0ayNsP)IL@g#(x z^?J?V+jT|bA5EuI@;r|<^3*+hB<=Oi^TJdbMY(jBMrXAzfa?z00RJ38wf9z SkO*b~0000(#h?J zIo+kuISNZr{0d#CM5l!O6mzT5^=zH=`~C6j_q<-u^S!*@@Av2S{^Lpa_g!mXc?#EcFbP211e2I1UUVXgnwa1iXbDJ{SOUc=0iOcNLUEw;|Q*l zAeIUs5ujD%L_j;GRE#Fmze^B`zsZUuU)!W<7*56!;|N&1wxk&#i}nAZLg6>GL>d78 zC*S`mED4GigSY@t0_}vkn!!a{YD0-BbQt7FAvg$vqG!739|cJvNfaao=z&f^h(N@H z;v`?tEEdIEB$0ANT+o|A#c23gfq+MGrjr~!UFcpejwD9{!4vO6_aM8FTxmo)(Z!kM z-_3>Y z`CTqflMGHf*8dvw%$3GF+U+;fY7XCQ4~jHihc%{_88^*CAoSwB8MGi-SM|mxez|<} zPc`KZlk3AbtV>3j8mAg?^wzeVT>gt$)d6X`XiksG!iB20`meWN8I4?Ilk@N7$n;x3 z6aB1w8|jRfSGQND+alpGL}Kw^_ND5ciTCen1l@VBBcbupJ=^|N?|ixcHs> zTI0_v?Ci?&^U=hDHmhvr_*MVsg6mbYZ2O^@ZK%=NB)m9B@%WCpo5h06Lx=A5_C{~aHSmjssViRB_OL-##+6y$~69>rB z*w}$%oC_9FuLcJnb#`?ntXX*^KO`jN^W%@Dm}`Z6HoHVko-cl*bE|gRE~J7-WuCZS zTR9lK^2o&C-Lh1nbAhGBKLcSn2cuR6_O>kv+YffH-1TytWFfBMtfYE!_M4Ijr=FTBhTU(oPj!z@oAED^z=*WFLDG1Y7IZmi-Wz)oSXBnqXof0U# z$}W)jTM^4n_Xf~zx7odTaX6N0ozd)Zc|_FM+qHx|-sc+qYS?r@S?umtK4*6GXES+I z6H0RI)zA?77ZNVZr`#z0a!Qn=$A!eyY9-I)Y(rg4*_vy?)%`=k`NjFA1gk5Pw-+ZQ zy=-dIEuvrBrr66uqP(T-eL1bV50xSzyZxF~fg^hOU8ud!*agB$XS6^Rn^%oCELvOm zO4NfnZ1-@p0(&?TyI?^U+q&U;B4R~99G2)$@MfNQSix`iSnvQa%C}7)xm9v{mVrTE zYMP14QYf6YEcfN;s+M4*VEjC#e8at%*V#-t-Yb%=AynE}4weHZDNLm4^**J&a9=)6}eEX*7vSn^-E8J&x?g9A@a$xK6u;>Wv_`c>3 zPb|}#XvN#RY5iMnvg;3wJRQE0=Zy1s6t z|JKn>I^7$m*XimXndhNj)Q(eIxXI)-)eoYwTIDUtL4yN@H_x0A^kFlTIu`vQ8#|#- zrMj!RpD?~#phE_n4rH48{4--Z_UM^)K0d1n1-HUthqr$&ssFf!1(vs+?Oak_7ZvYn zlwVvt+1=2yDna#hc#%a%Z&|3lbJltr%iS&+Miq%_y+7XixFB~oS~9{)ka@yqPkvCG zYTjwwQ1h(y*OPhkfF^~`vazN6Cl&L=^HHT~#1P%j9C@>WyUpqeix1XU5efApq@!=A QVC`>-x2G?o!h^m4FTc~*2LJ#7 literal 0 HcmV?d00001 diff --git a/images/cross-small.png b/images/cross-small.png new file mode 100644 index 0000000000000000000000000000000000000000..94af849e7244b3e2dc471e50336ff1ba09b4f250 GIT binary patch literal 344 zcmV-e0jK_nP)#qTAs*iu7y^S04UOk)-Fg;812sqghlB-wFDL=|%|Pcql$HGtqLUdI3X%Cr zSiFGBVPKH6W?)Fl1S*zgVDJa>rR^CQqCk8r28I+MUlH8^M&!J}$jHbKq&T2n`vr*< qFq<7p{{X6gkL&}+p`V!m0t^6y@Rt2qsHfBb0000jA literal 0 HcmV?d00001 diff --git a/images/cross.png b/images/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9fa6dd36ee8165272a13dd263f573507c78ca6 GIT binary patch literal 544 zcmV+*0^j|KP)L-ku(! z6_?D-?!0+#=VtbVZQGdTnZt~apI_HPK#=zVadHM((E`e*C+RoFb)Qo8-U{Lb7{`Tz zw4B8FZ|o?Wox+p=1wp47C;7ar*Xu~;a?<=sjPv>+otDjJ6FaGt!YnNyxQQhp)G1V! zk;r6ZtyV)c8pTbiRAnHRNXTxti%=+p$4aG2*+mMM&xrdiU^`VPk^N*+HX98^7!HT% zwA%;A{T)GxeQ|RcxyzV%! z$AbYD+)i1R64zB?q}NmTz}5|04~J#YG_goA*Eq(QJvp7pG14hUj1pZ^t>3S*xqHUO ze~r;}zTY_XkZ*}d@gm!;N90h8nBQenBUZ_ukZKNicn*hc_Pmc!Jn|2=s<~}>!Sb>Qm3!QP46b_JFw5YU70Tu$X}=T}ez@@t%j iG9vD)nDux55?}x$+|UyQVK_bj0000drT8|9KVS&b)q$z2*~t2jd9NQUVWZaxZbr;wL(e_XpDNaKgwC|uH0SMqRgn7 zo3ho!nQ3&mOk@vnV{tAShz}f&!D7sGzNTX%Y;L}WP7<<-%B~2=AB&gV{a&BX=llHK z_WWfzDdW?}LlBhW&SkyYs7t(KleO>6o_=w8n@B%JS zQQi(RAt;IGeMM@KXDQ{E1Ou1A7-B+LV?$78RxHfW zP8E6bVMdYxY%*YaKW4^YGj701qs3xb023IFp%{VUgdVq0Btc;qJoq4*H91g1d0E$> zEp25-N>w#Xp=dN3HAG2+BnMI4X0s(U2tuzR^h$-OaxuNA%pOu;f#R3>u*yp!oKWP7 zrHE=rG*6#~AcVbquvArs#YJT>Sz6lA7#Buy1BS{2m_&R-ERW~;3_%!1E2w&myI+zaoma7Xq>cKS+mK>Itju_4{_b1qH>}i3~~8qT<3GS6e9ypm1LhJ zl?^pReyOBNN~sivnF10nGDr-J2zh|W*jUnNGn2UXJi{bkNL@nL2c00^9LOBGD8s}zdU+h|?cgd3J+|(02 zH|OAbNuIgA<;?N6rT5Z;t?a>;>b-p(O7~u=JG%A!jGd!v;K?Trd>=XuKYY7$ z*6O(%A9Q3Hd&?XCuE=S|CQv(adO!Z|*Cm0ptCdV>L$+=-RrOejt*|V$9Qyah;q3YE z)i@4hV_nC6y{27xb9dFwTRcXZ-u7+rPGavnjoD`_8qYTWF0_4l_rBatwEfvrTQ|QV zbB1HpF|aA4>gZ1k8au?drg6=&H$D&Ta~-Sy5!`m%s4gkrwELvB;5412U)Q`m71HV7 zJoQ-^ZAnhAjNkwIP~NMZWgYR&=aQ+v`hQuKm#vH6ozr`;Dde1(7MN9)VJ$@#ULSYy z!`<)C>nz;z#fH9pa$`pN#ji3gX|+v-%i|sFn3OYk&Gzbox>Vn#-2EFT_opuY1bv)W z`Q+i6tldwlGiKJy-N6-;x-VVz+)YnSALo9Tm0nC{iuUY>?6u{8KvPOu7X8+9_|A!} z!;NcZfAHWwSGUTr#|Fpz@kiI__A^5K%AJU@tCeeSp&#{CTFnc|BV%63J=gb7lGy6s z5!%@@mO0vhO=D8l9eHW&_0*1+BVCn{XXpIVyE&l zc9Y5E!*aQNJD1C)Wm#r142Q!}tJUf@o6WDiUhjZH`^1Q?@k;}i_@Yv&?AGh`imIxq zLZJ}Rb)B0`CS0*tjJU3=<@5O)^Z7h$7=}jqUx>+XgQv9XBTCF$mL-q~?RFc}>2v{` zvlzi=GMO})Xr^g;q-!#R4NcQtR;$&*cB3JDRunk1*+RG!U7%Dd1;*p?TBp;AI*#*+ z89b)lA9$X(_E8k^T-WiQ<1i)z+qQ9bHl#Bc!Ln@ncX53Doy>hc7z}czY4q7O-lLim z7*5I^_^TAqk?WK#~+hA~FO)LMoL_FfB8<&hxxjtJT=0zz<7! z=6ZM|M=?Kl!1G}e#>qflzzjAw^N7V%k!hJhlr>bN@c|qsLY5OyuVwLMaE|?i0;|`B z=lKYeu^@yghsWVzi+vYbj#~NW>1p3qlqBMDjSN(1S{my&?_&E$A8)fMnEDZwV_oRB zZui7yS~lNV-s#C@$ibk|+uHIkS!0?V)nGmjM_d4;K*dyNk5uXv(|GXETSYLks geN3x9=U)O003jUdX?cv#_5c6?07*qoM6N<$f`0lhT>t<8 literal 0 HcmV?d00001 diff --git a/images/database-sql.png b/images/database-sql.png new file mode 100644 index 0000000000000000000000000000000000000000..0792546d493b42e91e362e2624b988a1e588013a GIT binary patch literal 748 zcmVJo@;vgzx z;hcJ}Zf?$Pr|%s9FeRZ6e&_qXbME*5yGl#T1%yIJL3EW6#Q)JBLQDuu9GOf8RaI5N z$;ruyY&MHrE{9^Vgr%hn$z{0R1}w{h*XxDP=f&XQjUi3bq$gI~+L~TlbJ~Ow4qrPo zWJCRN43CV#tTy&P_&g?mIW@)0!GHX+d2es;?Ql2@0k*zb!ilDn zXusS6A$N6mgXsn`&Z^Y&`Ml(UI7$+g#Jqt9JQ#a~@h9WB(svUZ8ygUJ2f3ixuOBc! zKmUfrnOz5Jpy3oIo<7Fh_umlm>vx|p`}wWpLKhB%F646;J1{hSzmx3F?mAG;Umu=U zHP&{pX)hv!=zkd9)9ZsZxZB@_KwTY1?%WbncqU6A<93skVXh|zqS5F?DwV>wxu19* z`-r~Q)38hxMztF?wf;kTz-?Fs8=DoE$Lc%?))-h^v8jPMaHT8_%RAWTz#<1b^d%CB zylQT4?xE4i+LxD?X`za=NN%inJV^U|h#hDm6CVpAer9xZw5M_tQJNRCwB?lfO&DP!Pv2FE5e~MV;&v z#8O>d>Y|Xp!@)ti=;Gj{;NalkR7D&_5C?H_c5^D~D4m3&?IfiRqJ`F4UXz@6uW3zD z+lqn9%a8kh-uLbj0}i< zehi9-nHuaaon*BGgn(C}lmd^+@qNE9z%)(ZT+)dUp!XC(5P%|atJUfYuqZf}bRz1& z^gK@kngakR1aL0tObrN7TQ=FcBJv=Buq<6B=|Vv0fFHhB6pT#ReF2=K0UZa?5{eg3 zL(M)Gi$zL+uM+b4JpA@y8HUllc3qdY?JYsF10K=*TJqZ@EUNqVpahQNK)GDjO(dO+ zI*{x@N(uFP6LQ&mEu34O>RRS^eAu=f_P}ogeDL%pg2uy1jfR3mBB7J{T8|FR9sqv_ zq_gx?uJIh6v3R(*d3^O!d95miI++8p9i3-UfWnVBYq>KH#aI&3=}DN)Jl4tDLSRmL8wy{mLeX?%jzM-gPIq$ zK*hFg-_F}N^QPZ#beFfiBeR=Z0xB!PFM7~1m7t|9rGz?$5F+Lvkw^g5(Y4K@1(ikRVjV)QI5qs*^#L3w7L=zt z^^pSu48s5mvmpex8kd%TuR`!TFv8-Kg!GvdoWFLibyzZ)#4Dfx+W0@Po+><_cm+S% z53{By6bhhFfSndt_vJL)80`a&rinoi1n59Ib~`cN5F7zhC($FnZ)&R<=!mf72^7PsT;()q#t7&&#;3o52$qUMCK0QBS+(>QR9e z{eG)z9lQ~ZIq6VkV~gwbUGc$ z(0)I;w6xNsWQ)VL(Wab}&tx)4Zf(8bZ&7@^Gdhas!U7btbwjfm)M`mI8x7QJHB_rr zR4NtO*O!-9sO}jNJa8l#Z31_f#?*>_ujzVUv}M5};&Qo+x2Y6jV`J~$q*5;_^GXQp zK7nGe5*l0~iN#`K$LsatVzvLgYInY$qCx;_>V(c+?q5BW~196W@1trPf1-kqgtj?&>Cur4j;e8izsMHw*(h z?Oe+k#`0G^6eGV*PtR|KLa*^3%dXeY8N==PEx-Vz(LR6GlrD+@0000^Mia@!k?fSwH!!GQU*Eu* z-Gr*DO>s$r%vF8A-&qm!B(SZ-rBk5{U@EbDJm2 zu8Z8v{PINg!_xElJW8b!(&;qZ)`oU4jUB#DuF!`uhH|-#OeTX^EC!DkNAukwFh$#G z9v}o9$APA4{8U%K6lp#TRum;5zy}1-Vo-oKgu!hysMTtsX*3RI&<>`5UqGgTZQB^# z*vI|T>yHe=V2X^dlM4Yl^>}Lu3WvXY5Gdg{EK0B;T(Mg{n4TC$JRTRNhzwkW!gRIF z?}48IncKR2%d+^@cKvCf50ihgKo5L@dc7_@l}h2=L?}%5`T-nO0wtKH3Bxe({^nH= z4=*YYkLK0oLT;QAYxj~~JQN-nh7{|w*(}DQ9K5VNJ)0+7Z|}5$D&MDec#)>G+Jl1z r!&t+{8Nd5Ip5QHI$p!vpUjhsOd6xd%N3vp300000NkvXXu0mjfwd45D literal 0 HcmV?d00001 diff --git a/images/edit.png b/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..6db18b4ef1192024c6058a22f04a01ff2a4c2ce2 GIT binary patch literal 445 zcmV;u0Yd(XP)8 zq%e1#8sdM@Sl>UeC084vqoOnvS4&}IYi-E=059PWXkuam1wmMFhTA231dJb(JQik{ z$D7B{x~|E8Lc@!qD7SDN|FZX`s;V1}KTKWMy(-JHt)en`p#fv8JrRas5YO|JRsn=s z6a|Un_#+I%XF+1y_60WhzW*q4mSvrrrn!ebje2<$XkNi_$)P1lLeex9^(G%h(Ms3# zwnr#fJC1|*OWB`1&j~kKlk&?T2=I9=7Z!a6XIa+F+#z`2Al*VYMtS}T<~0gN-~PrS z0^klNx6_w0p zrxVQa+E!5fI-gU->wJE_k9o#WnNUYz(eB>h=3r}VNj~~<2zUa#4*+XN=#LGZ9ebTdF_4y$sErB*BtW355=AOOfRPaS1CS605aIx;)CzHKdnp$VAaUVRD>J2a9FOHqqNA1;X1q0Au!Q^s=OsUTnku-&c&maoqK1=n@v|CGa5o!_x5{ zvpmk3@;Dckj`grUdu+M6Kn(+6IZ$bjr{R-WW3Vrx&*ea$8;8cVpGQ2tt{59zX+B-S zxF73pTa(99dg%!#c<|d zsPjca^-aAUsPmnz>u86XY^P3`&|(^7S9@1FrOXavx~U+`vIUbX#VoW+-=~<)J6&fx zRL36&&>b)sX!$DUa(VokJPDMlP%f7(n5-$UK@_}x|GNGt(`9pf9KFJNI@oT{g$b7SDbbr!FCIINY%#Nd3 za*)se2l<&eXq2J>9b=L3*01f2PQUv5FfMWqRo}Bn9d`dIq3-_H&fUohrlo2qFeRf= zc?@)Y1OkB>AZ`UT9y7|NL$Q(rUu$m?h^wE?tvP|FRb5O3I3(RJ?Ti`vv^Z0Kjs^<2 zB?G)3fPpU?ExmfLiE)^psG+alh`yGd*qibDXMfzg-!XKdO zMd0wh z79cxXwqWw&aca&$)4GN>m*|$5t$Dk=qL|G0KIBlcwE!26X!w jRqR?LtNq#XzW@UOs4sU@A}LIm00000NkvXXu0mjfo&xhq literal 0 HcmV?d00001 diff --git a/images/exclamation-small-red.png b/images/exclamation-small-red.png new file mode 100644 index 0000000000000000000000000000000000000000..90da83e79a361f8488e424316ad7777c7f735d12 GIT binary patch literal 334 zcmV-U0kQsxP)pyrK&f)}2Khkpk0|33)}`@BIw z-~vb-T`dS>c;Oe&W(^w~<)^P-^L+X8h2h$rJ3J!l>dL<$E+XuOA3$e+{P2P6{>_^V ztat7(yuN>*ft!bi>j%U;gah$A(9fSAJ^Cj6=MTf<;$j9dV3;s}{`~DbBrFIU0JLez z#ivj2vi$q^#b(VK29`g6zTEo!`7TJDC@%oRdE0%U?YBRCh*>El1dauuq9tNLacl-K gjwWTw4FCu*0Q1s$Q*YGpF8}}l07*qoM6N<$f<~o|KL7v# literal 0 HcmV?d00001 diff --git a/images/exclamation-small.png b/images/exclamation-small.png new file mode 100644 index 0000000000000000000000000000000000000000..df9455139e1202bcc041ae18ce516c0535e10bd1 GIT binary patch literal 378 zcmV-=0fqjFP)V9fIGFJpj+w4+*N!YT$~NozF_A0!Tv$7{gvKVVzzxdrvK z8UB9eU%h%Y!}l*Q_}RD>wL#*)2^#R5f$`5DhEM@?X-Bn5N Y05VXBw!8`W5dZ)H07*qoM6N<$f`d7r6951J literal 0 HcmV?d00001 diff --git a/images/exclamation.png b/images/exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0460ed47c11361b948e4f7ebf39e2a799f3d8f GIT binary patch literal 654 zcmV;90&)F`P)d}Pu@ z(oAB&G-+BVp@?&h7-R51O%wzHZd~N74Eds*N4@`RobQ9q2Ty+W z!u>k}oGy<{em#}Hyb8eJ)4Rv_`1s+dAacq82!j3aT^*-VY$2IFHUo0}CDuxC8J z9o~Z11wi<6F2pC!lnHUQX1fk%YYS?%8Z;UW@FfSB>;lNHrbIJkjP2_PK15Ce1bI1; zDNQwZUxF7jL82~vHE)N=v=c%F3!QZhZ3li(YS@tOMc+n^0eWwaa-#U<2=w$0XZ#Y91- zyOc3J(ci^o@7xUg*3Q%Y@0SAAv*U%=ugo>kZiD;c`F5R~>%%Yo?jI|W*P$!mP2ei= o8aXoB|5CxYL=P9paefLg0E1^Tq`^>r;Q#;t07*qoM6N<$f_6(T2LJ#7 literal 0 HcmV?d00001 diff --git a/images/external.png b/images/external.png new file mode 100644 index 0000000000000000000000000000000000000000..976dcacaa1e6e62d17946d64a5b413225f8cd972 GIT binary patch literal 685 zcmV;e0#f~nP)FSZapB5^3#~zD5yYKTEK)1D5kW<8J1J84D}v+ISA`S1MaKf@i)nR{s%H=OFCY{OMdq{T(IzrP)TsqqcmtDnFB!OFxCh>64Lp2;Ujq^{0Wgo4Bh5^r; z!6=titR{=-@mSGj6A?=)7#;h8;Vb)aXulotlty(HmJmOsw`L%iOp;!dN-A8ARx099 z*dT~R*U^8@jgB^vg$gxYrNYyX6^tVYX0vTGT_P+N0jfr*K^doybwIN6hOnla3*5l( z)D)Yj9%26NHP&1T&uKJ$X0)0taPQa-r+u5gXUxtMUBk51;eYM|rM>&qMIaF3LkTj8aV%oTciv_8 z?hM8;G@LYg@8*5%?Au+j*5ZFYJ#d;L&J>A5iTy@=B))SAh!22(jA&FbmmY-4O_@#4{37iM0Ygb8#pF`jnSsR zZPSdOL)~U@(!^U+f1N@9Pu~6RQj5qk=3SnBj2$-@Hs2oGpf@DRi}_heV@6dlBeN*< zU$J--Z^*kw;l3>l%|KIbl{l>~;kX>cq%5EyXK;+%Q6keHH-qFhXxf_1<8tZ-8>~th zIWL90mr^Szv-mLK+i_b+hBrlXK64dyeL;$%d?^;wzr z^d$833exk}pbE>7f_7UwKqxa#LHL{FMN;DBPGDl;I&`iM^J5*owlZOSjApEYAjU4S z*?p!0(Cyoc#^ly?qX}7`)fK({Huc-kIL#C)oS+5IYZEn&#~w zin*Mnp$5O+f`~+C&neDb6scbE{ncWrwCG}6jmC$&ozA2C*1l~44N@Dd>y0*WYH~z& spiJv{L}3^XAC`M7ZPrEC;imut09~-US9R19Z~y=R07*qoM6N<$f|c+Q8UO$Q literal 0 HcmV?d00001 diff --git a/images/flag-green.png b/images/flag-green.png new file mode 100644 index 0000000000000000000000000000000000000000..674773045e5dccb320fcaf2a8f8ea51a82068668 GIT binary patch literal 777 zcmV+k1NQuhP)m3R-mFJLleW&i9@F$vEfupTPuYI?aGkv1Wcp(_@hphymwC z^zG!+!8n+t%aD~J9#R2?5KtfqP9h3_3KMdPT)x@9Vbk8M?OQF9G5%;*i-pC6fTENB9vP)=D;`S18l821eKugpoy%&@1~HS!y%>M3%!N6!&sR09lB zbnYt0#!x*q29fDyFdYbEBvB3R+;aBVD>`l^JXwqFV)>?b3K{~@{7kE*&ecBzQEp20)vyfhNM3HgbW8gnaT7G@*vkA!r^T-=jv{^ zx$e&fc_;08^uwWF#D%fM1&U$b#0)>QtJZzwR(oT2K;c(Nw(sePX8gOq_JR~eE}HbI zHI?-(RW~o3yhpEI^^BtL*~q_}O(a;)l)^K5x0$<3@Zvx=4n`_7kzmu#2^NBp5UV%Y zJdcSHE0QRsviJSVRsCOa9;|0%!#Kq(N5O3^}^00000NkvXX Hu0mjf`BP@d literal 0 HcmV?d00001 diff --git a/images/flag-white.png b/images/flag-white.png new file mode 100644 index 0000000000000000000000000000000000000000..725c20a19c329c19b939a60526e46fe6ca39f6b0 GIT binary patch literal 698 zcmV;r0!96aP)BgKss4RbLM(P4=?)Fs$zR)f5RLLE9RMMY3I^Hhf*IuvY02dinLE-6K~3Pv{A z!=fEj7XRx^?+q%ptaRwX2Q$BU-+SMC-)|U2QQ&_WHL?sj&RGeJk#s-pwsDy zwOUQ8R;$ozwV+a|s0mvIgK(lczt86jMIw=TqtR$hCX>QIu{26drBa&}Od}3E91edh z7CXiBytC10K(pCY^WyQi&~CR?1*m3yT)`9(Z8n=X8ja4|?RGzrNG1{b{XTTNUC3lI zSyTgoKtL#!O5dq~0pY_=zHm5v+~e^?Fj+%H>O!-#EDJ;;n9XKzxm-fITow%mgTy2f zi4!PsFUhRe>m%fHxhyS9r_+tddc7X3R;z%;MXgpVSu7THi7&TUqB9r_3i*6KOD{y^ zIF5E8pem7;hy~O{c7hAEWzp?+3z8(MWR$Ct(FJL<&!ae~li=v?B5-ITnzg;vgF{o* z&%pB`feMb>M?s@<^sueH4s*%v@>m68_J%4BM$<52l8y)2yo{8g~$FKiiBlKjLDQzg{jtNWg z$G5ILZS|E0IL*qNBB*y^(p?{tkNmF77f&XxpM7-q+H>rh6<1;9ZSmhf8|{I=F$d!6 zv#ZKd1U{TT0B7)Q4`L@`2YpAF5k_(qp&jrTZlGe9hJ|+J$H#r2*5KibpYU}oc}UO< gY-fh6Ap8+v0C&9!K1i(K)Bpeg07*qoM6N<$f-Xfp6#xJL literal 0 HcmV?d00001 diff --git a/images/flag.png b/images/flag.png new file mode 100644 index 0000000000000000000000000000000000000000..5c008b0a6fa5e8a1f8ddc294419aeb3e37f79f46 GIT binary patch literal 728 zcmV;}0w?{6P)i77|PJ(5|QEt1&kR{od=E-S5<8@*3{T-MMcu<*4B~|#+oTM_-Ek<##U#r zg{artY%ZhMyHyrNQ(|fg$=O+$&1QTGg@(yJOBt{v@L6qOC5{Sa^Dd*uW7k=&8-7hs zBQZ0BbRvPJY!(7-cU?sVj3yKMg29nAaDi{3goKAsTwGh`cH7suT$>jY3E|t=7*g># z<}(>EDzw31fGCPElfi@T?$J4*gT(#p70^jVa^{r6a25%7U7a&JF#(-Uw=CqWw^$JD z>Uu+kY|{W?USV#4oPx^0Lu1E2pU)YK#ZXpW4oQ;G6$reeSPRu4%v0wELV+%XiSxao zP-IT4T^4r+0ueH8QDT4p1NF;7r2xq#K*N@c`h!aSR`NKUw|(sqZn#?fnBZ%XHZd&h z5ump)h&l#pjDy4{s++DiKDv44S#lHn`bqS!wE8)5jTq+{^w7;~0`@DxybMQX5yy8l zTxq;_>GYG-f_#JK26(Jbq2Lyl^4R`8DIeQ=(tqmi<>vd@oP3Ki9PFP2UKBbDD)G*r z>3qY1rZ!*C)pNb{)y{z^247D8`>;_hGF=|Oun8VWu1<|P*eAy^1lg_2fMXiUVG z*kVmf6gMU&wvxZyb-pwkdh_6e*%{{hzIktF-V-!UqyJeVK7l}h3OY6j>-X zFe)s>$N>WfTxdE?$nEw>vDiBac)9$Oc6PoHu&%BncAiv(3v6|o z$X!K|n~}&|NS2FyBdrvVzy6xbZ4wMIa=^d=7n)8J`I5jckB*K#PbSwjx4S=Vx7!~j z5*ZDK7&&0zfD29Q9qEq=W3pPUew)oUZLwHR!mq7;(=wTyb}$DHxccU;CJJaV(NVTz zY=;2y!#c$eYydG&;}c)!kL}xAXOr0qtZnKA(2K)u6aVpo6}COLKde>%3NQcyI)!o1 S)6Yi$0000N1Fc5}Kt%@j!2=4R* z9>JAYaNipUo})Vt;w?Oa3)dh8nFa=8+Ad@P$pr8-NpaLG?4FXUCDVTtn6a=E04j6$lgKvVA`yX&V8s0^*Hwxbp?F4Q+ru ztMI-DJFpg_?5H{J@+w#`TODjc8*KPN*>#oUT?*8{pYun60Ra0MYV|m(P$d8W002ov JPDHLkV1hZykJbPH literal 0 HcmV?d00001 diff --git a/images/hammer-screwdriver.png b/images/hammer-screwdriver.png new file mode 100644 index 0000000000000000000000000000000000000000..985d44c5e7fcb3ef79e37683d163c33436fb15dd GIT binary patch literal 786 zcmV+t1MU2YP)o&h!7h=VM3c>guAsO_C(;EFce}V10XgI|NoiCY#Mt zp-|YVU0z-$xmK$+m6esXA*cubTrS52pTR1=>+9?5PuA7dosPv~hqt!2PhRRApsFQ&W@Z zbUGJ|M&orp9mx7;XJ>;NjmDx@tJ|qm!#c$&QGD$#FZcP(<_JIU8E#-nG#ZtP$6d0W zy-)N@8Xc7!3PpHa5Kb%#0$D+^wX+2Mu~OlSz&p|0ETN*X-q{&Lc;<^BT=qgR{zp=> zT>~FmTU&X0sWU`F&xzhAEfxvkXCDMX^gwXqKN8-g#g2{+4yS?r0zRG)jW{4l_4P>z zznB+<{+AFu#@P8i;hW%VcXv03v*0%WXaERv@yIkJ*?|EGVV6q~uCidV7`_8S7EH5v zfgb%mHNI{SA$b5vVQ5G~_{|j2;I81O-EQYFU$GgW1qVPmP=ftH1=LrFZry`~PiKPY z9oV@GYLCa$g5C)R!9KwMP?qv;DL@5F=ZQWYB|7xo<&wW8ntnwz|670o02=OGXwCB) QS^xk507*qoM6N<$fi_@% literal 0 HcmV?d00001 diff --git a/images/information-balloon.png b/images/information-balloon.png new file mode 100644 index 0000000000000000000000000000000000000000..f14f2a3039e9ff634a351cbfb9dbb8af231344bd GIT binary patch literal 745 zcmVWu@ zo5my(i@NexglfT0TR%{`a^tEiT^3x33qjloUAl82g6o2xqFLxluppvE{6ZTOOw%?d zX_GKb=FRionMoSgJ~+dh``$VC&bfD(5CZ;ZDbC}_a{x&OV3Goioxsp#L<-U8-TQ<1 ziFgJ=EP=2susK-Ems|mF831A~K4?sxJUSGM_62%%P0{JVG_9TWQmwl5A$R^)zOsm+ zc|@gC0WKe^-WnTC%p6J&Bx<#$lwJJ|3-bq^!|A!Nx?vat7fz?5%U{-vcki<#e226p zmv5g-r=k<7xRERt%Tm2w$E;?jG}=?FRH{hHcsRL#$e19`ZUr``O zAw9JKoO4iB6)ekgO;Z#Wjr7M>R{11(;s^+CB{c=Ydq`*vK_ zgQA$*%n_%%g3MaJFz!dj-b8Ac<3y2}M5fQ63RFEr#@hKG-?NpCjSNm*hNzC~^6*3I zL2&}2G2DC-(+F3*kT}4zxG!!jbl$$bXRbWAjD2gDRAhd;>>|s_5bwKo* zkD1Y#d*{x5oOAlmokvrI2p#zDlCpg6!H0ojfzrlmSCwX1iH+EcT;P@3N5}~v#<|7V z`tJE9a)F161+XAf#_5IxAQyPp7GTUaMHXzD^v?}hdn(cF&D)mF3N!hP$1G()kw~+ zq~$f$(jWu`BtY_rFV0nb{XSm5zqh+}S(3tq3M?o;p%|$(%}jwCMkwo6@P?KVW!N+I zB~cj;Uuq7tb-X>r`K^LLTDSD1W@;i&LV3z>0g@W7-L zSO@^HZZQ*V9e_;&2%b^y-JwLhT<-G+10nCD!RHIdJN*i&-MujCKMBpFR00r!frKSu z14#tqEQk{EFuAWK7&ulBsNLQZf&d)C~u6Vy5y~>kqHH*)v;I2naFBAeji~k;f*M? z3$&x#9gu&fR;_i}o>;6Ri>|JfY^tSn1fHuqU2gefL(Zmw`F%QH4x1@_IVD8T)m;9}H( zKm-8GvWR{6dsh`j5)uioEt6T`F^nrIaTAB5iI2?sB8o<$ETL~@npXr^S|i|e08~0) zLkg~VT6=mM3#!C%oIvb$H&a&Dz}jt|!sw&>^Z8tUXomnbX%k>#1)#-6BnK-C$!`&% zz2|x}!>}69S22RnQu6NMgX#5fa1=A&TP?IB1Lm6g_F*4@tio_;-WLwf1itWmjSZ{d z#K}*g;M`1DQQ=v>fa9gpMh20`rU3PW;=18lTmx0nV06Jd7R6*LU<-U4i{aU893UNH zQJ@!jfy7OLxVi6Ljv26}z+5okw-Z9UGTgPuLdcnKO6b`87)Hr7F{J$g)vU_{fHaS gZ<|#oD8B?404-uibuFU-FaQ7m07*qoM6N<$f^$l3NB{r; literal 0 HcmV?d00001 diff --git a/images/light-bulb-off.png b/images/light-bulb-off.png new file mode 100644 index 0000000000000000000000000000000000000000..385154b228759c58d9f2d833639deef33861f021 GIT binary patch literal 723 zcmV;^0xbQBP)<7Wkh@#y~vrWbW$S zaKIZ<6pgO7BuEz5!|Ss*PO+W~z&owqV!!|jq1&^UW<*I;M zn=_M_fiphT0B-_ZLDqAUm(;eZA*~}RVzVO&imGX%tchbR6HpYz-EUy%H^4n;@d{t6 z@eO>bW=9sbYl2`PNy0``z|}ynko`^j-=OkgqmX6YM@D~E+I#q9EOw3wLYC#FM0TsNl*@0zEo>GO zMaMFmx%fKw4Ni_rl7uh@4DtqvX=os}VL|>xgQ&Xq|>u@-PMA3wX35QJqugw5gEEeh)c{&H~&3Yrl@r z9|b&n3euq-$qwHmkRJg2z`27T8K4QM;+DaljCFqm7ywFkZ!Qnfr~?21002ovPDHLk FV1k_FLP-Ds literal 0 HcmV?d00001 diff --git a/images/light-bulb-small-off.png b/images/light-bulb-small-off.png new file mode 100644 index 0000000000000000000000000000000000000000..18e1a202db3afcc5fe1bf601defd302ef61af51c GIT binary patch literal 341 zcmV-b0jmCqP)fy(4zkhx4{`I|Izkam00000NkvXXu0mjf9A%bF literal 0 HcmV?d00001 diff --git a/images/light-bulb-small.png b/images/light-bulb-small.png new file mode 100644 index 0000000000000000000000000000000000000000..f58afa5e11a3e7cb08bac9f5a002a6cab09fd30e GIT binary patch literal 345 zcmV-f0jB%MeDA7k>U> zP~%fmHv9hl;eP=&MeFas8MH|<0I1>l^&``-e)@EU{p%x!D_?&yJ|oS5UyS?j?0fiG zSlEW;?B=82KmTCZK~f-o{mF3k?c=w=fMjNP{`fUN6C=X~oY4SENa#2;G?YO{M<;F7 zs#X8Fxw)s{QU}6Vy>RW?H88EJs!2E@U^5j6I2aijy@2=-kR1!eBDh?@h%GMwHG;xM r2pUEp1s{RxzF~6!?P)s`^}rT?-9$gz_!>OcE=Nf062l+NnAOE%LIKMeUciG zG5@4$#o>#0(^REaszX( z@Br;Y1jl>uI&DD}m2Idxq%!Gwkr0;PT_BnCf*VQmb@KBW^WVSl?z4#ixOz4Ke!ssk zy+~qx3HN1Lmf_*JwldghDRx~#Huv5AzuyA9NNmE;P!yvrh(>!r*9CAQI{gJZ77+*H z@%Rxtk;~ literal 0 HcmV?d00001 diff --git a/images/loading.gif b/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..10e72e872827abdc6ab76144c5db14f66e940266 GIT binary patch literal 4773 zcma*qdsI_bz6bD~lLyI3LLR(Acr*ziBmp82B2h!l(AfJ7pq1{K9OKC0B(d&5Zx z2@NSku+RYq@lmRbgO6IZtrH$9D$@b0)^@B_s;yRQk@2?L>2yzA>;8Gyb=Erj&$HIv zpWpX<&)P=w9OaD4WRMJg1^_|``rzcR@YYj!>ORD-!`uG@yKh6^4OsP8`1m;-eGD%> zhIfC4ngRIhzu@-I;i5}$Y!Yr9gTs&Ds=vY+XJPv-_~N?Q z58%zG@cuKn{|>w|37`HG{`?zsU5C>?hB3z=@yLr~zVSIc_8m+-0pGj|&;JO&`UiaW zFL?F`c=ZXqF$K#;;NnYg_t)^fTky5>@U3g`$UWG959$Wte_w;yA4AD$`1%z{?T7Xe zxbPyJI}DeP!h*9f_Y;`%AzXSH&iV`Fe*~kBKzctcJ`Y!a28~0oFbw04!^|@<;W&Kd zB&7Tqnunp{(--@RJpAVb3JL(=|IXEIuBzNxwSu>O_10=$<(kUcbsH;J$X0Jyxe@Ro z)nc%f>NHkEo-7BCi@cB(S&r*Y3=|E*V-9)0hb7yI?^{ih+~pGG7|!1Dv2CzAjcPQ7YY(2q5K`L z%9j06Oge?<0$MLaDm)Oz>PK9$oupV3laKh~LMtoAyZ5FQ0#wK(A62v2G)e7>S;Ncb z?30qVrC#9)+-QQow^lqr9!JP&}Q?*l%yB=%oyQ@CtRz1ox zq9^z}y43?TGef{-hqd)INp`ep^C>c(u>;WV)?Vo$qOzn_S<+As$`?AsGztHMqOg$1 zIL*nEwNU2-``2kEd&X&W2SF%3+Vg;PU?!b+t$%bZE>XB78CO$}vu)K!FXOoGH6l7% zQ719%R{JFLkzfU@yKVrhv*&;=Pa1(lT+mlr(eDf&>Ea&&R_ng=d3c)e?p6Ue^6ze*HDzUtcoswb%({k2w4uQgQiYhjKZ7F@-EJ_d`z^LWbGq~h@y?Fghr5m5> z<;UbZ59A9R9uc|S#$0E4tzk|~c8T+%S4LcEv25@=tFrTDe&OQ}YxIWUwmCA3W3G*; zLt_s89yd|^?FAycV2Pz7t~KLw2nRX9b-;sY8T%16ws(Yfpx(z(&&?&_ ziSuo~$(+3!9b3at%^WOA^8#Y3O5EFno9nKSsfN1|br>TeV00|(Xmj!9yHsbX-2-ta zLXEy8p$6GYTDpZLC|RfwwEZW*a(VqdcRsC`giY0DV>3B7EiydeO${RLowcyX;m7qZRt6YDeYdB0#nH-HOyywz9n(IkxF}y6(rQ{Z z_!|4$m-SdfnYrZKOtkme0RcOVH-Dicd96yMwULxsPXK?Ku)7v$OXVdtmS@EP zmTBkiH(`5CEeB+WM%U+uAKU0ytF7d@(8mwD(KfMJOz0&w=*_`i39`;Enx=0G#<4J z*b@p$0luoL4Cq*K5obbXKI(`Orz3IYg+aQ+j!E(hX4?{^`b7)NKLjSK&g*byrAvTS z`sJPkA>d}NTDz#h$X6<<=%|-LPKn+|_S?vw{wW^o-GbKz3hiK6zb{Ha$}j2xLrSAw zJKSAT!(`KGYliy=)uBf5tlb{XCcTwSPhE4BCwTyhRLOa*Vvo?!@^%w#C%+~=!tBUV zmh=pa2Z+>i(XV%epEc=89Q8HVPt24Ir#yMh?Y)FJ99YS@f4?OPkV@A)RcGxv ziuT?fwT7MQnkDr;Nl%PFVqQ6_p1`8mA04i+j$1wU7J&);cCY1wm{4XkPIW54xcIdl znWs4X=;%XPanaI@9pMEhfBX-aU-U6yY0ytMdXg3~+=TQH#<5Z{RbjpyTbfwb1!Out z7s&H79YB$`1UU?hN~KCf7L=i{Wk&@K5_`|tSkdg+`sp!MdJIX=mDQ7Uu|^Ik%N2R> z6;i-W*vgyMpwCq((p5LTrWqT`SwHwh;^E0=3hUjhHDP6uV8A92CY0oBdw^SMw0Y<8 zORQG5lpUYt?7q~}sHps*y9J@DLpY;8ulmdCq4%O!-{hT|BlZL0ndFX1-d@eVC{eR= z%|N&q&Ek%xAHy{S0%mUad*SV5q$8y!FIl>oIJX4EpFTDdAT9#Acq3MuD+H9YQHH4n zcLwk-c7|mcxg;lDe?f;%y?W!#cYMhiTejgw4nM>#T^ZHczDX>(7umR&gT8Wwf9lv3V3anLCvm!b}S~ft{d4Fhw4z3rk&~ z2dI)y2gZUz)nUL@C=i5il}Dza4RTP%o=;Obv9ShiK_(tEJE&fHYPt;tWu+(Fwxm}9 zes)o!vq40oQn{)QuS8mv9dp4apJG2s+`OrhKtO__>YO(65HY4Hby6MDhw9RdjbuXe zFoBiD&39}Wz86SRWLMiJ?z8U3`GSG=c{$kmOf6edB<;CV)Yw#?>I7WdMV3+37+cwT zzo9F7I$I(RVbXC;-k|5G`*x(R=Vn^6Z1+G{dFE$*UoP|Y6#6YOt9Ig+Ya3HjbgDLI zU99;C$I{8k4SQ+a#h^A&$W{_STF#B;U3axdd9=-)6)X?0C}3w(a2Joyv%WLUNBQu6 z$^A7Mg7lKh(__gm5w;@{VSPkcrT0)3cDLRZ!tALIOjeqUVm4<)xQvDe=Ga^Vpz{f) z!$3r(qUPKMbVio4G>E7enE6w-ib|6ht^7m%bcd`SEpy-xir5?vr}Tn>zeqr6kZ>Jb zlG%q^g_&f&AARyggKXzbNAXZ`8|f+g05fl2ahuSdH-lSqx3R9mUEvfD9yOun+16G` zn)kAzDP`5ptxt(Wf`k~|F1|Z~)0-uvcGFQ>3$?1L)~B2hQy4-O_qqDpl{&$GQzF0U z7{6|JR{jolQ7B*(r5A*vC!Q=HmdUb@t;@9;9=Zz4EYJ4e4(TwIn*1}aHazzsUt;O( z=OG#Iptx1Z-D5=H+m!)mVEhg~92>Qh+n0A+|27Y|ZJU*OcORqGPTkK$>Ws&E;-#FJ z9-MYtkDzSbL(xmA8L9|1ogMU>NFFZL>=x-m7=w#aJ{@5|!)%%9jjBM_|+Q+mbb9IY4#q-^ln~|K7@_DD6 z&0`4}Z=9jwYKEv54Z5V3@;!clkmOb6gsWWi&X`h(?XF|;-aHS}-IzRMM|FL4iZj;p z;2#qM$@RLI{{Lhz5{=q|eul(D;+owOQ3#XC+b|n90OYCkE{tPni%_%RNp7Z#R3sYpgUH>(FygTzDpdy}xql}UxzeP)M3 zk(=)S>T#1XHhu+S8r56T;?ZbWi~KobxOQT zX75ILW8V3@nIKS0QEYYx)?}UHF_(?t>sLEab# zZ7`s~=CDP$nt=>4Aqo@PW`kt%EnBPdblEbF5&TldfN&?Ns=(~)NwZscOA&Kzs~ zcr%&ReX1E7i~>oSw*0EA-;PGU=M{l4E=*{O+cKlDJMG@*O)MH=F{^l2j5qlhSl8}! zHhZu4lH06#GYa@Z?oO)lWi{euM9l3-lb^oC?lvQB*gGwld3#C+VlsEh(N1iOr5uX{ z6fh#e?gg`7+_Mo?zeHk?1*ob0z_i0M6Ez<}c?a<37+d1 zs-He{=B$NspA4}%9JUUx^R1f2Uo>#?t2vWDHRBWuxQXE~*^I~E;o8k1;U9SkPLWH= zA{q84(&Ag2)%P5sq%A)vYj^QV@C>TH$fW5-TO>-cexg`N6wR@!a(3|Q_-Xhh$JD*` zzM=rf!Ct&KMst}U^@W`N; k@Et0pB?J&>9Zvx8#&vOLLijB3&6&feuFwC?$^*0h4XsbQlK=n! literal 0 HcmV?d00001 diff --git a/images/lock.png b/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..571c16d386fed9c3bc340307493c801b2a58fe9e GIT binary patch literal 1535 zcmaJ>dr%a09KR3+QA(6C4Z(GNj2&{jdwa*-o}9Q3PA)m5yK6XK$a43CTaUZFb{B4e zCY1&ZrO|w(mZLQ?rIn0K;V>40X_nw?2rW>@$7E4BW2vc$kMg^}2GE9~-T#|z?ltQckRHTP50Fc$s76Ch8 zJ!Nm60BI`K2##~QB$qAA@N<8CfN-4>zb5#cpHJCeu(5V z!%v-Z*>WJ77XYN!peb%N6@^kU4TkFs2E!aki()8(Y7tDEf*DM>)`X(azymAR1W%#K z&R7O)DJwJVm875vK|-OBCWLEvp$NeUf(UD9wJ8cBMJx+Qteg@Mrw=MHKy(XSP~!Li z6jo#l_!7wsE1o_L!5_49MP5l95)X(2$x_mW$ZQb7G$kX(uM-6hV0a0QDZZOE@o^kQ#a!s@V zScw;$JYPK63^`t2;zchXglGp2<#GWJ9}>fLQoIWL2?VYbcq{_%hx$`y;)Yo-DN#(5 zG-lCe7;#*yBN+>ZktAiL^*DhtMm?pcaCm^|85VLsktP^iN2I3eNStPrh$+-aQWQm7 zESN!y=~H1uaRUkW$FP1G+)|n_JRRzOWifPrKtM^ipxllo>Z(JfikM?%NT=LgxA}~3 z0vZ293%=u0AnRbab1ySTj@!EKV+L8-xrBTWCI9$|95<4D$t<6H=jBD$Y~<_XI@ecL z=Hw)(*F}!ppB|GjqM`az?3m7G=$bnDvhJhp#}>A(LB1`+Z#JK)nA={r<^JxOFsU5;J8lRwJdLQMy&xM`b2{{YS!_~X}i^L|NGb7hFdo-Ha~IQID72= z$)m|!cj=5Phw{Cj7n9t2&+(kX$B!yC!8~hM+h?ac6XWvFzEu-DtwmFVRZI0r^;KtPnBdWmspLc%vM&4DhuzFA2D17gdf0lap5DA?P{>E929XH{~we+^6rd=1+#y;#` z*~C9DOB{zwMTC+i(fx6!g=)U?Cs;Lvi9Fj{F*QL+jwa7gF9PSMIUYsEWFaR ze_C7K=-HNo)lD0HX29QA#z!KzI#^p}`-U0g`_30P=T_cXv~OSJy&h|gly~iXa`l7@ z*rbHSs-n5Un%0>S+oB)zE$@l?6jUZ^>{8lp<-V|^3w03cPzf{NU!aBlu_eM}Q)96oVzgo&`lZ>OABU4oI`N9o7isCXakgi%tV8C?|J(L3N)d)M6^v}K#9 zD3eS_7-&Szv~DmNn;DBA6QkgaY($;-t)0fH!_3T;L^mgk(_Jet{#d-^?tS08=Xrk5 z@Av-Rt8?bRmYg&_2>^iPoJCB5Hm1hz#Btg)?fw&18>Xo?w^}HbssUE!0g{tScreGu zmhlBV%Z1+Q<+A`_tRT4Ds@suAcqE^mjbZdbpI>7GKvs6p&w9MP3YPF?f@p;X4s}7G zz*(UpqXTjHX}(-oR3-C;RrxMYmDhuFQ1${aD@bSpK3-+Ppl^k!5J4*x*Cn)h>@^I5 zafs@*LQhS(9ZryzWF9o?kqi%FLO>I$M-7=~vw1#r^WsF^Te1cHD=7oRX7x0QyA$zo4EY*z)_3S_~;7|^PgO$C!wu^Rlg~G=_I2;5cc`AIo zsOB(MNQ3G*fg>=RnY2)L($3%%irNr7lQK~Zj-h57jnFn^n42RiDl2;UVXhG88Z%8M zQ|2?d1TFKdD#hWlyb=r(uD@FNDw(Gpv3k`a~1Q+%R(j3*=5NG#!E&B zqoP+-XrW0OwPQAm!GL9wj2%TulCsc71CB5jBW0uv&=8Rum2#X&dNp8GL^g& z+35Urmpk>j1I2sY$JZs&Elqd&nj_7nXWu(K=g2m7jZR0yOQR*% z=f+!8H*~xUpa@ z<^1|pySBH^Ydro#|LGf7u1!mv-ITX8ZSaAs`re0srliWA^zP1tGTo~mq%K|yCZ0|H zF*j-vJ68|1*8!nA?$*&m*4??|^?{qycg}5I(A9}qd zT()vIEZZ(Vc;Lmoa}yr7t-HN==J(mZL_S&7?|%5^`}Ow+v0!+6!;blSk=cK^eNxiC z?%dl)dtXSuzP0-A>ralP9h`A;%a-70Q+ponJVA3^%c_5xTR7)H(Hrz_q%OJd>&GpP d-DzXS0X4RT(XC4^9*q5Hb8Pv{9_p<%{{rl`E{OmD literal 0 HcmV?d00001 diff --git a/images/minus-button.png b/images/minus-button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc019a60b0ab525b0b136a5bb25a25bfe892f4d GIT binary patch literal 479 zcmV<50U-W~P)IFbV8T*9m3uQ&Y18-Y3~RQmnXF79@XnN7p+!RsH#}Ulx}_3^^L)x z_GTFJ=$41czs^~+S#>;5!1Fe_7N?Cy_0=#s-v#!fQb{boD(?pn-%9rV(N13P7 zX(0hw%8Hi>xUP%YY?fULf&eb)e1bFfIqGo&t3eWD0|9!35l8EGg(`WyoX^DsO=1r;P)IlK$~{j9RUBCqXiq1my@90qayMC7lP)pP>BhmrJu$DwP!i#WYP26w9)p zX&M570QR3nrM;}#&vvKNk@1`-Utk-O!0-3N=kww0{13w6uuF4nxBFKTEJ|<)xS7FV zP~P;r4aDPE(a|W->-9Kvm0&m=E(k)Q5F(Mt+6F3$LQ_ydIc@^e6v*dG(pf6y5sSqZ ziLF)(nM^_2y59LO0d-ZyU@(wQ?ghWb5yLPRXC9B232w$%tyYmpBxpZ8bT}tYr;l9E zH;n$x8a5iDUa!Nx84sv=FR8w*TR9ultfw@UA7qb~52n*;Q`hw~+T3d<&}{f@LPs7F zJ`vs$+Dm@kcOIQV1jhQEJ&k|F>&;84*9iYRDrs)_W5TYD9fB99J-j-3v-{=UXO6ve z%D3(Bgr9__kiqj3f;Kc+%Hie#;$jb1vkM##$~J+;lO%KreR_fQPk;dc?b+VlrdPN} P00000NkvXXu0mjfM`Q=Z literal 0 HcmV?d00001 diff --git a/images/node-select-child.png b/images/node-select-child.png new file mode 100644 index 0000000000000000000000000000000000000000..689d4b841cd3c4384b46ed9daecf357997506db5 GIT binary patch literal 655 zcmV;A0&x9_P)__>B0uq9~hQnYP)ao}sI$#Sr!TeM&6~RNB?K z5)v_%B9VxaNF+`di^ZKnp|BSS1fEEeR2d8g%gEWX#6(4R&#d#4<6)Uzz5PzjPn}x7 zf1GEK9f92INQ{ARC|E#G4lE(KXf#Tu zX-;A$?~pxzv4PyQHxGxAG|d`WmdP-TN$dzmWV;qr{Any>4zU0K4}3l!>ALweqE*T8bG*Q*@=_&^JZYo(i4&#DjZX2|FF$D8e=RZ*1l z61UGg_(m=tF7WURnzw0bHJY1K)JrSTk&S$QQ9c~mIJF1pHo-zJy8uROC~)uP8&kb- zPNKbcLmt=arCTI=_OWq69|(ezU;zrkAlB8Y)xnAN^y~Lh?DM`=uW#Rec=&aJP)YyTFN(UESD8lH{p)S&?!&=ZG@VrF-K=-zIV-F$alK8r9 z>g%e#`r3CyUAMgXz=xT6-2{N%;Yh$KmGphv;}a5&rqKY{UMo4C*U<@5On7j7Lv z_c%?QnJbDyPN#E9(q^-f$K#<`EcQ5`&+lT_5lglK2@9_$_a={v zi({wDtONo9d$Cx2IrY&r?K#9NX;A`xAKV{GK7?MJaLw!Wy8M2BAe+s8%;j>QbzR?^ zuYh$<$Xj3FZYFXJs&WAhx(ob9@*?>5ZvtWRz@!C;bFiPuw_I5EIsX-40Fc!Ku11f_ Q@Bjb+07*qoM6N<$g3C%X8UO$Q literal 0 HcmV?d00001 diff --git a/images/node.png b/images/node.png new file mode 100644 index 0000000000000000000000000000000000000000..88f1a2bbf1b23ccfdd248e0db1cba62cd8d8551c GIT binary patch literal 548 zcmV+<0^9wGP)}` z&YeAT?zuZN!eX(YeTGPT4mp?09g3oOhPfN)&gb*j*=+V#uh(@_BoZM>l1zD0JRZNy zWHQ&ljnnB=DwRsV+wIoyQ5P5vhcul|4ZP84RFfNx#xX?BnZyzKlcFfuO`GHKm|Crt zZI{R2;7p2nJRT(w2%MHmrMF_S_-V7*9%NZoCzDAMoP59ESFyps(=_c{fE^F)ra|-p zEeICTYbTLNZ~=CbuU4yso=tf&7CY$ganrKb>!rb9pyzJ4o0`q0fd>JS&5p)mu@G$Q zIjmDO8eMK!4>%(J(FOsl)k?iyZ)+_W3=%Hf5jI`09?(JljQC3qhlBs*R&|`h8dxZ mCJ;BkyeZ#uVc+NcFTen2dF_!K8+a)I0000Wb$GF literal 0 HcmV?d00001 diff --git a/images/null.png b/images/null.png new file mode 100644 index 0000000000000000000000000000000000000000..06b82fe1a7fb65ef6ab5ca6c1d95ae59de6726a4 GIT binary patch literal 495 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyw* z79J{b6$wiK00D1FL_t(I%cYaCs_H-xhQH0O0YPFDOd~25l2&}1Jc)?UWD_e}Yw-;v zwW5e2idlE}6o-?0J;`mZ16%CR$Lv2dJHk1~C*kp7h{a-o=l#iJt;HC_;c%$5@pz1s zvXPT<9FrsoNs4xweb(zWX`0e*w^2$_mL&jro|9!+jk{j2h#&~w?Ecg`olYxlzu#9i z|K_Ap3avHPTCBAQA?WpbNGU1HlCmrjLXhWqjgwNMnnu%VwaD|lx`$!NWHM=-LM?&s z``m7~H*GK&;GDx+TWLQZQ2M@))|%Jrg)ye8Q)`XZn*06E<#M6Z=`f$qSuU4EQN(7m zL2Hd@{GOhNQtIuc(P+eOx2u@hZ1(M-DS>kiV+__>oO9KQqKM&e$ZEABO;b*%Q?rAA lx%%D2zkBlk%k=3we*w%m+g-u<6fgh)002ovPDHLkV1jhL;0gc$ literal 0 HcmV?d00001 diff --git a/images/pencil-small.png b/images/pencil-small.png new file mode 100644 index 0000000000000000000000000000000000000000..3d81c2fb136e49130ca1ec340bbfd833fd030a0a GIT binary patch literal 384 zcmV-`0e}99P)DzW(NCj-@fT~?BCz)uB_Z2`Tze8q749R{>o6cc8R}kcU|^5{$!GX8 zuC~@=3u;0GIo6S)JjhY8v zyWQ^XYPEWOb@l1S($ckfCX@N3)9F;x{~Fu_@mMT&DVNLLUtiyRwy+R*-DortHk)ma z=lLl`Q69s5Qp;f4;cz@e&6dk$ibkWeb8{EJi=rqXb(dw?k#<Og`G$ z`ruaEK|q4zxIHZc7p`esmSsZEba;3~YAd)t@_44*Xh$%c%|B|j+AfBBVu)9P4Pu=n zm8noTB3bSb$C*h{7-ASbx!p695JuG#V!$+ff*^PqiA2ut@Bc!2hj`vRc&XR_9oNpz zm!DW-{e5Q0-~i%t*=&JYEe3rP84P1cZg(+mC=^02iQ(|w;}zVXQ`E3n-V3-?EnA( M07*qoM6N<$f`LOgm;e9( literal 0 HcmV?d00001 diff --git a/images/plus-button.png b/images/plus-button.png new file mode 100644 index 0000000000000000000000000000000000000000..10d1f60031732739dc674c8785a5b8027ce17566 GIT binary patch literal 583 zcmV-N0=WH&P)h5s20ovZX^7fD;8b(_RL!{(6WEfiitsiAGQlv=rSefIf- zn+r|Px!_jOrz7Ms7vJ|bXSaJhdilaeYWCX;H|Cq-Pvi(rNZlr$$I5Yz!UhbpQhIFFK8Hy6z^g2-g| zFqTvX4`mmU$GP=ZrZ-OZvgDFVCUr~0!Y+X*8Z(d?b{k9V8LnWF)|bwBOaXpj4Xf%Eeyd%Ur>BN8&;L3S-SK|~7yy`x V;U%6sJ%|7R002ovPDHLkV1fo32DShI literal 0 HcmV?d00001 diff --git a/images/property.png b/images/property.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e549e453e63b384c3763e2e21899541fa79b85 GIT binary patch literal 769 zcmV+c1OEJpP)w84g?ZOycSa* z{IUnlW{IXP-tI@2zlFnyuC3ujeLd7<5|QO)2%-p+$pn+xjJJ0#rRh3E!R2xp0x|sn zRx}6Fv@O%pToz* zkF9B57)nlN)A1xgn81?&cs<9E$$Oy`qsHUp=r}yuo^V4IW1s<<>P1Dlj@wjVY zVF9!Ld#I>(!}oj;vNa12AKXV>Lj!_=0E$aXAq9gN4Nh@)2gk>@6#bm4;jzd}(Y#)- z;lsR5hHsz`HD|BDS<{ZNG=$+Nx6s%l)3#UP%d%y3K&=D8Op?s)>VY5g;}$Z4}{d* zX0stDC&%!BIJCF1vGJ>dYt7$5*L6CbzdfBQ6xn+q&gSMO=H})gvL-Td>Rtjk4+5PXPu1o6JfPd&5Hh00000NkvXXu0mjfF(+j6 literal 0 HcmV?d00001 diff --git a/images/question.png b/images/question.png new file mode 100644 index 0000000000000000000000000000000000000000..30a47032a41d7cd11430c2a3e6020f6f363b92f7 GIT binary patch literal 766 zcmVm?G)iJ4iAVne6SOec!%)^9H%D3;(ku{)oQ@Kmvdu(l^uw2qma-j-sQQ zw@NV$u1gc$-#{F?5x}#FJ%PX0pxPkaJ$t&NI~r+j)qGwbE3j1BH5R^QFMa;9He_1% zQ=0eoKm|2&D5yNVm5BEdhiDs_ENs+cf#|VNAkrBMk5A48ck(9GM5+RASXIQ~p}~`V z1-+>0dI2V$#1EAAU?dG|Ia#}QxvOvd&DUY8?95PiM&ME6BzjMUy90#*V&B zaZDyNJSBEi1{T}3EG-%dbu-R>1+Ih7x3_7ndcLs##j*DWCk*uFphaDW^im#DDIG*f zgkZ3-m2qg=v%Oy+xI+{`bsPsUc0ezbz_iNHA5-A=^+rf7oABzL34-JWcIdW^RmQ3J zfMA3%M%FF{y;uf95Fk;4M|Y0!@Z%R7AbGX@>Ijk$c=wMAfKf}T7nx7$`D`pv|F5uv?mBr;W zt6?dk<9%SKF2WcYO}Xrw>4WY*I&- wVvBNdO@Q@6twQ?84W?HS3|1KBl0O0r0Hc5`CJFBOhyVZp07*qoM6N<$f}U|+z5oCK literal 0 HcmV?d00001 diff --git a/images/remote-control.png b/images/remote-control.png new file mode 100644 index 0000000000000000000000000000000000000000..900b98b029bcc379bd7dd9f74ce7f3cc45f04237 GIT binary patch literal 1458 zcmaJ>eNYr-99~gMOiAfbpps=V#qw^y?hbCf^Vr+v>SI7qSajJ1oyi0#(UK`-_Azdpd*Gi>It&URwL<>>{fPE3J z3IqWs)IW6?I3Z}fD3+CL<^E!dmm(I_a zT*xw;AM?u$2#bYr1(e1EWqiDvcL<1k0ql%Xxa{ZjNt1*X#|tnI%VLba#$cqw<0Xh;t}m);T$BgHT=5Q<7?Vpe3g9$J zDU+m{;btfaOPZvHB^hQ)NqCtU6{I@V*eBhU;S(t0N+5U@DFP3cj1oshudOvgGq{&1 z$Rl;vH0#B2n)c)|HqwEyc{Y#DLn1>&VN}Y4M8?6AR)^hgrAdZmaomID(H@V7@p|!G z0=L-_RJVZ|{V}RvhL`jvG^QinufL3(9}v~ct>~xYs(;ry2pV_6$I@l7GpkBnixcRn zo90h!fV>Ctvzk+z6JI^^a#}@a7|vSA^K*|K50;$h4)wU7Yt8p;?=(?-gx+GBEhn{o zc_6F(NKN!GU6OnHX>z`F;m9|alUfcX%!7zb5teBF|LrPH#_W2D=|kOI}mt{OC#-lXGP6BMGMOwiVLFsW07V z82G%kr)?jCZ3^@Wa|9y&)GE`(bMB(T*{^gZJ!?Jyf4Zn}+lj8E`g1v<-yf3c_ewiV z;SGD5;(zw^n>+96GM&9-FWa%C6{Ih>%$V>zE$=(udH2AI>|SN>@)wrwNL&DONZ zON+wRjANHpc5oMNH9V2D+7tTV?B-wxHmm)IxdCSny3y-Sd3$fm^_g#I(~{S04O`=@ z-Q5f3biC8Q{^-TbMO%ZLPyFHhxqHUt`_mGWk6#ac_1N^5-#!zF2jAMy=PWsxvf-C2 lH&Qn`yaVI^Ic&NyEd>2NWBqmp1Q6pd>MIDaJ3XPM{{T}S43hu= literal 0 HcmV?d00001 diff --git a/images/settings.png b/images/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..a6fe99ce225a9407bf0e02ef90a554d86c867663 GIT binary patch literal 434 zcmV;j0ZsmiP)1wJ7@8Ix;t;MP)mq~gBw_~z(?OI9VmBcu?b1OybuI`kof|3yaq|xZHwOoC zD3-`nBdo0|(M6+87i!-2y&&+~pC2abJ3^3R^@D1a!y?YrZL zUM#%)z|7Qx(0;{)Tw8^zmf)48k)T$N=jBDF1Cxtv8Y2 z>B<(W)R;>xWzr_En1WkuFpRgaKDq|qEO?l^(*^MI+`5z?lNw_B-B%{Bo+ox9LR%vD=pM*0 zZ~7=`BILDycs8$R|8Zyn-3bKFa1xV9%8&`kytacUJ|qNKF1+ad c7yhC40o-uaMC{_9Bme*a07*qoM6N<$f)M4zivR!s literal 0 HcmV?d00001 diff --git a/images/socket--arrow.png b/images/socket--arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba0533c40001beab621d7b1ddf7b1e16e05b10a GIT binary patch literal 630 zcmV-+0*U>JP)vL{UuA1~P2J-%Kau zI1ae3>tmfx2RM!+r@c}*1I!%7Wr<28i^t=jX$Lr)5sHjMOxF!RMuDX%XCi=Qv6O`} zTGj|8NrKU6j3>kSPDU8Z^5HOv6AI|MZlbz|)k?0*LZxyGdc9wVrXOH0S_^QJH+15J z0-C0E+wHxd$z)o>7O^EA%M_s5eCLx(rIir-vG2kcJ0cj$n&Ozfi9o;K|JG={{k*<@ zN1eUejm8_;&#uAt*f>

Q!~&(cZ-?9?S1AM2JSCLOOls_SV+@yUWWL&IKD67e&~3 z`4v{L7h$)DiJU(o2?5~MlMkPK0lda(p63fV-SdB6WpQP*!XH(>1n>M=ZqdoN(m;DQ?%H%%AX4Iwqbl!TUoEe?gjk3`cDVZ+KvUdZP? z9{>HBA#of-nN@+3tF%FNw|F2VdC@@EA(kpaM!X|51~3W%+?!0~YR0gE!n?CxPd)GV zC0-QyPtT+Jcs$T2lL7L#2sbwZemp!?6!k<=+P3QorfF6do+li4yKTACQCZqqeg^@z z-E6fa!!Up`29(loBs*0XMJY&Q-4_|iK@{;T+XipBgmAn45J h$Tj$%m+4D@0RRT`l(u2}p>qHL002ovPDHLkV1jjlxO@Nr literal 0 HcmV?d00001 diff --git a/images/status-offline.png b/images/status-offline.png new file mode 100644 index 0000000000000000000000000000000000000000..f148af49853dc39cf36be1e7492f7f72d8d67288 GIT binary patch literal 448 zcmV;x0YCnUP)BbKoq|INE@htgTcfw ziE%WrLN^&CVW@wA{*9Obp^1bPx|qP?;G%J|i3JS=+k=+2_}zdZ#&%)yC12is_wK&D zckdmy*=)!@#*;m5Zvk!sbtyY|_>+j$Xu>$M$ z`n+5&*KFJ7S$BNjXL|%$@x@}XhIKDd02gwoKkqmWaU6<_f}fZqNqH7ed_>Rl+{xr~ zx?F}Qf*=!ytx@VuSv;|gIPh#3#vql-M6#@qEhI^a#^dpT#S=5IENj$i-L)z8MOD32 zv)SCyVln?14tr+5-)+xkv(aw>Zg-SXza$94nW88q_yYI=;tsm=hIT%|zc8L8Aiy26 qdH7@K*o)3_-j5adpP%VlfB^u}=ePcNmHmDI00006PEXtjc^v`i`UeB(mVNH?r}$(PCW_wuEa zH^UGS7O4a*SPKi5XE*G!Kwnsnv~}7VM2YATCJ1Oigf5;w&lgbTK;U_Gr()>adT}MC zDkJXm=2NTI?%vfXKO@}vM-W)AY#kVSp;8W9Uv*xb#Mlc|T{|rAYh^>`u}6RqjlK2V zqGeeigaFR@CvsBR)l5<5)O8Uf5G9^F1naBSD7rnmQ=Qi3ZWPUb| zqcN9x{1`c!-Ny$jsU-n6;F~;vKlCh_#|uo}aNCaQ-8vn?rU7I@Od$&V)?0_)k4%~W z7O>f?%os~So>k#EaRMcFMEXsdzYRUSfopLEuh^vi_c*~4Eo+4G$EAyiA@zrI1^@Fg beF!iBtoNm!wZL>_Sbl{Z|``-A&>|B6LA)g3Ct|8N-#SS*&uY^(x@5D7Q z2`^Y=?65~-iR4MW85Uh~VkYc`OogTaP9h%7A4*NG&tnf#aNd6~w)mzuIC!iM+}~>elF{r5}E)%VQKIH literal 0 HcmV?d00001 diff --git a/images/switch.png b/images/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..04bb1e0b961de30f66d7152106f66e5285eee0dd GIT binary patch literal 541 zcmV+&0^9m7Gd5N}0SOOaLWO5yK@^0&U*{X}#F!X~n@o1+nD1w1 z7nPN=jN|&Sddz+)-}#LiX!4r*!%rHS!;g{ z)P!M}VH_kN!tQw<&F6EPPNx#t1NB_cr+_@wLCOgL@F*vI{b$ f%@(e0@gcwfY>f$_o|6n~00000NkvXXu0mjfj@IKE literal 0 HcmV?d00001 diff --git a/images/system-monitor-24.png b/images/system-monitor-24.png new file mode 100644 index 0000000000000000000000000000000000000000..f94e74b0dc2eb0446f46ba42f0dff3244e1973df GIT binary patch literal 836 zcmV-K1H1f*P) zqM}xjpomy&!9PH-^&<2lND(|34_-V4FWy8v7OjFOFWwvUBq9Yt(1Ivf>4zY-)|P6U z-6XroW)tU~%`6++o9V%Um)YH!{GRt~XCpNl4Q%I-vCU)K1=P{eQAm<>kzMz;nZ3-? zpI4~{%=#uKCLVd7*A}v-X~<@?*LeiZB1;5!9H(vWGp@u1eBb8+^?Ds-V`F1jSy>4; zvh-~-S(Z0l)0|GHF+M)dIgA?!&`nf;;8d5U7h*Fi1BZb(pHZvTxK*oFSXK#@N)3vl zGSjfU{1t-3j0?#0V^R|fV$d~#D0O6hW*>)=mCFv+)(Y&}hpOr<=LU4$;86$;F^Me; zHL*b9(t_}m-~?^NJ3_e4K>HuugqhyO!6ZPYC`wBNG>Ztt%)Jm^SI_i^Uejl`bZGF0PM~r80MKc`dpQlAZ7P>N=)1eoarPM2A3jI& z#xVS;S*WRtpitr)-PuJHUcAMgJ6B=$ zbi*9zhkZZKifh2nf5iOc2P{a`s=)8X8TjW$S|ex*gf-asG>5)SCM+^NQ!EeeyE!Cs zm$=uu(}2R>R#{fKg$LVTHQ>*hpsQ5&;(|7K=3NVj-8y{nH^QIE<@vfu*G-#N%;|yfqA?Jzp`#vTa+l zEQ=>HVVdR@_Hb`Izcwt2@2=}UB>|IJtT{_<;#23)$E70u_x~#X2rvK)pB@!bV%wYm O00002X8(4{zg@xK#*eF*kncxk2$yD&UO#{~lINl?G>;oi~s{p~}9cuT_s*>8p4IFol#A|4t zT*7g3NY8Kal-%H1073`_V66hMs8@3D5G`v2)>|8&r&kzykD<}tS(LRPXsSd%0FL9J z(P(7Pgl^>n`lF9f)0DUe=s_$?{|5NJZ)p@%tyTwmiL7C*pv+|&O#kI0(AB?iO(t26 lKh}Wyn9LXd{mx$k3;>%V_ag9 zD>y=2gvK04VNyWBhq8;f-=Ypp$|M3MWJ2Vi#-UPLNP8>iwm<OZtF*T#Um+Y0!k-Tjd=1><1JSO5$`=%8mM5wcuqVQL=;aRiYRDB#bQ?pX_}AjrY*Ft z63C{~HlLg4%**bfxGgv^%<%Tj|NUlmgj+K+aF{X1coYQT1_rO)9S0m??RMKreXnL` z6aOv1MGS*Okkoa#Lq)>e@f!);Iiyw-Me%i`UhfF-b_BQ<5U^N)H){alGf40v7JF(} zeRF#HF2#JI0N(!olLo#R?)d}kCj-WFB+!uH>gO657Lw^p6DJ5y$mR2}rYND?kw~P4 z1Yt>s^L{^n;D@Thr9c2g!XTSC&A9Wv@p7xxB7snRYU;uLX!N3C4m7>F390pU=yADV z8Rvhp;LD4iQY;W^Cv#|k=6i!pZfyg*$p@G3%rlvp! zN1B>opRnVEb5Ekt2gPDhdKM0=71q+}vc+hWF2Fv^?FaLM;C&j4-T%G02`t0VI5=)L zgN<$z%`S#QSFt)>%ix5-^WJCic>LGK#x`6HG~tv=@CAcGhGC}h?W}M$;0wfkm1D=6_>j=L>__KT~GH?i`l7DJ^JetjBfsx-chDNJ}?*9H8 zKrqMsg}=_u!k3vD;BfM#w-Xb0Qt9;e+Vpy=U#3n6XZreXqUj5q{E2F-3k$G1KmTt7 z{1_(B1_I2xWHORQ6KQRN^?Gmz0=E#JB>4N{BCMhI#8Iac+WdZ(-RHZVE0@bFsZ=?S zna)(F{{Mph8m-o5>oIn9g~^0+z0KB5KPD|hebiypL6j0zSK*{5Mh6qB@qoc#t}_@; ul`@$RTbax^td&rFC6l&fHInd0fB^uiQ{i2=k{A2{00004F&@m4u@=V zAga~sNxR*?;y_kPLe3P~BQ}>O6T+jquG4jNO^rt5R8%UJBLr+OkFnWoUMA12R_kmz zMhNlD6S%Weuw#VEc`lb*2u8KALtRL@c;i*K+a-ow9%c?7ymGlrzV91D`J$nBkNZ#F znNq1l!V&=+z$TD}p$D~EZ6~SJ>2#i8n zlA|JKM*sj2Wk}JPxN%zW4G-nMf)~SPZkWX;WwRNSo%NV$0#Ms13jrFO=0d_mm~CYx zzY_@nz$eMfY&P4Nid!kC$Q;CoyiPaA27rVmUbormAXv~s6p}6_)N|?#1d=u-lqE4D zMz@wIB2&s~BBMMl(^~GZDs0e_L@>dNa{^9+HG^Jfv5UdIN@zqE=jOp}7y?HitV0RC zbt>DK4r(cy03{+sXhoz5C`Cmm7B7>@7J*^}MPNh>qhcW{!!a?AAmHc&an@*?9XILp zqqew}5-MU@Hx9!dk4NOeL=;^JqY8y0s38^$IfRfYbFpTx(8bIhQ_vBNl_uRRNx8tF zqS-=~vPy{a^lb=Ew}~t)VwrJq7c-hHE^V;a?1oVh0@EXyV0>dNqw)O=r*j<5uqNW2 z^Z%>QWR|%J*hDZ?DQ)GdXrDX5)cXwufuk|tMlx}W6h9WM6nc8M7cq21_ox4E*s@xf_37&3i?UVeg!4!y2F40Id7&J<>O$d2}s8#5&c!g9Nug0`G9g1oY zxmu&qX!UwjCPpPv2XR*6r$IHt>ru@5}O|`MZ5@hDvO_`9p(!J$7(S z$XA`KhTl|v&~AVA^6{1dQOT<5fv6Mn2uOWsc3pM;9934z!K&#HzoEJS2I{-Qo}aBu zY~1b+DCQ9>$;s`>`yORU*9`OwKD%=vF|J`j*-~&rleeN|R>jKQ&mZ30 z{hjdF@BldTNL75xj%ao-j?8fFKlF#)`%&AJqbEfB_N-OlN&UHwYwdsDrl$uA_^Nzh zAjThZ*&!^g5NIXW>@k~P*QR7PUA=tj@csilEp{DfsOoXdzuffX(!EI4WDr)x7tYxH zdg}U5n*Lf$5;?wk%Q%_F*yXOK;yt?tdhT}=H1Os$*nivRuQ}WkQrF%WmzsBDz4pZq z$+fW`Ca!F2=3Vi(1Rg($iM=aYAllp3+SdBK^J-du%a0EiE{@AI7p*40IQ93%EpYix zRp9I~f#chp(DtS)on;jz{i|a#7ToFM=N*aOb8o72otyvftrO>9k*Kk4d3W5!+#G-N z&07nHhP%3aaQ^96Q~Yy1RjZL($4fpBnF-8#dbjsUPV}3!2ZM{YZne-ul zUSNAiLu~nAuaKYE9J%(SFL|oKf<;CCGqg0f>_zWS$2@V;nA;UEyKmg!ddA25lxGS% zpPKFuKVMK26P{Z2b0{+B8SoHR4WI~-7g<^ft*TeBswxDCIC<&oJoy3c P=KuhPq%>Wlrl96OTbz6X literal 0 HcmV?d00001 diff --git a/images/thermometer-low.png b/images/thermometer-low.png new file mode 100644 index 0000000000000000000000000000000000000000..31a7d0d6803ac07490d2b1da21a623f7871579d2 GIT binary patch literal 1607 zcmaJ>drT8|96w5^M8s_o6?M+D2=hUEFZw#E&<7oz)?w{tn@q#Cy_Q>PuU-#Y2ny2; z)A-m7dnim{Q#a>O<6}`X983mdpqZH)M$A}zOk)tGuvHj^?uvl?v3SYd@Adh7zR%wU z^47kVIDP(f000toxf%mEz8HPu`P_HWK!o6id2Eh}T~FItAHk4-(necIQ0F2Xq=6)C zC7XXHGXWr$qKqciq+f$uX_ttIVnlwIhhqakW|rSWSe+ybT1W@wRtO${*C+rfn?kTb ztcUd;HCaIAmNMk}(zQlwsnaUA39?p!nSPuTaFHwl`dx)?FYZ?e#&mIR9^Hln;24B; zDg;lRGU@X`HO-KqSOg2LumlDrhzP+lq*7@*h{6aA!6<~FLPUyVC=SEm_#@z~F*ZAH z&}hePaVv$OfMq>61o?bEkq;Bmi~~aCa(Pq(MTHzf=q+)xgkR|Prc5YkNUxQlJS;`K z!Kfl(p^I3Bfb;Ze2riF-aul%MNpZJ#JXu`YAV1-O5D^S9W0+`s6D+;{`3#q9676LT z03uq6hUXOtrD7TIFd82jWyo&lsGE^~X(=xOR97`EaO|f27 z#F6eKut_h>l$?oSCllO;obLnQd+mYB6N&)~Lmu02V z-(|4@JgrvCPfJUyj6@>a&*#r?<;OUkPPnrD>u`AJ+Jl?tXlT{e@cG(#b|C&x?1x{r zwdL};W=^{Dt#IS}CmWHn24634L5gIq$!vZXL9;s>?*IDDN>Qn0Ir91FNIIxXw~qY_EP=MIj>j;gLi&fbuSbu=BK8n^37&5f7!BSNsWh` zqrsjuJx_nE$#gZ=vbb(ZO8T+){5LlJUElp`FyZKaU32fuH7QH$hzFH%hxc!xA`(vw|jUi!sL!rogwm7jAX@%o|wGqm}$2Utn>}Gw6x3~4rP5p z?wv)R58mC~7b!1~T=WNTKX&K_R@PPUmKRsV&5v)qP%{1SlcuUI3CX4ke%XaB!=14Z zdGMDr(uWy=Q+aqOe5>~f-Q6%0j?ee zKEJgwWycGrO7JdEX^pcx+&9>IAfSK$$)=0`;?SLeX|drT8|96vxSDmXWWX&oE4BO2$Rch~FlLd8BPtx_b|3`oe}+Pl(|_O81-)|PFc zX0o}E;0T#xTe2ndK_<~;1o6RuMZgYWFq|$fzEE`85`#}3Q|Yb<$RCTB-2Gmk&*%I6 z-QN7XoWvDtR{#KzXtSCN#Bp`>jhBeu)CUnl9ArXvk+7Y03ju@KFK*27O+J$AfxkRu>oN(QOz4XCXp` z9(v|fkv$(Yu^a`e;3Is)9L;<6U3{-<-3LHVexd#%haikkB zFk9wqi7P$i5d=RD!+}6R9>C-*R}P~(oi3`OP-KXR3_ipNL@md;;CutH#5tCA*Q=7C(3`5auM2lo=4Jr$YX*61eN@tko+8ACS7#B6qrJr++FXZAT zjv@q>bFi#;z8Ug8tibXf)(@JtV_+f8kZgdD)=Bg#>Lk`7N;tqtk`%7Z(fnhhoHZbK>o=4V<|G0I^9nv%wMk z(@AzO9nngqOJvd(*?_Di^7WZLkx1m&{Re+-JIr3|{Ap_H-py*ax9Zl|m{br1DO9{$ zHYOzz1QpWp@W5il7~GG zr}63I;*pUN>8r`fvg)V*_TIgD_NCgcn#hd{CHtB#rxsqUSn+#@thqXsw_4+iUbd!% zmu~LWsv=X5>bGtg8qFy!enRiNT@#tPLO8qQhJBqA56{cVK~R<3l<;(g!Wv#NqG00%$rCus!Z*hOlxr%pgj3mUS=i7hSY}12lVt2S(1~;a=KD9bF zo&W9hk8SNArm6?)-_SdQQ+MBtTWQ6XX^yoQmNlMkKG6&%r6rvUtjxLfLDHe4-ti;d z!wKi(13&MFOCM(L`f3lGb#YC5LgPmVk35*T+|c&+AxGc%vQzHV{K40~YeyxQPx7CX zmXwryexb+y#mVDe?rJ+(I2GyYioDwqytlupX?oT0>e|;d%=Nk*`(jF&Yn_j-kAK`b z)X?e{2(F7`}E`U~Gayzz$iDtHfw*@2p0Qr>_lwTd^WbYX|^=bH1q18bzl?S9{{3@xL78rmC^Faoz zjL{Ls&(PtPHD{S(0LWq4+JF@BR^uT)W~Q?kb0QX3*#J;nnuyb(21WvdOoZiJ(7^E& z1hQclRA==f-Z;rb*@{+yS=L%p8)|I`Im1wC30R!KRe=~I(O@Fh$ccEu1&!(A>OA`z zhQKk1)Zl_1nhJP*Aju01Xf-3I5Mo0>8)`xG5@f%)AhRQK!?H)v#DhD#9eTa1xy`aiVcTfnvmv zz{Vw(=fJEY9psxN7o<9Um_jV>XCqNboD}E8@nWfEgA;TdM$HH;jA63*O|ZP)$1`HF zNwg^WnMdaTS6{4ci8HXD5&0$|r0(J>)kabkE%%40;*Nnu4!o2`hzNQy#H zH{u}NZa3-ipmqytwL!3I1J3rxlzy3br8Z%9I@$f|V)FbjoLX){JspKnUJn4;XDTV8 zHgPSOR+Q45CG8!uyH^XX)9dwVxyU$Y!;eRIZQ69JaPHg%^t%rs=ECXNI>C`tFehZz_O5w#f#{5V3Yo9@ zu0#n0j{KzjyQFP+h)JG1P;>qDzwcfT?(OVJz5T&c`(Jp`NDiFejaAEogE}86C@6YG zTq7Q|jHb_~ADnw@7zZM1dcZh3LXF8S7J?zs!#$@-k)cHJ4x6a9OWKUBT4Ijk1#pt!wYr|rbf13~o0CF{;I zeE(Mibj=Rp4EXV{=Jdj2XJrEwj6pPr&+z~M4x(cLY}2dX43E2Sv@ozT)-Z^%?!Xtu hjH5}JasvPY3;^T3N38C(J0t)A002ovPDHLkV1ipCc|`yK literal 0 HcmV?d00001 diff --git a/images/tick.png b/images/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..2414885b8576481fb6350ed9ce01ab033169fd75 GIT binary patch literal 634 zcmV-=0)_pFP)tYd4K$mX5uyr2F@fdffp{&DSHtl4|Bn9=ukpCx`#%PTUr-D(@b7;C zhJXJjrnw{;1KBM=6&|E`fsNrGL!Y6%zUh}QUl`(@V)PmQFtotEKmafTHP0uP}7&%m4pcKQ#X)BiAJ2y+PrtBI>9eEIt2-_c7)?*Lsf z5vX5*Af@m-wBJRV%#Fiz=BdPr0!2^a2d-yv7gSU);Z6{`~Oy?E5qSnHUln4*Y%!){F!Y1~5WXoC44g zb7l_)X~q^V6MmWR7e3wj|L|Wb!|^}Y86N$^h+kv_Kw-fP!~#If$6(B4$)LlK#&G6; zC&ShMSAb$5tA9Xg5dOsg@-z^@3;;QS9f&!gG&3|;{Da~@Q2ZB({s%XJ5&#fj0J|In U+D>(nEdT%j07*qoM6N<$g0@&8X#fBK literal 0 HcmV?d00001 diff --git a/images/ui-slider.png b/images/ui-slider.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0d7f758b301866667208b32f4fa3b822fb1db7 GIT binary patch literal 404 zcmV;F0c-w=P)fR+KG}vIEx%A{=FT8kS2P;A_Foz3-jA= zK6lA546r5`SQ%uu+X2UM8@j%x-+R+EACoHEwtsDuBngrv85L}3(~W7GkC?Ik(+G84 z-&&TnZ`&3yV@*NeIL<`?wyG+E&3)ek!!Urg>$;Gp>E(c~>i{7v%R&@IcNE6sjB_Cf zLQK;$0vMEx05nh6^{uL^+oh8Y!?+(66h$#AKnNiOJkNXaegAa{Kox$DfU+z{4-kMJ zWLfqmisGK<`B?xp`};5Cd47eB^e&75tPh6+9FND#Obo;Dq$tY6v_Z!?p`suNK+`mk yWqBSzPkKUAf9!oti#U!K0p#Bw(`vw3fB^vNilPN3fI!ax0000aifC( literal 0 HcmV?d00001 diff --git a/images/water.png b/images/water.png new file mode 100644 index 0000000000000000000000000000000000000000..caa3083cde8fab53f3b77de3e4dacb51af4f970e GIT binary patch literal 615 zcmV-t0+{`YP)TOfn-M(Eqr%e~g*8DCa*pE^!?;&>l727p4;Kl6?z*l4 zTBiX`;vXc2aS0#-p#*UBKLN2T5Q5CLtU7@{8^#9&u+M&|NSeE!kLU3}Z`-yCP%j2L zfaOIa6`cSTH6|7AVyS`XAR&Fflv&~;F-CWQwV7%JzA|TL9Kwu@8QqxIIKGQZ` z8rP$V+~iOi@ioh`sEdF=w{&P467%bqMlVWWM4)!;(5>as8N{#rDeb?9*bTyJVRib{ zx%jZGP3aOv1c6!|m&Ayqtz}|U;IE!kg~iJmE&b)lrgt@qs%?i_%%eJ77x9pd8-vl)1oFZQ#%7ZfNx zTBhStkvsXgS8mql#w1cDflS-;dp<6f8sEUb@9e*!#>Tzi7Wl(Ecz#zI${IUc){}YB zbLh5_Or+w&YUR*0pS`X$Hg_vu4>upYFw46t@)iQ!p!a_-^0D2<*2>`YS|&7Zq(zG`0w*lkhW1wjURI7(< z;rGO)Ui;S8vJK@^rqJWSKZRyaz| zUr)&L{FO{*@@}u!Pwem4w;4gY!-V1+Pvw;|01XijIkF2n2X= z7grR6j3^Fe3x(1it6A4p7v;5;NF+uZh5@>+L!)6rC?o;HFy2{JbvRjh2U`+Q*GC)8 zNmAejD~iH$x7+1PrRueM}o=96p!~#y}?G6ozuSIYONDzFOLz?dG-DN`(?E6`Bnbj`nD8&|bN_+R|i8 zfZ@huQJ8-i17wjo7ZBz)aDqm{hVDZQ=(c3)bPIDxWpzQ2EEt(r28=%pm%DpE?s=Zy z=X;HX1+OH=r^N#RkZ8)KEYi3s^2Du|-Wf9wXlY0l4K}fes}TJ(&j6%@D`!BHn|3l5 zhIZ6cUt%->u#RP|HqmCzC+wVCMn^ERfZHpv0YI}e;HB-Aj0l!9PS&G^?tL)`fviId zl_<=J*{f$1Jd$7{3c0fCKfSLdy3Ah=N1_SOYk3a;p(4sCO%_G||1TI3v zN-gxzDVwf*bS+B@) z9x$RvmvcT*3rU_n48iTSuuhjKtcZJrrDREIg9Ee|Mr8=hFJdC`Ewjw#wHa>r3R(~? z%p>RjS6{H!cp2Ej2%L|%OI57cy2{krh9bbF7zi`XS29u+jdYd3EPgPX35v7(+>A#w zQCdiX${ehNFjBZ$MWQHz8ZZtowYD zX;P0GF@p-nF*!*YQIsTgD!l?%Ba}*^Q|NGLiRf4r@*+{Mrf|7BCr3`=dWu3(9ik$2 zI-TBVM3oq-$bn$V4LH&ttNLYmOKQT%bfx>H#mf0%JW{%O>2!o*FUkQRYS2WH*1%7_ zNAmKbUrV_#+Lnrce89SEPL`P8(E`QQ#l@dHSlo9Anvd@PV_mOw_n6Ba_OZg^@D0P82)(h~qU5beB`JY2iboV8cu#Z8}xSH}MAPU`M~&-&I^Oz+tLR#*Jg zR|%hQNQ@ah^|Pz<_(vT=X7B0iZMylQ5i>tcIsD+S2Mb z1D~Cv??4T2RJJz1{zT7-3Pzw#;5rTpinuk)7S|g*48Q{N49k8=5W#8a2FF(*3+O{vF{<+v6 z%b$%a>B^cQW~|r4!joqX`;TaUMIXf8#<3AsoAe)^fo2Q$uj_REb3u(xY?I`rx3-pF6lWGJ9|bY*q_0SrtI A&j0`b literal 0 HcmV?d00001 diff --git a/images/webcam.png b/images/webcam.png new file mode 100644 index 0000000000000000000000000000000000000000..09f2607144b6287886dd5965cee62a3a89840951 GIT binary patch literal 771 zcmV+e1N{7nP)-FC0>FK$gNF*!{hah687=#-O zME=NTvyQH=uG^!dcgKl^T&XA;&0H?0Mb5d-ea10f#~_o*c&O#DT^!7SIgP{B3CEjp2yh3A%;|1w-n))dA?<8=$j zA`1(__o|Ab(|I1NtDkW7q6NOuJ}q+2b?!5c@w#7u?C09r=g{2TY{&HUlly`oArkpW zCuh;t)`7u654yXZn3;L{hH;EBhg&PqzX^QD8Ee(AwHc3~V^UDo1#ogmx;n z(}H3&8jXyMjNCAr&DwCaTGbxY($W&^E)vegkC%M!SON_;^S_Uxjl7>~R`Lqfn5Rg! zCWm%7v+TE=2L@ zAc44q=tejYU5HLZGooZ=NXsV%)bU*sTokj@jZSo^9&w{ke7#VNQ*1zG!rIRk_@ zCqOr;g6B6CM1oPv1(~U4k@Gd+5tN0(j@GA*K*busv3Lb0UyXuowiRkTRZ#85JN!eC z_8ZVW>+upx5C#N|BTv2dK_EW@%(@F6yu1sZv>T3gm&*mIkvej1R4=RyYw#mS zx}c)#2z<)=VQ1|=ux>5PwjVE+J!Q84EQyG-j9SFYV*6AQj$Gb(7!KJE!k5iQ@O3K$ z@0NQZ)>b7&TaFd~Ciolk*Q(7cL+9cB`Y;G@rr`tk5Hdjv+))zSdlF#gI!>6`zB<@i zaKYP!9!Pl&5VMjydlq1x&}37{RQY+SSBXX-w?kCLKK%bXFYU6{?d+nH00000NkvXX Hu0mjfTSP*+ literal 0 HcmV?d00001 diff --git a/images/zoom_out.png b/images/zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..07bf98a79cfea526e250703356dbefdb6b80d166 GIT binary patch literal 708 zcmV;#0z3VQP)TNkCP1&*^7LC~A?iZQEu_hKZoQoXI zA7tfTv}|~Fb8b^XuP>qvDk=)P)vYKtT12;}bKn-mwHWl`1Bb)&{XXC4IY$Nnvj5@N zfekg1Y}gcI!)Cq|u?lR+A{2&=d~S$}&0ei1|7pO6jkZ$6%&{R8TNpk>=dV#j&aWqO zgE~4pNU_-giktFkY-J5_XDlv`7+j?n3mXtxgadILp+c<9cr~t!x1LM6m69Z~V#pLL z22Cs~BoIdtZHTjo7Q|_U0a2OmSF=gCGFB$RVZIP(pixmBqE!^15yd!#9Z{Wh)zB%o zikBFa!WJPvMB(noe(U;k1e~Y|r$}@wh*Ymykd6>E3t69z5DT&Jq-fSG-dPdU{SG;i zbSb3<`RfKgJD|lQC`6(Cdut1PbDV&$M=Y?U)x)A(0iQN+gAeOBg2Z6fr$_Is!%M70 z=n*z7{*s%3rO7yazIO)}qa&~o@WZ=R>!b#mOSR zlCR8M*iRy2j7!PmWiiegA>Og~W1?FLk0*NI^}`$RW + + + + openHAB Administration Interface + + + + + + + + diff --git a/js/ext-all-debug.js b/js/ext-all-debug.js new file mode 100644 index 00000000..c4f9f6ce --- /dev/null +++ b/js/ext-all-debug.js @@ -0,0 +1,130568 @@ +/* +This file is part of Ext JS 4.2 + +Copyright (c) 2011-2013 Sencha Inc + +Contact: http://www.sencha.com/contact + +GNU General Public License Usage +This file may be used under the terms of the GNU General Public License version 3.0 as +published by the Free Software Foundation and appearing in the file LICENSE included in the +packaging of this file. + +Please review the following information to ensure the GNU General Public License version 3.0 +requirements will be met: http://www.gnu.org/copyleft/gpl.html. + +If you are unsure which license is appropriate for your use, please contact the sales department +at http://www.sencha.com/contact. + +Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314) +*/ + + + + + +var Ext = Ext || {}; +Ext._startTime = new Date().getTime(); +(function() { + var global = this, + objectPrototype = Object.prototype, + toString = objectPrototype.toString, + enumerables = true, + enumerablesTest = {toString: 1}, + emptyFn = function () {}, + + + callOverrideParent = function () { + var method = callOverrideParent.caller.caller; + return method.$owner.prototype[method.$name].apply(this, arguments); + }, + i, + nonWhitespaceRe = /\S/, + ExtApp, + iterableRe = /\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/; + + Function.prototype.$extIsFunction = true; + + Ext.global = global; + + for (i in enumerablesTest) { + enumerables = null; + } + + if (enumerables) { + enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', + 'toLocaleString', 'toString', 'constructor']; + } + + + Ext.enumerables = enumerables; + + + Ext.apply = function(object, config, defaults) { + if (defaults) { + Ext.apply(object, defaults); + } + + if (object && config && typeof config === 'object') { + var i, j, k; + + for (i in config) { + object[i] = config[i]; + } + + if (enumerables) { + for (j = enumerables.length; j--;) { + k = enumerables[j]; + if (config.hasOwnProperty(k)) { + object[k] = config[k]; + } + } + } + } + + return object; + }; + + Ext.buildSettings = Ext.apply({ + baseCSSPrefix: 'x-' + }, Ext.buildSettings || {}); + + Ext.apply(Ext, { + + + name: Ext.sandboxName || 'Ext', + + + emptyFn: emptyFn, + + + identityFn: function(o) { + return o; + }, + + + emptyString: new String(), + + baseCSSPrefix: Ext.buildSettings.baseCSSPrefix, + + + applyIf: function(object, config) { + var property; + + if (object) { + for (property in config) { + if (object[property] === undefined) { + object[property] = config[property]; + } + } + } + + return object; + }, + + + iterate: function(object, fn, scope) { + if (Ext.isEmpty(object)) { + return; + } + + if (scope === undefined) { + scope = object; + } + + if (Ext.isIterable(object)) { + Ext.Array.each.call(Ext.Array, object, fn, scope); + } + else { + Ext.Object.each.call(Ext.Object, object, fn, scope); + } + } + }); + + Ext.apply(Ext, { + + + extend: (function() { + + var objectConstructor = objectPrototype.constructor, + inlineOverrides = function(o) { + for (var m in o) { + if (!o.hasOwnProperty(m)) { + continue; + } + this[m] = o[m]; + } + }; + + return function(subclass, superclass, overrides) { + + if (Ext.isObject(superclass)) { + overrides = superclass; + superclass = subclass; + subclass = overrides.constructor !== objectConstructor ? overrides.constructor : function() { + superclass.apply(this, arguments); + }; + } + + + + var F = function() {}, + subclassProto, superclassProto = superclass.prototype; + + F.prototype = superclassProto; + subclassProto = subclass.prototype = new F(); + subclassProto.constructor = subclass; + subclass.superclass = superclassProto; + + if (superclassProto.constructor === objectConstructor) { + superclassProto.constructor = superclass; + } + + subclass.override = function(overrides) { + Ext.override(subclass, overrides); + }; + + subclassProto.override = inlineOverrides; + subclassProto.proto = subclassProto; + + subclass.override(overrides); + subclass.extend = function(o) { + return Ext.extend(subclass, o); + }; + + return subclass; + }; + }()), + + + override: function (target, overrides) { + if (target.$isClass) { + target.override(overrides); + } else if (typeof target == 'function') { + Ext.apply(target.prototype, overrides); + } else { + var owner = target.self, + name, value; + + if (owner && owner.$isClass) { + for (name in overrides) { + if (overrides.hasOwnProperty(name)) { + value = overrides[name]; + + if (typeof value == 'function') { + + value.$name = name; + value.$owner = owner; + value.$previous = target.hasOwnProperty(name) + ? target[name] + : callOverrideParent; + } + + target[name] = value; + } + } + } else { + Ext.apply(target, overrides); + } + } + + return target; + } + }); + + + Ext.apply(Ext, { + + + valueFrom: function(value, defaultValue, allowBlank){ + return Ext.isEmpty(value, allowBlank) ? defaultValue : value; + }, + + + typeOf: function(value) { + var type, + typeToString; + + if (value === null) { + return 'null'; + } + + type = typeof value; + + if (type === 'undefined' || type === 'string' || type === 'number' || type === 'boolean') { + return type; + } + + typeToString = toString.call(value); + + switch(typeToString) { + case '[object Array]': + return 'array'; + case '[object Date]': + return 'date'; + case '[object Boolean]': + return 'boolean'; + case '[object Number]': + return 'number'; + case '[object RegExp]': + return 'regexp'; + } + + if (type === 'function') { + return 'function'; + } + + if (type === 'object') { + if (value.nodeType !== undefined) { + if (value.nodeType === 3) { + return (nonWhitespaceRe).test(value.nodeValue) ? 'textnode' : 'whitespace'; + } + else { + return 'element'; + } + } + + return 'object'; + } + + }, + + + coerce: function(from, to) { + var fromType = Ext.typeOf(from), + toType = Ext.typeOf(to), + isString = typeof from === 'string'; + + if (fromType !== toType) { + switch (toType) { + case 'string': + return String(from); + case 'number': + return Number(from); + case 'boolean': + return isString && (!from || from === 'false') ? false : Boolean(from); + case 'null': + return isString && (!from || from === 'null') ? null : from; + case 'undefined': + return isString && (!from || from === 'undefined') ? undefined : from; + case 'date': + return isString && isNaN(from) ? Ext.Date.parse(from, Ext.Date.defaultFormat) : Date(Number(from)); + } + } + return from; + }, + + + isEmpty: function(value, allowEmptyString) { + return (value === null) || (value === undefined) || (!allowEmptyString ? value === '' : false) || (Ext.isArray(value) && value.length === 0); + }, + + + isArray: ('isArray' in Array) ? Array.isArray : function(value) { + return toString.call(value) === '[object Array]'; + }, + + + isDate: function(value) { + return toString.call(value) === '[object Date]'; + }, + + + isObject: (toString.call(null) === '[object Object]') ? + function(value) { + + return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.ownerDocument === undefined; + } : + function(value) { + return toString.call(value) === '[object Object]'; + }, + + + isSimpleObject: function(value) { + return value instanceof Object && value.constructor === Object; + }, + + isPrimitive: function(value) { + var type = typeof value; + + return type === 'string' || type === 'number' || type === 'boolean'; + }, + + + isFunction: function(value) { + return !!(value && value.$extIsFunction); + }, + + + isNumber: function(value) { + return typeof value === 'number' && isFinite(value); + }, + + + isNumeric: function(value) { + return !isNaN(parseFloat(value)) && isFinite(value); + }, + + + isString: function(value) { + return typeof value === 'string'; + }, + + + isBoolean: function(value) { + return typeof value === 'boolean'; + }, + + + isElement: function(value) { + return value ? value.nodeType === 1 : false; + }, + + + isTextNode: function(value) { + return value ? value.nodeName === "#text" : false; + }, + + + isDefined: function(value) { + return typeof value !== 'undefined'; + }, + + + isIterable: function(value) { + + if (!value || typeof value.length !== 'number' || typeof value === 'string' || value.$extIsFunction) { + return false; + } + + + + + if (!value.propertyIsEnumerable) { + return !!value.item; + } + + + + if (value.hasOwnProperty('length') && !value.propertyIsEnumerable('length')) { + return true; + } + + + return iterableRe.test(toString.call(value)); + } + }); + + Ext.apply(Ext, { + + + clone: function(item) { + var type, + i, + j, + k, + clone, + key; + + if (item === null || item === undefined) { + return item; + } + + + + + if (item.nodeType && item.cloneNode) { + return item.cloneNode(true); + } + + type = toString.call(item); + + + if (type === '[object Date]') { + return new Date(item.getTime()); + } + + + + if (type === '[object Array]') { + i = item.length; + + clone = []; + + while (i--) { + clone[i] = Ext.clone(item[i]); + } + } + + else if (type === '[object Object]' && item.constructor === Object) { + clone = {}; + + for (key in item) { + clone[key] = Ext.clone(item[key]); + } + + if (enumerables) { + for (j = enumerables.length; j--;) { + k = enumerables[j]; + if (item.hasOwnProperty(k)) { + clone[k] = item[k]; + } + } + } + } + + return clone || item; + }, + + + getUniqueGlobalNamespace: function() { + var uniqueGlobalNamespace = this.uniqueGlobalNamespace, + i; + + if (uniqueGlobalNamespace === undefined) { + i = 0; + + do { + uniqueGlobalNamespace = 'ExtBox' + (++i); + } while (Ext.global[uniqueGlobalNamespace] !== undefined); + + Ext.global[uniqueGlobalNamespace] = Ext; + this.uniqueGlobalNamespace = uniqueGlobalNamespace; + } + + return uniqueGlobalNamespace; + }, + + + functionFactoryCache: {}, + + cacheableFunctionFactory: function() { + var me = this, + args = Array.prototype.slice.call(arguments), + cache = me.functionFactoryCache, + idx, fn, ln; + + if (Ext.isSandboxed) { + ln = args.length; + if (ln > 0) { + ln--; + args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln]; + } + } + idx = args.join(''); + fn = cache[idx]; + if (!fn) { + fn = Function.prototype.constructor.apply(Function.prototype, args); + + cache[idx] = fn; + } + return fn; + }, + + functionFactory: function() { + var me = this, + args = Array.prototype.slice.call(arguments), + ln; + + if (Ext.isSandboxed) { + ln = args.length; + if (ln > 0) { + ln--; + args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln]; + } + } + + return Function.prototype.constructor.apply(Function.prototype, args); + }, + + + Logger: { + verbose: emptyFn, + log: emptyFn, + info: emptyFn, + warn: emptyFn, + error: function(message) { + throw new Error(message); + }, + deprecate: emptyFn + } + }); + + + Ext.type = Ext.typeOf; + + + + + ExtApp = Ext.app; + if (!ExtApp) { + ExtApp = Ext.app = {}; + } + Ext.apply(ExtApp, { + namespaces: {}, + + + collectNamespaces: function(paths) { + var namespaces = Ext.app.namespaces, + path; + + for (path in paths) { + if (paths.hasOwnProperty(path)) { + namespaces[path] = true; + } + } + }, + + + addNamespaces: function(ns) { + var namespaces = Ext.app.namespaces, + i, l; + + if (!Ext.isArray(ns)) { + ns = [ns]; + } + + for (i = 0, l = ns.length; i < l; i++) { + namespaces[ns[i]] = true; + } + }, + + + clearNamespaces: function() { + Ext.app.namespaces = {}; + }, + + + getNamespace: function(className) { + var namespaces = Ext.app.namespaces, + deepestPrefix = '', + prefix; + + for (prefix in namespaces) { + if (namespaces.hasOwnProperty(prefix) && + prefix.length > deepestPrefix.length && + (prefix + '.' === className.substring(0, prefix.length + 1))) { + deepestPrefix = prefix; + } + } + + return deepestPrefix === '' ? undefined : deepestPrefix; + } + }); +}()); + + +Ext.globalEval = Ext.global.execScript + ? function(code) { + execScript(code); + } + : function($$code) { + + + (function(){ + + + + var Ext = this.Ext; + eval($$code); + }()); + }; + + + + + + +(function() { + + + +var version = '4.2.1.883', Version; + Ext.Version = Version = Ext.extend(Object, { + + + constructor: function(version) { + var parts, releaseStartIndex; + + if (version instanceof Version) { + return version; + } + + this.version = this.shortVersion = String(version).toLowerCase().replace(/_/g, '.').replace(/[\-+]/g, ''); + + releaseStartIndex = this.version.search(/([^\d\.])/); + + if (releaseStartIndex !== -1) { + this.release = this.version.substr(releaseStartIndex, version.length); + this.shortVersion = this.version.substr(0, releaseStartIndex); + } + + this.shortVersion = this.shortVersion.replace(/[^\d]/g, ''); + + parts = this.version.split('.'); + + this.major = parseInt(parts.shift() || 0, 10); + this.minor = parseInt(parts.shift() || 0, 10); + this.patch = parseInt(parts.shift() || 0, 10); + this.build = parseInt(parts.shift() || 0, 10); + + return this; + }, + + + toString: function() { + return this.version; + }, + + + valueOf: function() { + return this.version; + }, + + + getMajor: function() { + return this.major || 0; + }, + + + getMinor: function() { + return this.minor || 0; + }, + + + getPatch: function() { + return this.patch || 0; + }, + + + getBuild: function() { + return this.build || 0; + }, + + + getRelease: function() { + return this.release || ''; + }, + + + isGreaterThan: function(target) { + return Version.compare(this.version, target) === 1; + }, + + + isGreaterThanOrEqual: function(target) { + return Version.compare(this.version, target) >= 0; + }, + + + isLessThan: function(target) { + return Version.compare(this.version, target) === -1; + }, + + + isLessThanOrEqual: function(target) { + return Version.compare(this.version, target) <= 0; + }, + + + equals: function(target) { + return Version.compare(this.version, target) === 0; + }, + + + match: function(target) { + target = String(target); + return this.version.substr(0, target.length) === target; + }, + + + toArray: function() { + return [this.getMajor(), this.getMinor(), this.getPatch(), this.getBuild(), this.getRelease()]; + }, + + + getShortVersion: function() { + return this.shortVersion; + }, + + + gt: function() { + return this.isGreaterThan.apply(this, arguments); + }, + + + lt: function() { + return this.isLessThan.apply(this, arguments); + }, + + + gtEq: function() { + return this.isGreaterThanOrEqual.apply(this, arguments); + }, + + + ltEq: function() { + return this.isLessThanOrEqual.apply(this, arguments); + } + }); + + Ext.apply(Version, { + + releaseValueMap: { + 'dev': -6, + 'alpha': -5, + 'a': -5, + 'beta': -4, + 'b': -4, + 'rc': -3, + '#': -2, + 'p': -1, + 'pl': -1 + }, + + + getComponentValue: function(value) { + return !value ? 0 : (isNaN(value) ? this.releaseValueMap[value] || value : parseInt(value, 10)); + }, + + + compare: function(current, target) { + var currentValue, targetValue, i; + + current = new Version(current).toArray(); + target = new Version(target).toArray(); + + for (i = 0; i < Math.max(current.length, target.length); i++) { + currentValue = this.getComponentValue(current[i]); + targetValue = this.getComponentValue(target[i]); + + if (currentValue < targetValue) { + return -1; + } else if (currentValue > targetValue) { + return 1; + } + } + + return 0; + } + }); + + + Ext.apply(Ext, { + + versions: {}, + + + lastRegisteredVersion: null, + + + setVersion: function(packageName, version) { + Ext.versions[packageName] = new Version(version); + Ext.lastRegisteredVersion = Ext.versions[packageName]; + + return this; + }, + + + getVersion: function(packageName) { + if (packageName === undefined) { + return Ext.lastRegisteredVersion; + } + + return Ext.versions[packageName]; + }, + + + deprecate: function(packageName, since, closure, scope) { + if (Version.compare(Ext.getVersion(packageName), since) < 1) { + closure.call(scope); + } + } + }); + + Ext.setVersion('core', version); + +}()); + + + + + + + +Ext.String = (function() { + var trimRegex = /^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g, + escapeRe = /('|\\)/g, + formatRe = /\{(\d+)\}/g, + escapeRegexRe = /([-.*+?\^${}()|\[\]\/\\])/g, + basicTrimRe = /^\s+|\s+$/g, + whitespaceRe = /\s+/, + varReplace = /(^[^a-z]*|[^\w])/gi, + charToEntity, + entityToChar, + charToEntityRegex, + entityToCharRegex, + htmlEncodeReplaceFn = function(match, capture) { + return charToEntity[capture]; + }, + htmlDecodeReplaceFn = function(match, capture) { + return (capture in entityToChar) ? entityToChar[capture] : String.fromCharCode(parseInt(capture.substr(2), 10)); + }, + boundsCheck = function(s, other){ + if (s === null || s === undefined || other === null || other === undefined) { + return false; + } + + return other.length <= s.length; + }; + + return { + + + insert: function(s, value, index) { + if (!s) { + return value; + } + + if (!value) { + return s; + } + + var len = s.length; + + if (!index && index !== 0) { + index = len; + } + + if (index < 0) { + index *= -1; + if (index >= len) { + + index = 0; + } else { + index = len - index; + } + } + + if (index === 0) { + s = value + s; + } else if (index >= s.length) { + s += value; + } else { + s = s.substr(0, index) + value + s.substr(index); + } + return s; + }, + + + startsWith: function(s, start, ignoreCase){ + var result = boundsCheck(s, start); + + if (result) { + if (ignoreCase) { + s = s.toLowerCase(); + start = start.toLowerCase(); + } + result = s.lastIndexOf(start, 0) === 0; + } + return result; + }, + + + endsWith: function(s, end, ignoreCase){ + var result = boundsCheck(s, end); + + if (result) { + if (ignoreCase) { + s = s.toLowerCase(); + end = end.toLowerCase(); + } + result = s.indexOf(end, s.length - end.length) !== -1; + } + return result; + }, + + + createVarName: function(s) { + return s.replace(varReplace, ''); + }, + + + htmlEncode: function(value) { + return (!value) ? value : String(value).replace(charToEntityRegex, htmlEncodeReplaceFn); + }, + + + htmlDecode: function(value) { + return (!value) ? value : String(value).replace(entityToCharRegex, htmlDecodeReplaceFn); + }, + + + addCharacterEntities: function(newEntities) { + var charKeys = [], + entityKeys = [], + key, echar; + for (key in newEntities) { + echar = newEntities[key]; + entityToChar[key] = echar; + charToEntity[echar] = key; + charKeys.push(echar); + entityKeys.push(key); + } + charToEntityRegex = new RegExp('(' + charKeys.join('|') + ')', 'g'); + entityToCharRegex = new RegExp('(' + entityKeys.join('|') + '|&#[0-9]{1,5};' + ')', 'g'); + }, + + + resetCharacterEntities: function() { + charToEntity = {}; + entityToChar = {}; + + this.addCharacterEntities({ + '&' : '&', + '>' : '>', + '<' : '<', + '"' : '"', + ''' : "'" + }); + }, + + + urlAppend : function(url, string) { + if (!Ext.isEmpty(string)) { + return url + (url.indexOf('?') === -1 ? '?' : '&') + string; + } + + return url; + }, + + + trim: function(string) { + return string.replace(trimRegex, ""); + }, + + + capitalize: function(string) { + return string.charAt(0).toUpperCase() + string.substr(1); + }, + + + uncapitalize: function(string) { + return string.charAt(0).toLowerCase() + string.substr(1); + }, + + + 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 vs.substr(0, index) + "..."; + } + } + return value.substr(0, len - 3) + "..."; + } + return value; + }, + + + escapeRegex: function(string) { + return string.replace(escapeRegexRe, "\\$1"); + }, + + + escape: function(string) { + return string.replace(escapeRe, "\\$1"); + }, + + + toggle: function(string, value, other) { + return string === value ? other : value; + }, + + + leftPad: function(string, size, character) { + var result = String(string); + character = character || " "; + while (result.length < size) { + result = character + result; + } + return result; + }, + + + format: function(format) { + var args = Ext.Array.toArray(arguments, 1); + return format.replace(formatRe, function(m, i) { + return args[i]; + }); + }, + + + repeat: function(pattern, count, sep) { + if (count < 1) { + count = 0; + } + for (var buf = [], i = count; i--; ) { + buf.push(pattern); + } + return buf.join(sep || ''); + }, + + + splitWords: function (words) { + if (words && typeof words == 'string') { + return words.replace(basicTrimRe, '').split(whitespaceRe); + } + return words || []; + } + }; +}()); + + +Ext.String.resetCharacterEntities(); + + +Ext.htmlEncode = Ext.String.htmlEncode; + + + +Ext.htmlDecode = Ext.String.htmlDecode; + + +Ext.urlAppend = Ext.String.urlAppend; + + + + + + + +Ext.Number = new function() { + + var me = this, + isToFixedBroken = (0.9).toFixed() !== '1', + math = Math; + + Ext.apply(this, { + + constrain: function(number, min, max) { + var x = parseFloat(number); + + + + + + + + + + return (x < min) ? min : ((x > max) ? max : x); + }, + + + snap : function(value, increment, minValue, maxValue) { + var m; + + + + if (value === undefined || value < minValue) { + return minValue || 0; + } + + if (increment) { + m = value % increment; + if (m !== 0) { + value -= m; + if (m * 2 >= increment) { + value += increment; + } else if (m * 2 < -increment) { + value -= increment; + } + } + } + return me.constrain(value, minValue, maxValue); + }, + + + snapInRange : function(value, increment, minValue, maxValue) { + var tween; + + + minValue = (minValue || 0); + + + if (value === undefined || value < minValue) { + return minValue; + } + + + if (increment && (tween = ((value - minValue) % increment))) { + value -= tween; + tween *= 2; + if (tween >= increment) { + value += increment; + } + } + + + if (maxValue !== undefined) { + if (value > (maxValue = me.snapInRange(maxValue, increment, minValue))) { + value = maxValue; + } + } + + return value; + }, + + + toFixed: isToFixedBroken ? function(value, precision) { + precision = precision || 0; + var pow = math.pow(10, precision); + return (math.round(value * pow) / pow).toFixed(precision); + } : function(value, precision) { + return value.toFixed(precision); + }, + + + from: function(value, defaultValue) { + if (isFinite(value)) { + value = parseFloat(value); + } + + return !isNaN(value) ? value : defaultValue; + }, + + + randomInt: function (from, to) { + return math.floor(math.random() * (to - from + 1) + from); + }, + + + correctFloat: function(n) { + + + + return parseFloat(n.toPrecision(14)); + } + }); + + + Ext.num = function() { + return me.from.apply(this, arguments); + }; +}; + + + + + + +(function() { + + var arrayPrototype = Array.prototype, + slice = arrayPrototype.slice, + supportsSplice = (function () { + var array = [], + lengthBefore, + j = 20; + + if (!array.splice) { + return false; + } + + + + + while (j--) { + array.push("A"); + } + + array.splice(15, 0, "F", "F", "F", "F", "F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F"); + + lengthBefore = array.length; + array.splice(13, 0, "XXX"); + + if (lengthBefore+1 != array.length) { + return false; + } + + + return true; + }()), + supportsForEach = 'forEach' in arrayPrototype, + supportsMap = 'map' in arrayPrototype, + supportsIndexOf = 'indexOf' in arrayPrototype, + supportsEvery = 'every' in arrayPrototype, + supportsSome = 'some' in arrayPrototype, + supportsFilter = 'filter' in arrayPrototype, + supportsSort = (function() { + var a = [1,2,3,4,5].sort(function(){ return 0; }); + return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5; + }()), + supportsSliceOnNodeList = true, + ExtArray, + erase, + replace, + splice; + + try { + + if (typeof document !== 'undefined') { + slice.call(document.getElementsByTagName('body')); + } + } catch (e) { + supportsSliceOnNodeList = false; + } + + function fixArrayIndex (array, index) { + return (index < 0) ? Math.max(0, array.length + index) + : Math.min(array.length, index); + } + + + function replaceSim (array, index, removeCount, insert) { + var add = insert ? insert.length : 0, + length = array.length, + pos = fixArrayIndex(array, index), + remove, + tailOldPos, + tailNewPos, + tailCount, + lengthAfterRemove, + i; + + + if (pos === length) { + if (add) { + array.push.apply(array, insert); + } + } else { + remove = Math.min(removeCount, length - pos); + tailOldPos = pos + remove; + tailNewPos = tailOldPos + add - remove; + tailCount = length - tailOldPos; + lengthAfterRemove = length - remove; + + if (tailNewPos < tailOldPos) { + for (i = 0; i < tailCount; ++i) { + array[tailNewPos+i] = array[tailOldPos+i]; + } + } else if (tailNewPos > tailOldPos) { + for (i = tailCount; i--; ) { + array[tailNewPos+i] = array[tailOldPos+i]; + } + } + + if (add && pos === lengthAfterRemove) { + array.length = lengthAfterRemove; + array.push.apply(array, insert); + } else { + array.length = lengthAfterRemove + add; + for (i = 0; i < add; ++i) { + array[pos+i] = insert[i]; + } + } + } + + return array; + } + + function replaceNative (array, index, removeCount, insert) { + if (insert && insert.length) { + + if (index === 0 && !removeCount) { + array.unshift.apply(array, insert); + } + + else if (index < array.length) { + array.splice.apply(array, [index, removeCount].concat(insert)); + } + + else { + array.push.apply(array, insert); + } + } else { + array.splice(index, removeCount); + } + return array; + } + + function eraseSim (array, index, removeCount) { + return replaceSim(array, index, removeCount); + } + + function eraseNative (array, index, removeCount) { + array.splice(index, removeCount); + return array; + } + + function spliceSim (array, index, removeCount) { + var pos = fixArrayIndex(array, index), + removed = array.slice(index, fixArrayIndex(array, pos+removeCount)); + + if (arguments.length < 4) { + replaceSim(array, pos, removeCount); + } else { + replaceSim(array, pos, removeCount, slice.call(arguments, 3)); + } + + return removed; + } + + function spliceNative (array) { + return array.splice.apply(array, slice.call(arguments, 1)); + } + + erase = supportsSplice ? eraseNative : eraseSim; + replace = supportsSplice ? replaceNative : replaceSim; + splice = supportsSplice ? spliceNative : spliceSim; + + + + ExtArray = Ext.Array = { + + each: function(array, fn, scope, reverse) { + array = ExtArray.from(array); + + var i, + ln = array.length; + + if (reverse !== true) { + for (i = 0; i < ln; i++) { + if (fn.call(scope || array[i], array[i], i, array) === false) { + return i; + } + } + } + else { + for (i = ln - 1; i > -1; i--) { + if (fn.call(scope || array[i], array[i], i, array) === false) { + return i; + } + } + } + + return true; + }, + + + forEach: supportsForEach ? function(array, fn, scope) { + array.forEach(fn, scope); + } : function(array, fn, scope) { + var i = 0, + ln = array.length; + + for (; i < ln; i++) { + fn.call(scope, array[i], i, array); + } + }, + + + indexOf: supportsIndexOf ? function(array, item, from) { + return arrayPrototype.indexOf.call(array, item, from); + } : function(array, item, from) { + var i, length = array.length; + + for (i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++) { + if (array[i] === item) { + return i; + } + } + + return -1; + }, + + + contains: supportsIndexOf ? function(array, item) { + return arrayPrototype.indexOf.call(array, item) !== -1; + } : function(array, item) { + var i, ln; + + for (i = 0, ln = array.length; i < ln; i++) { + if (array[i] === item) { + return true; + } + } + + return false; + }, + + + toArray: function(iterable, start, end){ + if (!iterable || !iterable.length) { + return []; + } + + if (typeof iterable === 'string') { + iterable = iterable.split(''); + } + + if (supportsSliceOnNodeList) { + return slice.call(iterable, start || 0, end || iterable.length); + } + + var array = [], + i; + + start = start || 0; + end = end ? ((end < 0) ? iterable.length + end : end) : iterable.length; + + for (i = start; i < end; i++) { + array.push(iterable[i]); + } + + return array; + }, + + + pluck: function(array, propertyName) { + var ret = [], + i, ln, item; + + for (i = 0, ln = array.length; i < ln; i++) { + item = array[i]; + + ret.push(item[propertyName]); + } + + return ret; + }, + + + map: supportsMap ? function(array, fn, scope) { + return array.map(fn, scope); + } : function(array, fn, scope) { + var results = [], + i = 0, + len = array.length; + + for (; i < len; i++) { + results[i] = fn.call(scope, array[i], i, array); + } + + return results; + }, + + + every: supportsEvery ? function(array, fn, scope) { + return array.every(fn, scope); + } : function(array, fn, scope) { + var i = 0, + ln = array.length; + + for (; i < ln; ++i) { + if (!fn.call(scope, array[i], i, array)) { + return false; + } + } + + return true; + }, + + + some: supportsSome ? function(array, fn, scope) { + return array.some(fn, scope); + } : function(array, fn, scope) { + var i = 0, + ln = array.length; + + for (; i < ln; ++i) { + if (fn.call(scope, array[i], i, array)) { + return true; + } + } + + return false; + }, + + + equals: function(array1, array2) { + var len1 = array1.length, + len2 = array2.length, + i; + + + if (array1 === array2) { + return true; + } + + if (len1 !== len2) { + return false; + } + + for (i = 0; i < len1; ++i) { + if (array1[i] !== array2[i]) { + return false; + } + } + + return true; + }, + + + clean: function(array) { + var results = [], + i = 0, + ln = array.length, + item; + + for (; i < ln; i++) { + item = array[i]; + + if (!Ext.isEmpty(item)) { + results.push(item); + } + } + + return results; + }, + + + unique: function(array) { + var clone = [], + i = 0, + ln = array.length, + item; + + for (; i < ln; i++) { + item = array[i]; + + if (ExtArray.indexOf(clone, item) === -1) { + clone.push(item); + } + } + + return clone; + }, + + + filter: supportsFilter ? function(array, fn, scope) { + return array.filter(fn, scope); + } : function(array, fn, scope) { + var results = [], + i = 0, + ln = array.length; + + for (; i < ln; i++) { + if (fn.call(scope, array[i], i, array)) { + results.push(array[i]); + } + } + + return results; + }, + + + findBy : function(array, fn, scope) { + var i = 0, + len = array.length; + + for (; i < len; i++) { + if (fn.call(scope || array, array[i], i)) { + return array[i]; + } + } + return null; + }, + + + from: function(value, newReference) { + if (value === undefined || value === null) { + return []; + } + + if (Ext.isArray(value)) { + return (newReference) ? slice.call(value) : value; + } + + var type = typeof value; + + + if (value && value.length !== undefined && type !== 'string' && (type !== 'function' || !value.apply)) { + return ExtArray.toArray(value); + } + + return [value]; + }, + + + remove: function(array, item) { + var index = ExtArray.indexOf(array, item); + + if (index !== -1) { + erase(array, index, 1); + } + + return array; + }, + + + include: function(array, item) { + if (!ExtArray.contains(array, item)) { + array.push(item); + } + }, + + + clone: function(array) { + return slice.call(array); + }, + + + merge: function() { + var args = slice.call(arguments), + array = [], + i, ln; + + for (i = 0, ln = args.length; i < ln; i++) { + array = array.concat(args[i]); + } + + return ExtArray.unique(array); + }, + + + intersect: function() { + var intersection = [], + arrays = slice.call(arguments), + arraysLength, + array, + arrayLength, + minArray, + minArrayIndex, + minArrayCandidate, + minArrayLength, + element, + elementCandidate, + elementCount, + i, j, k; + + if (!arrays.length) { + return intersection; + } + + + arraysLength = arrays.length; + for (i = minArrayIndex = 0; i < arraysLength; i++) { + minArrayCandidate = arrays[i]; + if (!minArray || minArrayCandidate.length < minArray.length) { + minArray = minArrayCandidate; + minArrayIndex = i; + } + } + + minArray = ExtArray.unique(minArray); + erase(arrays, minArrayIndex, 1); + + + + + minArrayLength = minArray.length; + arraysLength = arrays.length; + for (i = 0; i < minArrayLength; i++) { + element = minArray[i]; + elementCount = 0; + + for (j = 0; j < arraysLength; j++) { + array = arrays[j]; + arrayLength = array.length; + for (k = 0; k < arrayLength; k++) { + elementCandidate = array[k]; + if (element === elementCandidate) { + elementCount++; + break; + } + } + } + + if (elementCount === arraysLength) { + intersection.push(element); + } + } + + return intersection; + }, + + + difference: function(arrayA, arrayB) { + var clone = slice.call(arrayA), + ln = clone.length, + i, j, lnB; + + for (i = 0,lnB = arrayB.length; i < lnB; i++) { + for (j = 0; j < ln; j++) { + if (clone[j] === arrayB[i]) { + erase(clone, j, 1); + j--; + ln--; + } + } + } + + return clone; + }, + + + + slice: ([1,2].slice(1, undefined).length ? + function (array, begin, end) { + return slice.call(array, begin, end); + } : + + function (array, begin, end) { + + + if (typeof begin === 'undefined') { + return slice.call(array); + } + if (typeof end === 'undefined') { + return slice.call(array, begin); + } + return slice.call(array, begin, end); + } + ), + + + sort: supportsSort ? function(array, sortFn) { + if (sortFn) { + return array.sort(sortFn); + } else { + return array.sort(); + } + } : function(array, sortFn) { + var length = array.length, + i = 0, + comparison, + j, min, tmp; + + for (; i < length; i++) { + min = i; + for (j = i + 1; j < length; j++) { + if (sortFn) { + comparison = sortFn(array[j], array[min]); + if (comparison < 0) { + min = j; + } + } else if (array[j] < array[min]) { + min = j; + } + } + if (min !== i) { + tmp = array[i]; + array[i] = array[min]; + array[min] = tmp; + } + } + + return array; + }, + + + flatten: function(array) { + var worker = []; + + function rFlatten(a) { + var i, ln, v; + + for (i = 0, ln = a.length; i < ln; i++) { + v = a[i]; + + if (Ext.isArray(v)) { + rFlatten(v); + } else { + worker.push(v); + } + } + + return worker; + } + + return rFlatten(array); + }, + + + min: function(array, comparisonFn) { + var min = array[0], + i, ln, item; + + for (i = 0, ln = array.length; i < ln; i++) { + item = array[i]; + + if (comparisonFn) { + if (comparisonFn(min, item) === 1) { + min = item; + } + } + else { + if (item < min) { + min = item; + } + } + } + + return min; + }, + + + max: function(array, comparisonFn) { + var max = array[0], + i, ln, item; + + for (i = 0, ln = array.length; i < ln; i++) { + item = array[i]; + + if (comparisonFn) { + if (comparisonFn(max, item) === -1) { + max = item; + } + } + else { + if (item > max) { + max = item; + } + } + } + + return max; + }, + + + mean: function(array) { + return array.length > 0 ? ExtArray.sum(array) / array.length : undefined; + }, + + + sum: function(array) { + var sum = 0, + i, ln, item; + + for (i = 0,ln = array.length; i < ln; i++) { + item = array[i]; + + sum += item; + } + + return sum; + }, + + + toMap: function(array, getKey, scope) { + var map = {}, + i = array.length; + + if (!getKey) { + while (i--) { + map[array[i]] = i+1; + } + } else if (typeof getKey == 'string') { + while (i--) { + map[array[i][getKey]] = i+1; + } + } else { + while (i--) { + map[getKey.call(scope, array[i])] = i+1; + } + } + + return map; + }, + + + toValueMap: function(array, getKey, scope) { + var map = {}, + i = array.length; + + if (!getKey) { + while (i--) { + map[array[i]] = array[i]; + } + } else if (typeof getKey == 'string') { + while (i--) { + map[array[i][getKey]] = array[i]; + } + } else { + while (i--) { + map[getKey.call(scope, array[i])] = array[i]; + } + } + + return map; + }, + + + + erase: erase, + + + insert: function (array, index, items) { + return replace(array, index, 0, items); + }, + + + replace: replace, + + + splice: splice, + + + push: function(array) { + var len = arguments.length, + i = 1, + newItem; + + if (array === undefined) { + array = []; + } else if (!Ext.isArray(array)) { + array = [array]; + } + for (; i < len; i++) { + newItem = arguments[i]; + Array.prototype.push[Ext.isIterable(newItem) ? 'apply' : 'call'](array, newItem); + } + return array; + } + }; + + + Ext.each = ExtArray.each; + + + ExtArray.union = ExtArray.merge; + + + Ext.min = ExtArray.min; + + + Ext.max = ExtArray.max; + + + Ext.sum = ExtArray.sum; + + + Ext.mean = ExtArray.mean; + + + Ext.flatten = ExtArray.flatten; + + + Ext.clean = ExtArray.clean; + + + Ext.unique = ExtArray.unique; + + + Ext.pluck = ExtArray.pluck; + + + Ext.toArray = function() { + return ExtArray.toArray.apply(ExtArray, arguments); + }; +}()); + + + + + + +Ext.Function = { + + + flexSetter: function(fn) { + return function(a, b) { + var k, i; + + if (a === null) { + return this; + } + + if (typeof a !== 'string') { + for (k in a) { + if (a.hasOwnProperty(k)) { + fn.call(this, k, a[k]); + } + } + + if (Ext.enumerables) { + for (i = Ext.enumerables.length; i--;) { + k = Ext.enumerables[i]; + if (a.hasOwnProperty(k)) { + fn.call(this, k, a[k]); + } + } + } + } else { + fn.call(this, a, b); + } + + return this; + }; + }, + + + bind: function(fn, scope, args, appendArgs) { + if (arguments.length === 2) { + return function() { + return fn.apply(scope, arguments); + }; + } + + var method = fn, + slice = Array.prototype.slice; + + return function() { + var callArgs = args || arguments; + + if (appendArgs === true) { + callArgs = slice.call(arguments, 0); + callArgs = callArgs.concat(args); + } + else if (typeof appendArgs == 'number') { + callArgs = slice.call(arguments, 0); + Ext.Array.insert(callArgs, appendArgs, args); + } + + return method.apply(scope || Ext.global, callArgs); + }; + }, + + + pass: function(fn, args, scope) { + if (!Ext.isArray(args)) { + if (Ext.isIterable(args)) { + args = Ext.Array.clone(args); + } else { + args = args !== undefined ? [args] : []; + } + } + + return function() { + var fnArgs = [].concat(args); + fnArgs.push.apply(fnArgs, arguments); + return fn.apply(scope || this, fnArgs); + }; + }, + + + alias: function(object, methodName) { + return function() { + return object[methodName].apply(object, arguments); + }; + }, + + + clone: function(method) { + return function() { + return method.apply(this, arguments); + }; + }, + + + createInterceptor: function(origFn, newFn, scope, returnValue) { + var method = origFn; + if (!Ext.isFunction(newFn)) { + return origFn; + } else { + returnValue = Ext.isDefined(returnValue) ? returnValue : null; + return function() { + var me = this, + args = arguments; + + newFn.target = me; + newFn.method = origFn; + return (newFn.apply(scope || me || Ext.global, args) !== false) ? origFn.apply(me || Ext.global, args) : returnValue; + }; + } + }, + + + createDelayed: function(fn, delay, scope, args, appendArgs) { + if (scope || args) { + fn = Ext.Function.bind(fn, scope, args, appendArgs); + } + + return function() { + var me = this, + args = Array.prototype.slice.call(arguments); + + setTimeout(function() { + fn.apply(me, args); + }, delay); + }; + }, + + + defer: function(fn, millis, scope, args, appendArgs) { + fn = Ext.Function.bind(fn, scope, args, appendArgs); + if (millis > 0) { + return setTimeout(Ext.supports.TimeoutActualLateness ? function () { + fn(); + } : fn, millis); + } + fn(); + return 0; + }, + + + createSequence: function(originalFn, newFn, scope) { + if (!newFn) { + return originalFn; + } + else { + return function() { + var result = originalFn.apply(this, arguments); + newFn.apply(scope || this, arguments); + return result; + }; + } + }, + + + createBuffered: function(fn, buffer, scope, args) { + var timerId; + + return function() { + var callArgs = args || Array.prototype.slice.call(arguments, 0), + me = scope || this; + + if (timerId) { + clearTimeout(timerId); + } + + timerId = setTimeout(function(){ + fn.apply(me, callArgs); + }, buffer); + }; + }, + + + createThrottled: function(fn, interval, scope) { + var lastCallTime, elapsed, lastArgs, timer, execute = function() { + fn.apply(scope || this, lastArgs); + lastCallTime = Ext.Date.now(); + }; + + return function() { + elapsed = Ext.Date.now() - lastCallTime; + lastArgs = arguments; + + clearTimeout(timer); + if (!lastCallTime || (elapsed >= interval)) { + execute(); + } else { + timer = setTimeout(execute, interval - elapsed); + } + }; + }, + + + + interceptBefore: function(object, methodName, fn, scope) { + var method = object[methodName] || Ext.emptyFn; + + return (object[methodName] = function() { + var ret = fn.apply(scope || this, arguments); + method.apply(this, arguments); + + return ret; + }); + }, + + + interceptAfter: function(object, methodName, fn, scope) { + var method = object[methodName] || Ext.emptyFn; + + return (object[methodName] = function() { + method.apply(this, arguments); + return fn.apply(scope || this, arguments); + }); + } +}; + + +Ext.defer = Ext.Function.alias(Ext.Function, 'defer'); + + +Ext.pass = Ext.Function.alias(Ext.Function, 'pass'); + + +Ext.bind = Ext.Function.alias(Ext.Function, 'bind'); + + + + + + + +(function() { + + +var TemplateClass = function(){}, + ExtObject = Ext.Object = { + + + chain: Object.create || function (object) { + TemplateClass.prototype = object; + var result = new TemplateClass(); + TemplateClass.prototype = null; + return result; + }, + + + toQueryObjects: function(name, value, recursive) { + var self = ExtObject.toQueryObjects, + objects = [], + i, ln; + + if (Ext.isArray(value)) { + for (i = 0, ln = value.length; i < ln; i++) { + if (recursive) { + objects = objects.concat(self(name + '[' + i + ']', value[i], true)); + } + else { + objects.push({ + name: name, + value: value[i] + }); + } + } + } + else if (Ext.isObject(value)) { + for (i in value) { + if (value.hasOwnProperty(i)) { + if (recursive) { + objects = objects.concat(self(name + '[' + i + ']', value[i], true)); + } + else { + objects.push({ + name: name, + value: value[i] + }); + } + } + } + } + else { + objects.push({ + name: name, + value: value + }); + } + + return objects; + }, + + + toQueryString: function(object, recursive) { + var paramObjects = [], + params = [], + i, j, ln, paramObject, value; + + for (i in object) { + if (object.hasOwnProperty(i)) { + paramObjects = paramObjects.concat(ExtObject.toQueryObjects(i, object[i], recursive)); + } + } + + for (j = 0, ln = paramObjects.length; j < ln; j++) { + paramObject = paramObjects[j]; + value = paramObject.value; + + if (Ext.isEmpty(value)) { + value = ''; + } else if (Ext.isDate(value)) { + value = Ext.Date.toString(value); + } + + params.push(encodeURIComponent(paramObject.name) + '=' + encodeURIComponent(String(value))); + } + + return params.join('&'); + }, + + + fromQueryString: function(queryString, recursive) { + var parts = queryString.replace(/^\?/, '').split('&'), + object = {}, + temp, components, name, value, i, ln, + part, j, subLn, matchedKeys, matchedName, + keys, key, nextKey; + + for (i = 0, ln = parts.length; i < ln; i++) { + part = parts[i]; + + if (part.length > 0) { + components = part.split('='); + name = decodeURIComponent(components[0]); + value = (components[1] !== undefined) ? decodeURIComponent(components[1]) : ''; + + if (!recursive) { + if (object.hasOwnProperty(name)) { + if (!Ext.isArray(object[name])) { + object[name] = [object[name]]; + } + + object[name].push(value); + } + else { + object[name] = value; + } + } + else { + matchedKeys = name.match(/(\[):?([^\]]*)\]/g); + matchedName = name.match(/^([^\[]+)/); + + + name = matchedName[0]; + keys = []; + + if (matchedKeys === null) { + object[name] = value; + continue; + } + + for (j = 0, subLn = matchedKeys.length; j < subLn; j++) { + key = matchedKeys[j]; + key = (key.length === 2) ? '' : key.substring(1, key.length - 1); + keys.push(key); + } + + keys.unshift(name); + + temp = object; + + for (j = 0, subLn = keys.length; j < subLn; j++) { + key = keys[j]; + + if (j === subLn - 1) { + if (Ext.isArray(temp) && key === '') { + temp.push(value); + } + else { + temp[key] = value; + } + } + else { + if (temp[key] === undefined || typeof temp[key] === 'string') { + nextKey = keys[j+1]; + + temp[key] = (Ext.isNumeric(nextKey) || nextKey === '') ? [] : {}; + } + + temp = temp[key]; + } + } + } + } + } + + return object; + }, + + + each: function(object, fn, scope) { + for (var property in object) { + if (object.hasOwnProperty(property)) { + if (fn.call(scope || object, property, object[property], object) === false) { + return; + } + } + } + }, + + + merge: function(destination) { + var i = 1, + ln = arguments.length, + mergeFn = ExtObject.merge, + cloneFn = Ext.clone, + object, key, value, sourceKey; + + for (; i < ln; i++) { + object = arguments[i]; + + for (key in object) { + value = object[key]; + if (value && value.constructor === Object) { + sourceKey = destination[key]; + if (sourceKey && sourceKey.constructor === Object) { + mergeFn(sourceKey, value); + } + else { + destination[key] = cloneFn(value); + } + } + else { + destination[key] = value; + } + } + } + + return destination; + }, + + + mergeIf: function(destination) { + var i = 1, + ln = arguments.length, + cloneFn = Ext.clone, + object, key, value; + + for (; i < ln; i++) { + object = arguments[i]; + + for (key in object) { + if (!(key in destination)) { + value = object[key]; + + if (value && value.constructor === Object) { + destination[key] = cloneFn(value); + } + else { + destination[key] = value; + } + } + } + } + + return destination; + }, + + + getKey: function(object, value) { + for (var property in object) { + if (object.hasOwnProperty(property) && object[property] === value) { + return property; + } + } + + return null; + }, + + + getValues: function(object) { + var values = [], + property; + + for (property in object) { + if (object.hasOwnProperty(property)) { + values.push(object[property]); + } + } + + return values; + }, + + + getKeys: (typeof Object.keys == 'function') + ? function(object){ + if (!object) { + return []; + } + return Object.keys(object); + } + : function(object) { + var keys = [], + property; + + for (property in object) { + if (object.hasOwnProperty(property)) { + keys.push(property); + } + } + + return keys; + }, + + + getSize: function(object) { + var size = 0, + property; + + for (property in object) { + if (object.hasOwnProperty(property)) { + size++; + } + } + + return size; + }, + + + isEmpty: function(object){ + for (var key in object) { + if (object.hasOwnProperty(key)) { + return false; + } + } + return true; + }, + + + equals: (function() { + var check = function(o1, o2) { + var key; + + for (key in o1) { + if (o1.hasOwnProperty(key)) { + if (o1[key] !== o2[key]) { + return false; + } + } + } + return true; + }; + + return function(object1, object2) { + + + if (object1 === object2) { + return true; + } if (object1 && object2) { + + + return check(object1, object2) && check(object2, object1); + } else if (!object1 && !object2) { + return object1 === object2; + } else { + return false; + } + }; + })(), + + + classify: function(object) { + var prototype = object, + objectProperties = [], + propertyClassesMap = {}, + objectClass = function() { + var i = 0, + ln = objectProperties.length, + property; + + for (; i < ln; i++) { + property = objectProperties[i]; + this[property] = new propertyClassesMap[property](); + } + }, + key, value; + + for (key in object) { + if (object.hasOwnProperty(key)) { + value = object[key]; + + if (value && value.constructor === Object) { + objectProperties.push(key); + propertyClassesMap[key] = ExtObject.classify(value); + } + } + } + + objectClass.prototype = prototype; + + return objectClass; + } +}; + + +Ext.merge = Ext.Object.merge; + + +Ext.mergeIf = Ext.Object.mergeIf; + + +Ext.urlEncode = function() { + var args = Ext.Array.from(arguments), + prefix = ''; + + + if ((typeof args[1] === 'string')) { + prefix = args[1] + '&'; + args[1] = false; + } + + return prefix + ExtObject.toQueryString.apply(ExtObject, args); +}; + + +Ext.urlDecode = function() { + return ExtObject.fromQueryString.apply(ExtObject, arguments); +}; + +}()); + + + + + + + + + +Ext.Date = new function() { + var utilDate = this, + stripEscapeRe = /(\\.)/g, + hourInfoRe = /([gGhHisucUOPZ]|MS)/, + dateInfoRe = /([djzmnYycU]|MS)/, + slashRe = /\\/gi, + numberTokenRe = /\{(\d+)\}/g, + MSFormatRe = new RegExp('\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/'), + code = [ + + "var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,", + "def = me.defaults,", + "from = Ext.Number.from,", + "results = String(input).match(me.parseRegexes[{0}]);", + + "if(results){", + "{1}", + + "if(u != null){", + "v = new Date(u * 1000);", + "}else{", + + + + "dt = me.clearTime(new Date);", + + "y = from(y, from(def.y, dt.getFullYear()));", + "m = from(m, from(def.m - 1, dt.getMonth()));", + "dayMatched = d !== undefined;", + "d = from(d, from(def.d, dt.getDate()));", + + + + + + + + + "if (!dayMatched) {", + "dt.setDate(1);", + "dt.setMonth(m);", + "dt.setFullYear(y);", + + "daysInMonth = me.getDaysInMonth(dt);", + "if (d > daysInMonth) {", + "d = daysInMonth;", + "}", + "}", + + "h = from(h, from(def.h, dt.getHours()));", + "i = from(i, from(def.i, dt.getMinutes()));", + "s = from(s, from(def.s, dt.getSeconds()));", + "ms = from(ms, from(def.ms, dt.getMilliseconds()));", + + "if(z >= 0 && y >= 0){", + + + + + + "v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);", + + + "v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);", + "}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){", + "v = null;", + "}else{", + "if (W) {", + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "year = y || (new Date()).getFullYear(),", + "jan4 = new Date(year, 0, 4, 0, 0, 0),", + "week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));", + "v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));", + "} else {", + + + "v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);", + "}", + "}", + "}", + "}", + + "if(v){", + + "if(zz != null){", + + "v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);", + "}else if(o){", + + "v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));", + "}", + "}", + + "return v;" + ].join('\n'); + + + + + function xf(format) { + var args = Array.prototype.slice.call(arguments, 1); + return format.replace(numberTokenRe, function(m, i) { + return args[i]; + }); + } + + Ext.apply(utilDate, { + + now: Date.now || function() { + return +new Date(); + }, + + + toString: function(date) { + var pad = Ext.String.leftPad; + + return date.getFullYear() + "-" + + pad(date.getMonth() + 1, 2, '0') + "-" + + pad(date.getDate(), 2, '0') + "T" + + pad(date.getHours(), 2, '0') + ":" + + pad(date.getMinutes(), 2, '0') + ":" + + pad(date.getSeconds(), 2, '0'); + }, + + + getElapsed: function(dateA, dateB) { + return Math.abs(dateA - (dateB || utilDate.now())); + }, + + + useStrict: false, + + + formatCodeToRegex: function(character, currentGroup) { + + var p = utilDate.parseCodes[character]; + + if (p) { + p = typeof p == 'function'? p() : p; + utilDate.parseCodes[character] = p; + } + + return p ? Ext.applyIf({ + c: p.c ? xf(p.c, currentGroup || "{0}") : p.c + }, p) : { + g: 0, + c: null, + s: Ext.String.escapeRegex(character) + }; + }, + + + parseFunctions: { + "MS": function(input, strict) { + + + var r = (input || '').match(MSFormatRe); + return r ? new Date(((r[1] || '') + r[2]) * 1) : null; + }, + "time": function(input, strict) { + var num = parseInt(input, 10); + if (num || num === 0) { + return new Date(num); + } + return null; + }, + "timestamp": function(input, strict) { + var num = parseInt(input, 10); + if (num || num === 0) { + return new Date(num * 1000); + } + return null; + } + }, + parseRegexes: [], + + + formatFunctions: { + "MS": function() { + + return '\\/Date(' + this.getTime() + ')\\/'; + }, + "time": function(){ + return this.getTime().toString(); + }, + "timestamp": function(){ + return utilDate.format(this, 'U'); + } + }, + + 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 : { + January: 0, + Jan: 0, + February: 1, + Feb: 1, + March: 2, + Mar: 2, + April: 3, + Apr: 3, + May: 4, + June: 5, + Jun: 5, + July: 6, + Jul: 6, + August: 7, + Aug: 7, + September: 8, + Sep: 8, + October: 9, + Oct: 9, + November: 10, + Nov: 10, + December: 11, + Dec: 11 + }, + + + + + defaultFormat : "m/d/Y", + + + + getShortMonthName : function(month) { + return Ext.Date.monthNames[month].substring(0, 3); + }, + + + + + getShortDayName : function(day) { + return Ext.Date.dayNames[day].substring(0, 3); + }, + + + + + getMonthNumber : function(name) { + + return Ext.Date.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()]; + }, + + + + formatContainsHourInfo : function(format){ + return hourInfoRe.test(format.replace(stripEscapeRe, '')); + }, + + + formatContainsDateInfo : function(format){ + return dateInfoRe.test(format.replace(stripEscapeRe, '')); + }, + + + unescapeFormat: function(format) { + + + + return format.replace(slashRe, ''); + }, + + + formatCodes : { + d: "Ext.String.leftPad(this.getDate(), 2, '0')", + D: "Ext.Date.getShortDayName(this.getDay())", + j: "this.getDate()", + l: "Ext.Date.dayNames[this.getDay()]", + N: "(this.getDay() ? this.getDay() : 7)", + S: "Ext.Date.getSuffix(this)", + w: "this.getDay()", + z: "Ext.Date.getDayOfYear(this)", + W: "Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')", + F: "Ext.Date.monthNames[this.getMonth()]", + m: "Ext.String.leftPad(this.getMonth() + 1, 2, '0')", + M: "Ext.Date.getShortMonthName(this.getMonth())", + n: "(this.getMonth() + 1)", + t: "Ext.Date.getDaysInMonth(this)", + L: "(Ext.Date.isLeapYear(this) ? 1 : 0)", + o: "(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))", + Y: "Ext.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: "Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')", + H: "Ext.String.leftPad(this.getHours(), 2, '0')", + i: "Ext.String.leftPad(this.getMinutes(), 2, '0')", + s: "Ext.String.leftPad(this.getSeconds(), 2, '0')", + u: "Ext.String.leftPad(this.getMilliseconds(), 3, '0')", + O: "Ext.Date.getGMTOffset(this)", + P: "Ext.Date.getGMTOffset(this, true)", + T: "Ext.Date.getTimezone(this)", + Z: "(this.getTimezoneOffset() * -60)", + + c: function() { + var c, code, i, l, e; + for (c = "Y-m-dTH:i:sP", code = [], i = 0, l = c.length; i < l; ++i) { + e = c.charAt(i); + code.push(e == "T" ? "'T'" : utilDate.getFormatCode(e)); + } + return code.join(" + "); + }, + + + U: "Math.round(this.getTime() / 1000)" + }, + + + isValid : function(y, m, d, h, i, s, ms) { + + h = h || 0; + i = i || 0; + s = s || 0; + ms = ms || 0; + + + var dt = utilDate.add(new Date(y < 100 ? 100 : y, m - 1, d, h, i, s, ms), utilDate.YEAR, y < 100 ? y - 100 : 0); + + return y == dt.getFullYear() && + m == dt.getMonth() + 1 && + d == dt.getDate() && + h == dt.getHours() && + i == dt.getMinutes() && + s == dt.getSeconds() && + ms == dt.getMilliseconds(); + }, + + + parse : function(input, format, strict) { + var p = utilDate.parseFunctions; + if (p[format] == null) { + utilDate.createParser(format); + } + return p[format].call(utilDate, input, Ext.isDefined(strict) ? strict : utilDate.useStrict); + }, + + + parseDate: function(input, format, strict){ + return utilDate.parse(input, format, strict); + }, + + + + getFormatCode : function(character) { + var f = utilDate.formatCodes[character]; + + if (f) { + f = typeof f == 'function'? f() : f; + utilDate.formatCodes[character] = f; + } + + + return f || ("'" + Ext.String.escape(character) + "'"); + }, + + + createFormat : function(format) { + var code = [], + special = false, + ch = '', + i; + + for (i = 0; i < format.length; ++i) { + ch = format.charAt(i); + if (!special && ch == "\\") { + special = true; + } else if (special) { + special = false; + code.push("'" + Ext.String.escape(ch) + "'"); + } else { + code.push(utilDate.getFormatCode(ch)); + } + } + utilDate.formatFunctions[format] = Ext.functionFactory("return " + code.join('+')); + }, + + + createParser : function(format) { + var regexNum = utilDate.parseRegexes.length, + currentGroup = 1, + calc = [], + regex = [], + special = false, + ch = "", + i = 0, + len = format.length, + atEnd = [], + obj; + + for (; i < len; ++i) { + ch = format.charAt(i); + if (!special && ch == "\\") { + special = true; + } else if (special) { + special = false; + regex.push(Ext.String.escape(ch)); + } else { + obj = utilDate.formatCodeToRegex(ch, currentGroup); + currentGroup += obj.g; + regex.push(obj.s); + if (obj.g && obj.c) { + if (obj.calcAtEnd) { + atEnd.push(obj.c); + } else { + calc.push(obj.c); + } + } + } + } + + calc = calc.concat(atEnd); + + utilDate.parseRegexes[regexNum] = new RegExp("^" + regex.join('') + "$", 'i'); + utilDate.parseFunctions[format] = Ext.functionFactory("input", "strict", xf(code, regexNum, calc.join(''))); + }, + + + parseCodes : { + + d: { + g:1, + c:"d = parseInt(results[{0}], 10);\n", + s:"(3[0-1]|[1-2][0-9]|0[1-9])" + }, + j: { + g:1, + c:"d = parseInt(results[{0}], 10);\n", + s:"(3[0-1]|[1-2][0-9]|[1-9])" + }, + D: function() { + for (var a = [], i = 0; i < 7; a.push(utilDate.getShortDayName(i)), ++i); + return { + g:0, + c:null, + s:"(?:" + a.join("|") +")" + }; + }, + l: function() { + return { + g:0, + c:null, + s:"(?:" + utilDate.dayNames.join("|") + ")" + }; + }, + N: { + g:0, + c:null, + s:"[1-7]" + }, + + S: { + g:0, + c:null, + s:"(?:st|nd|rd|th)" + }, + + w: { + g:0, + c:null, + s:"[0-6]" + }, + z: { + g:1, + c:"z = parseInt(results[{0}], 10);\n", + s:"(\\d{1,3})" + }, + W: { + g:1, + c:"W = parseInt(results[{0}], 10);\n", + s:"(\\d{2})" + }, + F: function() { + return { + g:1, + c:"m = parseInt(me.getMonthNumber(results[{0}]), 10);\n", + s:"(" + utilDate.monthNames.join("|") + ")" + }; + }, + M: function() { + for (var a = [], i = 0; i < 12; a.push(utilDate.getShortMonthName(i)), ++i); + return Ext.applyIf({ + s:"(" + a.join("|") + ")" + }, utilDate.formatCodeToRegex("F")); + }, + m: { + g:1, + c:"m = parseInt(results[{0}], 10) - 1;\n", + s:"(1[0-2]|0[1-9])" + }, + n: { + g:1, + c:"m = parseInt(results[{0}], 10) - 1;\n", + s:"(1[0-2]|[1-9])" + }, + t: { + g:0, + c:null, + s:"(?:\\d{2})" + }, + L: { + g:0, + c:null, + s:"(?:1|0)" + }, + o: { + g: 1, + c: "y = parseInt(results[{0}], 10);\n", + s: "(\\d{4})" + + }, + Y: { + g:1, + c:"y = parseInt(results[{0}], 10);\n", + s:"(\\d{4})" + }, + y: { + g:1, + c:"var ty = parseInt(results[{0}], 10);\n" + + "y = ty > me.y2kYear ? 1900 + ty : 2000 + ty;\n", + s:"(\\d{1,2})" + }, + + + a: { + g:1, + c:"if (/(am)/i.test(results[{0}])) {\n" + + "if (!h || h == 12) { h = 0; }\n" + + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}", + s:"(am|pm|AM|PM)", + calcAtEnd: true + }, + + + A: { + g:1, + c:"if (/(am)/i.test(results[{0}])) {\n" + + "if (!h || h == 12) { h = 0; }\n" + + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}", + s:"(AM|PM|am|pm)", + calcAtEnd: true + }, + + g: { + g:1, + c:"h = parseInt(results[{0}], 10);\n", + s:"(1[0-2]|[0-9])" + }, + G: { + g:1, + c:"h = parseInt(results[{0}], 10);\n", + s:"(2[0-3]|1[0-9]|[0-9])" + }, + h: { + g:1, + c:"h = parseInt(results[{0}], 10);\n", + s:"(1[0-2]|0[1-9])" + }, + H: { + g:1, + c:"h = parseInt(results[{0}], 10);\n", + s:"(2[0-3]|[0-1][0-9])" + }, + i: { + g:1, + c:"i = parseInt(results[{0}], 10);\n", + s:"([0-5][0-9])" + }, + s: { + g:1, + c:"s = parseInt(results[{0}], 10);\n", + s:"([0-5][0-9])" + }, + 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 + Ext.String.leftPad(hr, 2, '0') + Ext.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 + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n" + ].join("\n"), + s: "([+-]\\d{2}:\\d{2})" + }, + T: { + g:0, + c:null, + s:"[A-Z]{1,5}" + }, + Z: { + g:1, + c:"zz = results[{0}] * 1;\n" + + "zz = (-43200 <= zz && zz <= 50400)? zz : null;\n", + s:"([+-]?\\d{1,5})" + }, + c: function() { + var calc = [], + arr = [ + utilDate.formatCodeToRegex("Y", 1), + utilDate.formatCodeToRegex("m", 2), + utilDate.formatCodeToRegex("d", 3), + utilDate.formatCodeToRegex("H", 4), + utilDate.formatCodeToRegex("i", 5), + utilDate.formatCodeToRegex("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){", + utilDate.formatCodeToRegex("P", 8).c, + "}else{", + utilDate.formatCodeToRegex("O", 8).c, + "}", + "}" + ].join('\n')} + ], + i, + l; + + for (i = 0, l = arr.length; i < l; ++i) { + calc.push(arr[i].c); + } + + return { + g:1, + c:calc.join(""), + s:[ + arr[0].s, + "(?:", "-", arr[1].s, + "(?:", "-", arr[2].s, + "(?:", + "(?:T| )?", + arr[3].s, ":", arr[4].s, + "(?::", arr[5].s, ")?", + "(?:(?:\\.|,)(\\d+))?", + "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?", + ")?", + ")?", + ")?" + ].join("") + }; + }, + U: { + g:1, + c:"u = parseInt(results[{0}], 10);\n", + s:"(-?\\d+)" + } + }, + + + + dateFormat: function(date, format) { + return utilDate.format(date, format); + }, + + + isEqual: function(date1, date2) { + + if (date1 && date2) { + return (date1.getTime() === date2.getTime()); + } + + return !(date1 || date2); + }, + + + format: function(date, format) { + var formatFunctions = utilDate.formatFunctions; + + if (!Ext.isDate(date)) { + return ''; + } + + if (formatFunctions[format] == null) { + utilDate.createFormat(format); + } + + return formatFunctions[format].call(date) + ''; + }, + + + getTimezone : function(date) { + + + + + + + + + + + + + return date.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, ""); + }, + + + getGMTOffset : function(date, colon) { + var offset = date.getTimezoneOffset(); + return (offset > 0 ? "-" : "+") + + Ext.String.leftPad(Math.floor(Math.abs(offset) / 60), 2, "0") + + (colon ? ":" : "") + + Ext.String.leftPad(Math.abs(offset % 60), 2, "0"); + }, + + + getDayOfYear: function(date) { + var num = 0, + d = Ext.Date.clone(date), + m = date.getMonth(), + i; + + for (i = 0, d.setDate(1), d.setMonth(0); i < m; d.setMonth(++i)) { + num += utilDate.getDaysInMonth(d); + } + return num + date.getDate() - 1; + }, + + + getWeekOfYear : (function() { + + var ms1d = 864e5, + ms7d = 7 * ms1d; + + return function(date) { + var DC3 = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate() + 3) / ms1d, + AWN = Math.floor(DC3 / 7), + Wyr = new Date(AWN * ms7d).getUTCFullYear(); + + return AWN - Math.floor(Date.UTC(Wyr, 0, 7) / ms7d) + 1; + }; + }()), + + + isLeapYear : function(date) { + var year = date.getFullYear(); + return !!((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year))); + }, + + + getFirstDayOfMonth : function(date) { + var day = (date.getDay() - (date.getDate() - 1)) % 7; + return (day < 0) ? (day + 7) : day; + }, + + + getLastDayOfMonth : function(date) { + return utilDate.getLastDateOfMonth(date).getDay(); + }, + + + + getFirstDateOfMonth : function(date) { + return new Date(date.getFullYear(), date.getMonth(), 1); + }, + + + getLastDateOfMonth : function(date) { + return new Date(date.getFullYear(), date.getMonth(), utilDate.getDaysInMonth(date)); + }, + + + getDaysInMonth: (function() { + var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + return function(date) { + var m = date.getMonth(); + + return m == 1 && utilDate.isLeapYear(date) ? 29 : daysInMonth[m]; + }; + }()), + + + + getSuffix : function(date) { + switch (date.getDate()) { + case 1: + case 21: + case 31: + return "st"; + case 2: + case 22: + return "nd"; + case 3: + case 23: + return "rd"; + default: + return "th"; + } + }, + + + + clone : function(date) { + return new Date(date.getTime()); + }, + + + isDST : function(date) { + + + return new Date(date.getFullYear(), 0, 1).getTimezoneOffset() != date.getTimezoneOffset(); + }, + + + clearTime : function(date, clone) { + if (clone) { + return Ext.Date.clearTime(Ext.Date.clone(date)); + } + + + var d = date.getDate(), + hr, + c; + + + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + + if (date.getDate() != d) { + + + + + for (hr = 1, c = utilDate.add(date, Ext.Date.HOUR, hr); c.getDate() != d; hr++, c = utilDate.add(date, Ext.Date.HOUR, hr)); + + date.setDate(d); + date.setHours(c.getHours()); + } + + return date; + }, + + + add : function(date, interval, value) { + var d = Ext.Date.clone(date), + Date = Ext.Date, + day, decimalValue, base = 0; + if (!interval || value === 0) { + return d; + } + + decimalValue = value - parseInt(value, 10); + value = parseInt(value, 10); + + if (value) { + switch(interval.toLowerCase()) { + + + + + + + + + + + + + + + + + + + case Ext.Date.MILLI: + d.setTime(d.getTime() + value); + break; + case Ext.Date.SECOND: + d.setTime(d.getTime() + value * 1000); + break; + case Ext.Date.MINUTE: + d.setTime(d.getTime() + value * 60 * 1000); + break; + case Ext.Date.HOUR: + d.setTime(d.getTime() + value * 60 * 60 * 1000); + break; + case Ext.Date.DAY: + d.setDate(d.getDate() + value); + break; + case Ext.Date.MONTH: + day = date.getDate(); + if (day > 28) { + day = Math.min(day, Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(date), Ext.Date.MONTH, value)).getDate()); + } + d.setDate(day); + d.setMonth(date.getMonth() + value); + break; + case Ext.Date.YEAR: + day = date.getDate(); + if (day > 28) { + day = Math.min(day, Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(date), Ext.Date.YEAR, value)).getDate()); + } + d.setDate(day); + d.setFullYear(date.getFullYear() + value); + break; + } + } + + if (decimalValue) { + switch (interval.toLowerCase()) { + case Ext.Date.MILLI: base = 1; break; + case Ext.Date.SECOND: base = 1000; break; + case Ext.Date.MINUTE: base = 1000*60; break; + case Ext.Date.HOUR: base = 1000*60*60; break; + case Ext.Date.DAY: base = 1000*60*60*24; break; + + case Ext.Date.MONTH: + day = utilDate.getDaysInMonth(d); + base = 1000*60*60*24*day; + break; + + case Ext.Date.YEAR: + day = (utilDate.isLeapYear(d) ? 366 : 365); + base = 1000*60*60*24*day; + break; + } + if (base) { + d.setTime(d.getTime() + base * decimalValue); + } + } + + return d; + }, + + + subtract: function(date, interval, value){ + return utilDate.add(date, interval, -value); + }, + + + between : function(date, start, end) { + var t = date.getTime(); + return start.getTime() <= t && t <= end.getTime(); + }, + + + compat: function() { + var nativeDate = window.Date, + p, + statics = ['useStrict', 'formatCodeToRegex', 'parseFunctions', 'parseRegexes', 'formatFunctions', 'y2kYear', 'MILLI', 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'MONTH', 'YEAR', 'defaults', 'dayNames', 'monthNames', 'monthNumbers', 'getShortMonthName', 'getShortDayName', 'getMonthNumber', 'formatCodes', 'isValid', 'parseDate', 'getFormatCode', 'createFormat', 'createParser', 'parseCodes'], + proto = ['dateFormat', 'format', 'getTimezone', 'getGMTOffset', 'getDayOfYear', 'getWeekOfYear', 'isLeapYear', 'getFirstDayOfMonth', 'getLastDayOfMonth', 'getDaysInMonth', 'getSuffix', 'clone', 'isDST', 'clearTime', 'add', 'between'], + sLen = statics.length, + pLen = proto.length, + stat, prot, s; + + + for (s = 0; s < sLen; s++) { + stat = statics[s]; + nativeDate[stat] = utilDate[stat]; + } + + + for (p = 0; p < pLen; p++) { + prot = proto[p]; + nativeDate.prototype[prot] = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(this); + return utilDate[prot].apply(utilDate, args); + }; + } + } + }); +}; + + + + + + +(function(flexSetter) { + +var noArgs = [], + Base = function(){}, + hookFunctionFactory = function(hookFunction, underriddenFunction, methodName, owningClass) { + var result = function() { + var result = this.callParent(arguments); + hookFunction.apply(this, arguments); + return result; + }; + result.$name = methodName; + result.$owner = owningClass; + if (underriddenFunction) { + result.$previous = underriddenFunction.$previous; + underriddenFunction.$previous = result; + } + return result; + }; + + + Ext.apply(Base, { + $className: 'Ext.Base', + + $isClass: true, + + + create: function() { + return Ext.create.apply(Ext, [this].concat(Array.prototype.slice.call(arguments, 0))); + }, + + + extend: function(parent) { + var parentPrototype = parent.prototype, + basePrototype, prototype, i, ln, name, statics; + + prototype = this.prototype = Ext.Object.chain(parentPrototype); + prototype.self = this; + + this.superclass = prototype.superclass = parentPrototype; + + if (!parent.$isClass) { + basePrototype = Ext.Base.prototype; + + for (i in basePrototype) { + if (i in prototype) { + prototype[i] = basePrototype[i]; + } + } + } + + + statics = parentPrototype.$inheritableStatics; + + if (statics) { + for (i = 0,ln = statics.length; i < ln; i++) { + name = statics[i]; + + if (!this.hasOwnProperty(name)) { + this[name] = parent[name]; + } + } + } + + if (parent.$onExtended) { + this.$onExtended = parent.$onExtended.slice(); + } + + prototype.config = new prototype.configClass(); + prototype.initConfigList = prototype.initConfigList.slice(); + prototype.initConfigMap = Ext.clone(prototype.initConfigMap); + prototype.configMap = Ext.Object.chain(prototype.configMap); + }, + + + $onExtended: [], + + + triggerExtended: function() { + + var callbacks = this.$onExtended, + ln = callbacks.length, + i, callback; + + if (ln > 0) { + for (i = 0; i < ln; i++) { + callback = callbacks[i]; + callback.fn.apply(callback.scope || this, arguments); + } + } + }, + + + onExtended: function(fn, scope) { + this.$onExtended.push({ + fn: fn, + scope: scope + }); + + return this; + }, + + + addConfig: function(config, fullMerge) { + var prototype = this.prototype, + configNameCache = Ext.Class.configNameCache, + hasConfig = prototype.configMap, + initConfigList = prototype.initConfigList, + initConfigMap = prototype.initConfigMap, + defaultConfig = prototype.config, + initializedName, name, value; + + for (name in config) { + if (config.hasOwnProperty(name)) { + if (!hasConfig[name]) { + hasConfig[name] = true; + } + + value = config[name]; + + initializedName = configNameCache[name].initialized; + + if (!initConfigMap[name] && value !== null && !prototype[initializedName]) { + initConfigMap[name] = true; + initConfigList.push(name); + } + } + } + + if (fullMerge) { + Ext.merge(defaultConfig, config); + } + else { + Ext.mergeIf(defaultConfig, config); + } + + prototype.configClass = Ext.Object.classify(defaultConfig); + }, + + + addStatics: function(members) { + var member, name; + + for (name in members) { + if (members.hasOwnProperty(name)) { + member = members[name]; + if (typeof member == 'function' && !member.$isClass && member !== Ext.emptyFn && member !== Ext.identityFn) { + member.$owner = this; + member.$name = name; + } + this[name] = member; + } + } + + return this; + }, + + + addInheritableStatics: function(members) { + var inheritableStatics, + hasInheritableStatics, + prototype = this.prototype, + name, member; + + inheritableStatics = prototype.$inheritableStatics; + hasInheritableStatics = prototype.$hasInheritableStatics; + + if (!inheritableStatics) { + inheritableStatics = prototype.$inheritableStatics = []; + hasInheritableStatics = prototype.$hasInheritableStatics = {}; + } + + for (name in members) { + if (members.hasOwnProperty(name)) { + member = members[name]; + this[name] = member; + + if (!hasInheritableStatics[name]) { + hasInheritableStatics[name] = true; + inheritableStatics.push(name); + } + } + } + + return this; + }, + + + addMembers: function(members) { + var prototype = this.prototype, + enumerables = Ext.enumerables, + names = [], + i, ln, name, member; + + for (name in members) { + names.push(name); + } + + if (enumerables) { + names.push.apply(names, enumerables); + } + + for (i = 0,ln = names.length; i < ln; i++) { + name = names[i]; + + if (members.hasOwnProperty(name)) { + member = members[name]; + + if (typeof member == 'function' && !member.$isClass && member !== Ext.emptyFn && member !== Ext.identityFn) { + member.$owner = this; + member.$name = name; + } + + prototype[name] = member; + } + } + + return this; + }, + + + addMember: function(name, member) { + if (typeof member == 'function' && !member.$isClass && member !== Ext.emptyFn && member !== Ext.identityFn) { + member.$owner = this; + member.$name = name; + } + + this.prototype[name] = member; + return this; + }, + + + implement: function() { + this.addMembers.apply(this, arguments); + }, + + + borrow: function(fromClass, members) { + + var prototype = this.prototype, + fromPrototype = fromClass.prototype, + i, ln, name, fn, toBorrow; + + members = Ext.Array.from(members); + + for (i = 0,ln = members.length; i < ln; i++) { + name = members[i]; + + toBorrow = fromPrototype[name]; + + if (typeof toBorrow == 'function') { + fn = Ext.Function.clone(toBorrow); + + + fn.$owner = this; + fn.$name = name; + + prototype[name] = fn; + } + else { + prototype[name] = toBorrow; + } + } + + return this; + }, + + + override: function(members) { + var me = this, + enumerables = Ext.enumerables, + target = me.prototype, + cloneFunction = Ext.Function.clone, + name, index, member, statics, names, previous; + + if (arguments.length === 2) { + name = members; + members = {}; + members[name] = arguments[1]; + enumerables = null; + } + + do { + names = []; + statics = null; + + for (name in members) { + if (name == 'statics') { + statics = members[name]; + } else if (name == 'inheritableStatics'){ + me.addInheritableStatics(members[name]); + } else if (name == 'config') { + me.addConfig(members[name], true); + } else { + names.push(name); + } + } + + if (enumerables) { + names.push.apply(names, enumerables); + } + + for (index = names.length; index--; ) { + name = names[index]; + + if (members.hasOwnProperty(name)) { + member = members[name]; + + if (typeof member == 'function' && !member.$className && member !== Ext.emptyFn && member !== Ext.identityFn) { + if (typeof member.$owner != 'undefined') { + member = cloneFunction(member); + } + + + member.$owner = me; + member.$name = name; + + previous = target[name]; + if (previous) { + member.$previous = previous; + } + } + + target[name] = member; + } + } + + target = me; + members = statics; + } while (members); + + return this; + }, + + + callParent: function(args) { + var method; + + + return (method = this.callParent.caller) && (method.$previous || + ((method = method.$owner ? method : method.caller) && + method.$owner.superclass.self[method.$name])).apply(this, args || noArgs); + }, + + + callSuper: function(args) { + var method; + + + return (method = this.callSuper.caller) && + ((method = method.$owner ? method : method.caller) && + method.$owner.superclass.self[method.$name]).apply(this, args || noArgs); + }, + + + mixin: function(name, mixinClass) { + var me = this, + mixin = mixinClass.prototype, + prototype = me.prototype, + key, statics, i, ln, staticName, + mixinValue, hookKey, hookFunction; + + if (typeof mixin.onClassMixedIn != 'undefined') { + mixin.onClassMixedIn.call(mixinClass, me); + } + + if (!prototype.hasOwnProperty('mixins')) { + if ('mixins' in prototype) { + prototype.mixins = Ext.Object.chain(prototype.mixins); + } + else { + prototype.mixins = {}; + } + } + + for (key in mixin) { + mixinValue = mixin[key]; + if (key === 'mixins') { + Ext.merge(prototype.mixins, mixinValue); + } + else if (key === 'xhooks') { + for (hookKey in mixinValue) { + hookFunction = mixinValue[hookKey]; + + + hookFunction.$previous = Ext.emptyFn; + + if (prototype.hasOwnProperty(hookKey)) { + + + + + hookFunctionFactory(hookFunction, prototype[hookKey], hookKey, me); + } else { + + + prototype[hookKey] = hookFunctionFactory(hookFunction, null, hookKey, me); + } + } + } + else if (!(key === 'mixinId' || key === 'config') && (prototype[key] === undefined)) { + prototype[key] = mixinValue; + } + } + + + statics = mixin.$inheritableStatics; + + if (statics) { + for (i = 0, ln = statics.length; i < ln; i++) { + staticName = statics[i]; + + if (!me.hasOwnProperty(staticName)) { + me[staticName] = mixinClass[staticName]; + } + } + } + + if ('config' in mixin) { + me.addConfig(mixin.config, false); + } + + prototype.mixins[name] = mixin; + return me; + }, + + + getName: function() { + return Ext.getClassName(this); + }, + + + createAlias: flexSetter(function(alias, origin) { + this.override(alias, function() { + return this[origin].apply(this, arguments); + }); + }), + + + addXtype: function(xtype) { + var prototype = this.prototype, + xtypesMap = prototype.xtypesMap, + xtypes = prototype.xtypes, + xtypesChain = prototype.xtypesChain; + + if (!prototype.hasOwnProperty('xtypesMap')) { + xtypesMap = prototype.xtypesMap = Ext.merge({}, prototype.xtypesMap || {}); + xtypes = prototype.xtypes = prototype.xtypes ? [].concat(prototype.xtypes) : []; + xtypesChain = prototype.xtypesChain = prototype.xtypesChain ? [].concat(prototype.xtypesChain) : []; + prototype.xtype = xtype; + } + + if (!xtypesMap[xtype]) { + xtypesMap[xtype] = true; + xtypes.push(xtype); + xtypesChain.push(xtype); + Ext.ClassManager.setAlias(this, 'widget.' + xtype); + } + + return this; + } + }); + + Base.implement({ + + isInstance: true, + + + $className: 'Ext.Base', + + + configClass: Ext.emptyFn, + + + initConfigList: [], + + + configMap: {}, + + + initConfigMap: {}, + + + statics: function() { + var method = this.statics.caller, + self = this.self; + + if (!method) { + return self; + } + + return method.$owner; + }, + + + callParent: function(args) { + + + + + var method, + superMethod = (method = this.callParent.caller) && (method.$previous || + ((method = method.$owner ? method : method.caller) && + method.$owner.superclass[method.$name])); + + + return superMethod.apply(this, args || noArgs); + }, + + + callSuper: function(args) { + + + + + var method, + superMethod = (method = this.callSuper.caller) && + ((method = method.$owner ? method : method.caller) && + method.$owner.superclass[method.$name]); + + + return superMethod.apply(this, args || noArgs); + }, + + + self: Base, + + + constructor: function() { + return this; + }, + + + initConfig: function(config) { + var instanceConfig = config, + configNameCache = Ext.Class.configNameCache, + defaultConfig = new this.configClass(), + defaultConfigList = this.initConfigList, + hasConfig = this.configMap, + nameMap, i, ln, name, initializedName; + + this.initConfig = Ext.emptyFn; + + this.initialConfig = instanceConfig || {}; + + this.config = config = (instanceConfig) ? Ext.merge(defaultConfig, config) : defaultConfig; + + if (instanceConfig) { + defaultConfigList = defaultConfigList.slice(); + + for (name in instanceConfig) { + if (hasConfig[name]) { + if (instanceConfig[name] !== null) { + defaultConfigList.push(name); + this[configNameCache[name].initialized] = false; + } + } + } + } + + for (i = 0,ln = defaultConfigList.length; i < ln; i++) { + name = defaultConfigList[i]; + nameMap = configNameCache[name]; + initializedName = nameMap.initialized; + + if (!this[initializedName]) { + this[initializedName] = true; + this[nameMap.set].call(this, config[name]); + } + } + + return this; + }, + + + hasConfig: function(name) { + return Boolean(this.configMap[name]); + }, + + + setConfig: function(config, applyIfNotSet) { + if (!config) { + return this; + } + + var configNameCache = Ext.Class.configNameCache, + currentConfig = this.config, + hasConfig = this.configMap, + initialConfig = this.initialConfig, + name, value; + + applyIfNotSet = Boolean(applyIfNotSet); + + for (name in config) { + if (applyIfNotSet && initialConfig.hasOwnProperty(name)) { + continue; + } + + value = config[name]; + currentConfig[name] = value; + + if (hasConfig[name]) { + this[configNameCache[name].set](value); + } + } + + return this; + }, + + + getConfig: function(name) { + var configNameCache = Ext.Class.configNameCache; + + return this[configNameCache[name].get](); + }, + + + getInitialConfig: function(name) { + var config = this.config; + + if (!name) { + return config; + } + else { + return config[name]; + } + }, + + + onConfigUpdate: function(names, callback, scope) { + var self = this.self, + i, ln, name, + updaterName, updater, newUpdater; + + names = Ext.Array.from(names); + + scope = scope || this; + + for (i = 0,ln = names.length; i < ln; i++) { + name = names[i]; + updaterName = 'update' + Ext.String.capitalize(name); + updater = this[updaterName] || Ext.emptyFn; + newUpdater = function() { + updater.apply(this, arguments); + scope[callback].apply(scope, arguments); + }; + newUpdater.$name = updaterName; + newUpdater.$owner = self; + + this[updaterName] = newUpdater; + } + }, + + + destroy: function() { + this.destroy = Ext.emptyFn; + } + }); + + + Base.prototype.callOverridden = Base.prototype.callParent; + + Ext.Base = Base; + +}(Ext.Function.flexSetter)); + + + + + + +(function() { + var ExtClass, + Base = Ext.Base, + baseStaticMembers = [], + baseStaticMember, baseStaticMemberLength; + + for (baseStaticMember in Base) { + if (Base.hasOwnProperty(baseStaticMember)) { + baseStaticMembers.push(baseStaticMember); + } + } + + baseStaticMemberLength = baseStaticMembers.length; + + + function makeCtor (className) { + function constructor () { + + + return this.constructor.apply(this, arguments) || null; + } + return constructor; + } + + + Ext.Class = ExtClass = function(Class, data, onCreated) { + if (typeof Class != 'function') { + onCreated = data; + data = Class; + Class = null; + } + + if (!data) { + data = {}; + } + + Class = ExtClass.create(Class, data); + + ExtClass.process(Class, data, onCreated); + + return Class; + }; + + Ext.apply(ExtClass, { + + onBeforeCreated: function(Class, data, hooks) { + + Class.addMembers(data); + + hooks.onCreated.call(Class, Class); + + }, + + + create: function(Class, data) { + var name, i; + + if (!Class) { + Class = makeCtor( + ); + } + + for (i = 0; i < baseStaticMemberLength; i++) { + name = baseStaticMembers[i]; + Class[name] = Base[name]; + } + + return Class; + }, + + + process: function(Class, data, onCreated) { + var preprocessorStack = data.preprocessors || ExtClass.defaultPreprocessors, + registeredPreprocessors = this.preprocessors, + hooks = { + onBeforeCreated: this.onBeforeCreated + }, + preprocessors = [], + preprocessor, preprocessorsProperties, + i, ln, j, subLn, preprocessorProperty; + + delete data.preprocessors; + + for (i = 0,ln = preprocessorStack.length; i < ln; i++) { + preprocessor = preprocessorStack[i]; + + if (typeof preprocessor == 'string') { + preprocessor = registeredPreprocessors[preprocessor]; + preprocessorsProperties = preprocessor.properties; + + if (preprocessorsProperties === true) { + preprocessors.push(preprocessor.fn); + } + else if (preprocessorsProperties) { + for (j = 0,subLn = preprocessorsProperties.length; j < subLn; j++) { + preprocessorProperty = preprocessorsProperties[j]; + + if (data.hasOwnProperty(preprocessorProperty)) { + preprocessors.push(preprocessor.fn); + break; + } + } + } + } + else { + preprocessors.push(preprocessor); + } + } + + hooks.onCreated = onCreated ? onCreated : Ext.emptyFn; + hooks.preprocessors = preprocessors; + + this.doProcess(Class, data, hooks); + }, + + doProcess: function(Class, data, hooks) { + var me = this, + preprocessors = hooks.preprocessors, + preprocessor = preprocessors.shift(), + doProcess = me.doProcess; + + for ( ; preprocessor ; preprocessor = preprocessors.shift()) { + + if (preprocessor.call(me, Class, data, hooks, doProcess) === false) { + return; + } + } + hooks.onBeforeCreated.apply(me, arguments); + }, + + + preprocessors: {}, + + + registerPreprocessor: function(name, fn, properties, position, relativeTo) { + if (!position) { + position = 'last'; + } + + if (!properties) { + properties = [name]; + } + + this.preprocessors[name] = { + name: name, + properties: properties || false, + fn: fn + }; + + this.setDefaultPreprocessorPosition(name, position, relativeTo); + + return this; + }, + + + getPreprocessor: function(name) { + return this.preprocessors[name]; + }, + + + getPreprocessors: function() { + return this.preprocessors; + }, + + + defaultPreprocessors: [], + + + getDefaultPreprocessors: function() { + return this.defaultPreprocessors; + }, + + + setDefaultPreprocessors: function(preprocessors) { + this.defaultPreprocessors = Ext.Array.from(preprocessors); + + return this; + }, + + + setDefaultPreprocessorPosition: function(name, offset, relativeName) { + var defaultPreprocessors = this.defaultPreprocessors, + index; + + if (typeof offset == 'string') { + if (offset === 'first') { + defaultPreprocessors.unshift(name); + + return this; + } + else if (offset === 'last') { + defaultPreprocessors.push(name); + + return this; + } + + offset = (offset === 'after') ? 1 : -1; + } + + index = Ext.Array.indexOf(defaultPreprocessors, relativeName); + + if (index !== -1) { + Ext.Array.splice(defaultPreprocessors, Math.max(0, index + offset), 0, name); + } + + return this; + }, + + configNameCache: {}, + + getConfigNameMap: function(name) { + var cache = this.configNameCache, + map = cache[name], + capitalizedName; + + if (!map) { + capitalizedName = name.charAt(0).toUpperCase() + name.substr(1); + + map = cache[name] = { + internal: name, + initialized: '_is' + capitalizedName + 'Initialized', + apply: 'apply' + capitalizedName, + update: 'update' + capitalizedName, + 'set': 'set' + capitalizedName, + 'get': 'get' + capitalizedName, + doSet : 'doSet' + capitalizedName, + changeEvent: name.toLowerCase() + 'change' + }; + } + + return map; + } + }); + + + ExtClass.registerPreprocessor('extend', function(Class, data, hooks) { + + var Base = Ext.Base, + basePrototype = Base.prototype, + extend = data.extend, + Parent, parentPrototype, i; + + delete data.extend; + + if (extend && extend !== Object) { + Parent = extend; + } + else { + Parent = Base; + } + + parentPrototype = Parent.prototype; + + if (!Parent.$isClass) { + for (i in basePrototype) { + if (!parentPrototype[i]) { + parentPrototype[i] = basePrototype[i]; + } + } + } + + Class.extend(Parent); + + Class.triggerExtended.apply(Class, arguments); + + if (data.onClassExtended) { + Class.onExtended(data.onClassExtended, Class); + delete data.onClassExtended; + } + + }, true); + + + ExtClass.registerPreprocessor('statics', function(Class, data) { + + Class.addStatics(data.statics); + + delete data.statics; + }); + + + ExtClass.registerPreprocessor('inheritableStatics', function(Class, data) { + + Class.addInheritableStatics(data.inheritableStatics); + + delete data.inheritableStatics; + }); + + + ExtClass.registerPreprocessor('config', function(Class, data) { + + var config = data.config, + prototype = Class.prototype; + + delete data.config; + + Ext.Object.each(config, function(name, value) { + var nameMap = ExtClass.getConfigNameMap(name), + internalName = nameMap.internal, + initializedName = nameMap.initialized, + applyName = nameMap.apply, + updateName = nameMap.update, + setName = nameMap.set, + getName = nameMap.get, + hasOwnSetter = (setName in prototype) || data.hasOwnProperty(setName), + hasOwnApplier = (applyName in prototype) || data.hasOwnProperty(applyName), + hasOwnUpdater = (updateName in prototype) || data.hasOwnProperty(updateName), + optimizedGetter, customGetter; + + if (value === null || (!hasOwnSetter && !hasOwnApplier && !hasOwnUpdater)) { + prototype[internalName] = value; + prototype[initializedName] = true; + } + else { + prototype[initializedName] = false; + } + + if (!hasOwnSetter) { + data[setName] = function(value) { + var oldValue = this[internalName], + applier = this[applyName], + updater = this[updateName]; + + if (!this[initializedName]) { + this[initializedName] = true; + } + + if (applier) { + value = applier.call(this, value, oldValue); + } + + if (typeof value != 'undefined') { + this[internalName] = value; + + if (updater && value !== oldValue) { + updater.call(this, value, oldValue); + } + } + + return this; + }; + } + + if (!(getName in prototype) || data.hasOwnProperty(getName)) { + customGetter = data[getName] || false; + + if (customGetter) { + optimizedGetter = function() { + return customGetter.apply(this, arguments); + }; + } + else { + optimizedGetter = function() { + return this[internalName]; + }; + } + + data[getName] = function() { + var currentGetter; + + if (!this[initializedName]) { + this[initializedName] = true; + this[setName](this.config[name]); + } + + currentGetter = this[getName]; + + if ('$previous' in currentGetter) { + currentGetter.$previous = optimizedGetter; + } + else { + this[getName] = optimizedGetter; + } + + return optimizedGetter.apply(this, arguments); + }; + } + }); + + Class.addConfig(config, true); + }); + + + ExtClass.registerPreprocessor('mixins', function(Class, data, hooks) { + + var mixins = data.mixins, + name, mixin, i, ln; + + delete data.mixins; + + Ext.Function.interceptBefore(hooks, 'onCreated', function() { + + if (mixins instanceof Array) { + for (i = 0,ln = mixins.length; i < ln; i++) { + mixin = mixins[i]; + name = mixin.prototype.mixinId || mixin.$className; + + Class.mixin(name, mixin); + } + } + else { + for (var mixinName in mixins) { + if (mixins.hasOwnProperty(mixinName)) { + Class.mixin(mixinName, mixins[mixinName]); + } + } + } + }); + }); + + + Ext.extend = function(Class, Parent, members) { + + if (arguments.length === 2 && Ext.isObject(Parent)) { + members = Parent; + Parent = Class; + Class = null; + } + + var cls; + + if (!Parent) { + throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page."); + } + + members.extend = Parent; + members.preprocessors = [ + 'extend' + ,'statics' + ,'inheritableStatics' + ,'mixins' + ,'config' + ]; + + if (Class) { + cls = new ExtClass(Class, members); + + cls.prototype.constructor = Class; + } else { + cls = new ExtClass(members); + } + + cls.prototype.override = function(o) { + for (var m in o) { + if (o.hasOwnProperty(m)) { + this[m] = o[m]; + } + } + }; + + return cls; + }; +}()); + + + + + + +(function(Class, alias, arraySlice, arrayFrom, global) { + + + function makeCtor () { + function constructor () { + + + return this.constructor.apply(this, arguments) || null; + } + return constructor; + } + + var Manager = Ext.ClassManager = { + + + classes: {}, + + + existCache: {}, + + + namespaceRewrites: [{ + from: 'Ext.', + to: Ext + }], + + + maps: { + alternateToName: {}, + aliasToName: {}, + nameToAliases: {}, + nameToAlternates: {} + }, + + + enableNamespaceParseCache: true, + + + namespaceParseCache: {}, + + + instantiators: [], + + + isCreated: function(className) { + var existCache = this.existCache, + i, ln, part, root, parts; + + + if (this.classes[className] || existCache[className]) { + return true; + } + + root = global; + parts = this.parseNamespace(className); + + for (i = 0, ln = parts.length; i < ln; i++) { + part = parts[i]; + + if (typeof part != 'string') { + root = part; + } else { + if (!root || !root[part]) { + return false; + } + + root = root[part]; + } + } + + existCache[className] = true; + + this.triggerCreated(className); + + return true; + }, + + + createdListeners: [], + + + nameCreatedListeners: {}, + + + triggerCreated: function(className) { + var listeners = this.createdListeners, + nameListeners = this.nameCreatedListeners, + alternateNames = this.maps.nameToAlternates[className], + names = [className], + i, ln, j, subLn, listener, name; + + for (i = 0,ln = listeners.length; i < ln; i++) { + listener = listeners[i]; + listener.fn.call(listener.scope, className); + } + + if (alternateNames) { + names.push.apply(names, alternateNames); + } + + for (i = 0,ln = names.length; i < ln; i++) { + name = names[i]; + listeners = nameListeners[name]; + + if (listeners) { + for (j = 0,subLn = listeners.length; j < subLn; j++) { + listener = listeners[j]; + listener.fn.call(listener.scope, name); + } + delete nameListeners[name]; + } + } + }, + + + onCreated: function(fn, scope, className) { + + var listeners = this.createdListeners, + nameListeners = this.nameCreatedListeners, + listener = { + fn: fn, + scope: scope + }; + + if (className) { + if (this.isCreated(className)) { + fn.call(scope, className); + return; + } + + if (!nameListeners[className]) { + nameListeners[className] = []; + } + + nameListeners[className].push(listener); + } + else { + listeners.push(listener); + } + }, + + + parseNamespace: function(namespace) { + + var cache = this.namespaceParseCache, + parts, + rewrites, + root, + name, + rewrite, from, to, i, ln; + + if (this.enableNamespaceParseCache) { + if (cache.hasOwnProperty(namespace)) { + return cache[namespace]; + } + } + + parts = []; + rewrites = this.namespaceRewrites; + root = global; + name = namespace; + + for (i = 0, ln = rewrites.length; i < ln; i++) { + rewrite = rewrites[i]; + from = rewrite.from; + to = rewrite.to; + + if (name === from || name.substring(0, from.length) === from) { + name = name.substring(from.length); + + if (typeof to != 'string') { + root = to; + } else { + parts = parts.concat(to.split('.')); + } + + break; + } + } + + parts.push(root); + + parts = parts.concat(name.split('.')); + + if (this.enableNamespaceParseCache) { + cache[namespace] = parts; + } + + return parts; + }, + + + setNamespace: function(name, value) { + var root = global, + parts = this.parseNamespace(name), + ln = parts.length - 1, + leaf = parts[ln], + i, part; + + for (i = 0; i < ln; i++) { + part = parts[i]; + + if (typeof part != 'string') { + root = part; + } else { + if (!root[part]) { + root[part] = {}; + } + + root = root[part]; + } + } + + root[leaf] = value; + + return root[leaf]; + }, + + + createNamespaces: function() { + var root = global, + parts, part, i, j, ln, subLn; + + for (i = 0, ln = arguments.length; i < ln; i++) { + parts = this.parseNamespace(arguments[i]); + + for (j = 0, subLn = parts.length; j < subLn; j++) { + part = parts[j]; + + if (typeof part != 'string') { + root = part; + } else { + if (!root[part]) { + root[part] = {}; + } + + root = root[part]; + } + } + } + + return root; + }, + + + set: function(name, value) { + var me = this, + maps = me.maps, + nameToAlternates = maps.nameToAlternates, + targetName = me.getName(value), + alternates; + + me.classes[name] = me.setNamespace(name, value); + + if (targetName && targetName !== name) { + maps.alternateToName[name] = targetName; + alternates = nameToAlternates[targetName] || (nameToAlternates[targetName] = []); + alternates.push(name); + } + + return this; + }, + + + get: function(name) { + var classes = this.classes, + root, + parts, + part, i, ln; + + if (classes[name]) { + return classes[name]; + } + + root = global; + parts = this.parseNamespace(name); + + for (i = 0, ln = parts.length; i < ln; i++) { + part = parts[i]; + + if (typeof part != 'string') { + root = part; + } else { + if (!root || !root[part]) { + return null; + } + + root = root[part]; + } + } + + return root; + }, + + + setAlias: function(cls, alias) { + var aliasToNameMap = this.maps.aliasToName, + nameToAliasesMap = this.maps.nameToAliases, + className; + + if (typeof cls == 'string') { + className = cls; + } else { + className = this.getName(cls); + } + + if (alias && aliasToNameMap[alias] !== className) { + + aliasToNameMap[alias] = className; + } + + if (!nameToAliasesMap[className]) { + nameToAliasesMap[className] = []; + } + + if (alias) { + Ext.Array.include(nameToAliasesMap[className], alias); + } + + return this; + }, + + + addNameAliasMappings: function(aliases){ + var aliasToNameMap = this.maps.aliasToName, + nameToAliasesMap = this.maps.nameToAliases, + className, aliasList, alias, i; + + for (className in aliases) { + aliasList = nameToAliasesMap[className] || + (nameToAliasesMap[className] = []); + + for (i = 0; i < aliases[className].length; i++) { + alias = aliases[className][i]; + if (!aliasToNameMap[alias]) { + aliasToNameMap[alias] = className; + aliasList.push(alias); + } + } + + } + return this; + }, + + + addNameAlternateMappings: function(alternates) { + var alternateToName = this.maps.alternateToName, + nameToAlternates = this.maps.nameToAlternates, + className, aliasList, alternate, i; + + for (className in alternates) { + aliasList = nameToAlternates[className] || + (nameToAlternates[className] = []); + + for (i = 0; i < alternates[className].length; i++) { + alternate = alternates[className][i]; + if (!alternateToName[alternate]) { + alternateToName[alternate] = className; + aliasList.push(alternate); + } + } + + } + return this; + }, + + + getByAlias: function(alias) { + return this.get(this.getNameByAlias(alias)); + }, + + + getNameByAlias: function(alias) { + return this.maps.aliasToName[alias] || ''; + }, + + + getNameByAlternate: function(alternate) { + return this.maps.alternateToName[alternate] || ''; + }, + + + getAliasesByName: function(name) { + return this.maps.nameToAliases[name] || []; + }, + + + getName: function(object) { + return object && object.$className || ''; + }, + + + getClass: function(object) { + return object && object.self || null; + }, + + + create: function(className, data, createdFn) { + + var ctor = makeCtor(); + if (typeof data == 'function') { + data = data(ctor); + } + + + data.$className = className; + + return new Class(ctor, data, function() { + var postprocessorStack = data.postprocessors || Manager.defaultPostprocessors, + registeredPostprocessors = Manager.postprocessors, + postprocessors = [], + postprocessor, i, ln, j, subLn, postprocessorProperties, postprocessorProperty; + + delete data.postprocessors; + + for (i = 0,ln = postprocessorStack.length; i < ln; i++) { + postprocessor = postprocessorStack[i]; + + if (typeof postprocessor == 'string') { + postprocessor = registeredPostprocessors[postprocessor]; + postprocessorProperties = postprocessor.properties; + + if (postprocessorProperties === true) { + postprocessors.push(postprocessor.fn); + } + else if (postprocessorProperties) { + for (j = 0,subLn = postprocessorProperties.length; j < subLn; j++) { + postprocessorProperty = postprocessorProperties[j]; + + if (data.hasOwnProperty(postprocessorProperty)) { + postprocessors.push(postprocessor.fn); + break; + } + } + } + } + else { + postprocessors.push(postprocessor); + } + } + + data.postprocessors = postprocessors; + data.createdFn = createdFn; + Manager.processCreate(className, this, data); + }); + }, + + processCreate: function(className, cls, clsData){ + var me = this, + postprocessor = clsData.postprocessors.shift(), + createdFn = clsData.createdFn; + + if (!postprocessor) { + + if (className) { + me.set(className, cls); + } + + if (createdFn) { + createdFn.call(cls, cls); + } + + if (className) { + me.triggerCreated(className); + } + return; + } + + if (postprocessor.call(me, className, cls, clsData, me.processCreate) !== false) { + me.processCreate(className, cls, clsData); + } + }, + + createOverride: function (className, data, createdFn) { + var me = this, + overriddenClassName = data.override, + requires = data.requires, + uses = data.uses, + classReady = function () { + var cls, temp; + + if (requires) { + temp = requires; + requires = null; + + + + + Ext.Loader.require(temp, classReady); + } else { + + + cls = me.get(overriddenClassName); + + + delete data.override; + delete data.requires; + delete data.uses; + + Ext.override(cls, data); + + + + + me.triggerCreated(className); + + if (uses) { + Ext.Loader.addUsedClasses(uses); + } + + if (createdFn) { + createdFn.call(cls); + } + } + }; + + me.existCache[className] = true; + + + me.onCreated(classReady, me, overriddenClassName); + + return me; + }, + + + instantiateByAlias: function() { + var alias = arguments[0], + args = arraySlice.call(arguments), + className = this.getNameByAlias(alias); + + if (!className) { + className = this.maps.aliasToName[alias]; + + + + Ext.syncRequire(className); + } + + args[0] = className; + + return this.instantiate.apply(this, args); + }, + + + instantiate: function() { + var name = arguments[0], + nameType = typeof name, + args = arraySlice.call(arguments, 1), + alias = name, + possibleName, cls; + + if (nameType != 'function') { + if (nameType != 'string' && args.length === 0) { + args = [name]; + name = name.xclass; + } + + + cls = this.get(name); + } + else { + cls = name; + } + + + if (!cls) { + possibleName = this.getNameByAlias(name); + + if (possibleName) { + name = possibleName; + + cls = this.get(name); + } + } + + + if (!cls) { + possibleName = this.getNameByAlternate(name); + + if (possibleName) { + name = possibleName; + + cls = this.get(name); + } + } + + + if (!cls) { + + Ext.syncRequire(name); + + cls = this.get(name); + } + + + return this.getInstantiator(args.length)(cls, args); + }, + + + dynInstantiate: function(name, args) { + args = arrayFrom(args, true); + args.unshift(name); + + return this.instantiate.apply(this, args); + }, + + + getInstantiator: function(length) { + var instantiators = this.instantiators, + instantiator, + i, + args; + + instantiator = instantiators[length]; + + if (!instantiator) { + i = length; + args = []; + + for (i = 0; i < length; i++) { + args.push('a[' + i + ']'); + } + + instantiator = instantiators[length] = new Function('c', 'a', 'return new c(' + args.join(',') + ')'); + } + + return instantiator; + }, + + + postprocessors: {}, + + + defaultPostprocessors: [], + + + registerPostprocessor: function(name, fn, properties, position, relativeTo) { + if (!position) { + position = 'last'; + } + + if (!properties) { + properties = [name]; + } + + this.postprocessors[name] = { + name: name, + properties: properties || false, + fn: fn + }; + + this.setDefaultPostprocessorPosition(name, position, relativeTo); + + return this; + }, + + + setDefaultPostprocessors: function(postprocessors) { + this.defaultPostprocessors = arrayFrom(postprocessors); + + return this; + }, + + + setDefaultPostprocessorPosition: function(name, offset, relativeName) { + var defaultPostprocessors = this.defaultPostprocessors, + index; + + if (typeof offset == 'string') { + if (offset === 'first') { + defaultPostprocessors.unshift(name); + + return this; + } + else if (offset === 'last') { + defaultPostprocessors.push(name); + + return this; + } + + offset = (offset === 'after') ? 1 : -1; + } + + index = Ext.Array.indexOf(defaultPostprocessors, relativeName); + + if (index !== -1) { + Ext.Array.splice(defaultPostprocessors, Math.max(0, index + offset), 0, name); + } + + return this; + }, + + + getNamesByExpression: function(expression) { + var nameToAliasesMap = this.maps.nameToAliases, + names = [], + name, alias, aliases, possibleName, regex, i, ln; + + + if (expression.indexOf('*') !== -1) { + expression = expression.replace(/\*/g, '(.*?)'); + regex = new RegExp('^' + expression + '$'); + + for (name in nameToAliasesMap) { + if (nameToAliasesMap.hasOwnProperty(name)) { + aliases = nameToAliasesMap[name]; + + if (name.search(regex) !== -1) { + names.push(name); + } + else { + for (i = 0, ln = aliases.length; i < ln; i++) { + alias = aliases[i]; + + if (alias.search(regex) !== -1) { + names.push(name); + break; + } + } + } + } + } + + } else { + possibleName = this.getNameByAlias(expression); + + if (possibleName) { + names.push(possibleName); + } else { + possibleName = this.getNameByAlternate(expression); + + if (possibleName) { + names.push(possibleName); + } else { + names.push(expression); + } + } + } + + return names; + } + }; + + + Manager.registerPostprocessor('alias', function(name, cls, data) { + + var aliases = data.alias, + i, ln; + + for (i = 0,ln = aliases.length; i < ln; i++) { + alias = aliases[i]; + + this.setAlias(cls, alias); + } + + }, ['xtype', 'alias']); + + + Manager.registerPostprocessor('singleton', function(name, cls, data, fn) { + + if (data.singleton) { + fn.call(this, name, new cls(), data); + } + else { + return true; + } + return false; + }); + + + Manager.registerPostprocessor('alternateClassName', function(name, cls, data) { + + var alternates = data.alternateClassName, + i, ln, alternate; + + if (!(alternates instanceof Array)) { + alternates = [alternates]; + } + + for (i = 0, ln = alternates.length; i < ln; i++) { + alternate = alternates[i]; + + + this.set(alternate, cls); + } + }); + + Ext.apply(Ext, { + + create: alias(Manager, 'instantiate'), + + + widget: function(name, config) { + + + + + + + + var xtype = name, + alias, className, T, load; + + if (typeof xtype != 'string') { + + config = name; + xtype = config.xtype; + } else { + config = config || {}; + } + + if (config.isComponent) { + return config; + } + + alias = 'widget.' + xtype; + className = Manager.getNameByAlias(alias); + + + if (!className) { + load = true; + } + + T = Manager.get(className); + if (load || !T) { + return Manager.instantiateByAlias(alias, config); + } + return new T(config); + }, + + + createByAlias: alias(Manager, 'instantiateByAlias'), + + + define: function (className, data, createdFn) { + + if (data.override) { + return Manager.createOverride.apply(Manager, arguments); + } + + return Manager.create.apply(Manager, arguments); + }, + + + undefine: function(className) { + + var classes = Manager.classes, + maps = Manager.maps, + aliasToName = maps.aliasToName, + nameToAliases = maps.nameToAliases, + alternateToName = maps.alternateToName, + nameToAlternates = maps.nameToAlternates, + aliases = nameToAliases[className], + alternates = nameToAlternates[className], + parts, partCount, namespace, i; + + delete Manager.namespaceParseCache[className]; + delete nameToAliases[className]; + delete nameToAlternates[className]; + delete classes[className]; + + if (aliases) { + for (i = aliases.length; i--;) { + delete aliasToName[aliases[i]]; + } + } + + if (alternates) { + for (i = alternates.length; i--; ) { + delete alternateToName[alternates[i]]; + } + } + + parts = Manager.parseNamespace(className); + partCount = parts.length - 1; + namespace = parts[0]; + + for (i = 1; i < partCount; i++) { + namespace = namespace[parts[i]]; + if (!namespace) { + return; + } + } + + + try { + delete namespace[parts[partCount]]; + } + catch (e) { + namespace[parts[partCount]] = undefined; + } + }, + + + getClassName: alias(Manager, 'getName'), + + + getDisplayName: function(object) { + if (object) { + if (object.displayName) { + return object.displayName; + } + + if (object.$name && object.$class) { + return Ext.getClassName(object.$class) + '#' + object.$name; + } + + if (object.$className) { + return object.$className; + } + } + + return 'Anonymous'; + }, + + + getClass: alias(Manager, 'getClass'), + + + namespace: alias(Manager, 'createNamespaces') + }); + + + Ext.createWidget = Ext.widget; + + + Ext.ns = Ext.namespace; + + Class.registerPreprocessor('className', function(cls, data) { + if (data.$className) { + cls.$className = data.$className; + } + + }, true, 'first'); + + Class.registerPreprocessor('alias', function(cls, data) { + + var prototype = cls.prototype, + xtypes = arrayFrom(data.xtype), + aliases = arrayFrom(data.alias), + widgetPrefix = 'widget.', + widgetPrefixLength = widgetPrefix.length, + xtypesChain = Array.prototype.slice.call(prototype.xtypesChain || []), + xtypesMap = Ext.merge({}, prototype.xtypesMap || {}), + i, ln, alias, xtype; + + for (i = 0,ln = aliases.length; i < ln; i++) { + alias = aliases[i]; + + + if (alias.substring(0, widgetPrefixLength) === widgetPrefix) { + xtype = alias.substring(widgetPrefixLength); + Ext.Array.include(xtypes, xtype); + } + } + + cls.xtype = data.xtype = xtypes[0]; + data.xtypes = xtypes; + + for (i = 0,ln = xtypes.length; i < ln; i++) { + xtype = xtypes[i]; + + if (!xtypesMap[xtype]) { + xtypesMap[xtype] = true; + xtypesChain.push(xtype); + } + } + + data.xtypesChain = xtypesChain; + data.xtypesMap = xtypesMap; + + Ext.Function.interceptAfter(data, 'onClassCreated', function() { + + var mixins = prototype.mixins, + key, mixin; + + for (key in mixins) { + if (mixins.hasOwnProperty(key)) { + mixin = mixins[key]; + + xtypes = mixin.xtypes; + + if (xtypes) { + for (i = 0,ln = xtypes.length; i < ln; i++) { + xtype = xtypes[i]; + + if (!xtypesMap[xtype]) { + xtypesMap[xtype] = true; + xtypesChain.push(xtype); + } + } + } + } + } + }); + + for (i = 0,ln = xtypes.length; i < ln; i++) { + xtype = xtypes[i]; + + + Ext.Array.include(aliases, widgetPrefix + xtype); + } + + data.alias = aliases; + + }, ['xtype', 'alias']); + +}(Ext.Class, Ext.Function.alias, Array.prototype.slice, Ext.Array.from, Ext.global)); + + + +if (Ext._alternatesMetadata) { + Ext.ClassManager.addNameAlternateMappings(Ext._alternatesMetadata); + Ext._alternatesMetadata = null; +} + +if (Ext._aliasMetadata) { + Ext.ClassManager.addNameAliasMappings(Ext._aliasMetadata); + Ext._aliasMetadata = null; +} + + + + + + + +Ext.Loader = new function() { + var Loader = this, + Manager = Ext.ClassManager, + Class = Ext.Class, + flexSetter = Ext.Function.flexSetter, + alias = Ext.Function.alias, + pass = Ext.Function.pass, + defer = Ext.Function.defer, + arrayErase = Ext.Array.erase, + dependencyProperties = ['extend', 'mixins', 'requires'], + isInHistory = {}, + history = [], + slashDotSlashRe = /\/\.\//g, + dotRe = /\./g, + setPathCount = 0; + + Ext.apply(Loader, { + + + isInHistory: isInHistory, + + + history: history, + + + config: { + + enabled: false, + + + scriptChainDelay : false, + + + disableCaching: true, + + + disableCachingParam: '_dc', + + + garbageCollect : false, + + + paths: { + 'Ext': '.' + }, + + + preserveScripts : true, + + + scriptCharset : undefined + }, + + + setConfig: function(name, value) { + if (Ext.isObject(name) && arguments.length === 1) { + Ext.merge(Loader.config, name); + + if ('paths' in name) { + Ext.app.collectNamespaces(name.paths); + } + } + else { + Loader.config[name] = (Ext.isObject(value)) ? Ext.merge(Loader.config[name], value) : value; + + if (name === 'paths') { + Ext.app.collectNamespaces(value); + } + } + + return Loader; + }, + + + getConfig: function(name) { + if (name) { + return Loader.config[name]; + } + + return Loader.config; + }, + + + setPath: flexSetter(function(name, path) { + Loader.config.paths[name] = path; + Ext.app.namespaces[name] = true; + setPathCount++; + + return Loader; + }), + + + addClassPathMappings: function(paths) { + var name; + + if(setPathCount == 0){ + Loader.config.paths = paths; + } else { + for(name in paths){ + Loader.config.paths[name] = paths[name]; + } + } + setPathCount++; + return Loader; + }, + + + getPath: function(className) { + var path = '', + paths = Loader.config.paths, + prefix = Loader.getPrefix(className); + + if (prefix.length > 0) { + if (prefix === className) { + return paths[prefix]; + } + + path = paths[prefix]; + className = className.substring(prefix.length + 1); + } + + if (path.length > 0) { + path += '/'; + } + + return path.replace(slashDotSlashRe, '/') + className.replace(dotRe, "/") + '.js'; + }, + + + getPrefix: function(className) { + var paths = Loader.config.paths, + prefix, deepestPrefix = ''; + + if (paths.hasOwnProperty(className)) { + return className; + } + + for (prefix in paths) { + if (paths.hasOwnProperty(prefix) && prefix + '.' === className.substring(0, prefix.length + 1)) { + if (prefix.length > deepestPrefix.length) { + deepestPrefix = prefix; + } + } + } + + return deepestPrefix; + }, + + + isAClassNameWithAKnownPrefix: function(className) { + var prefix = Loader.getPrefix(className); + + + return prefix !== '' && prefix !== className; + }, + + + require: function(expressions, fn, scope, excludes) { + if (fn) { + fn.call(scope); + } + }, + + + syncRequire: function() {}, + + + exclude: function(excludes) { + return { + require: function(expressions, fn, scope) { + return Loader.require(expressions, fn, scope, excludes); + }, + + syncRequire: function(expressions, fn, scope) { + return Loader.syncRequire(expressions, fn, scope, excludes); + } + }; + }, + + + onReady: function(fn, scope, withDomReady, options) { + var oldFn; + + if (withDomReady !== false && Ext.onDocumentReady) { + oldFn = fn; + + fn = function() { + Ext.onDocumentReady(oldFn, scope, options); + }; + } + + fn.call(scope); + } + }); + + var queue = [], + isClassFileLoaded = {}, + isFileLoaded = {}, + classNameToFilePathMap = {}, + scriptElements = {}, + readyListeners = [], + usedClasses = [], + requiresMap = {}, + comparePriority = function(listenerA, listenerB) { + return listenerB.priority - listenerA.priority; + }; + + Ext.apply(Loader, { + + documentHead: typeof document != 'undefined' && (document.head || document.getElementsByTagName('head')[0]), + + + isLoading: false, + + + queue: queue, + + + isClassFileLoaded: isClassFileLoaded, + + + isFileLoaded: isFileLoaded, + + + readyListeners: readyListeners, + + + optionalRequires: usedClasses, + + + requiresMap: requiresMap, + + + numPendingFiles: 0, + + + numLoadedFiles: 0, + + + hasFileLoadError: false, + + + classNameToFilePathMap: classNameToFilePathMap, + + + scriptsLoading: 0, + + + syncModeEnabled: false, + + scriptElements: scriptElements, + + + refreshQueue: function() { + var ln = queue.length, + i, item, j, requires; + + + + if (!ln && !Loader.scriptsLoading) { + return Loader.triggerReady(); + } + + for (i = 0; i < ln; i++) { + item = queue[i]; + + if (item) { + requires = item.requires; + + + + if (requires.length > Loader.numLoadedFiles) { + continue; + } + + + for (j = 0; j < requires.length; ) { + if (Manager.isCreated(requires[j])) { + + arrayErase(requires, j, 1); + } + else { + j++; + } + } + + + if (item.requires.length === 0) { + arrayErase(queue, i, 1); + item.callback.call(item.scope); + Loader.refreshQueue(); + break; + } + } + } + + return Loader; + }, + + + injectScriptElement: function(url, onLoad, onError, scope, charset) { + var script = document.createElement('script'), + dispatched = false, + config = Loader.config, + onLoadFn = function() { + + if(!dispatched) { + dispatched = true; + script.onload = script.onreadystatechange = script.onerror = null; + if (typeof config.scriptChainDelay == 'number') { + + defer(onLoad, config.scriptChainDelay, scope); + } else { + onLoad.call(scope); + } + Loader.cleanupScriptElement(script, config.preserveScripts === false, config.garbageCollect); + } + + }, + onErrorFn = function(arg) { + defer(onError, 1, scope); + Loader.cleanupScriptElement(script, config.preserveScripts === false, config.garbageCollect); + }; + + script.type = 'text/javascript'; + script.onerror = onErrorFn; + charset = charset || config.scriptCharset; + if (charset) { + script.charset = charset; + } + + + if ('addEventListener' in script ) { + script.onload = onLoadFn; + } else if ('readyState' in script) { + script.onreadystatechange = function() { + if ( this.readyState == 'loaded' || this.readyState == 'complete' ) { + onLoadFn(); + } + }; + } else { + script.onload = onLoadFn; + } + + script.src = url; + (Loader.documentHead || document.getElementsByTagName('head')[0]).appendChild(script); + + return script; + }, + + + removeScriptElement: function(url) { + if (scriptElements[url]) { + Loader.cleanupScriptElement(scriptElements[url], true, !!Loader.getConfig('garbageCollect')); + delete scriptElements[url]; + } + + return Loader; + }, + + + cleanupScriptElement: function(script, remove, collect) { + var prop; + script.onload = script.onreadystatechange = script.onerror = null; + if (remove) { + Ext.removeNode(script); + if (collect) { + for (prop in script) { + try { + if (prop != 'src') { + + + script[prop] = null; + } + delete script[prop]; + } catch (cleanEx) { + + } + } + } + } + + return Loader; + }, + + + loadScript: function (options) { + var config = Loader.getConfig(), + isString = typeof options == 'string', + url = isString ? options : options.url, + onError = !isString && options.onError, + onLoad = !isString && options.onLoad, + scope = !isString && options.scope, + onScriptError = function() { + Loader.numPendingFiles--; + Loader.scriptsLoading--; + + if (onError) { + onError.call(scope, "Failed loading '" + url + "', please verify that the file exists"); + } + + if (Loader.numPendingFiles + Loader.scriptsLoading === 0) { + Loader.refreshQueue(); + } + }, + onScriptLoad = function () { + Loader.numPendingFiles--; + Loader.scriptsLoading--; + + if (onLoad) { + onLoad.call(scope); + } + + if (Loader.numPendingFiles + Loader.scriptsLoading === 0) { + Loader.refreshQueue(); + } + }, + src; + + Loader.isLoading = true; + Loader.numPendingFiles++; + Loader.scriptsLoading++; + + src = config.disableCaching ? + (url + '?' + config.disableCachingParam + '=' + Ext.Date.now()) : url; + + scriptElements[url] = Loader.injectScriptElement(src, onScriptLoad, onScriptError); + }, + + + loadScriptFile: function(url, onLoad, onError, scope, synchronous) { + if (isFileLoaded[url]) { + return Loader; + } + + var config = Loader.getConfig(), + noCacheUrl = url + (config.disableCaching ? ('?' + config.disableCachingParam + '=' + Ext.Date.now()) : ''), + isCrossOriginRestricted = false, + xhr, status, onScriptError, + debugSourceURL = ""; + + scope = scope || Loader; + + Loader.isLoading = true; + + if (!synchronous) { + onScriptError = function() { + }; + + scriptElements[url] = Loader.injectScriptElement(noCacheUrl, onLoad, onScriptError, scope); + } else { + if (typeof XMLHttpRequest != 'undefined') { + xhr = new XMLHttpRequest(); + } else { + xhr = new ActiveXObject('Microsoft.XMLHTTP'); + } + + try { + xhr.open('GET', noCacheUrl, false); + xhr.send(null); + } catch (e) { + isCrossOriginRestricted = true; + } + + status = (xhr.status === 1223) ? 204 : + (xhr.status === 0 && ((self.location || {}).protocol == 'file:' || (self.location || {}).protocol == 'ionp:')) ? 200 : xhr.status; + + isCrossOriginRestricted = isCrossOriginRestricted || (status === 0); + + if (isCrossOriginRestricted + ) { + } + else if ((status >= 200 && status < 300) || (status === 304) + ) { + + + if (!Ext.isIE) { + debugSourceURL = "\n//@ sourceURL=" + url; + } + + Ext.globalEval(xhr.responseText + debugSourceURL); + + onLoad.call(scope); + } + else { + } + + + xhr = null; + } + }, + + + syncRequire: function() { + var syncModeEnabled = Loader.syncModeEnabled; + + if (!syncModeEnabled) { + Loader.syncModeEnabled = true; + } + + Loader.require.apply(Loader, arguments); + + if (!syncModeEnabled) { + Loader.syncModeEnabled = false; + } + + Loader.refreshQueue(); + }, + + + require: function(expressions, fn, scope, excludes) { + var excluded = {}, + included = {}, + excludedClassNames = [], + possibleClassNames = [], + classNames = [], + references = [], + callback, + syncModeEnabled, + filePath, expression, exclude, className, + possibleClassName, i, j, ln, subLn; + + if (excludes) { + + excludes = (typeof excludes === 'string') ? [ excludes ] : excludes; + + for (i = 0,ln = excludes.length; i < ln; i++) { + exclude = excludes[i]; + + if (typeof exclude == 'string' && exclude.length > 0) { + excludedClassNames = Manager.getNamesByExpression(exclude); + + for (j = 0,subLn = excludedClassNames.length; j < subLn; j++) { + excluded[excludedClassNames[j]] = true; + } + } + } + } + + + expressions = (typeof expressions === 'string') ? [ expressions ] : (expressions ? expressions : []); + + if (fn) { + if (fn.length > 0) { + callback = function() { + var classes = [], + i, ln; + + for (i = 0,ln = references.length; i < ln; i++) { + classes.push(Manager.get(references[i])); + } + + return fn.apply(this, classes); + }; + } + else { + callback = fn; + } + } + else { + callback = Ext.emptyFn; + } + + scope = scope || Ext.global; + + for (i = 0,ln = expressions.length; i < ln; i++) { + expression = expressions[i]; + + if (typeof expression == 'string' && expression.length > 0) { + possibleClassNames = Manager.getNamesByExpression(expression); + subLn = possibleClassNames.length; + + for (j = 0; j < subLn; j++) { + possibleClassName = possibleClassNames[j]; + + if (excluded[possibleClassName] !== true) { + references.push(possibleClassName); + + if (!Manager.isCreated(possibleClassName) && !included[possibleClassName]) { + included[possibleClassName] = true; + classNames.push(possibleClassName); + } + } + } + } + } + + + + if (classNames.length > 0) { + if (!Loader.config.enabled) { + throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. " + + "Missing required class" + ((classNames.length > 1) ? "es" : "") + ": " + classNames.join(', ')); + } + } + else { + callback.call(scope); + return Loader; + } + + syncModeEnabled = Loader.syncModeEnabled; + + if (!syncModeEnabled) { + queue.push({ + requires: classNames.slice(), + + callback: callback, + scope: scope + }); + } + + ln = classNames.length; + + for (i = 0; i < ln; i++) { + className = classNames[i]; + + filePath = Loader.getPath(className); + + + + + if (syncModeEnabled && isClassFileLoaded.hasOwnProperty(className)) { + if (!isClassFileLoaded[className]) { + Loader.numPendingFiles--; + Loader.removeScriptElement(filePath); + delete isClassFileLoaded[className]; + } + } + + if (!isClassFileLoaded.hasOwnProperty(className)) { + isClassFileLoaded[className] = false; + classNameToFilePathMap[className] = filePath; + + Loader.numPendingFiles++; + Loader.loadScriptFile( + filePath, + pass(Loader.onFileLoaded, [className, filePath], Loader), + pass(Loader.onFileLoadError, [className, filePath], Loader), + Loader, + syncModeEnabled + ); + } + } + + if (syncModeEnabled) { + callback.call(scope); + + if (ln === 1) { + return Manager.get(className); + } + } + + return Loader; + }, + + + onFileLoaded: function(className, filePath) { + var loaded = isClassFileLoaded[className]; + Loader.numLoadedFiles++; + + isClassFileLoaded[className] = true; + isFileLoaded[filePath] = true; + + + + if (!loaded) { + Loader.numPendingFiles--; + } + + if (Loader.numPendingFiles === 0) { + Loader.refreshQueue(); + } + + }, + + + onFileLoadError: function(className, filePath, errorMessage, isSynchronous) { + Loader.numPendingFiles--; + Loader.hasFileLoadError = true; + + }, + + + addUsedClasses: function (classes) { + var cls, i, ln; + + if (classes) { + classes = (typeof classes == 'string') ? [classes] : classes; + for (i = 0, ln = classes.length; i < ln; i++) { + cls = classes[i]; + if (typeof cls == 'string' && !Ext.Array.contains(usedClasses, cls)) { + usedClasses.push(cls); + } + } + } + + return Loader; + }, + + + triggerReady: function() { + var listener, + refClasses = usedClasses; + + if (Loader.isLoading) { + Loader.isLoading = false; + + if (refClasses.length !== 0) { + + refClasses = refClasses.slice(); + usedClasses.length = 0; + + + Loader.require(refClasses, Loader.triggerReady, Loader); + return Loader; + } + } + + Ext.Array.sort(readyListeners, comparePriority); + + + + + while (readyListeners.length && !Loader.isLoading) { + + + listener = readyListeners.shift(); + listener.fn.call(listener.scope); + } + + return Loader; + }, + + + onReady: function(fn, scope, withDomReady, options) { + var oldFn; + + if (withDomReady !== false && Ext.onDocumentReady) { + oldFn = fn; + + fn = function() { + Ext.onDocumentReady(oldFn, scope, options); + }; + } + + if (!Loader.isLoading) { + fn.call(scope); + } + else { + readyListeners.push({ + fn: fn, + scope: scope, + priority: (options && options.priority) || 0 + }); + } + }, + + + historyPush: function(className) { + if (className && isClassFileLoaded.hasOwnProperty(className) && !isInHistory[className]) { + isInHistory[className] = true; + history.push(className); + } + return Loader; + } + }); + + + Ext.disableCacheBuster = function (disable, path) { + var date = new Date(); + date.setTime(date.getTime() + (disable ? 10*365 : -1) * 24*60*60*1000); + date = date.toGMTString(); + document.cookie = 'ext-cache=1; expires=' + date + '; path='+(path || '/'); + }; + + + + Ext.require = alias(Loader, 'require'); + + + Ext.syncRequire = alias(Loader, 'syncRequire'); + + + Ext.exclude = alias(Loader, 'exclude'); + + + Ext.onReady = function(fn, scope, options) { + Loader.onReady(fn, scope, true, options); + }; + + + Class.registerPreprocessor('loader', function(cls, data, hooks, continueFn) { + + var me = this, + dependencies = [], + dependency, + className = Manager.getName(cls), + i, j, ln, subLn, value, propertyName, propertyValue, + requiredMap, requiredDep; + + + + for (i = 0,ln = dependencyProperties.length; i < ln; i++) { + propertyName = dependencyProperties[i]; + + if (data.hasOwnProperty(propertyName)) { + propertyValue = data[propertyName]; + + if (typeof propertyValue == 'string') { + dependencies.push(propertyValue); + } + else if (propertyValue instanceof Array) { + for (j = 0, subLn = propertyValue.length; j < subLn; j++) { + value = propertyValue[j]; + + if (typeof value == 'string') { + dependencies.push(value); + } + } + } + else if (typeof propertyValue != 'function') { + for (j in propertyValue) { + if (propertyValue.hasOwnProperty(j)) { + value = propertyValue[j]; + + if (typeof value == 'string') { + dependencies.push(value); + } + } + } + } + } + } + + if (dependencies.length === 0) { + return; + } + + + Loader.require(dependencies, function() { + for (i = 0,ln = dependencyProperties.length; i < ln; i++) { + propertyName = dependencyProperties[i]; + + if (data.hasOwnProperty(propertyName)) { + propertyValue = data[propertyName]; + + if (typeof propertyValue == 'string') { + data[propertyName] = Manager.get(propertyValue); + } + else if (propertyValue instanceof Array) { + for (j = 0, subLn = propertyValue.length; j < subLn; j++) { + value = propertyValue[j]; + + if (typeof value == 'string') { + data[propertyName][j] = Manager.get(value); + } + } + } + else if (typeof propertyValue != 'function') { + for (var k in propertyValue) { + if (propertyValue.hasOwnProperty(k)) { + value = propertyValue[k]; + + if (typeof value == 'string') { + data[propertyName][k] = Manager.get(value); + } + } + } + } + } + } + + continueFn.call(me, cls, data, hooks); + }); + + return false; + }, true, 'after', 'className'); + + + Manager.registerPostprocessor('uses', function(name, cls, data) { + + var uses = data.uses; + if (uses) { + Loader.addUsedClasses(uses); + } + }); + + Manager.onCreated(Loader.historyPush); +}; + + + +if (Ext._classPathMetadata) { + Ext.Loader.addClassPathMappings(Ext._classPathMetadata); + Ext._classPathMetadata = null; +} + + +(function() { + var scripts = document.getElementsByTagName('script'), + currentScript = scripts[scripts.length - 1], + src = currentScript.src, + path = src.substring(0, src.lastIndexOf('/') + 1), + Loader = Ext.Loader; + + + Loader.setConfig({ + enabled: true, + disableCaching: + true, + paths: { + 'Ext': path + 'src' + } + }); +})(); + + + +Ext._endTime = new Date().getTime(); +if (Ext._beforereadyhandler){ + Ext._beforereadyhandler(); +} + + + + + + +Ext.Error = Ext.extend(Error, { + statics: { + + ignore: false, + + + + + + raise: function(err){ + err = err || {}; + if (Ext.isString(err)) { + err = { msg: err }; + } + + var method = this.raise.caller, + msg; + + if (method) { + if (method.$name) { + err.sourceMethod = method.$name; + } + if (method.$owner) { + err.sourceClass = method.$owner.$className; + } + } + + if (Ext.Error.handle(err) !== true) { + msg = Ext.Error.prototype.toString.call(err); + + Ext.log({ + msg: msg, + level: 'error', + dump: err, + stack: true + }); + + throw new Ext.Error(err); + } + }, + + + handle: function(){ + return Ext.Error.ignore; + } + }, + + + name: 'Ext.Error', + + + constructor: function(config){ + if (Ext.isString(config)) { + config = { msg: config }; + } + + var me = this; + + Ext.apply(me, config); + + me.message = me.message || me.msg; + + }, + + + toString: function(){ + var me = this, + className = me.sourceClass ? me.sourceClass : '', + methodName = me.sourceMethod ? '.' + me.sourceMethod + '(): ' : '', + msg = me.msg || '(No description provided)'; + + return className + methodName + msg; + } +}); + + +Ext.deprecated = function (suggestion) { + return Ext.emptyFn; +}; + + + + + + + + +Ext.JSON = (new(function() { + var me = this, + encodingFunction, + decodingFunction, + useNative = null, + useHasOwn = !! {}.hasOwnProperty, + isNative = 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, newline) { + + if (o === null || o === undefined) { + return "null"; + } else if (Ext.isDate(o)) { + return Ext.JSON.encodeDate(o); + } else if (Ext.isString(o)) { + return Ext.JSON.encodeString(o); + } else if (typeof o == "number") { + + return isFinite(o) ? String(o) : "null"; + } else if (Ext.isBoolean(o)) { + return String(o); + } + + + else if (o.toJSON) { + return o.toJSON(); + } else if (Ext.isArray(o)) { + return encodeArray(o, newline); + } else if (Ext.isObject(o)) { + return encodeObject(o, newline); + } else if (typeof o === "function") { + return "null"; + } + return 'undefined'; + }, + m = { + "\b": '\\b', + "\t": '\\t', + "\n": '\\n', + "\f": '\\f', + "\r": '\\r', + '"': '\\"', + "\\": '\\\\', + '\x0b': '\\u000b' + }, + charToReplace = /[\\\"\x00-\x1f\x7f-\uffff]/g, + encodeString = function(s) { + return '"' + s.replace(charToReplace, function(a) { + var c = m[a]; + return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"'; + }, + + + encodeArray = function(o, newline) { + + var a = ["[", ""], + len = o.length, + i; + for (i = 0; i < len; i += 1) { + a.push(Ext.JSON.encodeValue(o[i]), ','); + } + + a[a.length - 1] = ']'; + return a.join(""); + }, + + encodeObject = function(o, newline) { + + var a = ["{", ""], + i, val; + for (i in o) { + val = o[i]; + if (!useHasOwn || o.hasOwnProperty(i)) { + + if (typeof val === 'function' || val === undefined) { + continue; + } + a.push(Ext.JSON.encodeValue(i), ":", Ext.JSON.encodeValue(val), ','); + + } + } + + a[a.length - 1] = '}'; + return a.join(""); + }; + + + me.encodeString = encodeString; + + + me.encodeValue = doEncode; + + + me.encodeDate = function(o) { + return '"' + o.getFullYear() + "-" + + pad(o.getMonth() + 1) + "-" + + pad(o.getDate()) + "T" + + pad(o.getHours()) + ":" + + pad(o.getMinutes()) + ":" + + pad(o.getSeconds()) + '"'; + }; + + + me.encode = function(o) { + if (!encodingFunction) { + + encodingFunction = isNative() ? JSON.stringify : me.encodeValue; + } + return encodingFunction(o); + }; + + + me.decode = function(json, safe) { + if (!decodingFunction) { + + decodingFunction = isNative() ? JSON.parse : doDecode; + } + try { + return decodingFunction(json); + } catch (e) { + if (safe === true) { + return null; + } + Ext.Error.raise({ + sourceClass: "Ext.JSON", + sourceMethod: "decode", + msg: "You're trying to decode an invalid JSON String: " + json + }); + } + }; +})()); + +Ext.encode = Ext.JSON.encode; + +Ext.decode = Ext.JSON.decode; + + + + + + +Ext.apply(Ext, { + userAgent: navigator.userAgent.toLowerCase(), + cache: {}, + idSeed: 1000, + windowId: 'ext-window', + documentId: 'ext-document', + + + isReady: false, + + + enableGarbageCollector: true, + + + enableListenerCollection: true, + + + rootHierarchyState: {}, + + addCacheEntry: function(id, el, dom) { + dom = dom || el.dom; + + + var cache = Ext.cache, + key = id || (el && el.id) || dom.id, + entry = cache[key] || (cache[key] = { + data: {}, + events: {}, + + dom: dom, + + + skipGarbageCollection: !!(dom.getElementById || dom.navigator) + }); + + if (el) { + el.$cache = entry; + + + entry.el = el; + } + + return entry; + }, + + updateCacheEntry: function(cacheItem, dom){ + cacheItem.dom = dom; + if (cacheItem.el) { + cacheItem.el.dom = dom; + } + return cacheItem; + }, + + + id: function(el, prefix) { + var me = this, + sandboxPrefix = ''; + el = Ext.getDom(el, true) || {}; + if (el === document) { + el.id = me.documentId; + } + else if (el === window) { + el.id = me.windowId; + } + if (!el.id) { + if (me.isSandboxed) { + sandboxPrefix = Ext.sandboxName.toLowerCase() + '-'; + } + el.id = sandboxPrefix + (prefix || "ext-gen") + (++Ext.idSeed); + } + return el.id; + }, + + escapeId: (function(){ + var validIdRe = /^[a-zA-Z_][a-zA-Z0-9_\-]*$/i, + escapeRx = /([\W]{1})/g, + leadingNumRx = /^(\d)/g, + escapeFn = function(match, capture){ + return "\\" + capture; + }, + numEscapeFn = function(match, capture){ + return '\\00' + capture.charCodeAt(0).toString(16) + ' '; + }; + + return function(id) { + return validIdRe.test(id) + ? id + + + : id.replace(escapeRx, escapeFn) + .replace(leadingNumRx, numEscapeFn); + }; + }()), + + + getBody: (function() { + var body; + return function() { + return body || (body = Ext.get(document.body)); + }; + }()), + + + getHead: (function() { + var head; + return function() { + return head || (head = Ext.get(document.getElementsByTagName("head")[0])); + }; + }()), + + + getDoc: (function() { + var doc; + return function() { + return doc || (doc = Ext.get(document)); + }; + }()), + + + getOrientation: function() { + return window.innerHeight > window.innerWidth ? 'portrait' : 'landscape'; + }, + + + destroy: function() { + var ln = arguments.length, + i, arg; + + for (i = 0; i < ln; i++) { + arg = arguments[i]; + if (arg) { + if (Ext.isArray(arg)) { + this.destroy.apply(this, arg); + } else if (arg.isStore) { + arg.destroyStore(); + } else if (Ext.isFunction(arg.destroy)) { + arg.destroy(); + } else if (arg.dom) { + arg.remove(); + } + } + } + }, + + + callback: function (callback, scope, args, delay) { + var fn, ret; + + if (Ext.isFunction(callback)){ + fn = callback; + } else if (scope && Ext.isString(callback)) { + fn = scope[callback]; + } + + if (fn) { + args = args || []; + scope = scope || window; + if (delay) { + Ext.defer(fn, delay, scope, args); + } else { + ret = fn.apply(scope, args); + } + } + + return ret; + }, + + + resolveMethod: function(fn, scope) { + if (Ext.isFunction(fn)) { + return fn; + } + + + return scope[fn]; + }, + + + htmlEncode : function(value) { + return Ext.String.htmlEncode(value); + }, + + + htmlDecode : function(value) { + return Ext.String.htmlDecode(value); + }, + + + urlAppend : function(url, s) { + return Ext.String.urlAppend(url, s); + } +}); + + +Ext.ns = Ext.namespace; + + +window.undefined = window.undefined; + + +(function(){ + + var check = function(regex){ + return regex.test(Ext.userAgent); + }, + isStrict = document.compatMode == "CSS1Compat", + version = function (is, regex) { + var m; + return (is && (m = regex.exec(Ext.userAgent))) ? parseFloat(m[1]) : 0; + }, + docMode = document.documentMode, + isOpera = check(/opera/), + isOpera10_5 = isOpera && check(/version\/10\.5/), + isChrome = check(/\bchrome\b/), + isWebKit = check(/webkit/), + isSafari = !isChrome && check(/safari/), + isSafari2 = isSafari && check(/applewebkit\/4/), + isSafari3 = isSafari && check(/version\/3/), + isSafari4 = isSafari && check(/version\/4/), + isSafari5_0 = isSafari && check(/version\/5\.0/), + isSafari5 = isSafari && check(/version\/5/), + isIE = !isOpera && check(/msie/), + isIE7 = isIE && ((check(/msie 7/) && docMode != 8 && docMode != 9 && docMode != 10) || docMode == 7), + isIE8 = isIE && ((check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10) || docMode == 8), + isIE9 = isIE && ((check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10) || docMode == 9), + isIE10 = isIE && ((check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9) || docMode == 10), + isIE6 = isIE && check(/msie 6/), + isGecko = !isWebKit && check(/gecko/), + isGecko3 = isGecko && check(/rv:1\.9/), + isGecko4 = isGecko && check(/rv:2\.0/), + isGecko5 = isGecko && check(/rv:5\./), + isGecko10 = isGecko && check(/rv:10\./), + isFF3_0 = isGecko3 && check(/rv:1\.9\.0/), + isFF3_5 = isGecko3 && check(/rv:1\.9\.1/), + isFF3_6 = isGecko3 && check(/rv:1\.9\.2/), + isWindows = check(/windows|win32/), + isMac = check(/macintosh|mac os x/), + isLinux = check(/linux/), + scrollbarSize = null, + chromeVersion = version(true, /\bchrome\/(\d+\.\d+)/), + firefoxVersion = version(true, /\bfirefox\/(\d+\.\d+)/), + ieVersion = version(isIE, /msie (\d+\.\d+)/), + operaVersion = version(isOpera, /version\/(\d+\.\d+)/), + safariVersion = version(isSafari, /version\/(\d+\.\d+)/), + webKitVersion = version(isWebKit, /webkit\/(\d+\.\d+)/), + isSecure = /^https/i.test(window.location.protocol), + nullLog; + + + try { + document.execCommand("BackgroundImageCache", false, true); + } catch(e) {} + + + + nullLog = function () {}; + nullLog.info = nullLog.warn = nullLog.error = Ext.emptyFn; + + + Ext.setVersion('extjs', '4.2.1.883'); + Ext.apply(Ext, { + + SSL_SECURE_URL : isSecure && isIE ? 'javascript:\'\'' : 'about:blank', + + + + plainTableCls: Ext.buildSettings.baseCSSPrefix + 'table-plain', + + plainListCls: Ext.buildSettings.baseCSSPrefix + 'list-plain', + + + enableNestedListenerRemoval : false, + + + USE_NATIVE_JSON : false, + + + getDom : function(el, strict) { + if (!el || !document) { + return null; + } + if (el.dom) { + return el.dom; + } else { + if (typeof el == 'string') { + var e = Ext.getElementById(el); + + + if (e && isIE && strict) { + if (el == e.getAttribute('id')) { + return e; + } else { + return null; + } + } + return e; + } else { + return el; + } + } + }, + + + removeNode : isIE6 || isIE7 || isIE8 + ? (function() { + var d; + return function(n){ + if(n && n.tagName.toUpperCase() != 'BODY'){ + (Ext.enableNestedListenerRemoval) ? Ext.EventManager.purgeElement(n) : Ext.EventManager.removeAll(n); + + var cache = Ext.cache, + id = n.id; + + if (cache[id]) { + delete cache[id].dom; + delete cache[id]; + } + + if (isIE8 && n.parentNode) { + n.parentNode.removeChild(n); + } + d = d || document.createElement('div'); + d.appendChild(n); + d.innerHTML = ''; + } + }; + }()) + : function(n) { + if (n && n.parentNode && n.tagName.toUpperCase() != 'BODY') { + (Ext.enableNestedListenerRemoval) ? Ext.EventManager.purgeElement(n) : Ext.EventManager.removeAll(n); + + var cache = Ext.cache, + id = n.id; + + if (cache[id]) { + delete cache[id].dom; + delete cache[id]; + } + + n.parentNode.removeChild(n); + } + }, + + isStrict: isStrict, + + + isIEQuirks: isIE && (!isStrict && (isIE6 || isIE7 || isIE8 || isIE9)), + + + isOpera : isOpera, + + + isOpera10_5 : isOpera10_5, + + + isWebKit : isWebKit, + + + isChrome : isChrome, + + + isSafari : isSafari, + + + isSafari3 : isSafari3, + + + isSafari4 : isSafari4, + + + isSafari5 : isSafari5, + + + isSafari5_0 : isSafari5_0, + + + + isSafari2 : isSafari2, + + + isIE : isIE, + + + isIE6 : isIE6, + + + isIE7 : isIE7, + + + isIE7m : isIE6 || isIE7, + + + isIE7p : isIE && !isIE6, + + + isIE8 : isIE8, + + + isIE8m : isIE6 || isIE7 || isIE8, + + + isIE8p : isIE && !(isIE6 || isIE7), + + + isIE9 : isIE9, + + + isIE9m : isIE6 || isIE7 || isIE8 || isIE9, + + + isIE9p : isIE && !(isIE6 || isIE7 || isIE8), + + + isIE10 : isIE10, + + + isIE10m : isIE6 || isIE7 || isIE8 || isIE9 || isIE10, + + + isIE10p : isIE && !(isIE6 || isIE7 || isIE8 || isIE9), + + + isGecko : isGecko, + + + isGecko3 : isGecko3, + + + isGecko4 : isGecko4, + + + isGecko5 : isGecko5, + + + isGecko10 : isGecko10, + + + isFF3_0 : isFF3_0, + + + isFF3_5 : isFF3_5, + + + isFF3_6 : isFF3_6, + + + isFF4 : 4 <= firefoxVersion && firefoxVersion < 5, + + + isFF5 : 5 <= firefoxVersion && firefoxVersion < 6, + + + isFF10 : 10 <= firefoxVersion && firefoxVersion < 11, + + + isLinux : isLinux, + + + isWindows : isWindows, + + + isMac : isMac, + + + chromeVersion: chromeVersion, + + + firefoxVersion: firefoxVersion, + + + ieVersion: ieVersion, + + + operaVersion: operaVersion, + + + safariVersion: safariVersion, + + + webKitVersion: webKitVersion, + + + isSecure: isSecure, + + + BLANK_IMAGE_URL : (isIE6 || isIE7) ? '/' + '/www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', + + + value : function(v, defaultValue, allowBlank){ + return Ext.isEmpty(v, allowBlank) ? defaultValue : v; + }, + + + escapeRe : function(s) { + return s.replace(/([-.*+?\^${}()|\[\]\/\\])/g, "\\$1"); + }, + + + addBehaviors : function(o){ + if(!Ext.isReady){ + Ext.onReady(function(){ + Ext.addBehaviors(o); + }); + } else { + var cache = {}, + parts, + b, + s; + for (b in o) { + if ((parts = b.split('@'))[1]) { + s = parts[0]; + if(!cache[s]){ + cache[s] = Ext.select(s); + } + cache[s].on(parts[1], o[b]); + } + } + cache = null; + } + }, + + + getScrollbarSize: function (force) { + if (!Ext.isReady) { + return {}; + } + + if (force || !scrollbarSize) { + var db = document.body, + div = document.createElement('div'); + + div.style.width = div.style.height = '100px'; + div.style.overflow = 'scroll'; + div.style.position = 'absolute'; + + db.appendChild(div); + + + scrollbarSize = { + width: div.offsetWidth - div.clientWidth, + height: div.offsetHeight - div.clientHeight + }; + + db.removeChild(div); + } + + return scrollbarSize; + }, + + + getScrollBarWidth: function(force){ + var size = Ext.getScrollbarSize(force); + return size.width + 2; + }, + + + copyTo : function(dest, source, names, usePrototypeKeys){ + if(typeof names == 'string'){ + names = names.split(/[,;\s]/); + } + + var n, + nLen = names? names.length : 0, + name; + + for(n = 0; n < nLen; n++) { + name = names[n]; + + if(usePrototypeKeys || source.hasOwnProperty(name)){ + dest[name] = source[name]; + } + } + + return dest; + }, + + + destroyMembers : function(o){ + for (var i = 1, a = arguments, len = a.length; i < len; i++) { + Ext.destroy(o[a[i]]); + delete o[a[i]]; + } + }, + + + log : + nullLog, + + + partition : function(arr, truth){ + var ret = [[],[]], + a, v, + aLen = arr.length; + + for (a = 0; a < aLen; a++) { + v = arr[a]; + ret[ (truth && truth(v, a, arr)) || (!truth && v) ? 0 : 1].push(v); + } + + return ret; + }, + + + invoke : function(arr, methodName){ + var ret = [], + args = Array.prototype.slice.call(arguments, 2), + a, v, + aLen = arr.length; + + for (a = 0; a < aLen; a++) { + v = arr[a]; + + if (v && typeof v[methodName] == 'function') { + ret.push(v[methodName].apply(v, args)); + } else { + ret.push(undefined); + } + } + + return ret; + }, + + + zip : function(){ + var parts = Ext.partition(arguments, function( val ){ return typeof val != 'function'; }), + arrs = parts[0], + fn = parts[1][0], + len = Ext.max(Ext.pluck(arrs, "length")), + ret = [], + i, + j, + aLen; + + for (i = 0; i < len; i++) { + ret[i] = []; + if(fn){ + ret[i] = fn.apply(fn, Ext.pluck(arrs, i)); + }else{ + for (j = 0, aLen = arrs.length; j < aLen; j++){ + ret[i].push( arrs[j][i] ); + } + } + } + return ret; + }, + + + toSentence: function(items, connector) { + var length = items.length, + head, + tail; + + if (length <= 1) { + return items[0]; + } else { + head = items.slice(0, length - 1); + tail = items[length - 1]; + + return Ext.util.Format.format("{0} {1} {2}", head.join(", "), connector || 'and', tail); + } + }, + + + setGlyphFontFamily: function(fontFamily) { + Ext._glyphFontFamily = fontFamily; + }, + + + useShims: isIE6 + }); +}()); + + +Ext.application = function(config) { + var App, paths, ns; + + if (typeof config === "string") { + Ext.require(config, function(){ + App = Ext.ClassManager.get(config); + }); + } + else { + + + Ext.Loader.setPath(config.name, config.appFolder || 'app'); + + if (paths = config.paths) { + for (ns in paths) { + if (paths.hasOwnProperty(ns)) { + Ext.Loader.setPath(ns, paths[ns]); + } + } + } + + config['paths processed'] = true; + + + + Ext.define(config.name + ".$application", Ext.apply({ + extend: 'Ext.app.Application' + }, config), + + function () { + App = this; + }); + } + + Ext.onReady(function() { + + + Ext.app.Application.instance = new App(); + }); +}; + + + + + + +(function() { + Ext.ns('Ext.util'); + + var UtilFormat = Ext.util.Format = {}, + stripTagsRE = /<\/?[^>]+>/gi, + stripScriptsRe = /(?:)((\n|\r|.)*?)(?:<\/script>)/ig, + nl2brRe = /\r?\n/g, + allHashes = /^#+$/, + + + formatPattern = /[\d,\.#]+/, + + + formatCleanRe = /[^\d\.#]/g, + + + + I18NFormatCleanRe, + + + formatFns = {}; + + Ext.apply(UtilFormat, { + + + thousandSeparator: ',', + + + + + decimalSeparator: '.', + + + + + currencyPrecision: 2, + + + + + currencySign: '$', + + + + + currencyAtEnd: false, + + + + undef : function(value) { + return value !== undefined ? value : ""; + }, + + + defaultValue : function(value, defaultValue) { + return value !== undefined && value !== '' ? value : defaultValue; + }, + + + substr : 'ab'.substr(-1) != 'b' + ? function (value, start, length) { + var str = String(value); + return (start < 0) + ? str.substr(Math.max(str.length + start, 0), length) + : str.substr(start, length); + } + : function(value, start, length) { + return String(value).substr(start, length); + }, + + + lowercase : function(value) { + return String(value).toLowerCase(); + }, + + + uppercase : function(value) { + return String(value).toUpperCase(); + }, + + + usMoney : function(v) { + return UtilFormat.currency(v, '$', 2); + }, + + + currency: function(v, currencySign, decimals, end) { + var negativeSign = '', + format = ",0", + i = 0; + v = v - 0; + if (v < 0) { + v = -v; + negativeSign = '-'; + } + decimals = Ext.isDefined(decimals) ? decimals : UtilFormat.currencyPrecision; + format += (decimals > 0 ? '.' : ''); + for (; i < decimals; i++) { + format += '0'; + } + v = UtilFormat.number(v, format); + if ((end || UtilFormat.currencyAtEnd) === true) { + return Ext.String.format("{0}{1}{2}", negativeSign, v, currencySign || UtilFormat.currencySign); + } else { + return Ext.String.format("{0}{1}{2}", negativeSign, currencySign || UtilFormat.currencySign, v); + } + }, + + + date: function(v, format) { + if (!v) { + return ""; + } + if (!Ext.isDate(v)) { + v = new Date(Date.parse(v)); + } + return Ext.Date.dateFormat(v, format || Ext.Date.defaultFormat); + }, + + + dateRenderer : function(format) { + return function(v) { + return UtilFormat.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(){ + var byteLimit = 1024, + kbLimit = 1048576, + mbLimit = 1073741824; + + return function(size) { + var out; + if (size < byteLimit) { + if (size === 1) { + out = '1 byte'; + } else { + out = size + ' bytes'; + } + } else if (size < kbLimit) { + out = (Math.round(((size*10) / byteLimit))/10) + ' KB'; + } else if (size < mbLimit) { + out = (Math.round(((size*10) / kbLimit))/10) + ' MB'; + } else { + out = (Math.round(((size*10) / mbLimit))/10) + ' GB'; + } + return out; + }; + })(), + + + math : (function(){ + var fns = {}; + + return function(v, a){ + if (!fns[a]) { + fns[a] = Ext.functionFactory('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, formatString) { + if (!formatString) { + return v; + } + var formatFn = formatFns[formatString]; + + + + if (!formatFn) { + + var originalFormatString = formatString, + comma = UtilFormat.thousandSeparator, + decimalSeparator = UtilFormat.decimalSeparator, + hasComma, + splitFormat, + extraChars, + precision = 0, + multiplier, + trimTrailingZeroes, + code; + + + + + + if (formatString.substr(formatString.length - 2) == '/i') { + if (!I18NFormatCleanRe) { + I18NFormatCleanRe = new RegExp('[^\\d\\' + UtilFormat.decimalSeparator + ']','g'); + } + formatString = formatString.substr(0, formatString.length - 2); + hasComma = formatString.indexOf(comma) != -1; + splitFormat = formatString.replace(I18NFormatCleanRe, '').split(decimalSeparator); + } else { + hasComma = formatString.indexOf(',') != -1; + splitFormat = formatString.replace(formatCleanRe, '').split('.'); + } + extraChars = formatString.replace(formatPattern, ''); + + if (splitFormat.length > 2) { + } else if (splitFormat.length === 2) { + precision = splitFormat[1].length; + + + trimTrailingZeroes = allHashes.test(splitFormat[1]); + } + + + code = [ + 'var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts' + + (hasComma ? ',thousandSeparator,thousands=[],j,n,i' : '') + + (extraChars ? ',formatString="' + formatString + '",formatPattern=/[\\d,\\.#]+/' : '') + + (trimTrailingZeroes ? ',trailingZeroes=/\\.?0+$/;' : ';') + + 'return function(v){' + + 'if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";' + + 'neg=v<0;', + 'fnum=Ext.Number.toFixed(Math.abs(v), ' + precision + ');' + ]; + + if (hasComma) { + + + + if (precision) { + code[code.length] = 'parts=fnum.split(".");'; + code[code.length] = 'fnum=parts[0];'; + } + code[code.length] = + 'if(v>=1000) {'; + code[code.length] = 'thousandSeparator=utilFormat.thousandSeparator;' + + 'thousands.length=0;' + + 'j=fnum.length;' + + 'n=fnum.length%3||3;' + + 'for(i=0;i'); + }, + + + capitalize: Ext.String.capitalize, + + + ellipsis: Ext.String.ellipsis, + + + format: Ext.String.format, + + + htmlDecode: Ext.String.htmlDecode, + + + htmlEncode: Ext.String.htmlEncode, + + + leftPad: Ext.String.leftPad, + + + trim : Ext.String.trim, + + + parseBox : function(box) { + box = box || 0; + + if (typeof box === 'number') { + return { + top : box, + right : box, + bottom: box, + left : box + }; + } + + var parts = box.split(' '), + ln = parts.length; + + if (ln == 1) { + parts[1] = parts[2] = parts[3] = parts[0]; + } + else if (ln == 2) { + parts[2] = parts[0]; + parts[3] = parts[1]; + } + else if (ln == 3) { + parts[3] = parts[1]; + } + + return { + top :parseInt(parts[0], 10) || 0, + right :parseInt(parts[1], 10) || 0, + bottom:parseInt(parts[2], 10) || 0, + left :parseInt(parts[3], 10) || 0 + }; + }, + + + escapeRegex : function(s) { + return s.replace(/([\-.*+?\^${}()|\[\]\/\\])/g, "\\$1"); + } + }); +}()); + + + + + +Ext.define('Ext.util.TaskRunner', { + + + + interval: 10, + + + timerId: null, + + constructor: function (interval) { + var me = this; + + if (typeof interval == 'number') { + me.interval = interval; + } else if (interval) { + Ext.apply(me, interval); + } + + me.tasks = []; + me.timerFn = Ext.Function.bind(me.onTick, me); + }, + + + newTask: function (config) { + var task = new Ext.util.TaskRunner.Task(config); + task.manager = this; + return task; + }, + + + start: function(task) { + var me = this, + now = Ext.Date.now(); + + if (!task.pending) { + me.tasks.push(task); + task.pending = true; + } + + task.stopped = false; + task.taskStartTime = now; + task.taskRunTime = task.fireOnStart !== false ? 0 : task.taskStartTime; + task.taskRunCount = 0; + + if (!me.firing) { + if (task.fireOnStart !== false) { + me.startTimer(0, now); + } else { + me.startTimer(task.interval, now); + } + } + + return task; + }, + + + stop: function(task) { + + + + if (!task.stopped) { + task.stopped = true; + + if (task.onStop) { + task.onStop.call(task.scope || task, task); + } + } + + return task; + }, + + + stopAll: function() { + + Ext.each(this.tasks, this.stop, this); + }, + + + + firing: false, + + nextExpires: 1e99, + + + onTick: function () { + var me = this, + tasks = me.tasks, + now = Ext.Date.now(), + nextExpires = 1e99, + len = tasks.length, + expires, newTasks, i, task, rt, remove; + + me.timerId = null; + me.firing = true; + + + + + + for (i = 0; i < len || i < (len = tasks.length); ++i) { + task = tasks[i]; + + if (!(remove = task.stopped)) { + expires = task.taskRunTime + task.interval; + + if (expires <= now) { + rt = 1; + try { + rt = task.run.apply(task.scope || task, task.args || [++task.taskRunCount]); + } catch (taskError) { + try { + if (task.onError) { + rt = task.onError.call(task.scope || task, task, taskError); + } + } catch (ignore) { } + } + task.taskRunTime = now; + if (rt === false || task.taskRunCount === task.repeat) { + me.stop(task); + remove = true; + } else { + remove = task.stopped; + expires = now + task.interval; + } + } + + if (!remove && task.duration && task.duration <= (now - task.taskStartTime)) { + me.stop(task); + remove = true; + } + } + + if (remove) { + task.pending = false; + + + + + + + if (!newTasks) { + newTasks = tasks.slice(0, i); + + + + } + } else { + if (newTasks) { + newTasks.push(task); + } + + if (nextExpires > expires) { + nextExpires = expires; + } + } + } + + if (newTasks) { + + + me.tasks = newTasks; + } + + me.firing = false; + + if (me.tasks.length) { + + + + me.startTimer(nextExpires - now, Ext.Date.now()); + } + + + if (me.fireIdleEvent !== false) { + Ext.EventManager.idleEvent.fire(); + } + }, + + + startTimer: function (timeout, now) { + var me = this, + expires = now + timeout, + timerId = me.timerId; + + + + if (timerId && me.nextExpires - expires > me.interval) { + clearTimeout(timerId); + timerId = null; + } + + if (!timerId) { + if (timeout < me.interval) { + timeout = me.interval; + } + + me.timerId = setTimeout(me.timerFn, timeout); + me.nextExpires = expires; + } + } +}, +function () { + var me = this, + proto = me.prototype; + + + proto.destroy = proto.stopAll; + + + Ext.util.TaskManager = Ext.TaskManager = new me(); + + + me.Task = new Ext.Class({ + isTask: true, + + + stopped: true, + + + fireOnStart: false, + + constructor: function (config) { + Ext.apply(this, config); + }, + + + restart: function (interval) { + if (interval !== undefined) { + this.interval = interval; + } + + this.manager.start(this); + }, + + + start: function (interval) { + if (this.stopped) { + this.restart(interval); + } + }, + + + stop: function () { + this.manager.stop(this); + } + }); + + proto = me.Task.prototype; + + + proto.destroy = proto.stop; +}); + + + + + + + + + + + + +Ext.define('Ext.util.TaskManager', { + extend: Ext.util.TaskRunner , + + alternateClassName: [ + 'Ext.TaskManager' + ], + + singleton: true +}); + + + + + +Ext.define('Ext.perf.Accumulator', (function () { + var currentFrame = null, + khrome = Ext.global['chrome'], + formatTpl, + + + getTimestamp = function () { + + getTimestamp = function () { + return new Date().getTime(); + }; + + var interval, toolbox; + + + if (Ext.isChrome && khrome && khrome.Interval) { + interval = new khrome.Interval(); + interval.start(); + getTimestamp = function () { + return interval.microseconds() / 1000; + }; + } else if (window.ActiveXObject) { + try { + + toolbox = new ActiveXObject('SenchaToolbox.Toolbox'); + Ext.senchaToolbox = toolbox; + getTimestamp = function () { + return toolbox.milliseconds; + }; + } catch (e) { + + } + } else if (Date.now) { + getTimestamp = Date.now; + } + + Ext.perf.getTimestamp = Ext.perf.Accumulator.getTimestamp = getTimestamp; + return getTimestamp(); + }; + + function adjustSet (set, time) { + set.sum += time; + set.min = Math.min(set.min, time); + set.max = Math.max(set.max, time); + } + + function leaveFrame (time) { + var totalTime = time ? time : (getTimestamp() - this.time), + me = this, + accum = me.accum; + + ++accum.count; + if (! --accum.depth) { + adjustSet(accum.total, totalTime); + } + adjustSet(accum.pure, totalTime - me.childTime); + + currentFrame = me.parent; + if (currentFrame) { + ++currentFrame.accum.childCount; + currentFrame.childTime += totalTime; + } + } + + function makeSet () { + return { + min: Number.MAX_VALUE, + max: 0, + sum: 0 + }; + } + + function makeTap (me, fn) { + return function () { + var frame = me.enter(), + ret = fn.apply(this, arguments); + + frame.leave(); + return ret; + }; + } + + function round (x) { + return Math.round(x * 100) / 100; + } + + function setToJSON (count, childCount, calibration, set) { + var data = { + avg: 0, + min: set.min, + max: set.max, + sum: 0 + }; + + if (count) { + calibration = calibration || 0; + data.sum = set.sum - childCount * calibration; + data.avg = data.sum / count; + + + } + + return data; + } + + return { + constructor: function (name) { + var me = this; + + me.count = me.childCount = me.depth = me.maxDepth = 0; + me.pure = makeSet(); + me.total = makeSet(); + me.name = name; + }, + + statics: { + getTimestamp: getTimestamp + }, + + format: function (calibration) { + if (!formatTpl) { + formatTpl = new Ext.XTemplate([ + '{name} - {count} call(s)', + '', + '', + ' ({childCount} children)', + '', + '', + ' ({depth} deep)', + '', + '', + ', {type}: {[this.time(values.sum)]} msec (', + + 'avg={[this.time(values.sum / parent.count)]}', + + ')', + '', + '' + ].join(''), { + time: function (t) { + return Math.round(t * 100) / 100; + } + }); + } + + var data = this.getData(calibration); + data.name = this.name; + data.pure.type = 'Pure'; + data.total.type = 'Total'; + data.times = [data.pure, data.total]; + return formatTpl.apply(data); + }, + + getData: function (calibration) { + var me = this; + + return { + count: me.count, + childCount: me.childCount, + depth: me.maxDepth, + pure: setToJSON(me.count, me.childCount, calibration, me.pure), + total: setToJSON(me.count, me.childCount, calibration, me.total) + }; + }, + + enter: function () { + var me = this, + frame = { + accum: me, + leave: leaveFrame, + childTime: 0, + parent: currentFrame + }; + + ++me.depth; + if (me.maxDepth < me.depth) { + me.maxDepth = me.depth; + } + + currentFrame = frame; + frame.time = getTimestamp(); + return frame; + }, + + monitor: function (fn, scope, args) { + var frame = this.enter(); + if (args) { + fn.apply(scope, args); + } else { + fn.call(scope); + } + frame.leave(); + }, + + report: function () { + Ext.log(this.format()); + }, + + tap: function (className, methodName) { + var me = this, + methods = typeof methodName == 'string' ? [methodName] : methodName, + klass, statik, i, parts, length, name, src, + tapFunc; + + tapFunc = function(){ + if (typeof className == 'string') { + klass = Ext.global; + parts = className.split('.'); + for (i = 0, length = parts.length; i < length; ++i) { + klass = klass[parts[i]]; + } + } else { + klass = className; + } + + for (i = 0, length = methods.length; i < length; ++i) { + name = methods[i]; + statik = name.charAt(0) == '!'; + + if (statik) { + name = name.substring(1); + } else { + statik = !(name in klass.prototype); + } + + src = statik ? klass : klass.prototype; + src[name] = makeTap(me, src[name]); + } + }; + + Ext.ClassManager.onCreated(tapFunc, me, className); + + return me; + } + }; +}()), + +function () { + Ext.perf.getTimestamp = this.getTimestamp; +}); + + + + + +Ext.define('Ext.perf.Monitor', { + singleton: true, + alternateClassName: 'Ext.Perf', + + + + + + constructor: function () { + this.accumulators = []; + this.accumulatorsByName = {}; + }, + + calibrate: function () { + var accum = new Ext.perf.Accumulator('$'), + total = accum.total, + getTimestamp = Ext.perf.Accumulator.getTimestamp, + count = 0, + frame, + endTime, + startTime; + + startTime = getTimestamp(); + + do { + frame = accum.enter(); + frame.leave(); + ++count; + } while (total.sum < 100); + + endTime = getTimestamp(); + + return (endTime - startTime) / count; + }, + + get: function (name) { + var me = this, + accum = me.accumulatorsByName[name]; + + if (!accum) { + me.accumulatorsByName[name] = accum = new Ext.perf.Accumulator(name); + me.accumulators.push(accum); + } + + return accum; + }, + + enter: function (name) { + return this.get(name).enter(); + }, + + monitor: function (name, fn, scope) { + this.get(name).monitor(fn, scope); + }, + + report: function () { + var me = this, + accumulators = me.accumulators, + calibration = me.calibrate(); + + accumulators.sort(function (a, b) { + return (a.name < b.name) ? -1 : ((b.name < a.name) ? 1 : 0); + }); + + me.updateGC(); + + Ext.log('Calibration: ' + Math.round(calibration * 100) / 100 + ' msec/sample'); + Ext.each(accumulators, function (accum) { + Ext.log(accum.format(calibration)); + }); + }, + + getData: function (all) { + var ret = {}, + accumulators = this.accumulators; + + Ext.each(accumulators, function (accum) { + if (all || accum.count) { + ret[accum.name] = accum.getData(); + } + }); + + return ret; + }, + + reset: function(){ + Ext.each(this.accumulators, function(accum){ + var me = accum; + me.count = me.childCount = me.depth = me.maxDepth = 0; + me.pure = { + min: Number.MAX_VALUE, + max: 0, + sum: 0 + }; + me.total = { + min: Number.MAX_VALUE, + max: 0, + sum: 0 + }; + }); + }, + + updateGC: function () { + var accumGC = this.accumulatorsByName.GC, + toolbox = Ext.senchaToolbox, + bucket; + + if (accumGC) { + accumGC.count = toolbox.garbageCollectionCounter || 0; + + if (accumGC.count) { + bucket = accumGC.pure; + accumGC.total.sum = bucket.sum = toolbox.garbageCollectionMilliseconds; + bucket.min = bucket.max = bucket.sum / accumGC.count; + bucket = accumGC.total; + bucket.min = bucket.max = bucket.sum / accumGC.count; + } + } + }, + + watchGC: function () { + Ext.perf.getTimestamp(); + + var toolbox = Ext.senchaToolbox; + + if (toolbox) { + this.get("GC"); + toolbox.watchGarbageCollector(false); + } + }, + + setup: function (config) { + if (!config) { + config = { + + + + + + + + + render: { + 'Ext.AbstractComponent': 'render' + }, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + layout: { + 'Ext.layout.Context': 'run' + } + }; + } + + this.currentConfig = config; + + var key, prop, + accum, className, methods; + for (key in config) { + if (config.hasOwnProperty(key)) { + prop = config[key]; + accum = Ext.Perf.get(key); + + for (className in prop) { + if (prop.hasOwnProperty(className)) { + methods = prop[className]; + accum.tap(className, methods); + } + } + } + } + + this.watchGC(); + } +}); + + + + + + +Ext.is = { + init : function(navigator) { + var platforms = this.platforms, + ln = platforms.length, + i, platform; + + navigator = navigator || window.navigator; + + for (i = 0; i < ln; i++) { + platform = platforms[i]; + this[platform.identity] = platform.regex.test(navigator[platform.property]); + } + + + this.Desktop = this.Mac || this.Windows || (this.Linux && !this.Android); + + this.Tablet = this.iPad; + + this.Phone = !this.Desktop && !this.Tablet; + + this.iOS = this.iPhone || this.iPad || this.iPod; + + + this.Standalone = !!window.navigator.standalone; + }, + + + platforms: [{ + property: 'platform', + regex: /iPhone/i, + identity: 'iPhone' + }, + + + { + property: 'platform', + regex: /iPod/i, + identity: 'iPod' + }, + + + { + property: 'userAgent', + regex: /iPad/i, + identity: 'iPad' + }, + + + { + property: 'userAgent', + regex: /Blackberry/i, + identity: 'Blackberry' + }, + + + { + property: 'userAgent', + regex: /Android/i, + identity: 'Android' + }, + + + { + property: 'platform', + regex: /Mac/i, + identity: 'Mac' + }, + + + { + property: 'platform', + regex: /Win/i, + identity: 'Windows' + }, + + + { + property: 'platform', + regex: /Linux/i, + identity: 'Linux' + }] +}; + +Ext.is.init(); + + +(function(){ + + + + + var getStyle = function(element, styleName){ + var view = element.ownerDocument.defaultView, + style = (view ? view.getComputedStyle(element, null) : element.currentStyle) || element.style; + return style[styleName]; + }, + supportsVectors = { + 'IE6-quirks': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0], + 'IE6-strict': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,1,0,0,0], + 'IE7-quirks': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0], + 'IE7-strict': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,1,0,1,0,0,0], + 'IE8-quirks': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0], + 'IE8-strict': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1], + 'IE9-quirks': [0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0], + 'IE9-strict': [0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1], + 'IE10-quirks': [1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1], + 'IE10-strict': [1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1] + }; + +function getBrowserKey() { + var browser = Ext.isIE6 ? 'IE6' : Ext.isIE7 ? 'IE7' : Ext.isIE8 ? 'IE8' : + Ext.isIE9 ? 'IE9': Ext.isIE10 ? 'IE10' : ''; + + return browser ? browser + (Ext.isStrict ? '-strict' : '-quirks') : ''; +} + +Ext.supports = { + + init : function() { + var me = this, + doc = document, + toRun = me.toRun || me.tests, + n = toRun.length, + div = n && Ext.isReady && doc.createElement('div'), + notRun = [], + browserKey = getBrowserKey(), + test, vector, value; + + if (div) { + div.innerHTML = [ + '

', + '
', + '
', + '
', + '
', + '
', + '
', + '
' + ].join(''); + + doc.body.appendChild(div); + } + + vector = supportsVectors[browserKey]; + while (n--) { + test = toRun[n]; + value = vector && vector[n]; + if (value !== undefined) { + me[test.identity] = value; + } else if (div || test.early) { + me[test.identity] = test.fn.call(me, doc, div); + } else { + notRun.push(test); + } + } + + if (div) { + doc.body.removeChild(div); + } + + me.toRun = notRun; + }, + + + + PointerEvents: 'pointerEvents' in document.documentElement.style, + + + + + LocalStorage: (function() { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } + })(), + + + CSS3BoxShadow: 'boxShadow' in document.documentElement.style || 'WebkitBoxShadow' in document.documentElement.style || 'MozBoxShadow' in document.documentElement.style, + + + ClassList: !!document.documentElement.classList, + + + OrientationChange: ((typeof window.orientation != 'undefined') && ('onorientationchange' in window)), + + + DeviceMotion: ('ondevicemotion' in window), + + + + + Touch: ('ontouchstart' in window) && (!Ext.is.Desktop), + + + TimeoutActualLateness: (function(){ + setTimeout(function(){ + Ext.supports.TimeoutActualLateness = arguments.length !== 0; + }, 0); + }()), + + tests: [ + + { + identity: 'Transitions', + fn: function(doc, div) { + var prefix = [ + 'webkit', + 'Moz', + 'o', + 'ms', + 'khtml' + ], + TE = 'TransitionEnd', + transitionEndName = [ + prefix[0] + TE, + 'transitionend', + prefix[2] + TE, + prefix[3] + TE, + prefix[4] + TE + ], + ln = prefix.length, + i = 0, + out = false; + + for (; i < ln; i++) { + if (getStyle(div, prefix[i] + "TransitionProperty")) { + Ext.supports.CSS3Prefix = prefix[i]; + Ext.supports.CSS3TransitionEnd = transitionEndName[i]; + out = true; + break; + } + } + return out; + } + }, + + + { + identity: 'RightMargin', + fn: function(doc, div) { + var view = doc.defaultView; + return !(view && view.getComputedStyle(div.firstChild.firstChild, null).marginRight != '0px'); + } + }, + + + { + identity: 'DisplayChangeInputSelectionBug', + early: true, + fn: function() { + var webKitVersion = Ext.webKitVersion; + + return 0 < webKitVersion && webKitVersion < 533; + } + }, + + + { + identity: 'DisplayChangeTextAreaSelectionBug', + early: true, + fn: function() { + var webKitVersion = Ext.webKitVersion; + + + return 0 < webKitVersion && webKitVersion < 534.24; + } + }, + + + { + identity: 'TransparentColor', + fn: function(doc, div, view) { + view = doc.defaultView; + return !(view && view.getComputedStyle(div.lastChild, null).backgroundColor != 'transparent'); + } + }, + + + { + identity: 'ComputedStyle', + fn: function(doc, div, view) { + view = doc.defaultView; + return view && view.getComputedStyle; + } + }, + + + { + identity: 'Svg', + fn: function(doc) { + return !!doc.createElementNS && !!doc.createElementNS( "http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect; + } + }, + + + { + identity: 'Canvas', + fn: function(doc) { + return !!doc.createElement('canvas').getContext; + } + }, + + + { + identity: 'Vml', + fn: function(doc) { + var d = doc.createElement("div"); + d.innerHTML = ""; + return (d.childNodes.length == 2); + } + }, + + + { + identity: 'Float', + fn: function(doc, div) { + return !!div.lastChild.style.cssFloat; + } + }, + + + { + identity: 'AudioTag', + fn: function(doc) { + return !!doc.createElement('audio').canPlayType; + } + }, + + + { + identity: 'History', + fn: function() { + var history = window.history; + return !!(history && history.pushState); + } + }, + + + { + identity: 'CSS3DTransform', + fn: function() { + return (typeof WebKitCSSMatrix != 'undefined' && new WebKitCSSMatrix().hasOwnProperty('m41')); + } + }, + + + { + identity: 'CSS3LinearGradient', + fn: function(doc, div) { + var property = 'background-image:', + webkit = '-webkit-gradient(linear, left top, right bottom, from(black), to(white))', + w3c = 'linear-gradient(left top, black, white)', + moz = '-moz-' + w3c, + ms = '-ms-' + w3c, + opera = '-o-' + w3c, + options = [property + webkit, property + w3c, property + moz, property + ms, property + opera]; + + div.style.cssText = options.join(';'); + + return (("" + div.style.backgroundImage).indexOf('gradient') !== -1) && !Ext.isIE9; + } + }, + + + { + identity: 'CSS3BorderRadius', + fn: function(doc, div) { + var domPrefixes = ['borderRadius', 'BorderRadius', 'MozBorderRadius', 'WebkitBorderRadius', 'OBorderRadius', 'KhtmlBorderRadius'], + pass = false, + i; + for (i = 0; i < domPrefixes.length; i++) { + if (document.body.style[domPrefixes[i]] !== undefined) { + return true; + } + } + return pass; + } + }, + + + { + identity: 'GeoLocation', + fn: function() { + + return (typeof navigator != 'undefined' && 'geolocation' in navigator) || (typeof google != 'undefined' && typeof google.gears != 'undefined'); + } + }, + + { + identity: 'MouseEnterLeave', + fn: function(doc, div){ + return ('onmouseenter' in div && 'onmouseleave' in div); + } + }, + + { + identity: 'MouseWheel', + fn: function(doc, div) { + return ('onmousewheel' in div); + } + }, + + { + identity: 'Opacity', + fn: function(doc, div){ + + if (Ext.isIE6 || Ext.isIE7 || Ext.isIE8) { + return false; + } + div.firstChild.style.cssText = 'opacity:0.73'; + return div.firstChild.style.opacity == '0.73'; + } + }, + + { + identity: 'Placeholder', + fn: function(doc) { + return 'placeholder' in doc.createElement('input'); + } + }, + + + { + identity: 'Direct2DBug', + fn: function() { + return Ext.isString(document.body.style.msTransformOrigin) && Ext.isIE10m; + } + }, + + { + identity: 'BoundingClientRect', + fn: function(doc, div) { + return Ext.isFunction(div.getBoundingClientRect); + } + }, + + { + identity: 'RotatedBoundingClientRect', + fn: function() { + var body = document.body, + supports = false, + el = document.createElement('div'), + style = el.style; + + if (el.getBoundingClientRect) { + style.WebkitTransform = style.MozTransform = + style.OTransform = style.transform = 'rotate(90deg)'; + style.width = '100px'; + style.height = '30px'; + body.appendChild(el) + + supports = el.getBoundingClientRect().height !== 100; + body.removeChild(el); + } + + return supports; + } + }, + { + identity: 'IncludePaddingInWidthCalculation', + fn: function(doc, div){ + return div.childNodes[1].firstChild.offsetWidth == 210; + } + }, + { + identity: 'IncludePaddingInHeightCalculation', + fn: function(doc, div){ + return div.childNodes[1].firstChild.offsetHeight == 210; + } + }, + + + { + identity: 'ArraySort', + fn: function() { + var a = [1,2,3,4,5].sort(function(){ return 0; }); + return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5; + } + }, + + { + identity: 'Range', + fn: function() { + return !!document.createRange; + } + }, + + { + identity: 'CreateContextualFragment', + fn: function() { + var range = Ext.supports.Range ? document.createRange() : false; + + return range && !!range.createContextualFragment; + } + }, + + + { + identity: 'WindowOnError', + fn: function () { + + return Ext.isIE || Ext.isGecko || Ext.webKitVersion >= 534.16; + } + }, + + + { + identity: 'TextAreaMaxLength', + fn: function(){ + var el = document.createElement('textarea'); + return ('maxlength' in el); + } + }, + + + { + identity: 'GetPositionPercentage', + fn: function(doc, div){ + return getStyle(div.childNodes[2], 'left') == '10%'; + } + }, + + { + identity: 'PercentageHeightOverflowBug', + fn: function(doc) { + var hasBug = false, + style, el; + + if (Ext.getScrollbarSize().height) { + + el = doc.createElement('div'); + style = el.style; + style.height = '50px'; + style.width = '50px'; + style.overflow = 'auto'; + style.position = 'absolute'; + + el.innerHTML = [ + '
', + + + + '
', + '
' + ].join(''); + doc.body.appendChild(el); + if (el.firstChild.offsetHeight === 50) { + hasBug = true; + } + doc.body.removeChild(el); + } + + return hasBug; + } + }, + + { + identity: 'xOriginBug', + fn: function(doc, div) { + div.innerHTML = '
' + + '
' + + '
' + + '
'; + + var outerBox = document.getElementById('b1').getBoundingClientRect(), + b2 = document.getElementById('b2').getBoundingClientRect(), + b3 = document.getElementById('b3').getBoundingClientRect(); + + return (b2.left !== outerBox.left && b3.right !== outerBox.right); + } + }, + + + { + identity: 'ScrollWidthInlinePaddingBug', + fn: function(doc) { + var hasBug = false, + style, el; + + el = doc.createElement('div'); + style = el.style; + style.height = '50px'; + style.width = '50px'; + style.padding = '10px'; + style.overflow = 'hidden'; + style.position = 'absolute'; + + el.innerHTML = + ''; + doc.body.appendChild(el); + if (el.scrollWidth === 70) { + hasBug = true; + } + doc.body.removeChild(el); + + return hasBug; + } + } + ] +}; +}()); + +Ext.supports.init(); + + + + + + +Ext.util.DelayedTask = function(fn, scope, args, cancelOnDelay) { + var me = this, + delay, + call = function() { + clearInterval(me.id); + me.id = null; + fn.apply(scope, args || []); + Ext.EventManager.idleEvent.fire(); + }; + + cancelOnDelay = typeof cancelOnDelay === 'boolean' ? cancelOnDelay : true; + + + me.id = null; + + + me.delay = function(newDelay, newFn, newScope, newArgs) { + if (cancelOnDelay) { + me.cancel(); + } + delay = newDelay || delay, + fn = newFn || fn; + scope = newScope || scope; + args = newArgs || args; + if (!me.id) { + me.id = setInterval(call, delay); + } + }; + + + me.cancel = function() { + if (me.id) { + clearInterval(me.id); + me.id = null; + } + }; +}; + + + +Ext.define('Ext.util.Event', function() { + var arraySlice = Array.prototype.slice, + arrayInsert = Ext.Array.insert, + toArray = Ext.Array.toArray, + DelayedTask = Ext.util.DelayedTask; + + return { + + + + isEvent: true, + + + suspended: 0, + + noOptions: {}, + + constructor: function(observable, name) { + this.name = name; + this.observable = observable; + this.listeners = []; + }, + + addListener: function(fn, scope, options) { + var me = this, + listeners, listener, priority, isNegativePriority, highestNegativePriorityIndex, + hasNegativePriorityIndex, length, index, i, listenerPriority; + + scope = scope || me.observable; + + + if (!me.isListening(fn, scope)) { + listener = me.createListener(fn, scope, options); + if (me.firing) { + + me.listeners = me.listeners.slice(0); + } + listeners = me.listeners; + index = length = listeners.length; + priority = options && options.priority; + highestNegativePriorityIndex = me._highestNegativePriorityIndex; + hasNegativePriorityIndex = (highestNegativePriorityIndex !== undefined); + if (priority) { + + + isNegativePriority = (priority < 0); + if (!isNegativePriority || hasNegativePriorityIndex) { + + + + + + + for(i = (isNegativePriority ? highestNegativePriorityIndex : 0); i < length; i++) { + + listenerPriority = listeners[i].o ? listeners[i].o.priority||0 : 0; + if (listenerPriority < priority) { + index = i; + break; + } + } + } else { + + + + me._highestNegativePriorityIndex = index; + } + } else if (hasNegativePriorityIndex) { + + + + + index = highestNegativePriorityIndex; + } + + if (!isNegativePriority && index <= highestNegativePriorityIndex) { + me._highestNegativePriorityIndex ++; + } + if (index === length) { + me.listeners[length] = listener; + } else { + arrayInsert(me.listeners, index, [listener]); + } + } + }, + + createListener: function(fn, scope, o) { + scope = scope || this.observable; + + var me = this, + listener = { + fn: fn, + scope: scope, + ev: me + }, + handler = fn; + + + + if (o) { + listener.o = o; + if (o.single) { + handler = me.createSingle(handler, listener, o, scope); + } + if (o.target) { + handler = me.createTargeted(handler, listener, o, scope); + } + if (o.delay) { + handler = me.createDelayed(handler, listener, o, scope); + } + if (o.buffer) { + handler = me.createBuffered(handler, listener, o, scope); + } + } + + listener.fireFn = handler; + return listener; + }, + + findListener: function(fn, scope) { + var listeners = this.listeners, + i = listeners.length, + listener, + s; + + while (i--) { + listener = listeners[i]; + if (listener) { + s = listener.scope; + + + + + if (listener.fn == fn && (s == (scope || this.observable))) { + return i; + } + } + } + + return - 1; + }, + + isListening: function(fn, scope) { + return this.findListener(fn, scope) !== -1; + }, + + removeListener: function(fn, scope) { + var me = this, + index, + listener, + highestNegativePriorityIndex, + k; + index = me.findListener(fn, scope); + if (index != -1) { + listener = me.listeners[index]; + highestNegativePriorityIndex = me._highestNegativePriorityIndex; + + if (me.firing) { + me.listeners = me.listeners.slice(0); + } + + + if (listener.task) { + listener.task.cancel(); + delete listener.task; + } + + + k = listener.tasks && listener.tasks.length; + if (k) { + while (k--) { + listener.tasks[k].cancel(); + } + delete listener.tasks; + } + + + + + me.listeners.splice(index, 1); + + + + if (highestNegativePriorityIndex) { + if (index < highestNegativePriorityIndex) { + me._highestNegativePriorityIndex --; + } else if (index === highestNegativePriorityIndex && index === me.listeners.length) { + delete me._highestNegativePriorityIndex; + } + } + return true; + } + + return false; + }, + + + clearListeners: function() { + var listeners = this.listeners, + i = listeners.length; + + while (i--) { + this.removeListener(listeners[i].fn, listeners[i].scope); + } + }, + + suspend: function() { + this.suspended += 1; + }, + + resume: function() { + if (this.suspended) { + this.suspended--; + } + }, + + fire: function() { + var me = this, + listeners = me.listeners, + count = listeners.length, + i, + args, + listener, + len; + + if (!me.suspended && count > 0) { + me.firing = true; + args = arguments.length ? arraySlice.call(arguments, 0) : [] + len = args.length; + for (i = 0; i < count; i++) { + listener = listeners[i]; + if (listener.o) { + args[len] = listener.o; + } + if (listener && listener.fireFn.apply(listener.scope || me.observable, args) === false) { + return (me.firing = false); + } + } + } + me.firing = false; + return true; + }, + + createTargeted: function (handler, listener, o, scope) { + return function(){ + if (o.target === arguments[0]){ + handler.apply(scope, arguments); + } + }; + }, + + createBuffered: function (handler, listener, o, scope) { + listener.task = new DelayedTask(); + return function() { + listener.task.delay(o.buffer, handler, scope, toArray(arguments)); + }; + }, + + createDelayed: function (handler, listener, o, scope) { + return function() { + var task = new DelayedTask(); + if (!listener.tasks) { + listener.tasks = []; + } + listener.tasks.push(task); + task.delay(o.delay || 10, handler, scope, toArray(arguments)); + }; + }, + + createSingle: function (handler, listener, o, scope) { + return function() { + var event = listener.ev; + + if (event.removeListener(listener.fn, scope) && event.observable) { + + + event.observable.hasListeners[event.name]--; + } + + return handler.apply(scope, arguments); + }; + } + }; +}); + + + + + + +Ext.EventManager = new function() { + var EventManager = this, + doc = document, + win = window, + escapeRx = /\\/g, + prefix = Ext.baseCSSPrefix, + + supportsAddEventListener = !Ext.isIE9 && 'addEventListener' in doc, + readyEvent, + initExtCss = function() { + + var bd = doc.body || doc.getElementsByTagName('body')[0], + cls = [prefix + 'body'], + htmlCls = [], + supportsLG = Ext.supports.CSS3LinearGradient, + supportsBR = Ext.supports.CSS3BorderRadius, + html; + + if (!bd) { + return false; + } + + html = bd.parentNode; + + function add (c) { + cls.push(prefix + c); + } + + + if (Ext.isIE && Ext.isIE9m) { + add('ie'); + + + + + + + + + + + + + if (Ext.isIE6) { + add('ie6'); + } else { + add('ie7p'); + + if (Ext.isIE7) { + add('ie7'); + } else { + add('ie8p'); + + if (Ext.isIE8) { + add('ie8'); + } else { + add('ie9p'); + + if (Ext.isIE9) { + add('ie9'); + } + } + } + } + + if (Ext.isIE7m) { + add('ie7m'); + } + if (Ext.isIE8m) { + add('ie8m'); + } + if (Ext.isIE9m) { + add('ie9m'); + } + if (Ext.isIE7 || Ext.isIE8) { + add('ie78'); + } + } + + if (Ext.isIE10) { + add('ie10'); + } + + if (Ext.isGecko) { + add('gecko'); + if (Ext.isGecko3) { + add('gecko3'); + } + if (Ext.isGecko4) { + add('gecko4'); + } + if (Ext.isGecko5) { + add('gecko5'); + } + } + if (Ext.isOpera) { + add('opera'); + } + if (Ext.isWebKit) { + add('webkit'); + } + if (Ext.isSafari) { + add('safari'); + if (Ext.isSafari2) { + add('safari2'); + } + if (Ext.isSafari3) { + add('safari3'); + } + if (Ext.isSafari4) { + add('safari4'); + } + if (Ext.isSafari5) { + add('safari5'); + } + if (Ext.isSafari5_0) { + add('safari5_0') + } + } + if (Ext.isChrome) { + add('chrome'); + } + if (Ext.isMac) { + add('mac'); + } + if (Ext.isLinux) { + add('linux'); + } + if (!supportsBR) { + add('nbr'); + } + if (!supportsLG) { + add('nlg'); + } + + + if (html) { + if (Ext.isStrict && (Ext.isIE6 || Ext.isIE7)) { + Ext.isBorderBox = false; + } + else { + Ext.isBorderBox = true; + } + + if(!Ext.isBorderBox) { + htmlCls.push(prefix + 'content-box'); + } + if (Ext.isStrict) { + htmlCls.push(prefix + 'strict'); + } else { + htmlCls.push(prefix + 'quirks'); + } + Ext.fly(html, '_internal').addCls(htmlCls); + } + + Ext.fly(bd, '_internal').addCls(cls); + return true; + }; + + Ext.apply(EventManager, { + + hasBoundOnReady: false, + + + hasFiredReady: false, + + + deferReadyEvent : 1, + + + onReadyChain : [], + + + readyEvent: + (function () { + readyEvent = new Ext.util.Event(); + readyEvent.fire = function () { + Ext._beforeReadyTime = Ext._beforeReadyTime || new Date().getTime(); + readyEvent.self.prototype.fire.apply(readyEvent, arguments); + Ext._afterReadytime = new Date().getTime(); + }; + return readyEvent; + }()), + + + idleEvent: new Ext.util.Event(), + + + isReadyPaused: function(){ + return (/[?&]ext-pauseReadyFire\b/i.test(location.search) && !Ext._continueFireReady); + }, + + + bindReadyEvent: function() { + if (EventManager.hasBoundOnReady) { + return; + } + + + if ( doc.readyState == 'complete' ) { + EventManager.onReadyEvent({ + type: doc.readyState || 'body' + }); + } else { + doc.addEventListener('DOMContentLoaded', EventManager.onReadyEvent, false); + win.addEventListener('load', EventManager.onReadyEvent, false); + EventManager.hasBoundOnReady = true; + } + }, + + onReadyEvent : function(e) { + if (e && e.type) { + EventManager.onReadyChain.push(e.type); + } + + if (EventManager.hasBoundOnReady) { + doc.removeEventListener('DOMContentLoaded', EventManager.onReadyEvent, false); + win.removeEventListener('load', EventManager.onReadyEvent, false); + } + + if (!Ext.isReady) { + EventManager.fireDocReady(); + } + }, + + + fireDocReady: function() { + if (!Ext.isReady) { + Ext._readyTime = new Date().getTime(); + Ext.isReady = true; + + Ext.supports.init(); + EventManager.onWindowUnload(); + readyEvent.onReadyChain = EventManager.onReadyChain; + + if (Ext.isNumber(EventManager.deferReadyEvent)) { + Ext.Function.defer(EventManager.fireReadyEvent, EventManager.deferReadyEvent); + EventManager.hasDocReadyTimer = true; + } else { + EventManager.fireReadyEvent(); + } + } + }, + + + fireReadyEvent: function() { + + + + EventManager.hasDocReadyTimer = false; + EventManager.isFiring = true; + + + + + while (readyEvent.listeners.length && !EventManager.isReadyPaused()) { + readyEvent.fire(); + } + EventManager.isFiring = false; + EventManager.hasFiredReady = true; + Ext.EventManager.idleEvent.fire(); + }, + + + onDocumentReady: function(fn, scope, options) { + options = options || {}; + + options.single = true; + readyEvent.addListener(fn, scope, options); + + + + if (!(EventManager.isFiring || EventManager.hasDocReadyTimer)) { + if (Ext.isReady) { + EventManager.fireReadyEvent(); + } else { + EventManager.bindReadyEvent(); + } + } + }, + + + + + stoppedMouseDownEvent: new Ext.util.Event(), + + + propRe: /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|freezeEvent)$/, + + + getId : function(element) { + var id; + + element = Ext.getDom(element); + + if (element === doc || element === win) { + id = element === doc ? Ext.documentId : Ext.windowId; + } + else { + id = Ext.id(element); + } + + if (!Ext.cache[id]) { + Ext.addCacheEntry(id, null, element); + } + + return id; + }, + + + prepareListenerConfig: function(element, config, isRemove) { + var propRe = EventManager.propRe, + key, value, args; + + + for (key in config) { + if (config.hasOwnProperty(key)) { + + if (!propRe.test(key)) { + value = config[key]; + + + if (typeof value == 'function') { + + args = [element, key, value, config.scope, config]; + } else { + + args = [element, key, value.fn, value.scope, value]; + } + + if (isRemove) { + EventManager.removeListener.apply(EventManager, args); + } else { + EventManager.addListener.apply(EventManager, args); + } + } + } + } + }, + + mouseEnterLeaveRe: /mouseenter|mouseleave/, + + + normalizeEvent: function(eventName, fn) { + if (EventManager.mouseEnterLeaveRe.test(eventName) && !Ext.supports.MouseEnterLeave) { + if (fn) { + fn = Ext.Function.createInterceptor(fn, EventManager.contains); + } + eventName = eventName == 'mouseenter' ? 'mouseover' : 'mouseout'; + } else if (eventName == 'mousewheel' && !Ext.supports.MouseWheel && !Ext.isOpera) { + eventName = 'DOMMouseScroll'; + } + return { + eventName: eventName, + fn: fn + }; + }, + + + contains: function(event) { + event = event.browserEvent || event; + var parent = event.currentTarget, + child = EventManager.getRelatedTarget(event); + + if (parent && parent.firstChild) { + while (child) { + if (child === parent) { + return false; + } + child = child.parentNode; + if (child && (child.nodeType != 1)) { + child = null; + } + } + } + return true; + }, + + + addListener: function(element, eventName, fn, scope, options) { + + if (typeof eventName !== 'string') { + EventManager.prepareListenerConfig(element, eventName); + return; + } + + var dom = element.dom || Ext.getDom(element), + hasAddEventListener, bind, wrap, cache, id, cacheItem, capture; + + if (typeof fn === 'string') { + fn = Ext.resolveMethod(fn, scope || element); + } + + + + options = options || {}; + + bind = EventManager.normalizeEvent(eventName, fn); + wrap = EventManager.createListenerWrap(dom, eventName, bind.fn, scope, options); + + + cache = EventManager.getEventListenerCache(element.dom ? element : dom, eventName); + eventName = bind.eventName; + + + hasAddEventListener = supportsAddEventListener || (Ext.isIE9 && !dom.attachEvent); + + if (!hasAddEventListener) { + id = EventManager.normalizeId(dom); + + + if (id) { + cacheItem = Ext.cache[id][eventName]; + if (cacheItem && cacheItem.firing) { + + + + + + + cache = EventManager.cloneEventListenerCache(dom, eventName); + } + } + } + + capture = !!options.capture; + cache.push({ + fn: fn, + wrap: wrap, + scope: scope, + capture: capture + }); + + if (!hasAddEventListener) { + + + if (cache.length === 1) { + id = EventManager.normalizeId(dom, true); + fn = Ext.Function.bind(EventManager.handleSingleEvent, EventManager, [id, eventName], true); + Ext.cache[id][eventName] = { + firing: false, + fn: fn + }; + dom.attachEvent('on' + eventName, fn); + } + } else { + dom.addEventListener(eventName, wrap, capture); + } + + if (dom == doc && eventName == 'mousedown') { + EventManager.stoppedMouseDownEvent.addListener(wrap); + } + }, + + + + normalizeId: function(dom, force) { + var id; + if (dom === document) { + id = Ext.documentId; + } else if (dom === window) { + id = Ext.windowId; + } else { + id = dom.id; + } + if (!id && force) { + id = EventManager.getId(dom); + } + return id; + }, + + handleSingleEvent: function(e, id, eventName) { + + + + var listenerCache = EventManager.getEventListenerCache(id, eventName), + attachItem = Ext.cache[id][eventName], + len, i; + + + + + if (attachItem.firing) { + return; + } + + attachItem.firing = true; + for (i = 0, len = listenerCache.length; i < len; ++i) { + listenerCache[i].wrap(e); + } + attachItem.firing = false; + + }, + + + removeListener : function(element, eventName, fn, scope) { + + if (typeof eventName !== 'string') { + EventManager.prepareListenerConfig(element, eventName, true); + return; + } + + var dom = Ext.getDom(element), + id, el = element.dom ? element : Ext.get(dom), + cache = EventManager.getEventListenerCache(el, eventName), + bindName = EventManager.normalizeEvent(eventName).eventName, + i = cache.length, j, cacheItem, hasRemoveEventListener, + listener, wrap; + + if (!dom) { + return; + } + + + hasRemoveEventListener = supportsAddEventListener || (Ext.isIE9 && !dom.detachEvent); + + if (typeof fn === 'string') { + fn = Ext.resolveMethod(fn, scope || element); + } + + while (i--) { + listener = cache[i]; + + if (listener && (!fn || listener.fn == fn) && (!scope || listener.scope === scope)) { + wrap = listener.wrap; + + + if (wrap.task) { + clearTimeout(wrap.task); + delete wrap.task; + } + + + j = wrap.tasks && wrap.tasks.length; + if (j) { + while (j--) { + clearTimeout(wrap.tasks[j]); + } + delete wrap.tasks; + } + + if (!hasRemoveEventListener) { + + + id = EventManager.normalizeId(dom, true); + cacheItem = Ext.cache[id][bindName]; + if (cacheItem && cacheItem.firing) { + + cache = EventManager.cloneEventListenerCache(dom, bindName); + } + + if (cache.length === 1) { + fn = cacheItem.fn; + delete Ext.cache[id][bindName]; + dom.detachEvent('on' + bindName, fn); + } + } else { + dom.removeEventListener(bindName, wrap, listener.capture); + } + + if (wrap && dom == doc && eventName == 'mousedown') { + EventManager.stoppedMouseDownEvent.removeListener(wrap); + } + + + Ext.Array.erase(cache, i, 1); + } + } + }, + + + removeAll : function(element) { + var id = (typeof element === 'string') ? element : element.id, + cache, events, eventName; + + + if (id && (cache = Ext.cache[id])) { + events = cache.events; + + for (eventName in events) { + if (events.hasOwnProperty(eventName)) { + EventManager.removeListener(element, eventName); + } + } + cache.events = {}; + } + }, + + + purgeElement : function(element, eventName) { + var dom = Ext.getDom(element), + i = 0, len, childNodes; + + if (eventName) { + EventManager.removeListener(element, eventName); + } else { + EventManager.removeAll(element); + } + + if (dom && dom.childNodes) { + childNodes = dom.childNodes; + for (len = childNodes.length; i < len; i++) { + EventManager.purgeElement(childNodes[i], eventName); + } + } + }, + + + createListenerWrap : function(dom, ename, fn, scope, options) { + options = options || {}; + + var f, gen, wrap = function(e, args) { + + if (!gen) { + f = ['if(!' + Ext.name + ') {return;}']; + + if (options.buffer || options.delay || options.freezeEvent) { + if (options.freezeEvent) { + + + f.push('e = X.EventObject.setEvent(e);'); + } + f.push('e = new X.EventObjectImpl(e, ' + (options.freezeEvent ? 'true' : 'false' ) + ');'); + } else { + f.push('e = X.EventObject.setEvent(e);'); + } + + if (options.delegate) { + + + f.push('var result, t = e.getTarget("' + (options.delegate + '').replace(escapeRx, '\\\\') + '", this);'); + f.push('if(!t) {return;}'); + } else { + f.push('var t = e.target, result;'); + } + + if (options.target) { + f.push('if(e.target !== options.target) {return;}'); + } + + if (options.stopEvent) { + f.push('e.stopEvent();'); + } else { + if(options.preventDefault) { + f.push('e.preventDefault();'); + } + if(options.stopPropagation) { + f.push('e.stopPropagation();'); + } + } + + if (options.normalized === false) { + f.push('e = e.browserEvent;'); + } + + if (options.buffer) { + f.push('(wrap.task && clearTimeout(wrap.task));'); + f.push('wrap.task = setTimeout(function() {'); + } + + if (options.delay) { + f.push('wrap.tasks = wrap.tasks || [];'); + f.push('wrap.tasks.push(setTimeout(function() {'); + } + + + f.push('result = fn.call(scope || dom, e, t, options);'); + + if (options.single) { + f.push('evtMgr.removeListener(dom, ename, fn, scope);'); + } + + + + if (ename !== 'mousemove' && ename !== 'unload') { + f.push('if (evtMgr.idleEvent.listeners.length) {'); + f.push('evtMgr.idleEvent.fire();'); + f.push('}'); + } + + if (options.delay) { + f.push('}, ' + options.delay + '));'); + } + + if (options.buffer) { + f.push('}, ' + options.buffer + ');'); + } + f.push('return result;'); + + gen = Ext.cacheableFunctionFactory('e', 'options', 'fn', 'scope', 'ename', 'dom', 'wrap', 'args', 'X', 'evtMgr', f.join('\n')); + } + + return gen.call(dom, e, options, fn, scope, ename, dom, wrap, args, Ext, EventManager); + }; + return wrap; + }, + + + getEventCache: function(element) { + var elementCache, eventCache, id; + + if (!element) { + return []; + } + + if (element.$cache) { + elementCache = element.$cache; + } else { + + if (typeof element === 'string') { + id = element; + } else { + id = EventManager.getId(element); + } + elementCache = Ext.cache[id]; + } + eventCache = elementCache.events || (elementCache.events = {}); + return eventCache; + }, + + + getEventListenerCache : function(element, eventName) { + var eventCache = EventManager.getEventCache(element); + return eventCache[eventName] || (eventCache[eventName] = []); + }, + + + cloneEventListenerCache: function(element, eventName){ + var eventCache = EventManager.getEventCache(element), + out; + + if (eventCache[eventName]) { + out = eventCache[eventName].slice(0); + } else { + out = []; + } + eventCache[eventName] = out; + return out; + }, + + + mouseLeaveRe: /(mouseout|mouseleave)/, + mouseEnterRe: /(mouseover|mouseenter)/, + + + stopEvent: function(event) { + EventManager.stopPropagation(event); + EventManager.preventDefault(event); + }, + + + stopPropagation: function(event) { + event = event.browserEvent || event; + if (event.stopPropagation) { + event.stopPropagation(); + } else { + event.cancelBubble = true; + } + }, + + + preventDefault: function(event) { + event = event.browserEvent || event; + if (event.preventDefault) { + event.preventDefault(); + } else { + event.returnValue = false; + + try { + + if (event.ctrlKey || event.keyCode > 111 && event.keyCode < 124) { + event.keyCode = -1; + } + } catch (e) { + + } + } + }, + + + getRelatedTarget: function(event) { + event = event.browserEvent || event; + var target = event.relatedTarget; + if (!target) { + if (EventManager.mouseLeaveRe.test(event.type)) { + target = event.toElement; + } else if (EventManager.mouseEnterRe.test(event.type)) { + target = event.fromElement; + } + } + return EventManager.resolveTextNode(target); + }, + + + getPageX: function(event) { + return EventManager.getPageXY(event)[0]; + }, + + + getPageY: function(event) { + return EventManager.getPageXY(event)[1]; + }, + + + getPageXY: function(event) { + event = event.browserEvent || event; + var x = event.pageX, + y = event.pageY, + docEl = doc.documentElement, + body = doc.body; + + + if (!x && x !== 0) { + x = event.clientX + (docEl && docEl.scrollLeft || body && body.scrollLeft || 0) - (docEl && docEl.clientLeft || body && body.clientLeft || 0); + y = event.clientY + (docEl && docEl.scrollTop || body && body.scrollTop || 0) - (docEl && docEl.clientTop || body && body.clientTop || 0); + } + return [x, y]; + }, + + + getTarget: function(event) { + event = event.browserEvent || event; + return EventManager.resolveTextNode(event.target || event.srcElement); + }, + + + + + + resolveTextNode: Ext.isGecko ? + function(node) { + if (node) { + + var s = HTMLElement.prototype.toString.call(node); + if (s !== '[xpconnect wrapped native prototype]' && s !== '[object XULElement]') { + return node.nodeType == 3 ? node.parentNode: node; + } + } + } + : + function(node) { + return node && node.nodeType == 3 ? node.parentNode: node; + }, + + + + + curWidth: 0, + curHeight: 0, + + + onWindowResize: function(fn, scope, options) { + var resize = EventManager.resizeEvent; + + if (!resize) { + EventManager.resizeEvent = resize = new Ext.util.Event(); + EventManager.on(win, 'resize', EventManager.fireResize, null, {buffer: 100}); + } + resize.addListener(fn, scope, options); + }, + + + fireResize: function() { + var w = Ext.Element.getViewWidth(), + h = Ext.Element.getViewHeight(); + + + if (EventManager.curHeight != h || EventManager.curWidth != w) { + EventManager.curHeight = h; + EventManager.curWidth = w; + EventManager.resizeEvent.fire(w, h); + } + }, + + + removeResizeListener: function(fn, scope) { + var resize = EventManager.resizeEvent; + if (resize) { + resize.removeListener(fn, scope); + } + }, + + + onWindowUnload: function(fn, scope, options) { + var unload = EventManager.unloadEvent; + + if (!unload) { + EventManager.unloadEvent = unload = new Ext.util.Event(); + EventManager.addListener(win, 'unload', EventManager.fireUnload); + } + if (fn) { + unload.addListener(fn, scope, options); + } + }, + + + fireUnload: function() { + + try { + + doc = win = undefined; + + var gridviews, i, ln, + el, cache; + + EventManager.unloadEvent.fire(); + + if (Ext.isGecko3) { + gridviews = Ext.ComponentQuery.query('gridview'); + i = 0; + ln = gridviews.length; + for (; i < ln; i++) { + gridviews[i].scrollToTop(); + } + } + + cache = Ext.cache; + + for (el in cache) { + if (cache.hasOwnProperty(el)) { + EventManager.removeAll(el); + } + } + } catch(e) { + } + }, + + + removeUnloadListener: function(fn, scope) { + var unload = EventManager.unloadEvent; + if (unload) { + unload.removeListener(fn, scope); + } + }, + + + useKeyDown: Ext.isWebKit ? + parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1], 10) >= 525 : + !((Ext.isGecko && !Ext.isWindows) || Ext.isOpera), + + + getKeyEvent: function() { + return EventManager.useKeyDown ? 'keydown' : 'keypress'; + } + }); + + + if(!supportsAddEventListener && document.attachEvent) { + Ext.apply( EventManager, { + + + + pollScroll : function() { + var scrollable = true; + + try { + document.documentElement.doScroll('left'); + } catch(e) { + scrollable = false; + } + + + if (scrollable && document.body) { + EventManager.onReadyEvent({ + type:'doScroll' + }); + } else { + + EventManager.scrollTimeout = setTimeout(EventManager.pollScroll, 20); + } + + return scrollable; + }, + + + scrollTimeout: null, + + + readyStatesRe : /complete/i, + + + checkReadyState: function() { + var state = document.readyState; + + if (EventManager.readyStatesRe.test(state)) { + EventManager.onReadyEvent({ + type: state + }); + } + }, + + bindReadyEvent: function() { + var topContext = true; + + if (EventManager.hasBoundOnReady) { + return; + } + + + try { + topContext = window.frameElement === undefined; + } catch(e) { + + + topContext = false; + } + + if (!topContext || !doc.documentElement.doScroll) { + EventManager.pollScroll = Ext.emptyFn; + } + + + if (EventManager.pollScroll() === true) { + return; + } + + + if (doc.readyState == 'complete' ) { + EventManager.onReadyEvent({type: 'already ' + (doc.readyState || 'body') }); + } else { + doc.attachEvent('onreadystatechange', EventManager.checkReadyState); + window.attachEvent('onload', EventManager.onReadyEvent); + EventManager.hasBoundOnReady = true; + } + }, + + onReadyEvent : function(e) { + if (e && e.type) { + EventManager.onReadyChain.push(e.type); + } + + if (EventManager.hasBoundOnReady) { + document.detachEvent('onreadystatechange', EventManager.checkReadyState); + window.detachEvent('onload', EventManager.onReadyEvent); + } + + if (Ext.isNumber(EventManager.scrollTimeout)) { + clearTimeout(EventManager.scrollTimeout); + delete EventManager.scrollTimeout; + } + + if (!Ext.isReady) { + EventManager.fireDocReady(); + } + }, + + + onReadyChain : [] + }); + } + + + + Ext.onReady = function(fn, scope, options) { + Ext.Loader.onReady(fn, scope, true, options); + }; + + + Ext.onDocumentReady = EventManager.onDocumentReady; + + + EventManager.on = EventManager.addListener; + + + EventManager.un = EventManager.removeListener; + + Ext.onReady(initExtCss); +}; + + + +Ext.define('Ext.util.Observable', function(Observable) { + + + var emptyArray = [], + arrayProto = Array.prototype, + arraySlice = arrayProto.slice, + ExtEvent = Ext.util.Event, + ListenerRemover = function(observable) { + + + if (observable instanceof ListenerRemover) { + return observable; + } + + this.observable = observable; + + + + if (arguments[1].isObservable) { + this.managedListeners = true; + } + this.args = arraySlice.call(arguments, 1); + }; + + ListenerRemover.prototype.destroy = function() { + this.observable[this.managedListeners ? 'mun' : 'un'].apply(this.observable, this.args); + }; + + return { + + + + + + statics: { + + releaseCapture: function(o) { + o.fireEventArgs = this.prototype.fireEventArgs; + }, + + + capture: function(o, fn, scope) { + + + + + var newFn = function(eventName, args) { + return fn.apply(scope, [eventName].concat(args)); + } + + this.captureArgs(o, newFn, scope); + }, + + + captureArgs: function(o, fn, scope) { + o.fireEventArgs = Ext.Function.createInterceptor(o.fireEventArgs, fn, scope); + }, + + + observe: function(cls, listeners) { + if (cls) { + if (!cls.isObservable) { + Ext.applyIf(cls, new this()); + this.captureArgs(cls.prototype, cls.fireEventArgs, cls); + } + if (Ext.isObject(listeners)) { + cls.on(listeners); + } + } + return cls; + }, + + + prepareClass: function (T, mixin) { + + + + + + + if (!T.HasListeners) { + + + + var HasListeners = function () {}, + SuperHL = T.superclass.HasListeners || (mixin && mixin.HasListeners) || + Observable.HasListeners; + + + T.prototype.HasListeners = T.HasListeners = HasListeners; + + + + HasListeners.prototype = T.hasListeners = new SuperHL(); + } + } + }, + + + + + + + isObservable: true, + + + eventsSuspended: 0, + + + + constructor: function(config) { + var me = this; + + Ext.apply(me, config); + + + if (!me.hasListeners) { + me.hasListeners = new me.HasListeners(); + } + + me.events = me.events || {}; + if (me.listeners) { + me.on(me.listeners); + me.listeners = null; + } + + if (me.bubbleEvents) { + me.enableBubble(me.bubbleEvents); + } + }, + + onClassExtended: function (T) { + if (!T.HasListeners) { + + + Observable.prepareClass(T); + } + }, + + + + eventOptionsRe : /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/, + + + addManagedListener: function(item, ename, fn, scope, options, noDestroy) { + var me = this, + managedListeners = me.managedListeners = me.managedListeners || [], + config, passedOptions; + + if (typeof ename !== 'string') { + + + + + passedOptions = arguments.length > 4 ? options : ename; + + options = ename; + for (ename in options) { + if (options.hasOwnProperty(ename)) { + config = options[ename]; + if (!me.eventOptionsRe.test(ename)) { + + + me.addManagedListener(item, ename, config.fn || config, config.scope || options.scope || scope, config.fn ? config : passedOptions, true); + } + } + } + if (options && options.destroyable) { + return new ListenerRemover(me, item, options); + } + } + else { + if (typeof fn === 'string') { + scope = scope || me; + fn = Ext.resolveMethod(fn, scope); + } + + managedListeners.push({ + item: item, + ename: ename, + fn: fn, + scope: scope, + options: options + }); + + item.on(ename, fn, scope, options); + + + if (!noDestroy && options && options.destroyable) { + return new ListenerRemover(me, item, ename, fn, scope); + } + } + }, + + + removeManagedListener: function(item, ename, fn, scope) { + var me = this, + options, + config, + managedListeners, + length, + i, func; + + if (typeof ename !== 'string') { + options = ename; + for (ename in options) { + if (options.hasOwnProperty(ename)) { + config = options[ename]; + if (!me.eventOptionsRe.test(ename)) { + me.removeManagedListener(item, ename, config.fn || config, config.scope || options.scope || scope); + } + } + } + } else { + managedListeners = me.managedListeners ? me.managedListeners.slice() : []; + + if (typeof fn === 'string') { + scope = scope || me; + fn = Ext.resolveMethod(fn, scope); + } + + for (i = 0, length = managedListeners.length; i < length; i++) { + me.removeManagedListenerItem(false, managedListeners[i], item, ename, fn, scope); + } + } + }, + + + fireEvent: function(eventName) { + return this.fireEventArgs(eventName, arraySlice.call(arguments, 1)); + }, + + + fireEventArgs: function(eventName, args) { + eventName = eventName.toLowerCase(); + var me = this, + events = me.events, + event = events && events[eventName], + ret = true; + + + + if (event && me.hasListeners[eventName]) { + ret = me.continueFireEvent(eventName, args || emptyArray, event.bubble); + } + return ret; + }, + + + continueFireEvent: function(eventName, args, bubbles) { + var target = this, + queue, event, + ret = true; + + do { + if (target.eventsSuspended) { + if ((queue = target.eventQueue)) { + queue.push([eventName, args, bubbles]); + } + return ret; + } else { + event = target.events[eventName]; + + + if (event && event !== true) { + if ((ret = event.fire.apply(event, args)) === false) { + break; + } + } + } + } while (bubbles && (target = target.getBubbleParent())); + return ret; + }, + + + getBubbleParent: function() { + var me = this, parent = me.getBubbleTarget && me.getBubbleTarget(); + if (parent && parent.isObservable) { + return parent; + } + return null; + }, + + + addListener: function(ename, fn, scope, options) { + var me = this, + config, event, + prevListenerCount = 0; + + + if (typeof ename !== 'string') { + options = ename; + for (ename in options) { + if (options.hasOwnProperty(ename)) { + config = options[ename]; + if (!me.eventOptionsRe.test(ename)) { + + me.addListener(ename, config.fn || config, config.scope || options.scope, config.fn ? config : options); + } + } + } + if (options && options.destroyable) { + return new ListenerRemover(me, options); + } + } + + else { + ename = ename.toLowerCase(); + event = me.events[ename]; + if (event && event.isEvent) { + prevListenerCount = event.listeners.length; + } else { + me.events[ename] = event = new ExtEvent(me, ename); + } + + + if (typeof fn === 'string') { + scope = scope || me; + fn = Ext.resolveMethod(fn, scope); + } + event.addListener(fn, scope, options); + + + + if (event.listeners.length !== prevListenerCount) { + me.hasListeners._incr_(ename); + } + if (options && options.destroyable) { + return new ListenerRemover(me, ename, fn, scope, options); + } + } + }, + + + removeListener: function(ename, fn, scope) { + var me = this, + config, + event, + options; + + if (typeof ename !== 'string') { + options = ename; + for (ename in options) { + if (options.hasOwnProperty(ename)) { + config = options[ename]; + if (!me.eventOptionsRe.test(ename)) { + me.removeListener(ename, config.fn || config, config.scope || options.scope); + } + } + } + } else { + ename = ename.toLowerCase(); + event = me.events[ename]; + if (event && event.isEvent) { + if (typeof fn === 'string') { + scope = scope || me; + fn = Ext.resolveMethod(fn, scope); + } + + if (event.removeListener(fn, scope)) { + me.hasListeners._decr_(ename); + } + } + } + }, + + + clearListeners: function() { + var events = this.events, + hasListeners = this.hasListeners, + event, + key; + + for (key in events) { + if (events.hasOwnProperty(key)) { + event = events[key]; + if (event.isEvent) { + delete hasListeners[key]; + event.clearListeners(); + } + } + } + + this.clearManagedListeners(); + }, + + + + clearManagedListeners : function() { + var managedListeners = this.managedListeners || [], + i = 0, + len = managedListeners.length; + + for (; i < len; i++) { + this.removeManagedListenerItem(true, managedListeners[i]); + } + + this.managedListeners = []; + }, + + + removeManagedListenerItem: function(isClear, managedListener, item, ename, fn, scope){ + if (isClear || (managedListener.item === item && managedListener.ename === ename && (!fn || managedListener.fn === fn) && (!scope || managedListener.scope === scope))) { + managedListener.item.un(managedListener.ename, managedListener.fn, managedListener.scope); + if (!isClear) { + Ext.Array.remove(this.managedListeners, managedListener); + } + } + }, + + + + addEvents: function(o) { + var me = this, + events = me.events || (me.events = {}), + arg, args, i; + + if (typeof o == 'string') { + for (args = arguments, i = args.length; i--; ) { + arg = args[i]; + if (!events[arg]) { + events[arg] = true; + } + } + } else { + Ext.applyIf(me.events, o); + } + }, + + + hasListener: function(ename) { + return !!this.hasListeners[ename.toLowerCase()]; + }, + + + suspendEvents: function(queueSuspended) { + this.eventsSuspended += 1; + if (queueSuspended && !this.eventQueue) { + this.eventQueue = []; + } + }, + + + suspendEvent: function(eventName) { + var len = arguments.length, + i, event; + + for (i = 0; i < len; i++) { + event = this.events[arguments[i]]; + + + if (event && event.suspend) { + event.suspend(); + } + } + }, + + + resumeEvent: function() { + var len = arguments.length, + i, event; + + for (i = 0; i < len; i++) { + + + event = this.events[arguments[i]]; + if (event && event.resume) { + event.resume(); + } + } + }, + + + resumeEvents: function() { + var me = this, + queued = me.eventQueue, + qLen, q; + + if (me.eventsSuspended && ! --me.eventsSuspended) { + delete me.eventQueue; + + if (queued) { + qLen = queued.length; + for (q = 0; q < qLen; q++) { + me.continueFireEvent.apply(me, queued[q]); + } + } + } + }, + + + relayEvents : function(origin, events, prefix) { + var me = this, + len = events.length, + i = 0, + oldName, + relayers = {}; + + for (; i < len; i++) { + oldName = events[i]; + + + relayers[oldName] = me.createRelayer(prefix ? prefix + oldName : oldName); + } + + + + me.mon(origin, relayers, null, null, undefined); + + + return new ListenerRemover(me, origin, relayers); + }, + + + createRelayer: function(newName, beginEnd) { + var me = this; + return function() { + return me.fireEventArgs.call(me, newName, beginEnd ? arraySlice.apply(arguments, beginEnd) : arguments); + }; + }, + + + enableBubble: function(eventNames) { + if (eventNames) { + var me = this, + names = (typeof eventNames == 'string') ? arguments : eventNames, + length = names.length, + events = me.events, + ename, event, i; + + for (i = 0; i < length; ++i) { + ename = names[i].toLowerCase(); + event = events[ename]; + + if (!event || typeof event == 'boolean') { + events[ename] = event = new ExtEvent(me, ename); + } + + + + me.hasListeners._incr_(ename); + + event.bubble = true; + } + } + } + }; +}, function() { + var Observable = this, + proto = Observable.prototype, + HasListeners = function () {}, + prepareMixin = function (T) { + if (!T.HasListeners) { + var proto = T.prototype; + + + Observable.prepareClass(T, this); + + + + T.onExtended(function (U) { + + Observable.prepareClass(U); + }); + + + + if (proto.onClassMixedIn) { + + Ext.override(T, { + onClassMixedIn: function (U) { + prepareMixin.call(this, U); + this.callParent(arguments); + } + }); + } else { + + proto.onClassMixedIn = function (U) { + prepareMixin.call(this, U); + }; + } + } + }, + globalEvents; + + HasListeners.prototype = { + + _decr_: function (ev) { + if (! --this[ev]) { + + + + delete this[ev]; + } + }, + _incr_: function (ev) { + if (this.hasOwnProperty(ev)) { + + ++this[ev]; + } else { + + + this[ev] = 1; + } + } + }; + + proto.HasListeners = Observable.HasListeners = HasListeners; + + Observable.createAlias({ + + on: 'addListener', + + un: 'removeListener', + + mon: 'addManagedListener', + + mun: 'removeManagedListener' + }); + + + Observable.observeClass = Observable.observe; + + + Ext.globalEvents = globalEvents = new Observable({ + events: { + idle: Ext.EventManager.idleEvent, + ready: Ext.EventManager.readyEvent + } + }); + + + Ext.on = function() { + return globalEvents.addListener.apply(globalEvents, arguments); + }; + + + Ext.un = function() { + return globalEvents.removeListener.apply(globalEvents, arguments); + }; + + + + + function getMethodEvent(method){ + var e = (this.methodEvents = this.methodEvents || {})[method], + returnValue, + v, + cancel, + obj = this, + makeCall; + + if (!e) { + this.methodEvents[method] = e = {}; + e.originalFn = this[method]; + e.methodName = method; + e.before = []; + e.after = []; + + makeCall = function(fn, scope, args){ + if((v = fn.apply(scope || obj, args)) !== undefined){ + if (typeof v == 'object') { + if(v.returnValue !== undefined){ + returnValue = v.returnValue; + }else{ + returnValue = v; + } + cancel = !!v.cancel; + } + else + if (v === false) { + cancel = true; + } + else { + returnValue = v; + } + } + }; + + this[method] = function(){ + var args = Array.prototype.slice.call(arguments, 0), + b, i, len; + returnValue = v = undefined; + cancel = false; + + for(i = 0, len = e.before.length; i < len; i++){ + b = e.before[i]; + makeCall(b.fn, b.scope, args); + if (cancel) { + return returnValue; + } + } + + if((v = e.originalFn.apply(obj, args)) !== undefined){ + returnValue = v; + } + + for(i = 0, len = e.after.length; i < len; i++){ + b = e.after[i]; + makeCall(b.fn, b.scope, args); + if (cancel) { + return returnValue; + } + } + return returnValue; + }; + } + return e; + } + + Ext.apply(proto, { + onClassMixedIn: prepareMixin, + + + + + beforeMethod : function(method, fn, scope){ + getMethodEvent.call(this, method).before.push({ + fn: fn, + scope: scope + }); + }, + + + afterMethod : function(method, fn, scope){ + getMethodEvent.call(this, method).after.push({ + fn: fn, + scope: scope + }); + }, + + removeMethodListener: function(method, fn, scope){ + var e = this.getMethodEvent(method), + i, len; + for(i = 0, len = e.before.length; i < len; i++){ + if(e.before[i].fn == fn && e.before[i].scope == scope){ + Ext.Array.erase(e.before, i, 1); + return; + } + } + for(i = 0, len = e.after.length; i < len; i++){ + if(e.after[i].fn == fn && e.after[i].scope == scope){ + Ext.Array.erase(e.after, i, 1); + return; + } + } + }, + + toggleEventLogging: function(toggle) { + Ext.util.Observable[toggle ? 'capture' : 'releaseCapture'](this, function(en) { + if (Ext.isDefined(Ext.global.console)) { + Ext.global.console.log(en, arguments); + } + }); + } + }); +}); + + + + + + +Ext.define('Ext.EventObjectImpl', { + + + + BACKSPACE: 8, + + TAB: 9, + + NUM_CENTER: 12, + + ENTER: 13, + + RETURN: 13, + + SHIFT: 16, + + CTRL: 17, + + ALT: 18, + + PAUSE: 19, + + CAPS_LOCK: 20, + + ESC: 27, + + SPACE: 32, + + PAGE_UP: 33, + + PAGE_DOWN: 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, + + WHEEL_SCALE: (function () { + var scale; + + if (Ext.isGecko) { + + scale = 3; + } else if (Ext.isMac) { + + + + + if (Ext.isSafari && Ext.webKitVersion >= 532.0) { + + + + + + + scale = 120; + } else { + + + scale = 12; + } + + + + + + scale *= 3; + } else { + + scale = 120; + } + + return scale; + }()), + + + clickRe: /(dbl)?click/, + + safariKeys: { + 3: 13, + 63234: 37, + 63235: 39, + 63232: 38, + 63233: 40, + 63276: 33, + 63277: 34, + 63272: 46, + 63273: 36, + 63275: 35 + }, + + btnMap: Ext.isIE ? { + 1: 0, + 4: 1, + 2: 2 + } : { + 0: 0, + 1: 1, + 2: 2 + }, + + + + + + constructor: function(event, freezeEvent){ + if (event) { + this.setEvent(event.browserEvent || event, freezeEvent); + } + }, + + setEvent: function(event, freezeEvent){ + var me = this, button, options; + + if (event === me || (event && event.browserEvent)) { + return event; + } + me.browserEvent = event; + if (event) { + + button = event.button ? me.btnMap[event.button] : (event.which ? event.which - 1 : -1); + if (me.clickRe.test(event.type) && button == -1) { + button = 0; + } + options = { + type: event.type, + button: button, + shiftKey: event.shiftKey, + + ctrlKey: event.ctrlKey || event.metaKey || false, + altKey: event.altKey, + + keyCode: event.keyCode, + charCode: event.charCode, + + target: Ext.EventManager.getTarget(event), + relatedTarget: Ext.EventManager.getRelatedTarget(event), + currentTarget: event.currentTarget, + xy: (freezeEvent ? me.getXY() : null) + }; + } else { + options = { + button: -1, + shiftKey: false, + ctrlKey: false, + altKey: false, + keyCode: 0, + charCode: 0, + target: null, + xy: [0, 0] + }; + } + Ext.apply(me, options); + return me; + }, + + + stopEvent: function(){ + this.stopPropagation(); + this.preventDefault(); + }, + + + preventDefault: function(){ + if (this.browserEvent) { + Ext.EventManager.preventDefault(this.browserEvent); + } + }, + + + stopPropagation: function(){ + var browserEvent = this.browserEvent; + + if (browserEvent) { + if (browserEvent.type == 'mousedown') { + Ext.EventManager.stoppedMouseDownEvent.fire(this); + } + Ext.EventManager.stopPropagation(browserEvent); + } + }, + + + getCharCode: function(){ + return this.charCode || this.keyCode; + }, + + + getKey: function(){ + return this.normalizeKey(this.keyCode || this.charCode); + }, + + + normalizeKey: function(key){ + + return Ext.isWebKit ? (this.safariKeys[key] || key) : key; + }, + + + getPageX: function(){ + return this.getX(); + }, + + + getPageY: function(){ + return this.getY(); + }, + + + getX: function() { + return this.getXY()[0]; + }, + + + getY: function() { + return this.getXY()[1]; + }, + + + getXY: function() { + if (!this.xy) { + + this.xy = Ext.EventManager.getPageXY(this.browserEvent); + } + return this.xy; + }, + + + getTarget : function(selector, maxDepth, returnEl){ + if (selector) { + return Ext.fly(this.target).findParent(selector, maxDepth, returnEl); + } + return returnEl ? Ext.get(this.target) : this.target; + }, + + + getRelatedTarget : function(selector, maxDepth, returnEl){ + if (selector && this.relatedTarget) { + return Ext.fly(this.relatedTarget).findParent(selector, maxDepth, returnEl); + } + return returnEl ? Ext.get(this.relatedTarget) : this.relatedTarget; + }, + + + correctWheelDelta : function (delta) { + var scale = this.WHEEL_SCALE, + ret = Math.round(delta / scale); + + if (!ret && delta) { + ret = (delta < 0) ? -1 : 1; + } + + return ret; + }, + + + getWheelDeltas : function () { + var me = this, + event = me.browserEvent, + dx = 0, dy = 0; + + if (Ext.isDefined(event.wheelDeltaX)) { + dx = event.wheelDeltaX; + dy = event.wheelDeltaY; + } else if (event.wheelDelta) { + dy = event.wheelDelta; + } else if (event.detail) { + dy = -event.detail; + + + + if (dy > 100) { + dy = 3; + } else if (dy < -100) { + dy = -3; + } + + + + if (Ext.isDefined(event.axis) && event.axis === event.HORIZONTAL_AXIS) { + dx = dy; + dy = 0; + } + } + + return { + x: me.correctWheelDelta(dx), + y: me.correctWheelDelta(dy) + }; + }, + + + getWheelDelta : function(){ + var deltas = this.getWheelDeltas(); + + return deltas.y; + }, + + + within : function(el, related, allowEl){ + if(el){ + var t = related ? this.getRelatedTarget() : this.getTarget(), + result; + + if (t) { + result = Ext.fly(el, '_internal').contains(t); + if (!result && allowEl) { + result = t == Ext.getDom(el); + } + return result; + } + } + return false; + }, + + + isNavKeyPress : function(){ + var me = this, + k = this.normalizeKey(me.keyCode); + + return (k >= 33 && k <= 40) || + k == me.RETURN || + k == me.TAB || + k == me.ESC; + }, + + + isSpecialKey : function(){ + var k = this.normalizeKey(this.keyCode); + return (this.type == 'keypress' && this.ctrlKey) || + this.isNavKeyPress() || + (k == this.BACKSPACE) || + (k >= 16 && k <= 20) || + (k >= 44 && k <= 46); + }, + + + getPoint : function(){ + var xy = this.getXY(); + return new Ext.util.Point(xy[0], xy[1]); + }, + + + hasModifier : function(){ + return this.ctrlKey || this.altKey || this.shiftKey || this.metaKey; + }, + + + injectEvent: (function () { + var API, + dispatchers = {}, + crazyIEButtons; + + + + + + + if (!Ext.isIE9m && document.createEvent) { + API = { + createHtmlEvent: function (doc, type, bubbles, cancelable) { + var event = doc.createEvent('HTMLEvents'); + + event.initEvent(type, bubbles, cancelable); + return event; + }, + + createMouseEvent: function (doc, type, bubbles, cancelable, detail, + clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, + button, relatedTarget) { + var event = doc.createEvent('MouseEvents'), + view = doc.defaultView || window; + + if (event.initMouseEvent) { + event.initMouseEvent(type, bubbles, cancelable, view, detail, + clientX, clientY, clientX, clientY, ctrlKey, altKey, + shiftKey, metaKey, button, relatedTarget); + } else { + event = doc.createEvent('UIEvents'); + event.initEvent(type, bubbles, cancelable); + event.view = view; + event.detail = detail; + event.screenX = clientX; + event.screenY = clientY; + event.clientX = clientX; + event.clientY = clientY; + event.ctrlKey = ctrlKey; + event.altKey = altKey; + event.metaKey = metaKey; + event.shiftKey = shiftKey; + event.button = button; + event.relatedTarget = relatedTarget; + } + + return event; + }, + + createUIEvent: function (doc, type, bubbles, cancelable, detail) { + var event = doc.createEvent('UIEvents'), + view = doc.defaultView || window; + + event.initUIEvent(type, bubbles, cancelable, view, detail); + return event; + }, + + fireEvent: function (target, type, event) { + target.dispatchEvent(event); + }, + + fixTarget: function (target) { + + if (target == window && !target.dispatchEvent) { + return document; + } + + return target; + } + }; + } else if (document.createEventObject) { + crazyIEButtons = { 0: 1, 1: 4, 2: 2 }; + + API = { + createHtmlEvent: function (doc, type, bubbles, cancelable) { + var event = doc.createEventObject(); + event.bubbles = bubbles; + event.cancelable = cancelable; + return event; + }, + + createMouseEvent: function (doc, type, bubbles, cancelable, detail, + clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, + button, relatedTarget) { + var event = doc.createEventObject(); + event.bubbles = bubbles; + event.cancelable = cancelable; + event.detail = detail; + event.screenX = clientX; + event.screenY = clientY; + event.clientX = clientX; + event.clientY = clientY; + event.ctrlKey = ctrlKey; + event.altKey = altKey; + event.shiftKey = shiftKey; + event.metaKey = metaKey; + event.button = crazyIEButtons[button] || button; + event.relatedTarget = relatedTarget; + return event; + }, + + createUIEvent: function (doc, type, bubbles, cancelable, detail) { + var event = doc.createEventObject(); + event.bubbles = bubbles; + event.cancelable = cancelable; + return event; + }, + + fireEvent: function (target, type, event) { + target.fireEvent('on' + type, event); + }, + + fixTarget: function (target) { + if (target == document) { + + + return document.documentElement; + } + + return target; + } + }; + } + + + + + Ext.Object.each({ + load: [false, false], + unload: [false, false], + select: [true, false], + change: [true, false], + submit: [true, true], + reset: [true, false], + resize: [true, false], + scroll: [true, false] + }, + function (name, value) { + var bubbles = value[0], cancelable = value[1]; + dispatchers[name] = function (targetEl, srcEvent) { + var e = API.createHtmlEvent(name, bubbles, cancelable); + API.fireEvent(targetEl, name, e); + }; + }); + + + + + function createMouseEventDispatcher (type, detail) { + var cancelable = (type != 'mousemove'); + return function (targetEl, srcEvent) { + var xy = srcEvent.getXY(), + e = API.createMouseEvent(targetEl.ownerDocument, type, true, cancelable, + detail, xy[0], xy[1], srcEvent.ctrlKey, srcEvent.altKey, + srcEvent.shiftKey, srcEvent.metaKey, srcEvent.button, + srcEvent.relatedTarget); + API.fireEvent(targetEl, type, e); + }; + } + + Ext.each(['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mousemove', 'mouseout'], + function (eventName) { + dispatchers[eventName] = createMouseEventDispatcher(eventName, 1); + }); + + + + + Ext.Object.each({ + focusin: [true, false], + focusout: [true, false], + activate: [true, true], + focus: [false, false], + blur: [false, false] + }, + function (name, value) { + var bubbles = value[0], cancelable = value[1]; + dispatchers[name] = function (targetEl, srcEvent) { + var e = API.createUIEvent(targetEl.ownerDocument, name, bubbles, cancelable, 1); + API.fireEvent(targetEl, name, e); + }; + }); + + + if (!API) { + + + dispatchers = {}; + + API = { + fixTarget: Ext.identityFn + }; + } + + function cannotInject (target, srcEvent) { + } + + return function (target) { + var me = this, + dispatcher = dispatchers[me.type] || cannotInject, + t = target ? (target.dom || target) : me.getTarget(); + + t = API.fixTarget(t); + dispatcher(t, me); + }; + }()) + +}, function() { + +Ext.EventObject = new Ext.EventObjectImpl(); + +}); + + + + + + +Ext.define('Ext.dom.AbstractQuery', { + + select: function(q, root) { + var results = [], + nodes, + i, + j, + qlen, + nlen; + + root = root || document; + + if (typeof root == 'string') { + root = document.getElementById(root); + } + + q = q.split(","); + + for (i = 0,qlen = q.length; i < qlen; i++) { + if (typeof q[i] == 'string') { + + + if (typeof q[i][0] == '@') { + nodes = root.getAttributeNode(q[i].substring(1)); + results.push(nodes); + } else { + nodes = root.querySelectorAll(q[i]); + + for (j = 0,nlen = nodes.length; j < nlen; j++) { + results.push(nodes[j]); + } + } + } + } + + return results; + }, + + + selectNode: function(q, root) { + return this.select(q, root)[0]; + }, + + + is: function(el, q) { + if (typeof el == "string") { + el = document.getElementById(el); + } + return this.select(q).indexOf(el) !== -1; + } + +}); + + + + + +Ext.define('Ext.dom.AbstractHelper', { + emptyTags : /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i, + confRe : /^(?:tag|children|cn|html|tpl|tplData)$/i, + endRe : /end/i, + styleSepRe: /\s*(?::|;)\s*/, + + + attributeTransform: { cls : 'class', htmlFor : 'for' }, + + closeTags: {}, + + decamelizeName : (function () { + var camelCaseRe = /([a-z])([A-Z])/g, + cache = {}; + + function decamel (match, p1, p2) { + return p1 + '-' + p2.toLowerCase(); + } + + return function (s) { + return cache[s] || (cache[s] = s.replace(camelCaseRe, decamel)); + }; + }()), + + generateMarkup: function(spec, buffer) { + var me = this, + specType = typeof spec, + attr, val, tag, i, closeTags; + + if (specType == "string" || specType == "number") { + buffer.push(spec); + } else if (Ext.isArray(spec)) { + for (i = 0; i < spec.length; i++) { + if (spec[i]) { + me.generateMarkup(spec[i], buffer); + } + } + } else { + tag = spec.tag || 'div'; + buffer.push('<', tag); + + for (attr in spec) { + if (spec.hasOwnProperty(attr)) { + val = spec[attr]; + if (!me.confRe.test(attr)) { + if (typeof val == "object") { + buffer.push(' ', attr, '="'); + me.generateStyles(val, buffer).push('"'); + } else { + buffer.push(' ', me.attributeTransform[attr] || attr, '="', val, '"'); + } + } + } + } + + + if (me.emptyTags.test(tag)) { + buffer.push('/>'); + } else { + buffer.push('>'); + + + if ((val = spec.tpl)) { + val.applyOut(spec.tplData, buffer); + } + if ((val = spec.html)) { + buffer.push(val); + } + if ((val = spec.cn || spec.children)) { + me.generateMarkup(val, buffer); + } + + + closeTags = me.closeTags; + buffer.push(closeTags[tag] || (closeTags[tag] = '')); + } + } + + return buffer; + }, + + + generateStyles: function (styles, buffer) { + var a = buffer || [], + name; + + for (name in styles) { + if (styles.hasOwnProperty(name)) { + a.push(this.decamelizeName(name), ':', styles[name], ';'); + } + } + + return buffer || a.join(''); + }, + + + markup: function(spec) { + if (typeof spec == "string") { + return spec; + } + + var buf = this.generateMarkup(spec, []); + return buf.join(''); + }, + + + applyStyles: function(el, styles) { + if (styles) { + var i = 0, + len; + + el = Ext.fly(el, '_applyStyles'); + if (typeof styles == 'function') { + styles = styles.call(); + } + if (typeof styles == 'string') { + styles = Ext.util.Format.trim(styles).split(this.styleSepRe); + for (len = styles.length; i < len;) { + el.setStyle(styles[i++], styles[i++]); + } + } else if (Ext.isObject(styles)) { + el.setStyle(styles); + } + } + }, + + + insertHtml: function(where, el, html) { + var hash = {}, + setStart, + range, + frag, + rangeEl; + + where = where.toLowerCase(); + + + hash['beforebegin'] = ['BeforeBegin', 'previousSibling']; + hash['afterend'] = ['AfterEnd', 'nextSibling']; + + range = el.ownerDocument.createRange(); + setStart = 'setStart' + (this.endRe.test(where) ? 'After' : 'Before'); + if (hash[where]) { + range[setStart](el); + frag = range.createContextualFragment(html); + el.parentNode.insertBefore(frag, where == 'beforebegin' ? el : el.nextSibling); + return el[(where == 'beforebegin' ? 'previous' : 'next') + 'Sibling']; + } + else { + rangeEl = (where == 'afterbegin' ? 'first' : 'last') + 'Child'; + if (el.firstChild) { + range[setStart](el[rangeEl]); + frag = range.createContextualFragment(html); + if (where == 'afterbegin') { + el.insertBefore(frag, el.firstChild); + } + else { + el.appendChild(frag); + } + } + else { + el.innerHTML = html; + } + return el[rangeEl]; + } + + throw 'Illegal insertion point -> "' + where + '"'; + }, + + + insertBefore: function(el, o, returnElement) { + return this.doInsert(el, o, returnElement, 'beforebegin'); + }, + + + insertAfter: function(el, o, returnElement) { + return this.doInsert(el, o, returnElement, 'afterend', 'nextSibling'); + }, + + + insertFirst: function(el, o, returnElement) { + return this.doInsert(el, o, returnElement, 'afterbegin', 'firstChild'); + }, + + + append: function(el, o, returnElement) { + return this.doInsert(el, o, returnElement, 'beforeend', '', true); + }, + + + overwrite: function(el, o, returnElement) { + el = Ext.getDom(el); + el.innerHTML = this.markup(o); + return returnElement ? Ext.get(el.firstChild) : el.firstChild; + }, + + doInsert: function(el, o, returnElement, pos, sibling, append) { + var newNode = this.insertHtml(pos, Ext.getDom(el), this.markup(o)); + return returnElement ? Ext.get(newNode, true) : newNode; + } + +}); + + + +Ext.define('Ext.dom.AbstractElement_static', { + override: 'Ext.dom.AbstractElement', + + inheritableStatics: { + unitRe: /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i, + camelRe: /(-[a-z])/gi, + msRe: /^-ms-/, + cssRe: /([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi, + opacityRe: /alpha\(opacity=(.*)\)/i, + propertyCache: {}, + defaultUnit : "px", + borders: {l: 'border-left-width', r: 'border-right-width', t: 'border-top-width', b: 'border-bottom-width'}, + paddings: {l: 'padding-left', r: 'padding-right', t: 'padding-top', b: 'padding-bottom'}, + margins: {l: 'margin-left', r: 'margin-right', t: 'margin-top', b: 'margin-bottom'}, + + addUnits: function(size, units) { + + if (typeof size == 'number') { + return size + (units || this.defaultUnit || 'px'); + } + + + if (size === "" || size == "auto" || size === undefined || size === null) { + return size || ''; + } + + + if (!this.unitRe.test(size)) { + return size || ''; + } + + return size; + }, + + + isAncestor: function(p, c) { + var ret = false; + + p = Ext.getDom(p); + c = Ext.getDom(c); + if (p && c) { + if (p.contains) { + return p.contains(c); + } else if (p.compareDocumentPosition) { + return !!(p.compareDocumentPosition(c) & 16); + } else { + while ((c = c.parentNode)) { + ret = c == p || ret; + } + } + } + return ret; + }, + + + parseBox: function(box) { + box = box || 0; + + var type = typeof box, + parts, + ln; + + if (type === 'number') { + return { + top : box, + right : box, + bottom: box, + left : box + }; + } else if (type !== 'string') { + + return box; + } + + parts = box.split(' '); + ln = parts.length; + + if (ln == 1) { + parts[1] = parts[2] = parts[3] = parts[0]; + } else if (ln == 2) { + parts[2] = parts[0]; + parts[3] = parts[1]; + } else if (ln == 3) { + parts[3] = parts[1]; + } + + return { + top :parseFloat(parts[0]) || 0, + right :parseFloat(parts[1]) || 0, + bottom:parseFloat(parts[2]) || 0, + left :parseFloat(parts[3]) || 0 + }; + }, + + + unitizeBox: function(box, units) { + var a = this.addUnits, + b = this.parseBox(box); + + return a(b.top, units) + ' ' + + a(b.right, units) + ' ' + + a(b.bottom, units) + ' ' + + a(b.left, units); + + }, + + + camelReplaceFn: function(m, a) { + return a.charAt(1).toUpperCase(); + }, + + + normalize: function(prop) { + + if (prop == 'float') { + prop = Ext.supports.Float ? 'cssFloat' : 'styleFloat'; + } + + return this.propertyCache[prop] || (this.propertyCache[prop] = prop.replace(this.msRe, 'ms-').replace(this.camelRe, this.camelReplaceFn)); + }, + + + getDocumentHeight: function() { + return Math.max(!Ext.isStrict ? document.body.scrollHeight : document.documentElement.scrollHeight, this.getViewportHeight()); + }, + + + getDocumentWidth: function() { + return Math.max(!Ext.isStrict ? document.body.scrollWidth : document.documentElement.scrollWidth, this.getViewportWidth()); + }, + + + getViewportHeight: function(){ + return window.innerHeight; + }, + + + getViewportWidth: function() { + return window.innerWidth; + }, + + + getViewSize: function() { + return { + width: window.innerWidth, + height: window.innerHeight + }; + }, + + + getOrientation: function() { + if (Ext.supports.OrientationChange) { + return (window.orientation == 0) ? 'portrait' : 'landscape'; + } + + return (window.innerHeight > window.innerWidth) ? 'portrait' : 'landscape'; + }, + + + fromPoint: function(x, y) { + return Ext.get(document.elementFromPoint(x, y)); + }, + + + parseStyles: function(styles){ + var out = {}, + cssRe = this.cssRe, + matches; + + if (styles) { + + + + + cssRe.lastIndex = 0; + while ((matches = cssRe.exec(styles))) { + out[matches[1]] = matches[2]||''; + } + } + return out; + } + } +}, +function () { + var doc = document, + activeElement = null, + isCSS1 = doc.compatMode == "CSS1Compat"; + + + + + if (!('activeElement' in doc) && doc.addEventListener) { + doc.addEventListener('focus', + function (ev) { + if (ev && ev.target) { + activeElement = (ev.target == doc) ? null : ev.target; + } + }, true); + } + + + function makeSelectionRestoreFn (activeEl, start, end) { + return function () { + activeEl.selectionStart = start; + activeEl.selectionEnd = end; + }; + } + + this.addInheritableStatics({ + + getActiveElement: function () { + var active; + + + + try { + active = doc.activeElement; + } catch(e) {} + + + + active = active || activeElement; + if (!active) { + active = activeElement = document.body; + } + return active; + }, + + + getRightMarginFixCleaner: function (target) { + var supports = Ext.supports, + hasInputBug = supports.DisplayChangeInputSelectionBug, + hasTextAreaBug = supports.DisplayChangeTextAreaSelectionBug, + activeEl, + tag, + start, + end; + + if (hasInputBug || hasTextAreaBug) { + activeEl = doc.activeElement || activeElement; + tag = activeEl && activeEl.tagName; + + if ((hasTextAreaBug && tag == 'TEXTAREA') || + (hasInputBug && tag == 'INPUT' && activeEl.type == 'text')) { + if (Ext.dom.Element.isAncestor(target, activeEl)) { + start = activeEl.selectionStart; + end = activeEl.selectionEnd; + + if (Ext.isNumber(start) && Ext.isNumber(end)) { + + + + + return makeSelectionRestoreFn(activeEl, start, end); + } + } + } + } + + return Ext.emptyFn; + }, + + getViewWidth: function(full) { + return full ? Ext.dom.Element.getDocumentWidth() : Ext.dom.Element.getViewportWidth(); + }, + + getViewHeight: function(full) { + return full ? Ext.dom.Element.getDocumentHeight() : Ext.dom.Element.getViewportHeight(); + }, + + getDocumentHeight: function() { + return Math.max(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, Ext.dom.Element.getViewportHeight()); + }, + + getDocumentWidth: function() { + return Math.max(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, Ext.dom.Element.getViewportWidth()); + }, + + getViewportHeight: function(){ + return Ext.isIE9m ? + (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) : + self.innerHeight; + }, + + getViewportWidth: function() { + return (!Ext.isStrict && !Ext.isOpera) ? doc.body.clientWidth : + Ext.isIE9m ? doc.documentElement.clientWidth : self.innerWidth; + }, + + + serializeForm: function(form) { + var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements, + hasSubmit = false, + encoder = encodeURIComponent, + data = '', + eLen = fElements.length, + element, name, type, options, hasValue, e, + o, oLen, opt; + + for (e = 0; e < eLen; e++) { + element = fElements[e]; + name = element.name; + type = element.type; + options = element.options; + + if (!element.disabled && name) { + if (/select-(one|multiple)/i.test(type)) { + oLen = options.length; + for (o = 0; o < oLen; o++) { + opt = options[o]; + if (opt.selected) { + hasValue = opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttributeNode('value').specified; + data += Ext.String.format("{0}={1}&", encoder(name), encoder(hasValue ? opt.value : opt.text)); + } + } + } else if (!(/file|undefined|reset|button/i.test(type))) { + if (!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)) { + data += encoder(name) + '=' + encoder(element.value) + '&'; + hasSubmit = /submit/i.test(type); + } + } + } + } + return data.substr(0, data.length - 1); + } + }); +}); + + + +Ext.define('Ext.dom.AbstractElement_insertion', { + override: 'Ext.dom.AbstractElement', + + + appendChild: function(el, returnDom) { + var me = this, + insertEl, + eLen, e, oldUseDom; + + if (el.nodeType || el.dom || typeof el == 'string') { + el = Ext.getDom(el); + me.dom.appendChild(el); + return !returnDom ? Ext.get(el) : el; + } else if (el.length) { + + insertEl = Ext.fly(document.createDocumentFragment(), '_internal'); + eLen = el.length; + + + Ext.DomHelper.useDom = true; + for (e = 0; e < eLen; e++) { + insertEl.appendChild(el[e], returnDom); + } + Ext.DomHelper.useDom = oldUseDom; + me.dom.appendChild(insertEl.dom); + return returnDom ? insertEl.dom : insertEl; + } + else { + return me.createChild(el, null, returnDom); + } + }, + + + appendTo: function(el) { + Ext.getDom(el).appendChild(this.dom); + return this; + }, + + + insertBefore: function(el) { + el = Ext.getDom(el); + el.parentNode.insertBefore(this.dom, el); + return this; + }, + + + insertAfter: function(el) { + el = Ext.getDom(el); + el.parentNode.insertBefore(this.dom, el.nextSibling); + return this; + }, + + + insertFirst: function(el, returnDom) { + el = el || {}; + if (el.nodeType || el.dom || typeof el == 'string') { + el = Ext.getDom(el); + this.dom.insertBefore(el, this.dom.firstChild); + return !returnDom ? Ext.get(el) : el; + } + else { + return this.createChild(el, this.dom.firstChild, returnDom); + } + }, + + + insertSibling: function(el, where, returnDom) { + var me = this, + DomHelper = Ext.core.DomHelper, + oldUseDom = DomHelper.useDom, + isAfter = (where || 'before').toLowerCase() == 'after', + rt, insertEl, eLen, e; + + if (Ext.isArray(el)) { + + insertEl = Ext.fly(document.createDocumentFragment(), '_internal'); + eLen = el.length; + + + DomHelper.useDom = true; + for (e = 0; e < eLen; e++) { + rt = insertEl.appendChild(el[e], returnDom); + } + DomHelper.useDom = oldUseDom; + + + me.dom.parentNode.insertBefore(insertEl.dom, isAfter ? me.dom.nextSibling : me.dom); + return rt; + } + + el = el || {}; + + if (el.nodeType || el.dom) { + rt = me.dom.parentNode.insertBefore(Ext.getDom(el), isAfter ? me.dom.nextSibling : me.dom); + if (!returnDom) { + rt = Ext.get(rt); + } + } else { + if (isAfter && !me.dom.nextSibling) { + rt = DomHelper.append(me.dom.parentNode, el, !returnDom); + } else { + rt = DomHelper[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom); + } + } + return rt; + }, + + + replace: function(el) { + el = Ext.get(el); + this.insertBefore(el); + el.remove(); + return this; + }, + + + replaceWith: function(el){ + var me = this; + + if (el.nodeType || el.dom || typeof el == 'string') { + el = Ext.get(el); + me.dom.parentNode.insertBefore(el.dom, me.dom); + } else { + el = Ext.core.DomHelper.insertBefore(me.dom, el); + } + + delete Ext.cache[me.id]; + Ext.removeNode(me.dom); + me.id = Ext.id(me.dom = el); + Ext.dom.AbstractElement.addToCache(me.isFlyweight ? new Ext.dom.AbstractElement(me.dom) : me); + return me; + }, + + + createChild: function(config, insertBefore, returnDom) { + config = config || {tag:'div'}; + if (insertBefore) { + return Ext.core.DomHelper.insertBefore(insertBefore, config, returnDom !== true); + } + else { + return Ext.core.DomHelper.append(this.dom, config, returnDom !== true); + } + }, + + + wrap: function(config, returnDom, selector) { + var newEl = Ext.core.DomHelper.insertBefore(this.dom, config || {tag: "div"}, true), + target = newEl; + + if (selector) { + target = Ext.DomQuery.selectNode(selector, newEl.dom); + } + + target.appendChild(this.dom); + return returnDom ? newEl.dom : newEl; + }, + + + insertHtml: function(where, html, returnEl) { + var el = Ext.core.DomHelper.insertHtml(where, this.dom, html); + return returnEl ? Ext.get(el) : el; + } +}); + + + +Ext.define('Ext.dom.AbstractElement_style', { + + override: 'Ext.dom.AbstractElement' + +}, function() { + + var Element = this, + wordsRe = /\w/g, + spacesRe = /\s+/, + transparentRe = /^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i, + + + + + hasClassList = Ext.supports.ClassList, + PADDING = 'padding', + MARGIN = 'margin', + BORDER = 'border', + LEFT_SUFFIX = '-left', + RIGHT_SUFFIX = '-right', + TOP_SUFFIX = '-top', + BOTTOM_SUFFIX = '-bottom', + WIDTH = '-width', + + borders = {l: BORDER + LEFT_SUFFIX + WIDTH, r: BORDER + RIGHT_SUFFIX + WIDTH, t: BORDER + TOP_SUFFIX + WIDTH, b: BORDER + BOTTOM_SUFFIX + WIDTH}, + paddings = {l: PADDING + LEFT_SUFFIX, r: PADDING + RIGHT_SUFFIX, t: PADDING + TOP_SUFFIX, b: PADDING + BOTTOM_SUFFIX}, + margins = {l: MARGIN + LEFT_SUFFIX, r: MARGIN + RIGHT_SUFFIX, t: MARGIN + TOP_SUFFIX, b: MARGIN + BOTTOM_SUFFIX}, + internalFly = new Element.Fly(); + + + Ext.override(Element, { + + + styleHooks: {}, + + + addStyles : function(sides, styles){ + var totalSize = 0, + sidesArr = (sides || '').match(wordsRe), + i, + len = sidesArr.length, + side, + styleSides = []; + + if (len == 1) { + totalSize = Math.abs(parseFloat(this.getStyle(styles[sidesArr[0]])) || 0); + } else if (len) { + for (i = 0; i < len; i++) { + side = sidesArr[i]; + styleSides.push(styles[side]); + } + + styleSides = this.getStyle(styleSides); + + for (i=0; i < len; i++) { + side = sidesArr[i]; + totalSize += Math.abs(parseFloat(styleSides[styles[side]]) || 0); + } + } + + return totalSize; + }, + + + addCls: (function(){ + var addWithClassList = function(className) { + var me = this, + dom = me.dom, + trimRe = me.trimRe, + origClassName = className, + classList, + newCls, + i, + len, + cls; + + if (typeof(className) == 'string') { + + className = className.replace(trimRe, '').split(spacesRe); + } + + + + if (dom && className && !!(len = className.length)) { + if (!dom.className) { + dom.className = className.join(' '); + } else { + classList = dom.classList; + if (classList) { + for (i = 0; i < len; ++i) { + cls = className[i]; + if (cls) { + if (!classList.contains(cls)) { + if (newCls) { + newCls.push(cls); + } else { + newCls = dom.className.replace(trimRe, ''); + newCls = newCls ? [newCls, cls] : [cls]; + } + } + } + } + + if (newCls) { + dom.className = newCls.join(' '); + } + } else { + addWithoutClassList(origClassName); + } + } + } + return me; + }, addWithoutClassList = function(className) { + var me = this, + dom = me.dom, + elClasses; + + if (dom && className && className.length) { + elClasses = Ext.Element.mergeClsList(dom.className, className); + if (elClasses.changed) { + dom.className = elClasses.join(' '); + } + } + return me; + }; + + return hasClassList ? addWithClassList : addWithoutClassList; + })(), + + + + removeCls: function(className) { + var me = this, + dom = me.dom, + classList, + len, + elClasses; + + if (typeof(className) == 'string') { + + className = className.replace(me.trimRe, '').split(spacesRe); + } + + if (dom && dom.className && className && !!(len = className.length)) { + classList = dom.classList; + if (len === 1 && classList) { + if (className[0]) { + classList.remove(className[0]); + } + } else { + elClasses = Ext.Element.removeCls(dom.className, className); + if (elClasses.changed) { + dom.className = elClasses.join(' '); + } + } + } + return me; + }, + + + radioCls: function(className) { + var cn = this.dom.parentNode.childNodes, + v, + i, len; + className = Ext.isArray(className) ? className: [className]; + for (i = 0, len = cn.length; i < len; i++) { + v = cn[i]; + if (v && v.nodeType == 1) { + internalFly.attach(v).removeCls(className); + } + } + return this.addCls(className); + }, + + + toggleCls: (function(){ + var toggleWithClassList = function(className){ + var me = this, + dom = me.dom, + classList; + + if (dom) { + className = className.replace(me.trimRe, ''); + if (className) { + classList = dom.classList; + if (classList) { + classList.toggle(className); + } else { + toggleWithoutClassList(className); + } + } + } + + return me; + }, toggleWithoutClassList = function(className){ + return this.hasCls(className) ? this.removeCls(className) : this.addCls(className); + }; + + return hasClassList ? toggleWithClassList : toggleWithoutClassList; + })(), + + + hasCls: (function(){ + var hasClsWithClassList = function(className) { + var dom = this.dom, + out = false, + classList; + + if (dom && className) { + classList = dom.classList; + if (classList) { + out = classList.contains(className); + } else { + out = hasClsWithoutClassList(className); + } + } + return out; + }, hasClsWithoutClassList = function(className){ + var dom = this.dom; + return dom ? className && (' '+dom.className+' ').indexOf(' '+className+' ') !== -1 : false; + }; + + return hasClassList ? hasClsWithClassList : hasClsWithoutClassList; + })(), + + + replaceCls: function(oldClassName, newClassName){ + return this.removeCls(oldClassName).addCls(newClassName); + }, + + + isStyle: function(style, val) { + return this.getStyle(style) == val; + }, + + + getStyle: function (property, inline) { + var me = this, + dom = me.dom, + multiple = typeof property != 'string', + hooks = me.styleHooks, + prop = property, + props = prop, + len = 1, + domStyle, camel, values, hook, out, style, i; + + if (multiple) { + values = {}; + prop = props[0]; + i = 0; + if (!(len = props.length)) { + return values; + } + } + + if (!dom || dom.documentElement) { + return values || ''; + } + + domStyle = dom.style; + + if (inline) { + style = domStyle; + } else { + + + + + style = dom.ownerDocument.defaultView.getComputedStyle(dom, null); + + + if (!style) { + inline = true; + style = domStyle; + } + } + + do { + hook = hooks[prop]; + + if (!hook) { + hooks[prop] = hook = { name: Element.normalize(prop) }; + } + + if (hook.get) { + out = hook.get(dom, me, inline, style); + } else { + camel = hook.name; + out = style[camel]; + } + + if (!multiple) { + return out; + } + + values[prop] = out; + prop = props[++i]; + } while (i < len); + + return values; + }, + + getStyles: function () { + var props = Ext.Array.slice(arguments), + len = props.length, + inline; + + if (len && typeof props[len-1] == 'boolean') { + inline = props.pop(); + } + + return this.getStyle(props, inline); + }, + + + isTransparent: function (prop) { + var value = this.getStyle(prop); + return value ? transparentRe.test(value) : false; + }, + + + setStyle: function(prop, value) { + var me = this, + dom = me.dom, + hooks = me.styleHooks, + style = dom.style, + name = prop, + hook; + + + if (typeof name == 'string') { + hook = hooks[name]; + if (!hook) { + hooks[name] = hook = { name: Element.normalize(name) }; + } + value = (value == null) ? '' : value; + if (hook.set) { + hook.set(dom, value, me); + } else { + style[hook.name] = value; + } + if (hook.afterSet) { + hook.afterSet(dom, value, me); + } + } else { + for (name in prop) { + if (prop.hasOwnProperty(name)) { + hook = hooks[name]; + if (!hook) { + hooks[name] = hook = { name: Element.normalize(name) }; + } + value = prop[name]; + value = (value == null) ? '' : value; + if (hook.set) { + hook.set(dom, value, me); + } else { + style[hook.name] = value; + } + if (hook.afterSet) { + hook.afterSet(dom, value, me); + } + } + } + } + + return me; + }, + + + getHeight: function(contentHeight) { + var dom = this.dom, + height = contentHeight ? (dom.clientHeight - this.getPadding("tb")) : dom.offsetHeight; + return height > 0 ? height: 0; + }, + + + getWidth: function(contentWidth) { + var dom = this.dom, + width = contentWidth ? (dom.clientWidth - this.getPadding("lr")) : dom.offsetWidth; + return width > 0 ? width: 0; + }, + + + setWidth: function(width) { + var me = this; + me.dom.style.width = Element.addUnits(width); + return me; + }, + + + setHeight: function(height) { + var me = this; + me.dom.style.height = Element.addUnits(height); + return me; + }, + + + getBorderWidth: function(side){ + return this.addStyles(side, borders); + }, + + + getPadding: function(side){ + return this.addStyles(side, paddings); + }, + + margins : margins, + + + applyStyles: function(styles) { + if (styles) { + var i, + len, + dom = this.dom; + + if (typeof styles == 'function') { + styles = styles.call(); + } + if (typeof styles == 'string') { + styles = Ext.util.Format.trim(styles).split(/\s*(?::|;)\s*/); + for (i = 0, len = styles.length; i < len;) { + dom.style[Element.normalize(styles[i++])] = styles[i++]; + } + } + else if (typeof styles == 'object') { + this.setStyle(styles); + } + } + }, + + + setSize: function(width, height) { + var me = this, + style = me.dom.style; + + if (Ext.isObject(width)) { + + height = width.height; + width = width.width; + } + + style.width = Element.addUnits(width); + style.height = Element.addUnits(height); + return me; + }, + + + getViewSize: function() { + var doc = document, + dom = this.dom; + + if (dom == doc || dom == doc.body) { + return { + width: Element.getViewportWidth(), + height: Element.getViewportHeight() + }; + } + else { + return { + width: dom.clientWidth, + height: dom.clientHeight + }; + } + }, + + + getSize: function(contentSize) { + var dom = this.dom; + return { + width: Math.max(0, contentSize ? (dom.clientWidth - this.getPadding("lr")) : dom.offsetWidth), + height: Math.max(0, contentSize ? (dom.clientHeight - this.getPadding("tb")) : dom.offsetHeight) + }; + }, + + + repaint: function() { + var dom = this.dom; + this.addCls(Ext.baseCSSPrefix + 'repaint'); + setTimeout(function(){ + internalFly.attach(dom).removeCls(Ext.baseCSSPrefix + 'repaint'); + }, 1); + return this; + }, + + + getMargin: function(side){ + var me = this, + hash = {t:"top", l:"left", r:"right", b: "bottom"}, + key, + o, + margins; + + if (!side) { + margins = []; + for (key in me.margins) { + if(me.margins.hasOwnProperty(key)) { + margins.push(me.margins[key]); + } + } + o = me.getStyle(margins); + if(o && typeof o == 'object') { + + for (key in me.margins) { + if(me.margins.hasOwnProperty(key)) { + o[hash[key]] = parseFloat(o[me.margins[key]]) || 0; + } + } + } + + return o; + } else { + return me.addStyles(side, me.margins); + } + }, + + + mask: function(msg, msgCls, transparent) { + var me = this, + dom = me.dom, + data = (me.$cache || me.getCache()).data, + el = data.mask, + mask, + size, + cls = '', + prefix = Ext.baseCSSPrefix; + + me.addCls(prefix + 'masked'); + if (me.getStyle("position") == "static") { + me.addCls(prefix + 'masked-relative'); + } + if (el) { + el.remove(); + } + if (msgCls && typeof msgCls == 'string' ) { + cls = ' ' + msgCls; + } + else { + cls = ' ' + prefix + 'mask-gray'; + } + + mask = me.createChild({ + cls: prefix + 'mask' + ((transparent !== false) ? '' : (' ' + prefix + 'mask-gray')), + html: msg ? ('
' + msg + '
') : '' + }); + + size = me.getSize(); + + data.mask = mask; + + if (dom === document.body) { + size.height = window.innerHeight; + if (me.orientationHandler) { + Ext.EventManager.unOrientationChange(me.orientationHandler, me); + } + + me.orientationHandler = function() { + size = me.getSize(); + size.height = window.innerHeight; + mask.setSize(size); + }; + + Ext.EventManager.onOrientationChange(me.orientationHandler, me); + } + mask.setSize(size); + if (Ext.is.iPad) { + Ext.repaint(); + } + }, + + + unmask: function() { + var me = this, + data = (me.$cache || me.getCache()).data, + mask = data.mask, + prefix = Ext.baseCSSPrefix; + + if (mask) { + mask.remove(); + delete data.mask; + } + me.removeCls([prefix + 'masked', prefix + 'masked-relative']); + + if (me.dom === document.body) { + Ext.EventManager.unOrientationChange(me.orientationHandler, me); + delete me.orientationHandler; + } + } + }); + + + Ext.onReady(function () { + var supports = Ext.supports, + styleHooks, + colorStyles, i, name, camel; + + function fixTransparent (dom, el, inline, style) { + var value = style[this.name] || ''; + return transparentRe.test(value) ? 'transparent' : value; + } + + function fixRightMargin (dom, el, inline, style) { + var result = style.marginRight, + domStyle, display; + + + + if (result != '0px') { + domStyle = dom.style; + display = domStyle.display; + domStyle.display = 'inline-block'; + result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, null)).marginRight; + domStyle.display = display; + } + + return result; + } + + function fixRightMarginAndInputFocus (dom, el, inline, style) { + var result = style.marginRight, + domStyle, cleaner, display; + + if (result != '0px') { + domStyle = dom.style; + cleaner = Element.getRightMarginFixCleaner(dom); + display = domStyle.display; + domStyle.display = 'inline-block'; + result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, '')).marginRight; + domStyle.display = display; + cleaner(); + } + + return result; + } + + styleHooks = Element.prototype.styleHooks; + + + + if (supports.init) { + supports.init(); + } + + + if (!supports.RightMargin) { + styleHooks.marginRight = styleHooks['margin-right'] = { + name: 'marginRight', + + + get: (supports.DisplayChangeInputSelectionBug || supports.DisplayChangeTextAreaSelectionBug) ? + fixRightMarginAndInputFocus : fixRightMargin + }; + } + + if (!supports.TransparentColor) { + colorStyles = ['background-color', 'border-color', 'color', 'outline-color']; + for (i = colorStyles.length; i--; ) { + name = colorStyles[i]; + camel = Element.normalize(name); + + styleHooks[name] = styleHooks[camel] = { + name: camel, + get: fixTransparent + }; + } + } + }); + +}); + + + +Ext.define('Ext.dom.AbstractElement_traversal', { + override: 'Ext.dom.AbstractElement', + + + findParent: function(simpleSelector, limit, returnEl) { + var target = this.dom, + topmost = document.documentElement, + depth = 0, + stopEl; + + limit = limit || 50; + if (isNaN(limit)) { + stopEl = Ext.getDom(limit); + limit = Number.MAX_VALUE; + } + while (target && target.nodeType == 1 && depth < limit && target != topmost && target != stopEl) { + if (Ext.DomQuery.is(target, simpleSelector)) { + return returnEl ? Ext.get(target) : target; + } + depth++; + target = target.parentNode; + } + return null; + }, + + + findParentNode: function(simpleSelector, limit, returnEl) { + var p = Ext.fly(this.dom.parentNode, '_internal'); + return p ? p.findParent(simpleSelector, limit, returnEl) : null; + }, + + + up: function(simpleSelector, limit, returnDom) { + return this.findParentNode(simpleSelector, limit, !returnDom); + }, + + + select: function(selector, composite) { + return Ext.dom.Element.select(selector, this.dom, composite); + }, + + + query: function(selector) { + return Ext.DomQuery.select(selector, this.dom); + }, + + + down: function(selector, returnDom) { + var n = Ext.DomQuery.selectNode(selector, this.dom); + return returnDom ? n : Ext.get(n); + }, + + + child: function(selector, returnDom) { + var node, + me = this, + id; + + + + id = Ext.id(me.dom); + + id = Ext.escapeId(id); + node = Ext.DomQuery.selectNode('#' + id + " > " + selector, me.dom); + return returnDom ? node : Ext.get(node); + }, + + + parent: function(selector, returnDom) { + return this.matchNode('parentNode', 'parentNode', selector, returnDom); + }, + + + next: function(selector, returnDom) { + return this.matchNode('nextSibling', 'nextSibling', selector, returnDom); + }, + + + prev: function(selector, returnDom) { + return this.matchNode('previousSibling', 'previousSibling', selector, returnDom); + }, + + + + first: function(selector, returnDom) { + return this.matchNode('nextSibling', 'firstChild', selector, returnDom); + }, + + + last: function(selector, returnDom) { + return this.matchNode('previousSibling', 'lastChild', selector, returnDom); + }, + + matchNode: function(dir, start, selector, returnDom) { + if (!this.dom) { + return null; + } + + var n = this.dom[start]; + while (n) { + if (n.nodeType == 1 && (!selector || Ext.DomQuery.is(n, selector))) { + return !returnDom ? Ext.get(n) : n; + } + n = n[dir]; + } + return null; + }, + + isAncestor: function(element) { + return this.self.isAncestor.call(this.self, this.dom, element); + } +}); + + + + + +Ext.define('Ext.dom.AbstractElement', { + + + + + + + + + trimRe: /^\s+|\s+$/g, + whitespaceRe: /\s/, + + inheritableStatics: { + trimRe: /^\s+|\s+$/g, + whitespaceRe: /\s/, + + + get: function(el) { + var me = this, + document = window.document, + El = Ext.dom.Element, + cacheItem, + docEl, + extEl, + dom, + id; + + if (!el) { + return null; + } + + + if (el.isFly) { + el = el.dom; + } + + if (typeof el == "string") { + if (el == Ext.windowId) { + return El.get(window); + } else if (el == Ext.documentId) { + return El.get(document); + } + + cacheItem = Ext.cache[el]; + + + + + if (cacheItem && cacheItem.skipGarbageCollection) { + extEl = cacheItem.el; + return extEl; + } + + if (!(dom = document.getElementById(el))) { + return null; + } + + if (cacheItem && cacheItem.el) { + extEl = Ext.updateCacheEntry(cacheItem, dom).el; + } else { + + extEl = new El(dom, !!cacheItem); + } + return extEl; + } else if (el.tagName) { + if (!(id = el.id)) { + id = Ext.id(el); + } + cacheItem = Ext.cache[id]; + if (cacheItem && cacheItem.el) { + extEl = Ext.updateCacheEntry(cacheItem, el).el; + } else { + + extEl = new El(el, !!cacheItem); + } + return extEl; + } else if (el instanceof me) { + if (el != me.docEl && el != me.winEl) { + id = el.id; + + + cacheItem = Ext.cache[id]; + if (cacheItem) { + Ext.updateCacheEntry(cacheItem, document.getElementById(id) || el.dom); + } + } + return el; + } else if (el.isComposite) { + return el; + } else if (Ext.isArray(el)) { + return me.select(el); + } else if (el === document) { + + if (!me.docEl) { + docEl = me.docEl = Ext.Object.chain(El.prototype); + docEl.dom = document; + + + + docEl.el = docEl; + docEl.id = Ext.id(document); + me.addToCache(docEl); + } + return me.docEl; + } else if (el === window) { + if (!me.winEl) { + me.winEl = Ext.Object.chain(El.prototype); + me.winEl.dom = window; + me.winEl.id = Ext.id(window); + me.addToCache(me.winEl); + } + return me.winEl; + } + return null; + }, + + addToCache: function(el, id) { + if (el) { + Ext.addCacheEntry(id, el); + } + return el; + }, + + addMethods: function() { + this.override.apply(this, arguments); + }, + + + mergeClsList: function() { + var clsList, clsHash = {}, + i, length, j, listLength, clsName, result = [], + changed = false, + trimRe = this.trimRe, + whitespaceRe = this.whitespaceRe; + + for (i = 0, length = arguments.length; i < length; i++) { + clsList = arguments[i]; + if (Ext.isString(clsList)) { + clsList = clsList.replace(trimRe, '').split(whitespaceRe); + } + if (clsList) { + for (j = 0, listLength = clsList.length; j < listLength; j++) { + clsName = clsList[j]; + if (!clsHash[clsName]) { + if (i) { + changed = true; + } + clsHash[clsName] = true; + } + } + } + } + + for (clsName in clsHash) { + result.push(clsName); + } + result.changed = changed; + return result; + }, + + + removeCls: function(existingClsList, removeClsList) { + var clsHash = {}, + i, length, clsName, result = [], + changed = false, + whitespaceRe = this.whitespaceRe; + + if (existingClsList) { + if (Ext.isString(existingClsList)) { + existingClsList = existingClsList.replace(this.trimRe, '').split(whitespaceRe); + } + for (i = 0, length = existingClsList.length; i < length; i++) { + clsHash[existingClsList[i]] = true; + } + } + if (removeClsList) { + if (Ext.isString(removeClsList)) { + removeClsList = removeClsList.split(whitespaceRe); + } + for (i = 0, length = removeClsList.length; i < length; i++) { + clsName = removeClsList[i]; + if (clsHash[clsName]) { + changed = true; + delete clsHash[clsName]; + } + } + } + for (clsName in clsHash) { + result.push(clsName); + } + result.changed = changed; + return result; + }, + + + VISIBILITY: 1, + + + DISPLAY: 2, + + + OFFSETS: 3, + + + ASCLASS: 4 + }, + + constructor: function(element, forceNew) { + var me = this, + dom = typeof element == 'string' + ? document.getElementById(element) + : element, + id; + + + + + me.el = me; + + if (!dom) { + return null; + } + + id = dom.id; + if (!forceNew && id && Ext.cache[id]) { + + return Ext.cache[id].el; + } + + + me.dom = dom; + + + me.id = id || Ext.id(dom); + + me.self.addToCache(me); + }, + + + set: function(o, useSet) { + var el = this.dom, + attr, + value; + + for (attr in o) { + if (o.hasOwnProperty(attr)) { + value = o[attr]; + if (attr == 'style') { + this.applyStyles(value); + } + else if (attr == 'cls') { + el.className = value; + } + else if (useSet !== false) { + if (value === undefined) { + el.removeAttribute(attr); + } else { + el.setAttribute(attr, value); + } + } + else { + el[attr] = value; + } + } + } + return this; + }, + + + defaultUnit: "px", + + + is: function(simpleSelector) { + return Ext.DomQuery.is(this.dom, simpleSelector); + }, + + + getValue: function(asNumber) { + var val = this.dom.value; + return asNumber ? parseInt(val, 10) : val; + }, + + + remove: function() { + var me = this, + dom = me.dom; + + if (me.isAnimate) { + me.stopAnimation(); + } + + if (dom) { + Ext.removeNode(dom); + delete me.dom; + } + }, + + + contains: function(el) { + if (!el) { + return false; + } + + var me = this, + dom = el.dom || el; + + + return (dom === me.dom) || Ext.dom.AbstractElement.isAncestor(me.dom, dom); + }, + + + getAttribute: function(name, ns) { + var dom = this.dom; + return dom.getAttributeNS(ns, name) || dom.getAttribute(ns + ":" + name) || dom.getAttribute(name) || dom[name]; + }, + + + update: function(html) { + if (this.dom) { + this.dom.innerHTML = html; + } + return this; + }, + + + + setHTML: function(html) { + if(this.dom) { + this.dom.innerHTML = html; + } + return this; + }, + + + getHTML: function() { + return this.dom ? this.dom.innerHTML : ''; + }, + + + hide: function() { + this.setVisible(false); + return this; + }, + + + show: function() { + this.setVisible(true); + return this; + }, + + + setVisible: function(visible, animate) { + var me = this, + statics = me.self, + mode = me.getVisibilityMode(), + prefix = Ext.baseCSSPrefix; + + switch (mode) { + case statics.VISIBILITY: + me.removeCls([prefix + 'hidden-display', prefix + 'hidden-offsets']); + me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-visibility'); + break; + + case statics.DISPLAY: + me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-offsets']); + me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-display'); + break; + + case statics.OFFSETS: + me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-display']); + me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-offsets'); + break; + } + + return me; + }, + + getVisibilityMode: function() { + + + + var data = (this.$cache || this.getCache()).data, + visMode = data.visibilityMode; + + if (visMode === undefined) { + data.visibilityMode = visMode = this.self.DISPLAY; + } + + return visMode; + }, + + + setVisibilityMode: function(mode) { + (this.$cache || this.getCache()).data.visibilityMode = mode; + return this; + }, + + getCache: function() { + var me = this, + id = me.dom.id || Ext.id(me.dom); + + + + + me.$cache = Ext.cache[id] || Ext.addCacheEntry(id, null, me.dom); + + return me.$cache; + } +}, +function() { + var AbstractElement = this; + + + Ext.getDetachedBody = function () { + var detachedEl = AbstractElement.detachedBodyEl; + + if (!detachedEl) { + detachedEl = document.createElement('div'); + AbstractElement.detachedBodyEl = detachedEl = new AbstractElement.Fly(detachedEl); + detachedEl.isDetachedBody = true; + } + + return detachedEl; + }; + + + Ext.getElementById = function (id) { + var el = document.getElementById(id), + detachedBodyEl; + + if (!el && (detachedBodyEl = AbstractElement.detachedBodyEl)) { + el = detachedBodyEl.dom.querySelector('#' + Ext.escapeId(id)); + } + + return el; + }; + + + Ext.get = function(el) { + return Ext.dom.Element.get(el); + }; + + this.addStatics({ + + Fly: new Ext.Class({ + + + + + extend: AbstractElement, + + + isFly: true, + + constructor: function(dom) { + this.dom = dom; + + + + this.el = this; + }, + + + attach: function (dom) { + + + this.dom = dom; + + + this.$cache = dom.id ? Ext.cache[dom.id] : null; + return this; + } + }), + + _flyweights: {}, + + + fly: function(dom, named) { + var fly = null, + _flyweights = AbstractElement._flyweights; + + named = named || '_global'; + + dom = Ext.getDom(dom); + + if (dom) { + fly = _flyweights[named] || (_flyweights[named] = new AbstractElement.Fly()); + + + + fly.dom = dom; + + + fly.$cache = dom.id ? Ext.cache[dom.id] : null; + } + return fly; + } + }); + + + Ext.fly = function() { + return AbstractElement.fly.apply(AbstractElement, arguments); + }; + + (function (proto) { + + proto.destroy = proto.remove; + + + if (document.querySelector) { + proto.getById = function (id, asDom) { + + + var dom = document.getElementById(id) || + this.dom.querySelector('#'+Ext.escapeId(id)); + return asDom ? dom : (dom ? Ext.get(dom) : null); + }; + } else { + proto.getById = function (id, asDom) { + var dom = document.getElementById(id); + return asDom ? dom : (dom ? Ext.get(dom) : null); + }; + } + }(this.prototype)); +}); + + + + + + + +Ext.define('Ext.dom.Helper', (function() { + + +var afterbegin = 'afterbegin', + afterend = 'afterend', + beforebegin = 'beforebegin', + beforeend = 'beforeend', + ts = '', + te = '
', + tbs = ts+'', + tbe = ''+te, + trs = tbs + '', + tre = ''+tbe, + detachedDiv = document.createElement('div'), + bbValues = ['BeforeBegin', 'previousSibling'], + aeValues = ['AfterEnd', 'nextSibling'], + bb_ae_PositionHash = { + beforebegin: bbValues, + afterend: aeValues + }, + fullPositionHash = { + beforebegin: bbValues, + afterend: aeValues, + afterbegin: ['AfterBegin', 'firstChild'], + beforeend: ['BeforeEnd', 'lastChild'] + }; + + +return { + extend: Ext.dom.AbstractHelper , + + + tableRe: /^(?:table|thead|tbody|tr|td)$/i, + + tableElRe: /td|tr|tbody|thead/i, + + + useDom : false, + + + createDom: function(o, parentNode){ + var el, + doc = document, + useSet, + attr, + val, + cn, + i, l; + + if (Ext.isArray(o)) { + el = doc.createDocumentFragment(); + for (i = 0, l = o.length; i < l; i++) { + this.createDom(o[i], el); + } + } else if (typeof o == 'string') { + el = doc.createTextNode(o); + } else { + el = doc.createElement(o.tag || 'div'); + useSet = !!el.setAttribute; + for (attr in o) { + if (!this.confRe.test(attr)) { + val = o[attr]; + if (attr == 'cls') { + el.className = val; + } else { + if (useSet) { + el.setAttribute(attr, val); + } else { + el[attr] = val; + } + } + } + } + Ext.DomHelper.applyStyles(el, o.style); + + if ((cn = o.children || o.cn)) { + this.createDom(cn, el); + } else if (o.html) { + el.innerHTML = o.html; + } + } + if (parentNode) { + parentNode.appendChild(el); + } + return el; + }, + + ieTable: function(depth, openingTags, htmlContent, closingTags){ + detachedDiv.innerHTML = [openingTags, htmlContent, closingTags].join(''); + + var i = -1, + el = detachedDiv, + ns; + + while (++i < depth) { + el = el.firstChild; + } + + ns = el.nextSibling; + + if (ns) { + ns = el; + el = document.createDocumentFragment(); + + while (ns) { + nx = ns.nextSibling; + el.appendChild(ns); + ns = nx; + } + } + return el; + }, + + + insertIntoTable: function(tag, where, destinationEl, html) { + var node, + before, + bb = where == beforebegin, + ab = where == afterbegin, + be = where == beforeend, + ae = where == afterend; + + if (tag == 'td' && (ab || be) || !this.tableElRe.test(tag) && (bb || ae)) { + return null; + } + before = bb ? destinationEl : + ae ? destinationEl.nextSibling : + ab ? destinationEl.firstChild : null; + + if (bb || ae) { + destinationEl = destinationEl.parentNode; + } + + if (tag == 'td' || (tag == 'tr' && (be || ab))) { + node = this.ieTable(4, trs, html, tre); + } else if (((tag == 'tbody' || tag == 'thead') && (be || ab)) || + (tag == 'tr' && (bb || ae))) { + node = this.ieTable(3, tbs, html, tbe); + } else { + node = this.ieTable(2, ts, html, te); + } + destinationEl.insertBefore(node, before); + return node; + }, + + + createContextualFragment: function(html) { + var fragment = document.createDocumentFragment(), + length, childNodes; + + detachedDiv.innerHTML = html; + childNodes = detachedDiv.childNodes; + length = childNodes.length; + + + while (length--) { + fragment.appendChild(childNodes[0]); + } + return fragment; + }, + + applyStyles: function(el, styles) { + if (styles) { + if (typeof styles == "function") { + styles = styles.call(); + } + if (typeof styles == "string") { + styles = Ext.dom.Element.parseStyles(styles); + } + if (typeof styles == "object") { + Ext.fly(el, '_applyStyles').setStyle(styles); + } + } + }, + + + createHtml: function(spec) { + return this.markup(spec); + }, + + doInsert: function(el, o, returnElement, pos, sibling, append) { + + el = el.dom || Ext.getDom(el); + + var newNode; + + if (this.useDom) { + newNode = this.createDom(o, null); + + if (append) { + el.appendChild(newNode); + } + else { + (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el); + } + + } else { + newNode = this.insertHtml(pos, el, this.markup(o)); + } + return returnElement ? Ext.get(newNode, true) : newNode; + }, + + + overwrite: function(el, html, returnElement) { + var newNode; + + el = Ext.getDom(el); + html = this.markup(html); + + + if (Ext.isIE && this.tableRe.test(el.tagName)) { + + while (el.firstChild) { + el.removeChild(el.firstChild); + } + if (html) { + newNode = this.insertHtml('afterbegin', el, html); + return returnElement ? Ext.get(newNode) : newNode; + } + return null; + } + el.innerHTML = html; + return returnElement ? Ext.get(el.firstChild) : el.firstChild; + }, + + insertHtml: function(where, el, html) { + var hashVal, + range, + rangeEl, + setStart, + frag; + + where = where.toLowerCase(); + + + if (el.insertAdjacentHTML) { + + + if (Ext.isIE && this.tableRe.test(el.tagName) && (frag = this.insertIntoTable(el.tagName.toLowerCase(), where, el, html))) { + return frag; + } + + if ((hashVal = fullPositionHash[where])) { + + if (Ext.global.MSApp && Ext.global.MSApp.execUnsafeLocalFunction) { + + MSApp.execUnsafeLocalFunction(function () { + el.insertAdjacentHTML(hashVal[0], html); + }); + } else { + el.insertAdjacentHTML(hashVal[0], html); + } + + return el[hashVal[1]]; + } + + } else { + + if (el.nodeType === 3) { + where = where === 'afterbegin' ? 'beforebegin' : where; + where = where === 'beforeend' ? 'afterend' : where; + } + range = Ext.supports.CreateContextualFragment ? el.ownerDocument.createRange() : undefined; + setStart = 'setStart' + (this.endRe.test(where) ? 'After' : 'Before'); + if (bb_ae_PositionHash[where]) { + if (range) { + range[setStart](el); + frag = range.createContextualFragment(html); + } else { + frag = this.createContextualFragment(html); + } + el.parentNode.insertBefore(frag, where == beforebegin ? el : el.nextSibling); + return el[(where == beforebegin ? 'previous' : 'next') + 'Sibling']; + } else { + rangeEl = (where == afterbegin ? 'first' : 'last') + 'Child'; + if (el.firstChild) { + if (range) { + range[setStart](el[rangeEl]); + frag = range.createContextualFragment(html); + } else { + frag = this.createContextualFragment(html); + } + + if (where == afterbegin) { + el.insertBefore(frag, el.firstChild); + } else { + el.appendChild(frag); + } + } else { + el.innerHTML = html; + } + return el[rangeEl]; + } + } + }, + + + createTemplate: function(o) { + var html = this.markup(o); + return new Ext.Template(html); + } + +}; +})(), function() { + Ext.ns('Ext.core'); + Ext.DomHelper = Ext.core.DomHelper = new this; +}); + + + +Ext.define('Ext.Template', { + + + + + + inheritableStatics: { + + from: function(el, config) { + el = Ext.getDom(el); + return new this(el.value || el.innerHTML, config || ''); + } + }, + + + + + constructor: function(html) { + var me = this, + args = arguments, + buffer = [], + i = 0, + length = args.length, + value; + + me.initialConfig = {}; + + + + + if (length === 1 && Ext.isArray(html)) { + args = html; + length = args.length; + } + + if (length > 1) { + for (; i < length; i++) { + value = args[i]; + if (typeof value == 'object') { + Ext.apply(me.initialConfig, value); + Ext.apply(me, value); + } else { + buffer.push(value); + } + } + } else { + buffer.push(html); + } + + + me.html = buffer.join(''); + + if (me.compiled) { + me.compile(); + } + }, + + + isTemplate: true, + + + + + disableFormats: false, + + re: /\{([\w\-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, + + + apply: function(values) { + var me = this, + useFormat = me.disableFormats !== true, + fm = Ext.util.Format, + tpl = me, + ret; + + if (me.compiled) { + return me.compiled(values).join(''); + } + + function fn(m, name, format, args) { + if (format && useFormat) { + if (args) { + args = [values[name]].concat(Ext.functionFactory('return ['+ args +'];')()); + } else { + args = [values[name]]; + } + if (format.substr(0, 5) == "this.") { + return tpl[format.substr(5)].apply(tpl, args); + } + else { + return fm[format].apply(fm, args); + } + } + else { + return values[name] !== undefined ? values[name] : ""; + } + } + + ret = me.html.replace(me.re, fn); + return ret; + }, + + + applyOut: function(values, out) { + var me = this; + + if (me.compiled) { + out.push.apply(out, me.compiled(values)); + } else { + out.push(me.apply(values)); + } + + return out; + }, + + + applyTemplate: function () { + return this.apply.apply(this, arguments); + }, + + + set: function(html, compile) { + var me = this; + me.html = html; + me.compiled = null; + return compile ? me.compile() : me; + }, + + compileARe: /\\/g, + compileBRe: /(\r\n|\n)/g, + compileCRe: /'/g, + + /** + * Compiles the template into an internal function, eliminating the RegEx overhead. + * @return {Ext.Template} this + */ + compile: function() { + var me = this, + fm = Ext.util.Format, + useFormat = me.disableFormats !== true, + body, bodyReturn; + + function fn(m, name, format, args) { + if (format && useFormat) { + args = args ? ',' + args: ""; + if (format.substr(0, 5) != "this.") { + format = "fm." + format + '('; + } + else { + format = 'this.' + format.substr(5) + '('; + } + } + else { + args = ''; + format = "(values['" + name + "'] == undefined ? '' : "; + } + return "'," + format + "values['" + name + "']" + args + ") ,'"; + } + + bodyReturn = me.html.replace(me.compileARe, '\\\\').replace(me.compileBRe, '\\n').replace(me.compileCRe, "\\'").replace(me.re, fn); + body = "this.compiled = function(values){ return ['" + bodyReturn + "'];};"; + eval(body); + return me; + }, + + /** + * Applies the supplied values to the template and inserts the new node(s) as the first child of el. + * + * @param {String/HTMLElement/Ext.Element} el The context element + * @param {Object/Array} values The template values. See {@link #applyTemplate} for details. + * @param {Boolean} returnElement (optional) true to return a Ext.Element. + * @return {HTMLElement/Ext.Element} The new node or Element + */ + insertFirst: function(el, values, returnElement) { + return this.doInsert('afterBegin', el, values, returnElement); + }, + + /** + * Applies the supplied values to the template and inserts the new node(s) before el. + * + * @param {String/HTMLElement/Ext.Element} el The context element + * @param {Object/Array} values The template values. See {@link #applyTemplate} for details. + * @param {Boolean} returnElement (optional) true to return a Ext.Element. + * @return {HTMLElement/Ext.Element} The new node or Element + */ + insertBefore: function(el, values, returnElement) { + return this.doInsert('beforeBegin', el, values, returnElement); + }, + + /** + * Applies the supplied values to the template and inserts the new node(s) after el. + * + * @param {String/HTMLElement/Ext.Element} el The context element + * @param {Object/Array} values The template values. See {@link #applyTemplate} for details. + * @param {Boolean} returnElement (optional) true to return a Ext.Element. + * @return {HTMLElement/Ext.Element} The new node or Element + */ + insertAfter: function(el, values, returnElement) { + return this.doInsert('afterEnd', el, values, returnElement); + }, + + /** + * Applies the supplied `values` to the template and appends the new node(s) to the specified `el`. + * + * For example usage see {@link Ext.Template Ext.Template class docs}. + * + * @param {String/HTMLElement/Ext.Element} el The context element + * @param {Object/Array} values The template values. See {@link #applyTemplate} for details. + * @param {Boolean} returnElement (optional) true to return an Ext.Element. + * @return {HTMLElement/Ext.Element} The new node or Element + */ + append: function(el, values, returnElement) { + return this.doInsert('beforeEnd', el, values, returnElement); + }, + + doInsert: function(where, el, values, returnElement) { + var newNode = Ext.DomHelper.insertHtml(where, Ext.getDom(el), this.apply(values)); + return returnElement ? Ext.get(newNode) : newNode; + }, + + /** + * Applies the supplied values to the template and overwrites the content of el with the new node(s). + * + * @param {String/HTMLElement/Ext.Element} el The context element + * @param {Object/Array} values The template values. See {@link #applyTemplate} for details. + * @param {Boolean} returnElement (optional) true to return a Ext.Element. + * @return {HTMLElement/Ext.Element} The new node or Element + */ + overwrite: function(el, values, returnElement) { + var newNode = Ext.DomHelper.overwrite(Ext.getDom(el), this.apply(values)); + return returnElement ? Ext.get(newNode) : newNode; + } +}); + +// @tag core +/** + * This class parses the XTemplate syntax and calls abstract methods to process the parts. + * @private + */ +Ext.define('Ext.XTemplateParser', { + constructor: function (config) { + Ext.apply(this, config); + }, + + /** + * @property {Number} level The 'for' or 'foreach' loop context level. This is adjusted + * up by one prior to calling {@link #doFor} or {@link #doForEach} and down by one after + * calling the corresponding {@link #doEnd} that closes the loop. This will be 1 on the + * first {@link #doFor} or {@link #doForEach} call. + */ + + /** + * This method is called to process a piece of raw text from the tpl. + * @param {String} text + * @method doText + */ + // doText: function (text) + + /** + * This method is called to process expressions (like `{[expr]}`). + * @param {String} expr The body of the expression (inside "{[" and "]}"). + * @method doExpr + */ + // doExpr: function (expr) + + /** + * This method is called to process simple tags (like `{tag}`). + * @method doTag + */ + // doTag: function (tag) + + /** + * This method is called to process ``. + * @method doElse + */ + // doElse: function () + + /** + * This method is called to process `{% text %}`. + * @param {String} text + * @method doEval + */ + // doEval: function (text) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doIf + */ + // doIf: function (action, actions) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doElseIf + */ + // doElseIf: function (action, actions) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doSwitch + */ + // doSwitch: function (action, actions) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doCase + */ + // doCase: function (action, actions) + + /** + * This method is called to process ``. + * @method doDefault + */ + // doDefault: function () + + /** + * This method is called to process ``. It is given the action type that started + * the tpl and the set of additional actions. + * @param {String} type The type of action that is being ended. + * @param {Object} actions The other actions keyed by the attribute name (such as 'exec'). + * @method doEnd + */ + // doEnd: function (type, actions) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doFor + */ + // doFor: function (action, actions) + + /** + * This method is called to process ``. If there are other + * attributes, these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name (such as 'exec'). + * @method doForEach + */ + // doForEach: function (action, actions) + + /** + * This method is called to process ``. If there are other attributes, + * these are passed in the actions object. + * @param {String} action + * @param {Object} actions Other actions keyed by the attribute name. + * @method doExec + */ + // doExec: function (action, actions) + + /** + * This method is called to process an empty ``. This is unlikely to need to be + * implemented, so a default (do nothing) version is provided. + * @method + */ + doTpl: Ext.emptyFn, + + parse: function (str) { + var me = this, + len = str.length, + aliases = { elseif: 'elif' }, + topRe = me.topRe, + actionsRe = me.actionsRe, + index, stack, s, m, t, prev, frame, subMatch, begin, end, actions, + prop; + + me.level = 0; + me.stack = stack = []; + + for (index = 0; index < len; index = end) { + topRe.lastIndex = index; + m = topRe.exec(str); + + if (!m) { + me.doText(str.substring(index, len)); + break; + } + + begin = m.index; + end = topRe.lastIndex; + + if (index < begin) { + me.doText(str.substring(index, begin)); + } + + if (m[1]) { + end = str.indexOf('%}', begin+2); + me.doEval(str.substring(begin+2, end)); + end += 2; + } else if (m[2]) { + end = str.indexOf(']}', begin+2); + me.doExpr(str.substring(begin+2, end)); + end += 2; + } else if (m[3]) { // if ('{' token) + me.doTag(m[3]); + } else if (m[4]) { // content of a tag + actions = null; + while ((subMatch = actionsRe.exec(m[4])) !== null) { + s = subMatch[2] || subMatch[3]; + if (s) { + s = Ext.String.htmlDecode(s); // decode attr value + t = subMatch[1]; + t = aliases[t] || t; + actions = actions || {}; + prev = actions[t]; + + if (typeof prev == 'string') { + actions[t] = [prev, s]; + } else if (prev) { + actions[t].push(s); + } else { + actions[t] = s; + } + } + } + + if (!actions) { + if (me.elseRe.test(m[4])) { + me.doElse(); + } else if (me.defaultRe.test(m[4])) { + me.doDefault(); + } else { + me.doTpl(); + stack.push({ type: 'tpl' }); + } + } + else if (actions['if']) { + me.doIf(actions['if'], actions); + stack.push({ type: 'if' }); + } + else if (actions['switch']) { + me.doSwitch(actions['switch'], actions); + stack.push({ type: 'switch' }); + } + else if (actions['case']) { + me.doCase(actions['case'], actions); + } + else if (actions['elif']) { + me.doElseIf(actions['elif'], actions); + } + else if (actions['for']) { + ++me.level; + + // Extract property name to use from indexed item + if (prop = me.propRe.exec(m[4])) { + actions.propName = prop[1] || prop[2]; + } + me.doFor(actions['for'], actions); + stack.push({ type: 'for', actions: actions }); + } + else if (actions['foreach']) { + ++me.level; + + // Extract property name to use from indexed item + if (prop = me.propRe.exec(m[4])) { + actions.propName = prop[1] || prop[2]; + } + me.doForEach(actions['foreach'], actions); + stack.push({ type: 'foreach', actions: actions }); + } + else if (actions.exec) { + me.doExec(actions.exec, actions); + stack.push({ type: 'exec', actions: actions }); + } + /* + else { + // todo - error + } + */ + } else if (m[0].length === 5) { + // if the length of m[0] is 5, assume that we're dealing with an opening tpl tag with no attributes (e.g. ...) + // in this case no action is needed other than pushing it on to the stack + stack.push({ type: 'tpl' }); + } else { + frame = stack.pop(); + me.doEnd(frame.type, frame.actions); + if (frame.type == 'for' || frame.type == 'foreach') { + --me.level; + } + } + } + }, + + // Internal regexes + + topRe: /(?:(\{\%)|(\{\[)|\{([^{}]+)\})|(?:]*)\>)|(?:<\/tpl>)/g, + actionsRe: /\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g, + propRe: /prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/, + defaultRe: /^\s*default\s*$/, + elseRe: /^\s*else\s*$/ +}); + + + +Ext.define('Ext.XTemplateCompiler', { + extend: Ext.XTemplateParser , + + + + + useEval: Ext.isGecko, + + + + + useIndex: Ext.isIE8m, + + useFormat: true, + + propNameRe: /^[\w\d\$]*$/, + + compile: function (tpl) { + var me = this, + code = me.generate(tpl); + + + + + + return me.useEval ? me.evalTpl(code) : (new Function('Ext', code))(Ext); + }, + + generate: function (tpl) { + var me = this, + + definitions = 'var fm=Ext.util.Format,ts=Object.prototype.toString;', + code; + + + me.maxLevel = 0; + + me.body = [ + 'var c0=values, a0=' + me.createArrayTest(0) + ', p0=parent, n0=xcount, i0=xindex, k0, v;\n' + ]; + if (me.definitions) { + if (typeof me.definitions === 'string') { + me.definitions = [me.definitions, definitions ]; + } else { + me.definitions.push(definitions); + } + } else { + me.definitions = [ definitions ]; + } + me.switches = []; + + me.parse(tpl); + + me.definitions.push( + (me.useEval ? '$=' : 'return') + ' function (' + me.fnArgs + ') {', + me.body.join(''), + '}' + ); + + code = me.definitions.join('\n'); + + + me.definitions.length = me.body.length = me.switches.length = 0; + delete me.definitions; + delete me.body; + delete me.switches; + + return code; + }, + + + + + doText: function (text) { + var me = this, + out = me.body; + + text = text.replace(me.aposRe, "\\'").replace(me.newLineRe, '\\n'); + if (me.useIndex) { + out.push('out[out.length]=\'', text, '\'\n'); + } else { + out.push('out.push(\'', text, '\')\n'); + } + }, + + doExpr: function (expr) { + var out = this.body; + out.push('if ((v=' + expr + ') != null) out'); + + + + if (this.useIndex) { + out.push('[out.length]=v+\'\'\n'); + } else { + out.push('.push(v+\'\')\n'); + } + }, + + doTag: function (tag) { + var expr = this.parseTag(tag); + if (expr) { + this.doExpr(expr); + } else { + + this.doText('{' + tag + '}'); + } + }, + + doElse: function () { + this.body.push('} else {\n'); + }, + + doEval: function (text) { + this.body.push(text, '\n'); + }, + + doIf: function (action, actions) { + var me = this; + + + if (action === '.') { + me.body.push('if (values) {\n'); + } else if (me.propNameRe.test(action)) { + me.body.push('if (', me.parseTag(action), ') {\n'); + } + + else { + me.body.push('if (', me.addFn(action), me.callFn, ') {\n'); + } + if (actions.exec) { + me.doExec(actions.exec); + } + }, + + doElseIf: function (action, actions) { + var me = this; + + + if (action === '.') { + me.body.push('else if (values) {\n'); + } else if (me.propNameRe.test(action)) { + me.body.push('} else if (', me.parseTag(action), ') {\n'); + } + + else { + me.body.push('} else if (', me.addFn(action), me.callFn, ') {\n'); + } + if (actions.exec) { + me.doExec(actions.exec); + } + }, + + doSwitch: function (action) { + var me = this; + + + if (action === '.') { + me.body.push('switch (values) {\n'); + } else if (me.propNameRe.test(action)) { + me.body.push('switch (', me.parseTag(action), ') {\n'); + } + + else { + me.body.push('switch (', me.addFn(action), me.callFn, ') {\n'); + } + me.switches.push(0); + }, + + doCase: function (action) { + var me = this, + cases = Ext.isArray(action) ? action : [action], + n = me.switches.length - 1, + match, i; + + if (me.switches[n]) { + me.body.push('break;\n'); + } else { + me.switches[n]++; + } + + for (i = 0, n = cases.length; i < n; ++i) { + match = me.intRe.exec(cases[i]); + cases[i] = match ? match[1] : ("'" + cases[i].replace(me.aposRe,"\\'") + "'"); + } + + me.body.push('case ', cases.join(': case '), ':\n'); + }, + + doDefault: function () { + var me = this, + n = me.switches.length - 1; + + if (me.switches[n]) { + me.body.push('break;\n'); + } else { + me.switches[n]++; + } + + me.body.push('default:\n'); + }, + + doEnd: function (type, actions) { + var me = this, + L = me.level-1; + + if (type == 'for' || type == 'foreach') { + + if (actions.exec) { + me.doExec(actions.exec); + } + + me.body.push('}\n'); + me.body.push('parent=p',L,';values=r',L+1,';xcount=n'+L+';xindex=i',L,'+1;xkey=k',L,';\n'); + } else if (type == 'if' || type == 'switch') { + me.body.push('}\n'); + } + }, + + doFor: function (action, actions) { + var me = this, + s, + L = me.level, + up = L-1, + parentAssignment; + + + if (action === '.') { + s = 'values'; + } else if (me.propNameRe.test(action)) { + s = me.parseTag(action); + } + + else { + s = me.addFn(action) + me.callFn; + } + + + + + if (me.maxLevel < L) { + me.maxLevel = L; + me.body.push('var '); + } + + if (action == '.') { + parentAssignment = 'c' + L; + } else { + parentAssignment = 'a' + up + '?c' + up + '[i' + up + ']:c' + up; + } + + me.body.push('i',L,'=0,n', L, '=0,c',L,'=',s,',a',L,'=', me.createArrayTest(L),',r',L,'=values,p',L,',k',L,';\n', + 'p',L,'=parent=',parentAssignment,'\n', + 'if (c',L,'){if(a',L,'){n', L,'=c', L, '.length;}else if (c', L, '.isMixedCollection){c',L,'=c',L,'.items;n',L,'=c',L,'.length;}else if(c',L,'.isStore){c',L,'=c',L,'.data.items;n',L,'=c',L,'.length;}else{c',L,'=[c',L,'];n',L,'=1;}}\n', + 'for (xcount=n',L,';i',L,'1){ out.push("',actions.between,'"); } \n'); + } + }, + + doForEach: function (action, actions) { + var me = this, + s, + L = me.level, + up = L-1, + parentAssignment; + + + if (action === '.') { + s = 'values'; + } else if (me.propNameRe.test(action)) { + s = me.parseTag(action); + } + + else { + s = me.addFn(action) + me.callFn; + } + + + + + if (me.maxLevel < L) { + me.maxLevel = L; + me.body.push('var '); + } + + if (action == '.') { + parentAssignment = 'c' + L; + } else { + parentAssignment = 'a' + up + '?c' + up + '[i' + up + ']:c' + up; + } + + me.body.push('i',L,'=-1,n',L,'=0,c',L,'=',s,',a',L,'=',me.createArrayTest(L),',r',L,'=values,p',L,',k',L,';\n', + 'p',L,'=parent=',parentAssignment,'\n', + 'for(k',L,' in c',L,'){\n', + 'xindex=++i',L,'+1;\n', + 'xkey=k',L,';\n', + 'values=c',L,'[k',L,'];'); + if (actions.propName) { + me.body.push('.', actions.propName); + } + + if (actions.between) { + me.body.push('if(xindex>1){ out.push("',actions.between,'"); } \n'); + } + }, + + createArrayTest: ('isArray' in Array) ? function(L) { + return 'Array.isArray(c' + L + ')'; + } : function(L) { + return 'ts.call(c' + L + ')==="[object Array]"'; + }, + + doExec: function (action, actions) { + var me = this, + name = 'f' + me.definitions.length; + + me.definitions.push('function ' + name + '(' + me.fnArgs + ') {', + ' try { with(values) {', + ' ' + action, + ' }} catch(e) {', + '}', + '}'); + + me.body.push(name + me.callFn + '\n'); + }, + + + + + addFn: function (body) { + var me = this, + name = 'f' + me.definitions.length; + + if (body === '.') { + me.definitions.push('function ' + name + '(' + me.fnArgs + ') {', + ' return values', + '}'); + } else if (body === '..') { + me.definitions.push('function ' + name + '(' + me.fnArgs + ') {', + ' return parent', + '}'); + } else { + me.definitions.push('function ' + name + '(' + me.fnArgs + ') {', + ' try { with(values) {', + ' return(' + body + ')', + ' }} catch(e) {', + '}', + '}'); + } + + return name; + }, + + parseTag: function (tag) { + var me = this, + m = me.tagRe.exec(tag), + name, format, args, math, v; + + if (!m) { + return null; + } + + name = m[1]; + format = m[2]; + args = m[3]; + math = m[4]; + + + if (name == '.') { + + if (!me.validTypes) { + me.definitions.push('var validTypes={string:1,number:1,boolean:1};'); + me.validTypes = true; + } + v = 'validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'; + } + + else if (name == '#') { + v = 'xindex'; + } + + else if (name == '$') { + v = 'xkey'; + } + else if (name.substr(0, 7) == "parent.") { + v = name; + } + + else if (isNaN(name) && name.indexOf('-') == -1 && name.indexOf('.') != -1) { + v = "values." + name; + } + + + else { + v = "values['" + name + "']"; + } + + if (math) { + v = '(' + v + math + ')'; + } + + if (format && me.useFormat) { + args = args ? ',' + args : ""; + if (format.substr(0, 5) != "this.") { + format = "fm." + format + '('; + } else { + format += '('; + } + } else { + return v; + } + + return format + v + args + ')'; + }, + + + evalTpl: function ($) { + + + + + + eval($); + return $; + }, + + newLineRe: /\r\n|\r|\n/g, + aposRe: /[']/g, + intRe: /^\s*(\d+)\s*$/, + tagRe: /^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/ + +}, function () { + var proto = this.prototype; + + proto.fnArgs = 'out,values,parent,xindex,xcount,xkey'; + proto.callFn = '.call(this,' + proto.fnArgs + ')'; +}); + +// @tag core +/** + * A template class that supports advanced functionality like: + * + * - Autofilling arrays using templates and sub-templates + * - Conditional processing with basic comparison operators + * - Basic math function support + * - Execute arbitrary inline code with special built-in template variables + * - Custom member functions + * - Many special tags and built-in operators that aren't defined as part of the API, but are supported in the templates that can be created + * + * XTemplate provides the templating mechanism built into {@link Ext.view.View}. + * + * The {@link Ext.Template} describes the acceptable parameters to pass to the constructor. The following examples + * demonstrate all of the supported features. + * + * # Sample Data + * + * This is the data object used for reference in each code example: + * + * var data = { + * name: 'Don Griffin', + * title: 'Senior Technomage', + * company: 'Sencha Inc.', + * drinks: ['Coffee', 'Water', 'More Coffee'], + * kids: [ + * { name: 'Aubrey', age: 17 }, + * { name: 'Joshua', age: 13 }, + * { name: 'Cale', age: 10 }, + * { name: 'Nikol', age: 5 }, + * { name: 'Solomon', age: 0 } + * ] + * }; + * + * # Auto filling of arrays + * + * The **tpl** tag and the **for** operator are used to process the provided data object: + * + * - If the value specified in for is an array, it will auto-fill, repeating the template block inside the tpl + * tag for each item in the array. + * - If for="." is specified, the data object provided is examined. + * - If between="..." is specified, the provided value will be inserted between the items. + * This is also supported in the "foreach" looping template. + * - While processing an array, the special variable {#} will provide the current array index + 1 (starts at 1, not 0). + * + * Examples: + * + * ... + * ... + * ... + * ... + * + * Using the sample data above: + * + * var tpl = new Ext.XTemplate( + * '

Kids: ', + * '', + * '

{#}. {name}

', + * '

' + * ); + * tpl.overwrite(panel.body, data.kids); + * + * An example illustrating how the **for** property can be leveraged to access specified members of the provided data + * object to populate the template: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Title: {title}

', + * '

Company: {company}

', + * '

Kids: ', + * '', + * '

{name}

', + * '

' + * ); + * tpl.overwrite(panel.body, data); + * + * Flat arrays that contain values (and not objects) can be auto-rendered using the special **`{.}`** variable inside a + * loop. This variable will represent the value of the array at the current index: + * + * var tpl = new Ext.XTemplate( + * '

{name}\'s favorite beverages:

', + * '', + * '
- {.}
', + * '
' + * ); + * tpl.overwrite(panel.body, data); + * + * When processing a sub-template, for example while looping through a child array, you can access the parent object's + * members via the **parent** object: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '', + * '

{name}

', + * '

Dad: {parent.name}

', + * '
', + * '

' + * ); + * tpl.overwrite(panel.body, data); + * + * The **foreach** operator is used to loop over an object's properties. The following + * example demonstrates looping over the main data object's properties: + * + * var tpl = new Ext.XTemplate( + * '
', + * '', + * '
{$}
', // the special **`{$}`** variable contains the property name + * '
{.}
', // within the loop, the **`{.}`** variable is set to the property value + * '
', + * '
' + * ); + * tpl.overwrite(panel.body, data); + * + * # Conditional processing with basic comparison operators + * + * The **tpl** tag and the **if** operator are used to provide conditional checks for deciding whether or not to render + * specific parts of the template. + * + * Using the sample data above: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '', + * '

{name}

', + * '
', + * '

' + * ); + * tpl.overwrite(panel.body, data); + * + * More advanced conditionals are also supported: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '

{name} is a ', + * '', + * '

teenager

', + * '', + * '

kid

', + * '', + * '

baby

', + * '
', + * '

' + * ); + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '

{name} is a ', + * '', + * '', + * '

girl

', + * '', + * '

boy

', + * '
', + * '

' + * ); + * + * A `break` is implied between each case and default, however, multiple cases can be listed + * in a single <tpl> tag. + * + * # Using double quotes + * + * Examples: + * + * var tpl = new Ext.XTemplate( + * "Child", + * "Teenager", + * "...", + * '...', + * "", + * "Hello" + * ); + * + * # Basic math support + * + * The following basic math operators may be applied directly on numeric data values: + * + * + - * / + * + * For example: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '', + * '

{#}: {name}

', + * '

In 5 Years: {age+5}

', + * '

Dad: {parent.name}

', + * '
', + * '

' + * ); + * tpl.overwrite(panel.body, data); + * + * # Execute arbitrary inline code with special built-in template variables + * + * Anything between `{[ ... ]}` is considered code to be executed in the scope of the template. + * The expression is evaluated and the result is included in the generated result. There are + * some special variables available in that code: + * + * - **out**: The output array into which the template is being appended (using `push` to later + * `join`). + * - **values**: The values in the current scope. If you are using scope changing sub-templates, + * you can change what values is. + * - **parent**: The scope (values) of the ancestor template. + * - **xindex**: If you are in a "for" or "foreach" looping template, the index of the loop you are in (1-based). + * - **xcount**: If you are in a "for" looping template, the total length of the array you are looping. + * - **xkey**: If you are in a "foreach" looping template, the key of the current property + * being examined. + * + * This example demonstrates basic row striping using an inline code block and the xindex variable: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Company: {[values.company.toUpperCase() + ", " + values.title]}

', + * '

Kids: ', + * '', + * '

', + * '{name}', + * '
', + * '

' + * ); + * + * Any code contained in "verbatim" blocks (using "{% ... %}") will be inserted directly in + * the generated code for the template. These blocks are not included in the output. This + * can be used for simple things like break/continue in a loop, or control structures or + * method calls (when they don't produce output). The `this` references the template instance. + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Company: {[values.company.toUpperCase() + ", " + values.title]}

', + * '

Kids: ', + * '', + * '{% if (xindex % 2 === 0) continue; %}', + * '{name}', + * '{% if (xindex > 100) break; %}', + * '', + * '

' + * ); + * + * # Template member functions + * + * One or more member functions can be specified in a configuration object passed into the XTemplate constructor for + * more complex processing: + * + * var tpl = new Ext.XTemplate( + * '

Name: {name}

', + * '

Kids: ', + * '', + * '', + * '

Girl: {name} - {age}

', + * '', + * '

Boy: {name} - {age}

', + * '
', + * '', + * '

{name} is a baby!

', + * '
', + * '

', + * { + * // XTemplate configuration: + * disableFormats: true, + * // member functions: + * isGirl: function(name){ + * return name == 'Aubrey' || name == 'Nikol'; + * }, + * isBaby: function(age){ + * return age < 1; + * } + * } + * ); + * tpl.overwrite(panel.body, data); + */ +Ext.define('Ext.XTemplate', { + extend: Ext.Template , + + + + /** + * @private + */ + emptyObj: {}, + + /** + * @cfg {Boolean} compiled + * Only applies to {@link Ext.Template}, XTemplates are compiled automatically on the + * first call to {@link #apply} or {@link #applyOut}. + * @hide + */ + + /** + * @cfg {String/Array} definitions + * Optional. A statement, or array of statements which set up `var`s which may then + * be accessed within the scope of the generated function. + */ + + apply: function(values, parent) { + return this.applyOut(values, [], parent).join(''); + }, + + applyOut: function(values, out, parent) { + var me = this, + compiler; + + if (!me.fn) { + compiler = new Ext.XTemplateCompiler({ + useFormat: me.disableFormats !== true, + definitions: me.definitions + }); + + me.fn = compiler.compile(me.html); + } + + try { + me.fn(out, values, parent || me.emptyObj, 1, 1); + } catch (e) { + } + + return out; + }, + + /** + * Does nothing. XTemplates are compiled automatically, so this function simply returns this. + * @return {Ext.XTemplate} this + */ + compile: function() { + return this; + }, + + statics: { + /** + * Gets an `XTemplate` from an object (an instance of an {@link Ext#define}'d class). + * Many times, templates are configured high in the class hierarchy and are to be + * shared by all classes that derive from that base. To further complicate matters, + * these templates are seldom actual instances but are rather configurations. For + * example: + * + * Ext.define('MyApp.Class', { + * extraCls: 'extra-class', + * + * someTpl: [ + * '
', + * { + * + * emitClass: function(out) { + * out.push(this.owner.extraCls); + * } + * }] + * }); + * + * The goal being to share that template definition with all instances and even + * instances of derived classes, until `someTpl` is overridden. This method will + * "upgrade" these configurations to be real `XTemplate` instances *in place* (to + * avoid creating one instance per object). + * + * The resulting XTemplate will have an `owner` reference injected which refers back + * to the owning object whether that is an object which has an *own instance*, or a + * class prototype. Through this link, XTemplate member functions will be able to access + * prototype properties of its owning class. + * + * @param {Object} instance The object from which to get the `XTemplate` (must be + * an instance of an {@link Ext#define}'d class). + * @param {String} name The name of the property by which to get the `XTemplate`. + * @return {Ext.XTemplate} The `XTemplate` instance or null if not found. + * @protected + * @static + */ + getTpl: function (instance, name) { + var tpl = instance[name], // go for it! 99% of the time we will get it! + owner; + + if (tpl && !tpl.isTemplate) { // tpl is just a configuration (not an instance) + // create the template instance from the configuration: + tpl = Ext.ClassManager.dynInstantiate('Ext.XTemplate', tpl); + + // and replace the reference with the new instance: + if (instance.hasOwnProperty(name)) { // the tpl is on the instance + owner = instance; + } else { // must be somewhere in the prototype chain + for (owner = instance.self.prototype; owner && !owner.hasOwnProperty(name); owner = owner.superclass) { + } + } + owner[name] = tpl; + tpl.owner = owner; + } + // else !tpl (no such tpl) or the tpl is an instance already... either way, tpl + // is ready to return + + return tpl || null; + } + } +}); + +// @tag dom,core +// @require Helper.js +// @define Ext.dom.Query +// @define Ext.core.DomQuery +// @define Ext.DomQuery + +/* + * This is code is also distributed under MIT license for use + * with jQuery and prototype JavaScript libraries. + */ +/** + * @class Ext.dom.Query + * @alternateClassName Ext.DomQuery + * @alternateClassName Ext.core.DomQuery + * @singleton + * + * Provides high performance selector/xpath processing by compiling queries into reusable functions. New pseudo classes + * and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in). + * + * DomQuery supports most of the [CSS3 selectors spec][1], along with some custom selectors and basic XPath. + * + * All selectors, attribute filters and pseudos below can be combined infinitely in any order. For example + * `div.foo:nth-child(odd)[@foo=bar].bar:first` would be a perfectly valid selector. Node filters are processed + * in the order in which they appear, which allows you to optimize your queries for your document structure. + * + * ## Element Selectors: + * + * - **`*`** any element + * - **`E`** an element with the tag E + * - **`E F`** All descendent elements of E that have the tag F + * - **`E > F`** or **E/F** all direct children elements of E that have the tag F + * - **`E + F`** all elements with the tag F that are immediately preceded by an element with the tag E + * - **`E ~ F`** all elements with the tag F that are preceded by a sibling element with the tag E + * + * ## Attribute Selectors: + * + * The use of `@` and quotes are optional. For example, `div[@foo='bar']` is also a valid attribute selector. + * + * - **`E[foo]`** has an attribute "foo" + * - **`E[foo=bar]`** has an attribute "foo" that equals "bar" + * - **`E[foo^=bar]`** has an attribute "foo" that starts with "bar" + * - **`E[foo$=bar]`** has an attribute "foo" that ends with "bar" + * - **`E[foo*=bar]`** has an attribute "foo" that contains the substring "bar" + * - **`E[foo%=2]`** has an attribute "foo" that is evenly divisible by 2 + * - **`E[foo!=bar]`** attribute "foo" does not equal "bar" + * + * ## Pseudo Classes: + * + * - **`E:first-child`** E is the first child of its parent + * - **`E:last-child`** E is the last child of its parent + * - **`E:nth-child(_n_)`** E is the _n_th child of its parent (1 based as per the spec) + * - **`E:nth-child(odd)`** E is an odd child of its parent + * - **`E:nth-child(even)`** E is an even child of its parent + * - **`E:only-child`** E is the only child of its parent + * - **`E:checked`** E is an element that is has a checked attribute that is true (e.g. a radio or checkbox) + * - **`E:first`** the first E in the resultset + * - **`E:last`** the last E in the resultset + * - **`E:nth(_n_)`** the _n_th E in the resultset (1 based) + * - **`E:odd`** shortcut for :nth-child(odd) + * - **`E:even`** shortcut for :nth-child(even) + * - **`E:contains(foo)`** E's innerHTML contains the substring "foo" + * - **`E:nodeValue(foo)`** E contains a textNode with a nodeValue that equals "foo" + * - **`E:not(S)`** an E element that does not match simple selector S + * - **`E:has(S)`** an E element that has a descendent that matches simple selector S + * - **`E:next(S)`** an E element whose next sibling matches simple selector S + * - **`E:prev(S)`** an E element whose previous sibling matches simple selector S + * - **`E:any(S1|S2|S2)`** an E element which matches any of the simple selectors S1, S2 or S3 + * - **`E:visible(true)`** an E element which is deeply visible according to {@link Ext.dom.Element#isVisible} + * + * ## CSS Value Selectors: + * + * - **`E{display=none}`** css value "display" that equals "none" + * - **`E{display^=none}`** css value "display" that starts with "none" + * - **`E{display$=none}`** css value "display" that ends with "none" + * - **`E{display*=none}`** css value "display" that contains the substring "none" + * - **`E{display%=2}`** css value "display" that is evenly divisible by 2 + * - **`E{display!=none}`** css value "display" that does not equal "none" + * + * ## XML Namespaces: + * - **`ns|E`** an element with tag E and namespace prefix ns + * + * [1]: http: + */ +Ext.ns('Ext.core'); + +Ext.dom.Query = Ext.core.DomQuery = Ext.DomQuery = (function() { + var DQ, + doc = document, + cache = {}, + simpleCache = {}, + valueCache = {}, + useClassList = !!doc.documentElement.classList, + useElementPointer = !!doc.documentElement.firstElementChild, + useChildrenCollection = (function() { + var d = doc.createElement('div'); + d.innerHTML = 'text'; + return d.children && (d.children.length === 0); + })(), + nonSpace = /\S/, + trimRe = /^\s+|\s+$/g, + tplRe = /\{(\d+)\}/g, + modeRe = /^(\s?[\/>+~]\s?|\s|$)/, + tagTokenRe = /^(#)?([\w\-\*\|\\]+)/, + nthRe = /(\d*)n\+?(\d*)/, + nthRe2 = /\D/, + startIdRe = /^\s*#/, + + + + isIE = window.ActiveXObject ? true : false, + key = 30803, + longHex = /\\([0-9a-fA-F]{6})/g, + shortHex = /\\([0-9a-fA-F]{1,6})\s{0,1}/g, + nonHex = /\\([^0-9a-fA-F]{1})/g, + escapes = /\\/g, + num, hasEscapes, + + + supportsColonNsSeparator = (function () { + var xmlDoc, + xmlString = ''; + + if (window.DOMParser) { + xmlDoc = (new DOMParser()).parseFromString(xmlString, "application/xml"); + } else { + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.loadXML(xmlString); + } + + return !!xmlDoc.getElementsByTagName('a:b').length; + })(), + + + + longHexToChar = function($0, $1) { + return String.fromCharCode(parseInt($1, 16)); + }, + + + shortToLongHex = function($0, $1) { + while ($1.length < 6) { + $1 = '0' + $1; + } + return '\\' + $1; + }, + + + charToLongHex = function($0, $1) { + num = $1.charCodeAt(0).toString(16); + if (num.length === 1) { + num = '0' + num; + } + return '\\0000' + num; + }, + + + + + unescapeCssSelector = function(selector) { + return (hasEscapes) ? selector.replace(longHex, longHexToChar) : selector; + }, + + + setupEscapes = function(path) { + hasEscapes = (path.indexOf('\\') > -1); + if (hasEscapes) { + path = path + .replace(shortHex, shortToLongHex) + .replace(nonHex, charToLongHex) + .replace(escapes, '\\\\'); + } + return path; + }; + + + + eval("var batch = 30803, child, next, prev, byClassName;"); + + + + child = useChildrenCollection ? + function child(parent, index) { + return parent.children[index]; + } : + 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; + }; + + + next = useElementPointer ? + function(n) { + return n.nextElementSibling; + } : + function(n) { + while ((n = n.nextSibling) && n.nodeType != 1); + return n; + }; + + + prev = useElementPointer ? + function(n) { + return n.previousElementSibling; + } : + function(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; + } + + + + byClassName = useClassList ? + function (nodeSet, cls) { + cls = unescapeCssSelector(cls); + if (!cls) { + return nodeSet; + } + var result = [], ri = -1, + i, ci, classList; + + for (i = 0; ci = nodeSet[i]; i++) { + classList = ci.classList; + if (classList) { + if (classList.contains(cls)) { + result[++ri] = ci; + } + } else if ((' ' + ci.className + ' ').indexOf(cls) !== -1) { + + + result[++ri] = ci; + } + } + return result; + } : + function (nodeSet, cls) { + cls = unescapeCssSelector(cls); + if (!cls) { + return nodeSet; + } + var result = [], ri = -1, + i, ci; + + for (i = 0; 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, + i, ni, j, ci, cn, utag, n, cj; + if (!ns) { + return result; + } + tagName = tagName.replace('|', ':') || "*"; + + if (typeof ns.getElementsByTagName != "undefined") { + ns = [ns]; + } + + + + if (!mode) { + tagName = unescapeCssSelector(tagName); + if (!supportsColonNsSeparator && DQ.isXml(ns[0]) && + tagName.indexOf(':') !== -1) { + + + + + + + for (i = 0; ni = ns[i]; i++) { + cs = ni.getElementsByTagName(tagName.split(':').pop()); + for (j = 0; ci = cs[j]; j++) { + if (ci.tagName === tagName) { + result[++ri] = ci; + } + } + } + } else { + for (i = 0; ni = ns[i]; i++) { + cs = ni.getElementsByTagName(tagName); + for (j = 0; ci = cs[j]; j++) { + result[++ri] = ci; + } + } + } + + + } else if (mode == "/" || mode == ">") { + utag = tagName.toUpperCase(); + for (i = 0; ni = ns[i]; i++) { + cn = ni.childNodes; + for (j = 0; cj = cn[j]; j++) { + if (cj.nodeName == utag || cj.nodeName == tagName || tagName == '*') { + result[++ri] = cj; + } + } + } + + + } else if (mode == "+") { + utag = tagName.toUpperCase(); + for (i = 0; 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 == "~") { + utag = tagName.toUpperCase(); + for (i = 0; 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) { + a.push.apply(a, b); + return a; + } + + function byTag(cs, tagName) { + if (cs.tagName || cs === doc) { + cs = [cs]; + } + if (!tagName) { + return cs; + } + var result = [], ri = -1, + i, ci; + tagName = tagName.toLowerCase(); + for (i = 0; ci = cs[i]; i++) { + if (ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName) { + result[++ri] = ci; + } + } + return result; + } + + function byId(cs, id) { + id = unescapeCssSelector(id); + if (cs.tagName || cs === doc) { + cs = [cs]; + } + if (!id) { + return cs; + } + var result = [], ri = -1, + i, ci; + for (i = 0; ci = cs[i]; i++) { + if (ci && ci.id == id) { + result[++ri] = ci; + return result; + } + } + return result; + } + + + + function byAttribute(cs, attr, value, op, custom) { + var result = [], + ri = -1, + useGetStyle = custom == "{", + fn = DQ.operators[op], + a, + xml, + hasXml, + i, ci; + + value = unescapeCssSelector(value); + + for (i = 0; ci = cs[i]; i++) { + + if (ci.nodeType === 1) { + + if (!hasXml) { + xml = DQ.isXml(ci); + hasXml = true; + } + + + if (!xml) { + if (useGetStyle) { + a = DQ.getStyle(ci, attr); + } else if (attr == "class" || attr == "className") { + a = ci.className; + } else if (attr == "for") { + a = ci.htmlFor; + } else if (attr == "href") { + + + a = ci.getAttribute("href", 2); + } else { + a = ci.getAttribute(attr); + } + } else { + a = ci.getAttribute(attr); + } + if ((fn && fn(a, value)) || (!fn && a)) { + result[++ri] = ci; + } + } + } + return result; + } + + function byPseudo(cs, name, value) { + value = unescapeCssSelector(value); + return DQ.pseudos[name](cs, value); + } + + function nodupIEXml(cs) { + var d = ++key, + r, + i, len, c; + cs[0].setAttribute("_nodup", d); + r = [cs[0]]; + for (i = 1, len = cs.length; i < len; i++) { + c = cs[i]; + if (!c.getAttribute("_nodup") != d) { + c.setAttribute("_nodup", d); + r[r.length] = c; + } + } + for (i = 0, len = cs.length; i < len; i++) { + cs[i].removeAttribute("_nodup"); + } + return r; + } + + function nodup(cs) { + if (!cs) { + return []; + } + var len = cs.length, c, i, r = cs, cj, ri = -1, d, j; + if (!len || typeof cs.nodeType != "undefined" || len == 1) { + return cs; + } + if (isIE && typeof cs[0].selectSingleNode != "undefined") { + return nodupIEXml(cs); + } + d = ++key; + cs[0]._nodup = d; + for (i = 1; c = cs[i]; i++) { + if (c._nodup != d) { + c._nodup = d; + } else { + r = []; + for (j = 0; j < i; j++) { + r[++ri] = cs[j]; + } + for (j = i + 1; cj = cs[j]; j++) { + if (cj._nodup != d) { + cj._nodup = d; + r[++ri] = cj; + } + } + return r; + } + } + return r; + } + + function quickDiffIEXml(c1, c2) { + var d = ++key, + r = [], + i, len; + for (i = 0, len = c1.length; i < len; i++) { + c1[i].setAttribute("_qdiff", d); + } + for (i = 0, len = c2.length; i < len; i++) { + if (c2[i].getAttribute("_qdiff") != d) { + r[r.length] = c2[i]; + } + } + for (i = 0, len = c1.length; i < len; i++) { + c1[i].removeAttribute("_qdiff"); + } + return r; + } + + function quickDiff(c1, c2) { + var len1 = c1.length, + d = ++key, + r = [], + i, len; + if (!len1) { + return c2; + } + if (isIE && typeof c1[0].selectSingleNode != "undefined") { + return quickDiffIEXml(c1, c2); + } + for (i = 0; i < len1; i++) { + c1[i]._qdiff = d; + } + for (i = 0, len = c2.length; i < len; i++) { + if (c2[i]._qdiff != d) { + r[r.length] = c2[i]; + } + } + return r; + } + + function quickId(ns, mode, root, id) { + if (ns == root) { + id = unescapeCssSelector(id); + var d = root.ownerDocument || root; + return d.getElementById(id); + } + ns = getNodes(ns, mode, "*"); + return byId(ns, id); + } + + return DQ = { + getStyle: function(el, name) { + return Ext.fly(el, '_DomQuery').getStyle(name); + }, + + compile: function(path, type) { + type = type || "select"; + + + var fn = ["var f = function(root) {\n var mode; ++batch; var n = root || document;\n"], + lastPath, + matchers = DQ.matchers, + matchersLn = matchers.length, + modeMatch, + + lmode = path.match(modeRe), + tokenMatch, matched, j, t, m; + + path = setupEscapes(path); + + if (lmode && lmode[1]) { + fn[fn.length] = 'mode="' + lmode[1].replace(trimRe, "") + '";'; + path = path.replace(lmode[1], ""); + } + + + while (path.substr(0, 1) == "/") { + path = path.substr(1); + } + + while (path && lastPath != path) { + lastPath = path; + tokenMatch = path.match(tagTokenRe); + if (type == "select") { + if (tokenMatch) { + + if (tokenMatch[1] == "#") { + fn[fn.length] = 'n = quickId(n, mode, root, "' + tokenMatch[2] + '");'; + } else { + fn[fn.length] = 'n = getNodes(n, mode, "' + tokenMatch[2] + '");'; + } + path = path.replace(tokenMatch[0], ""); + } else if (path.substr(0, 1) != '@') { + fn[fn.length] = 'n = getNodes(n, mode, "*");'; + } + + } else { + if (tokenMatch) { + if (tokenMatch[1] == "#") { + fn[fn.length] = 'n = byId(n, "' + tokenMatch[2] + '");'; + } else { + fn[fn.length] = 'n = byTag(n, "' + tokenMatch[2] + '");'; + } + path = path.replace(tokenMatch[0], ""); + } + } + while (!(modeMatch = path.match(modeRe))) { + matched = false; + for (j = 0; j < matchersLn; j++) { + t = matchers[j]; + m = path.match(t.re); + if (m) { + fn[fn.length] = t.select.replace(tplRe, function(x, i) { + return m[i]; + }); + path = path.replace(m[0], ""); + matched = true; + break; + } + } + + if (!matched) { + Ext.Error.raise({ + sourceClass:'Ext.DomQuery', + sourceMethod:'compile', + msg:'Error parsing selector. Parsing failed at "' + path + '"' + }); + } + } + if (modeMatch[1]) { + fn[fn.length] = 'mode="' + modeMatch[1].replace(trimRe, "") + '";'; + path = path.replace(modeMatch[1], ""); + } + } + + fn[fn.length] = "return nodup(n);\n}"; + + + eval(fn.join("")); + return f; + }, + + + jsSelect: function(path, root, type) { + + root = root || doc; + + if (typeof root == "string") { + root = doc.getElementById(root); + } + var paths = path.split(","), + results = [], + i, len, subPath, result; + + + for (i = 0, len = paths.length; i < len; i++) { + subPath = paths[i].replace(trimRe, ""); + + if (!cache[subPath]) { + + cache[subPath] = DQ.compile(subPath, type); + if (!cache[subPath]) { + Ext.Error.raise({ + sourceClass:'Ext.DomQuery', + sourceMethod:'jsSelect', + msg:subPath + ' is not a valid selector' + }); + } + } else { + + + setupEscapes(subPath); + } + result = cache[subPath](root); + if (result && result !== doc) { + results = results.concat(result); + } + } + + + + if (paths.length > 1) { + return nodup(results); + } + return results; + }, + + isXml: function(el) { + var docEl = (el ? el.ownerDocument || el : 0).documentElement; + return docEl ? docEl.nodeName !== "HTML" : false; + }, + + + select : doc.querySelectorAll ? function(path, root, type, single) { + root = root || doc; + if (!DQ.isXml(root)) { + try { + + if (root.parentNode && (root.nodeType !== 9) && path.indexOf(',') === -1 && !startIdRe.test(path)) { + path = '#' + Ext.escapeId(Ext.id(root)) + ' ' + path; + root = root.parentNode; + } + return single ? [ root.querySelector(path) ] + : Ext.Array.toArray(root.querySelectorAll(path)); + } + catch (e) { + } + } + return DQ.jsSelect.call(this, path, root, type); + } : function(path, root, type) { + return DQ.jsSelect.call(this, path, root, type); + }, + + + selectNode : function(path, root){ + return Ext.DomQuery.select(path, root, null, true)[0]; + }, + + + selectValue: function(path, root, defaultValue) { + path = path.replace(trimRe, ""); + if (!valueCache[path]) { + valueCache[path] = DQ.compile(path, "select"); + } else { + setupEscapes(path); + } + + 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 = DQ.selectValue(path, root, defaultValue || 0); + return parseFloat(v); + }, + + + is: function(el, ss) { + if (typeof el == "string") { + el = doc.getElementById(el); + } + var isArray = Ext.isArray(el), + result = DQ.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] = DQ.compile(ss, "simple"); + } else { + setupEscapes(ss); + } + + var result = simpleCache[ss](els); + return nonMatches ? quickDiff(result, els) : result; + }, + + + matchers: [{ + re: /^\.([\w\-\\]+)/, + select: useClassList ? 'n = byClassName(n, "{1}");' : '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, + i, ci; + for (i = 0; (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, + i, ci; + for (i = 0; (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, + i, n, j, cn, pn; + for (i = 0; n = c[i]; i++) { + pn = n.parentNode; + if (batch != pn._batch) { + j = 0; + for (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, + i, ci; + for (i = 0; ci = c[i]; i++) { + if (!prev(ci) && !next(ci)) { + r[++ri] = ci; + } + } + return r; + }, + + "empty": function(c) { + var r = [], ri = -1, + i, ci, cns, j, cn, empty; + for (i = 0; ci = c[i]; i++) { + cns = ci.childNodes; + j = 0; + 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, + i, ci; + for (i = 0; ci = c[i]; i++) { + if ((ci.textContent || ci.innerText || ci.text || '').indexOf(v) != -1) { + r[++ri] = ci; + } + } + return r; + }, + + "nodeValue": function(c, v) { + var r = [], ri = -1, + i, ci; + for (i = 0; ci = c[i]; i++) { + if (ci.firstChild && ci.firstChild.nodeValue == v) { + r[++ri] = ci; + } + } + return r; + }, + + "checked": function(c) { + var r = [], ri = -1, + i, ci; + for (i = 0; ci = c[i]; i++) { + if (ci.checked === true) { + r[++ri] = ci; + } + } + return r; + }, + + "not": function(c, ss) { + return DQ.filter(c, ss, true); + }, + + "any": function(c, selectors) { + var ss = selectors.split('|'), + r = [], ri = -1, s, + i, ci, j; + for (i = 0; ci = c[i]; i++) { + for (j = 0; s = ss[j]; j++) { + if (DQ.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 = DQ.select, + r = [], ri = -1, + i, ci; + for (i = 0; ci = c[i]; i++) { + if (s(ss, ci).length > 0) { + r[++ri] = ci; + } + } + return r; + }, + + "next": function(c, ss) { + var is = DQ.is, + r = [], ri = -1, + i, ci, n; + for (i = 0; ci = c[i]; i++) { + n = next(ci); + if (n && is(n, ss)) { + r[++ri] = ci; + } + } + return r; + }, + + "prev": function(c, ss) { + var is = DQ.is, + r = [], ri = -1, + i, ci, n; + for (i = 0; ci = c[i]; i++) { + n = prev(ci); + if (n && is(n, ss)) { + r[++ri] = ci; + } + } + return r; + }, + + focusable: function(candidates) { + var len = candidates.length, + results = [], + i = 0, + c; + + for (; i < len; i++) { + c = candidates[i]; + if (Ext.fly(c, '_DomQuery').isFocusable()) { + results.push(c); + } + } + + return results; + }, + + visible: function(candidates, deep) { + var len = candidates.length, + results = [], + i = 0, + c; + + for (; i < len; i++) { + c = candidates[i]; + if (Ext.fly(c, '_DomQuery').isVisible(deep)) { + results.push(c); + } + } + + return results; + } + } + }; +}()); + + +Ext.query = Ext.DomQuery.select; + + + + + +Ext.define('Ext.dom.Element_anim', { + override: 'Ext.dom.Element', + + + animate: function(config) { + var me = this, + listeners, + anim, + animId = me.dom.id || Ext.id(me.dom); + + if (!Ext.fx.Manager.hasFxBlock(animId)) { + + if (config.listeners) { + listeners = config.listeners; + delete config.listeners; + } + if (config.internalListeners) { + config.listeners = config.internalListeners; + delete config.internalListeners; + } + anim = new Ext.fx.Anim(me.anim(config)); + if (listeners) { + anim.on(listeners); + } + Ext.fx.Manager.queueFx(anim); + } + return me; + }, + + + anim: function(config) { + if (!Ext.isObject(config)) { + return (config) ? {} : false; + } + + var me = this, + duration = config.duration || Ext.fx.Anim.prototype.duration, + easing = config.easing || 'ease', + animConfig; + + if (config.stopAnimation) { + me.stopAnimation(); + } + + Ext.applyIf(config, Ext.fx.Manager.getFxDefaults(me.id)); + + + Ext.fx.Manager.setFxDefaults(me.id, { + delay: 0 + }); + + animConfig = { + + target: me.dom, + remove: config.remove, + alternate: config.alternate || false, + duration: duration, + easing: easing, + callback: config.callback, + listeners: config.listeners, + iterations: config.iterations || 1, + scope: config.scope, + block: config.block, + concurrent: config.concurrent, + delay: config.delay || 0, + paused: true, + keyframes: config.keyframes, + from: config.from || {}, + to: Ext.apply({}, config) + }; + Ext.apply(animConfig.to, config.to); + + + delete animConfig.to.to; + delete animConfig.to.from; + delete animConfig.to.remove; + delete animConfig.to.alternate; + delete animConfig.to.keyframes; + delete animConfig.to.iterations; + delete animConfig.to.listeners; + delete animConfig.to.target; + delete animConfig.to.paused; + delete animConfig.to.callback; + delete animConfig.to.scope; + delete animConfig.to.duration; + delete animConfig.to.easing; + delete animConfig.to.concurrent; + delete animConfig.to.block; + delete animConfig.to.stopAnimation; + delete animConfig.to.delay; + return animConfig; + }, + + + slideIn: function(anchor, obj, slideOut) { + var me = this, + dom = me.dom, + elStyle = dom.style, + beforeAnim, + wrapAnim, + restoreScroll, + wrapDomParentNode; + + anchor = anchor || "t"; + obj = obj || {}; + + beforeAnim = function() { + var animScope = this, + listeners = obj.listeners, + el = Ext.fly(dom, '_anim'), + box, originalStyles, anim, wrap; + + if (!slideOut) { + el.fixDisplay(); + } + + box = el.getBox(); + if ((anchor == 't' || anchor == 'b') && box.height === 0) { + box.height = dom.scrollHeight; + } + else if ((anchor == 'l' || anchor == 'r') && box.width === 0) { + box.width = dom.scrollWidth; + } + + originalStyles = el.getStyles('width', 'height', 'left', 'right', 'top', 'bottom', 'position', 'z-index', true); + el.setSize(box.width, box.height); + + + if (obj.preserveScroll) { + restoreScroll = el.cacheScrollValues(); + } + + wrap = el.wrap({ + id: Ext.id() + '-anim-wrap-for-' + el.dom.id, + style: { + visibility: slideOut ? 'visible' : 'hidden' + } + }); + wrapDomParentNode = wrap.dom.parentNode; + wrap.setPositioning(el.getPositioning(true)); + if (wrap.isStyle('position', 'static')) { + wrap.position('relative'); + } + el.clearPositioning('auto'); + wrap.clip(); + + + if (restoreScroll) { + restoreScroll(); + } + + + + + el.setStyle({ + visibility: '', + position: 'absolute' + }); + if (slideOut) { + wrap.setSize(box.width, box.height); + } + + switch (anchor) { + case 't': + anim = { + from: { + width: box.width + 'px', + height: '0px' + }, + to: { + width: box.width + 'px', + height: box.height + 'px' + } + }; + elStyle.bottom = '0px'; + break; + case 'l': + anim = { + from: { + width: '0px', + height: box.height + 'px' + }, + to: { + width: box.width + 'px', + height: box.height + 'px' + } + }; + me.anchorAnimX(anchor); + break; + case 'r': + anim = { + from: { + x: box.x + box.width, + width: '0px', + height: box.height + 'px' + }, + to: { + x: box.x, + width: box.width + 'px', + height: box.height + 'px' + } + }; + me.anchorAnimX(anchor); + break; + case 'b': + anim = { + from: { + y: box.y + box.height, + width: box.width + 'px', + height: '0px' + }, + to: { + y: box.y, + width: box.width + 'px', + height: box.height + 'px' + } + }; + break; + case 'tl': + anim = { + from: { + x: box.x, + y: box.y, + width: '0px', + height: '0px' + }, + to: { + width: box.width + 'px', + height: box.height + 'px' + } + }; + elStyle.bottom = '0px'; + me.anchorAnimX('l'); + break; + case 'bl': + anim = { + from: { + y: box.y + box.height, + width: '0px', + height: '0px' + }, + to: { + y: box.y, + width: box.width + 'px', + height: box.height + 'px' + } + }; + me.anchorAnimX('l'); + break; + case 'br': + anim = { + from: { + x: box.x + box.width, + y: box.y + box.height, + width: '0px', + height: '0px' + }, + to: { + x: box.x, + y: box.y, + width: box.width + 'px', + height: box.height + 'px' + } + }; + me.anchorAnimX('r'); + break; + case 'tr': + anim = { + from: { + x: box.x + box.width, + width: '0px', + height: '0px' + }, + to: { + x: box.x, + width: box.width + 'px', + height: box.height + 'px' + } + }; + elStyle.bottom = '0px'; + me.anchorAnimX('r'); + break; + } + + wrap.show(); + wrapAnim = Ext.apply({}, obj); + delete wrapAnim.listeners; + wrapAnim = new Ext.fx.Anim(Ext.applyIf(wrapAnim, { + target: wrap, + duration: 500, + easing: 'ease-out', + from: slideOut ? anim.to : anim.from, + to: slideOut ? anim.from : anim.to + })); + + + wrapAnim.on('afteranimate', function() { + var el = Ext.fly(dom, '_anim'); + + el.setStyle(originalStyles); + if (slideOut) { + if (obj.useDisplay) { + el.setDisplayed(false); + } else { + el.hide(); + } + } + if (wrap.dom) { + if (wrap.dom.parentNode) { + wrap.dom.parentNode.insertBefore(el.dom, wrap.dom); + } else { + wrapDomParentNode.appendChild(el.dom); + } + wrap.remove(); + } + + if (restoreScroll) { + restoreScroll(); + } + + animScope.end(); + }); + + if (listeners) { + wrapAnim.on(listeners); + } + }; + + me.animate({ + + duration: obj.duration ? Math.max(obj.duration, 500) * 2 : 1000, + listeners: { + beforeanimate: beforeAnim + } + }); + return me; + }, + + + + slideOut: function(anchor, o) { + return this.slideIn(anchor, o, true); + }, + + + puff: function(obj) { + var me = this, + dom = me.dom, + beforeAnim, + box = me.getBox(), + originalStyles = me.getStyles('width', 'height', 'left', 'right', 'top', 'bottom', 'position', 'z-index', 'font-size', 'opacity', true); + + obj = Ext.applyIf(obj || {}, { + easing: 'ease-out', + duration: 500, + useDisplay: false + }); + + beforeAnim = function() { + var el = Ext.fly(dom, '_anim'); + + el.clearOpacity(); + el.show(); + this.to = { + width: box.width * 2, + height: box.height * 2, + x: box.x - (box.width / 2), + y: box.y - (box.height /2), + opacity: 0, + fontSize: '200%' + }; + this.on('afteranimate',function() { + var el = Ext.fly(dom, '_anim'); + if (el) { + if (obj.useDisplay) { + el.setDisplayed(false); + } else { + el.hide(); + } + el.setStyle(originalStyles); + Ext.callback(obj.callback, obj.scope); + } + }); + }; + + me.animate({ + duration: obj.duration, + easing: obj.easing, + listeners: { + beforeanimate: { + fn: beforeAnim + } + } + }); + return me; + }, + + + switchOff: function(obj) { + var me = this, + dom = me.dom, + beforeAnim; + + obj = Ext.applyIf(obj || {}, { + easing: 'ease-in', + duration: 500, + remove: false, + useDisplay: false + }); + + beforeAnim = function() { + var el = Ext.fly(dom, '_anim'), + animScope = this, + size = el.getSize(), + xy = el.getXY(), + keyframe, position; + + el.clearOpacity(); + el.clip(); + position = el.getPositioning(); + + keyframe = new Ext.fx.Animator({ + target: dom, + duration: obj.duration, + easing: obj.easing, + keyframes: { + 33: { + opacity: 0.3 + }, + 66: { + height: 1, + y: xy[1] + size.height / 2 + }, + 100: { + width: 1, + x: xy[0] + size.width / 2 + } + } + }); + keyframe.on('afteranimate', function() { + var el = Ext.fly(dom, '_anim'); + if (obj.useDisplay) { + el.setDisplayed(false); + } else { + el.hide(); + } + el.clearOpacity(); + el.setPositioning(position); + el.setSize(size); + + animScope.end(); + }); + }; + + me.animate({ + + duration: (Math.max(obj.duration, 500) * 2), + listeners: { + beforeanimate: { + fn: beforeAnim + } + }, + callback: obj.callback, + scope: obj.scope + }); + return me; + }, + + + frame : function(color, count, obj){ + var me = this, + dom = me.dom, + beforeAnim; + + color = color || '#C3DAF9'; + count = count || 1; + obj = obj || {}; + + beforeAnim = function() { + var el = Ext.fly(dom, '_anim'), + animScope = this, + box, + proxy, proxyAnim; + + el.show(); + box = el.getBox(); + proxy = Ext.getBody().createChild({ + id: el.dom.id + '-anim-proxy', + style: { + position : 'absolute', + 'pointer-events': 'none', + 'z-index': 35000, + border : '0px solid ' + color + } + }); + + proxyAnim = new Ext.fx.Anim({ + target: proxy, + duration: obj.duration || 1000, + iterations: count, + from: { + top: box.y, + left: box.x, + borderWidth: 0, + opacity: 1, + height: box.height, + width: box.width + }, + to: { + top: box.y - 20, + left: box.x - 20, + borderWidth: 10, + opacity: 0, + height: box.height + 40, + width: box.width + 40 + } + }); + proxyAnim.on('afteranimate', function() { + proxy.remove(); + + animScope.end(); + }); + }; + + me.animate({ + + duration: (Math.max(obj.duration, 500) * 2) || 2000, + listeners: { + beforeanimate: { + fn: beforeAnim + } + }, + callback: obj.callback, + scope: obj.scope + }); + return me; + }, + + + ghost: function(anchor, obj) { + var me = this, + dom = me.dom, + beforeAnim; + + anchor = anchor || "b"; + beforeAnim = function() { + var el = Ext.fly(dom, '_anim'), + width = el.getWidth(), + height = el.getHeight(), + xy = el.getXY(), + position = el.getPositioning(), + to = { + opacity: 0 + }; + switch (anchor) { + case 't': + to.y = xy[1] - height; + break; + case 'l': + to.x = xy[0] - width; + break; + case 'r': + to.x = xy[0] + width; + break; + case 'b': + to.y = xy[1] + height; + break; + case 'tl': + to.x = xy[0] - width; + to.y = xy[1] - height; + break; + case 'bl': + to.x = xy[0] - width; + to.y = xy[1] + height; + break; + case 'br': + to.x = xy[0] + width; + to.y = xy[1] + height; + break; + case 'tr': + to.x = xy[0] + width; + to.y = xy[1] - height; + break; + } + this.to = to; + this.on('afteranimate', function () { + var el = Ext.fly(dom, '_anim'); + if (el) { + el.hide(); + el.clearOpacity(); + el.setPositioning(position); + } + }); + }; + + me.animate(Ext.applyIf(obj || {}, { + duration: 500, + easing: 'ease-out', + listeners: { + beforeanimate: beforeAnim + } + })); + return me; + }, + + + highlight: function(color, o) { + var me = this, + dom = me.dom, + from = {}, + restore, to, attr, lns, event, fn; + + + if (dom.tagName.match(me.tableTagRe)) { + return me.select('div').highlight(color, o); + } + + o = o || {}; + lns = o.listeners || {}; + attr = o.attr || 'backgroundColor'; + from[attr] = color || 'ffff9c'; + + if (!o.to) { + to = {}; + to[attr] = o.endColor || me.getColor(attr, 'ffffff', ''); + } + else { + to = o.to; + } + + + o.listeners = Ext.apply(Ext.apply({}, lns), { + beforeanimate: function() { + restore = dom.style[attr]; + var el = Ext.fly(dom, '_anim'); + el.clearOpacity(); + el.show(); + + event = lns.beforeanimate; + if (event) { + fn = event.fn || event; + return fn.apply(event.scope || lns.scope || window, arguments); + } + }, + afteranimate: function() { + if (dom) { + dom.style[attr] = restore; + } + + event = lns.afteranimate; + if (event) { + fn = event.fn || event; + fn.apply(event.scope || lns.scope || window, arguments); + } + } + }); + + me.animate(Ext.apply({}, o, { + duration: 1000, + easing: 'ease-in', + from: from, + to: to + })); + return me; + }, + + + pause: function(ms) { + var me = this; + Ext.fx.Manager.setFxDefaults(me.id, { + delay: ms + }); + return me; + }, + + + fadeIn: function(o) { + var me = this, + dom = me.dom; + + me.animate(Ext.apply({}, o, { + opacity: 1, + internalListeners: { + beforeanimate: function(anim){ + + + var el = Ext.fly(dom, '_anim'); + if (el.isStyle('display', 'none')) { + el.setDisplayed(''); + } else { + el.show(); + } + } + } + })); + return this; + }, + + + fadeOut: function(o) { + var me = this, + dom = me.dom; + + o = Ext.apply({ + opacity: 0, + internalListeners: { + afteranimate: function(anim){ + if (dom && anim.to.opacity === 0) { + var el = Ext.fly(dom, '_anim'); + if (o.useDisplay) { + el.setDisplayed(false); + } else { + el.hide(); + } + } + } + } + }, o); + me.animate(o); + return me; + }, + + + scale: function(w, h, o) { + this.animate(Ext.apply({}, o, { + width: w, + height: h + })); + return this; + }, + + + shift: function(config) { + this.animate(config); + return this; + }, + + + anchorAnimX: function(anchor) { + var xName = (anchor === 'l') ? 'right' : 'left'; + this.dom.style[xName] = '0px'; + } +}); + + + +Ext.define('Ext.dom.Element_dd', { + override: 'Ext.dom.Element', + + + initDD : function(group, config, overrides){ + var dd = new Ext.dd.DD(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides); + }, + + + initDDProxy : function(group, config, overrides){ + var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides); + }, + + + initDDTarget : function(group, config, overrides){ + var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config); + return Ext.apply(dd, overrides); + } +}); + + + +Ext.define('Ext.dom.Element_fx', { + override: 'Ext.dom.Element' +}, +function() { + +var Element = Ext.dom.Element, + VISIBILITY = "visibility", + DISPLAY = "display", + NONE = "none", + HIDDEN = 'hidden', + VISIBLE = 'visible', + OFFSETS = "offsets", + ASCLASS = "asclass", + NOSIZE = 'nosize', + ORIGINALDISPLAY = 'originalDisplay', + VISMODE = 'visibilityMode', + ISVISIBLE = 'isVisible', + OFFSETCLASS = Ext.baseCSSPrefix + 'hide-offsets', + getDisplay = function(el) { + var data = (el.$cache || el.getCache()).data, + display = data[ORIGINALDISPLAY]; + + if (display === undefined) { + data[ORIGINALDISPLAY] = display = ''; + } + return display; + }, + getVisMode = function(el){ + var data = (el.$cache || el.getCache()).data, + visMode = data[VISMODE]; + + if (visMode === undefined) { + data[VISMODE] = visMode = Element.VISIBILITY; + } + return visMode; + }; + +Element.override({ + + originalDisplay : "", + visibilityMode : 1, + + + setVisible : function(visible, animate) { + var me = this, + dom = me.dom, + visMode = getVisMode(me); + + + if (typeof animate == 'string') { + switch (animate) { + case DISPLAY: + visMode = Element.DISPLAY; + break; + case VISIBILITY: + visMode = Element.VISIBILITY; + break; + case OFFSETS: + visMode = Element.OFFSETS; + break; + case NOSIZE: + case ASCLASS: + visMode = Element.ASCLASS; + break; + } + me.setVisibilityMode(visMode); + animate = false; + } + + if (!animate || !me.anim) { + if (visMode == Element.DISPLAY) { + return me.setDisplayed(visible); + } else if (visMode == Element.OFFSETS) { + me[visible?'removeCls':'addCls'](OFFSETCLASS); + } else if (visMode == Element.VISIBILITY) { + me.fixDisplay(); + + dom.style.visibility = visible ? '' : HIDDEN; + } else if (visMode == Element.ASCLASS) { + me[visible?'removeCls':'addCls'](me.visibilityCls || Element.visibilityCls); + } + } else { + + if (visible) { + me.setOpacity(0.01); + me.setVisible(true); + } + if (!Ext.isObject(animate)) { + animate = { + duration: 350, + easing: 'ease-in' + }; + } + me.animate(Ext.applyIf({ + callback: function() { + if (!visible) { + + + Ext.fly(dom, '_internal').setVisible(false).setOpacity(1); + } + }, + to: { + opacity: (visible) ? 1 : 0 + } + }, animate)); + } + (me.$cache || me.getCache()).data[ISVISIBLE] = visible; + return me; + }, + + + hasMetrics : function(){ + var visMode = getVisMode(this); + return this.isVisible() || (visMode == Element.OFFSETS) || (visMode == Element.VISIBILITY); + }, + + + toggle : function(animate){ + var me = this; + me.setVisible(!me.isVisible(), me.anim(animate)); + return me; + }, + + + setDisplayed : function(value) { + if(typeof value == "boolean"){ + value = value ? getDisplay(this) : NONE; + } + this.setStyle(DISPLAY, value); + return this; + }, + + + fixDisplay : function(){ + var me = this; + if (me.isStyle(DISPLAY, NONE)) { + me.setStyle(VISIBILITY, HIDDEN); + me.setStyle(DISPLAY, getDisplay(me)); + if (me.isStyle(DISPLAY, NONE)) { + me.setStyle(DISPLAY, "block"); + } + } + }, + + + hide : function(animate){ + + if (typeof animate == 'string'){ + this.setVisible(false, animate); + return this; + } + this.setVisible(false, this.anim(animate)); + return this; + }, + + + show : function(animate){ + + if (typeof animate == 'string'){ + this.setVisible(true, animate); + return this; + } + this.setVisible(true, this.anim(animate)); + return this; + } +}); + +}); + + + +Ext.define('Ext.dom.Element_position', { + override: 'Ext.dom.Element' +}, +function() { + +var flyInstance, + Element = this, + LEFT = "left", + RIGHT = "right", + TOP = "top", + BOTTOM = "bottom", + POSITION = "position", + STATIC = "static", + RELATIVE = "relative", + ZINDEX = "z-index", + BODY = 'BODY', + + PADDING = 'padding', + BORDER = 'border', + SLEFT = '-left', + SRIGHT = '-right', + STOP = '-top', + SBOTTOM = '-bottom', + SWIDTH = '-width', + + borders = {l: BORDER + SLEFT + SWIDTH, r: BORDER + SRIGHT + SWIDTH, t: BORDER + STOP + SWIDTH, b: BORDER + SBOTTOM + SWIDTH}, + paddings = {l: PADDING + SLEFT, r: PADDING + SRIGHT, t: PADDING + STOP, b: PADDING + SBOTTOM}, + paddingsTLRB = [paddings.l, paddings.r, paddings.t, paddings.b], + bordersTLRB = [borders.l, borders.r, borders.t, borders.b], + round = Math.round, + doc = document, + fly = function (el) { + if (!flyInstance) { + flyInstance = new Ext.Element.Fly(); + } + flyInstance.attach(el); + return flyInstance; + }; + + Element.override({ + + pxRe: /^\d+(?:\.\d*)?px$/i, + + inheritableStatics: { + getX: function(el) { + return Element.getXY(el)[0]; + }, + + getXY: function(el) { + var bd = doc.body, + docEl = doc.documentElement, + leftBorder = 0, + topBorder = 0, + ret = [0,0], + box, + scroll; + + el = Ext.getDom(el); + + if(el != doc && el != bd){ + + + if (Ext.isIE) { + try { + box = el.getBoundingClientRect(); + + + topBorder = docEl.clientTop || bd.clientTop; + leftBorder = docEl.clientLeft || bd.clientLeft; + } catch (ex) { + box = { left: 0, top: 0 }; + } + } else { + box = el.getBoundingClientRect(); + } + + scroll = fly(doc).getScroll(); + ret = [ + round(box.left + scroll.left - leftBorder), + round(box.top + scroll.top - topBorder) + ]; + } + return ret; + }, + + getY: function(el) { + return Element.getXY(el)[1]; + }, + + setX: function(el, x) { + Element.setXY(el, [x, false]); + }, + + setXY: function(el, xy) { + (el = Ext.fly(el, '_setXY')).position(); + + var pts = el.translatePoints(xy), + style = el.dom.style, + pos; + + + + style.right = 'auto'; + for (pos in pts) { + if (!isNaN(pts[pos])) { + style[pos] = pts[pos] + "px"; + } + } + }, + + setY: function(el, y) { + Element.setXY(el, [false, y]); + } + }, + + + center: function(centerIn){ + return this.alignTo(centerIn || doc, 'c-c'); + }, + + + clearPositioning: function(value) { + value = value || ''; + return this.setStyle({ + left : value, + right : value, + top : value, + bottom : value, + 'z-index' : '', + position : STATIC + }); + }, + + getAnchorToXY: function(el, anchor, local, mySize) { + return el.getAnchorXY(anchor, local, mySize); + }, + + + getBottom: function(local) { + return (local ? this.getLocalY() : this.getY()) + this.getHeight(); + }, + + getBorderPadding: function() { + var paddingWidth = this.getStyle(paddingsTLRB), + bordersWidth = this.getStyle(bordersTLRB); + + return { + beforeX: (parseFloat(bordersWidth[borders.l]) || 0) + (parseFloat(paddingWidth[paddings.l]) || 0), + afterX: (parseFloat(bordersWidth[borders.r]) || 0) + (parseFloat(paddingWidth[paddings.r]) || 0), + beforeY: (parseFloat(bordersWidth[borders.t]) || 0) + (parseFloat(paddingWidth[paddings.t]) || 0), + afterY: (parseFloat(bordersWidth[borders.b]) || 0) + (parseFloat(paddingWidth[paddings.b]) || 0) + }; + }, + + + getCenterXY: function(){ + return this.getAlignToXY(doc, 'c-c'); + }, + + + getLeft: function(local) { + return local ? this.getLocalX() : this.getX(); + }, + + + getLocalX: function() { + var me = this, + offsetParent = me.dom.offsetParent, + x = me.getStyle('left'); + + if (!x || x === 'auto') { + x = 0; + } else if (me.pxRe.test(x)) { + x = parseFloat(x); + } else { + x = me.getX(); + if (offsetParent) { + x -= Element.getX(offsetParent); + } + } + + return x; + }, + + + getLocalXY: function() { + var me = this, + offsetParent = me.dom.offsetParent, + style = me.getStyle(['left', 'top']), + x = style.left, + y = style.top; + + if (!x || x === 'auto') { + x = 0; + } else if (me.pxRe.test(x)) { + x = parseFloat(x); + } else { + x = me.getX(); + if (offsetParent) { + x -= Element.getX(offsetParent); + } + } + + if (!y || y === 'auto') { + y = 0; + } else if (me.pxRe.test(y)) { + y = parseFloat(y); + } else { + y = me.getY(); + if (offsetParent) { + y -= Element.getY(offsetParent); + } + } + + return [x, y]; + }, + + + getLocalY: function() { + var me = this, + offsetParent = me.dom.offsetParent, + y = me.getStyle('top'); + + if (!y || y === 'auto') { + y = 0; + } else if (me.pxRe.test(y)) { + y = parseFloat(y); + } else { + y = me.getY(); + if (offsetParent) { + y -= Element.getY(offsetParent); + } + } + + return y; + }, + + + getPageBox: function(getRegion) { + var me = this, + dom = me.dom, + isDoc = dom.nodeName == BODY, + w = isDoc ? Ext.Element.getViewWidth() : dom.offsetWidth, + h = isDoc ? Ext.Element.getViewHeight() : dom.offsetHeight, + xy = me.getXY(), + t = xy[1], + r = xy[0] + w, + b = xy[1] + h, + l = xy[0]; + + if (getRegion) { + return new Ext.util.Region(t, r, b, l); + } + else { + return { + left: l, + top: t, + width: w, + height: h, + right: r, + bottom: b + }; + } + }, + + + getPositioning: function(autoPx){ + var styles = this.getStyle(['left', 'top', 'position', 'z-index']), + dom = this.dom; + + if(autoPx) { + if(styles.left === 'auto') { + styles.left = dom.offsetLeft + 'px'; + } + if(styles.top === 'auto') { + styles.top = dom.offsetTop + 'px'; + } + } + + return styles; + }, + + + getRight: function(local) { + return (local ? this.getLocalX() : this.getX()) + this.getWidth(); + }, + + + getTop: function(local) { + return local ? this.getLocalY() : this.getY(); + }, + + + getX: function() { + return Element.getX(this.dom); + }, + + + getXY: function() { + return Element.getXY(this.dom); + }, + + + getY: function() { + return Element.getY(this.dom); + }, + + + moveTo: function(x, y, animate) { + return this.setXY([x, y], animate); + }, + + + position: function(pos, zIndex, x, y) { + var me = this; + + if (!pos && me.isStyle(POSITION, STATIC)) { + me.setStyle(POSITION, RELATIVE); + } else if (pos) { + me.setStyle(POSITION, pos); + } + if (zIndex) { + me.setStyle(ZINDEX, zIndex); + } + if (x || y) { + me.setXY([x || false, y || false]); + } + }, + + + setBottom: function(bottom) { + this.dom.style[BOTTOM] = this.addUnits(bottom); + return this; + }, + + + setBounds: function(x, y, width, height, animate) { + return this.setBox({ + x: x, + y: y, + width: width, + height: height + }, animate); + }, + + + setLeft: function(left) { + this.dom.style[LEFT] = this.addUnits(left); + return this; + }, + + + setLeftTop: function(left, top) { + var me = this, + style = me.dom.style; + + style.left = me.addUnits(left); + style.top = me.addUnits(top); + + return me; + }, + + setLocalX: function(x) { + var style = this.dom.style; + + + style.right = 'auto'; + style.left = (x === null) ? 'auto' : x + 'px'; + }, + + setLocalXY: function(x, y) { + var style = this.dom.style; + + + style.right = 'auto'; + + if (x && x.length) { + y = x[1]; + x = x[0]; + } + + if (x === null) { + style.left = 'auto'; + } else if (x !== undefined) { + style.left = x + 'px'; + } + + if (y === null) { + style.top = 'auto'; + } else if (y !== undefined) { + style.top = y + 'px'; + } + }, + + setLocalY: function(y) { + this.dom.style.top = (y === null) ? 'auto' : y + 'px'; + }, + + + setLocation: function(x, y, animate) { + return this.setXY([x, y], animate); + }, + + + setPositioning: function(pc) { + return this.setStyle(pc); + }, + + + setRight: function(right) { + this.dom.style[RIGHT] = this.addUnits(right); + return this; + }, + + + setTop: function(top) { + this.dom.style[TOP] = this.addUnits(top); + return this; + }, + + setX: function(x, animate) { + return this.setXY([x, this.getY()], animate); + }, + + setXY: function(xy, animate) { + var me = this; + + if (!animate || !me.anim) { + Element.setXY(me.dom, xy); + } else { + if (!Ext.isObject(animate)) { + animate = {}; + } + me.animate(Ext.applyIf({ to: { x: xy[0], y: xy[1] } }, animate)); + } + return this; + }, + + setY: function(y, animate) { + return this.setXY([this.getX(), y], animate); + } + }); + + + Element.getTrueXY = Element.getXY; + +}); + + + +Ext.define('Ext.dom.Element_scroll', { + override: 'Ext.dom.Element', + + + isScrollable: function() { + var dom = this.dom; + return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth; + }, + + + getScroll: function() { + var me = this, + dom = me.dom, + doc = document, + body = doc.body, + docElement = doc.documentElement, + left, top; + + if (dom === doc || dom === body) { + + + + + + + + + left = docElement.scrollLeft || (body ? body.scrollLeft : 0); + top = docElement.scrollTop || (body ? body.scrollTop : 0); + } else { + left = dom.scrollLeft; + top = dom.scrollTop; + } + + return { + left: left, + top: top + }; + }, + + + getScrollLeft: function() { + var dom = this.dom, + doc = document; + + if (dom === doc || dom === doc.body) { + return this.getScroll().left; + } else { + return dom.scrollLeft; + } + }, + + + getScrollTop: function(){ + var dom = this.dom, + doc = document; + + if (dom === doc || dom === doc.body) { + return this.getScroll().top; + } else { + return dom.scrollTop; + } + }, + + + setScrollLeft: function(left){ + this.dom.scrollLeft = left; + return this; + }, + + + setScrollTop: function(top) { + this.dom.scrollTop = top; + return this; + }, + + + scrollBy: function(deltaX, deltaY, animate) { + var me = this, + dom = me.dom; + + + if (deltaX.length) { + animate = deltaY; + deltaY = deltaX[1]; + deltaX = deltaX[0]; + } else if (typeof deltaX != 'number') { + animate = deltaY; + deltaY = deltaX.y; + deltaX = deltaX.x; + } + + if (deltaX) { + me.scrollTo('left', me.constrainScrollLeft(dom.scrollLeft + deltaX), animate); + } + if (deltaY) { + me.scrollTo('top', me.constrainScrollTop(dom.scrollTop + deltaY), animate); + } + + return me; + }, + + + scrollTo: function(side, value, animate) { + + var top = /top/i.test(side), + me = this, + prop = top ? 'scrollTop' : 'scrollLeft', + dom = me.dom, + animCfg; + + if (!animate || !me.anim) { + + dom[prop] = value; + + dom[prop] = value; + } + else { + animCfg = { + to: {} + }; + animCfg.to[prop] = value; + if (Ext.isObject(animate)) { + Ext.applyIf(animCfg, animate); + } + me.animate(animCfg); + } + return me; + }, + + + scrollIntoView: function(container, hscroll, animate, highlight) { + var me = this, + dom = me.dom, + offsets = me.getOffsetsTo(container = Ext.getDom(container) || Ext.getBody().dom), + + left = offsets[0] + container.scrollLeft, + top = offsets[1] + container.scrollTop, + bottom = top + dom.offsetHeight, + right = left + dom.offsetWidth, + + ctClientHeight = container.clientHeight, + ctScrollTop = parseInt(container.scrollTop, 10), + ctScrollLeft = parseInt(container.scrollLeft, 10), + ctBottom = ctScrollTop + ctClientHeight, + ctRight = ctScrollLeft + container.clientWidth, + newPos; + + + if (highlight) { + if (animate) { + animate = Ext.apply({ + listeners: { + afteranimate: function() { + me.scrollChildFly.attach(dom).highlight(); + } + } + }, animate); + } else { + me.scrollChildFly.attach(dom).highlight(); + } + } + + if (dom.offsetHeight > ctClientHeight || top < ctScrollTop) { + newPos = top; + } else if (bottom > ctBottom) { + newPos = bottom - ctClientHeight; + } + if (newPos != null) { + me.scrollChildFly.attach(container).scrollTo('top', newPos, animate); + } + + if (hscroll !== false) { + newPos = null; + if (dom.offsetWidth > container.clientWidth || left < ctScrollLeft) { + newPos = left; + } else if (right > ctRight) { + newPos = right - container.clientWidth; + } + if (newPos != null) { + me.scrollChildFly.attach(container).scrollTo('left', newPos, animate); + } + } + return me; + }, + + + scrollChildIntoView: function(child, hscroll) { + this.scrollChildFly.attach(Ext.getDom(child)).scrollIntoView(this, hscroll); + }, + + + scroll: function(direction, distance, animate) { + if (!this.isScrollable()) { + return false; + } + var me = this, + dom = me.dom, + side = direction === 'r' || direction === 'l' ? 'left' : 'top', + scrolled = false, + currentScroll, constrainedScroll; + + if (direction === 'r') { + distance = -distance; + } + + if (side === 'left') { + currentScroll = dom.scrollLeft; + constrainedScroll = me.constrainScrollLeft(currentScroll + distance); + } else { + currentScroll = dom.scrollTop; + constrainedScroll = me.constrainScrollTop(currentScroll + distance); + } + + if (constrainedScroll !== currentScroll) { + this.scrollTo(side, constrainedScroll, animate); + scrolled = true; + } + + return scrolled; + }, + + constrainScrollLeft: function(left) { + var dom = this.dom; + return Math.max(Math.min(left, dom.scrollWidth - dom.clientWidth), 0); + }, + + constrainScrollTop: function(top) { + var dom = this.dom; + return Math.max(Math.min(top, dom.scrollHeight - dom.clientHeight), 0); + } +}, function() { + this.prototype.scrollChildFly = new this.Fly(); + this.prototype.scrolltoFly = new this.Fly(); +}); + + + +Ext.define('Ext.dom.Element_style', { + override: 'Ext.dom.Element' +}, +function() { + +var Element = this, + view = document.defaultView, + adjustDirect2DTableRe = /table-row|table-.*-group/, + INTERNAL = '_internal', + HIDDEN = 'hidden', + HEIGHT = 'height', + WIDTH = 'width', + ISCLIPPED = 'isClipped', + OVERFLOW = 'overflow', + OVERFLOWX = 'overflow-x', + OVERFLOWY = 'overflow-y', + ORIGINALCLIP = 'originalClip', + DOCORBODYRE = /#document|body/i, + + + styleHooks, verticalStyleHooks90, verticalStyleHooks270, + edges, k, edge, borderWidth; + +if (!view || !view.getComputedStyle) { + Element.prototype.getStyle = function (property, inline) { + var me = this, + dom = me.dom, + multiple = typeof property != 'string', + hooks = me.styleHooks, + prop = property, + props = prop, + len = 1, + isInline = inline, + camel, domStyle, values, hook, out, style, i; + + if (multiple) { + values = {}; + prop = props[0]; + i = 0; + if (!(len = props.length)) { + return values; + } + } + + if (!dom || dom.documentElement) { + return values || ''; + } + + domStyle = dom.style; + + if (inline) { + style = domStyle; + } else { + style = dom.currentStyle; + + + if (!style) { + isInline = true; + style = domStyle; + } + } + + do { + hook = hooks[prop]; + + if (!hook) { + hooks[prop] = hook = { name: Element.normalize(prop) }; + } + + if (hook.get) { + out = hook.get(dom, me, isInline, style); + } else { + camel = hook.name; + + + + + + if (hook.canThrow) { + try { + out = style[camel]; + } catch (e) { + out = ''; + } + } else { + + + out = style ? style[camel] : ''; + } + } + + if (!multiple) { + return out; + } + + values[prop] = out; + prop = props[++i]; + } while (i < len); + + return values; + }; +} + +Element.override({ + getHeight: function(contentHeight, preciseHeight) { + var me = this, + hidden = me.isStyle('display', 'none'), + height, + floating; + + if (hidden) { + return 0; + } + + height = me.dom.offsetHeight; + + + if (Ext.supports.Direct2DBug) { + floating = me.adjustDirect2DDimension(HEIGHT); + if (preciseHeight) { + height += floating; + } + else if (floating > 0 && floating < 0.5) { + height++; + } + } + + if (contentHeight) { + height -= me.getBorderWidth("tb") + me.getPadding("tb"); + } + + return (height < 0) ? 0 : height; + }, + + getWidth: function(contentWidth, preciseWidth) { + var me = this, + dom = me.dom, + hidden = me.isStyle('display', 'none'), + rect, width, floating; + + if (hidden) { + return 0; + } + + + + + + + + if (preciseWidth && Ext.supports.BoundingClientRect) { + rect = dom.getBoundingClientRect(); + + + + + width = (me.vertical && !Ext.isIE9 && !Ext.supports.RotatedBoundingClientRect) ? + (rect.bottom - rect.top) : (rect.right - rect.left); + } else { + width = dom.offsetWidth; + } + + + + + if (Ext.supports.Direct2DBug && !me.vertical) { + + floating = me.adjustDirect2DDimension(WIDTH); + if (preciseWidth) { + width += floating; + } + + + + else if (floating > 0 && floating < 0.5) { + width++; + } + } + + if (contentWidth) { + width -= me.getBorderWidth("lr") + me.getPadding("lr"); + } + + return (width < 0) ? 0 : width; + }, + + setWidth: function(width, animate) { + var me = this; + width = me.adjustWidth(width); + if (!animate || !me.anim) { + me.dom.style.width = me.addUnits(width); + } + else { + if (!Ext.isObject(animate)) { + animate = {}; + } + me.animate(Ext.applyIf({ + to: { + width: width + } + }, animate)); + } + return me; + }, + + setHeight : function(height, animate) { + var me = this; + + height = me.adjustHeight(height); + if (!animate || !me.anim) { + me.dom.style.height = me.addUnits(height); + } + else { + if (!Ext.isObject(animate)) { + animate = {}; + } + me.animate(Ext.applyIf({ + to: { + height: height + } + }, animate)); + } + + return me; + }, + + applyStyles: function(style) { + Ext.DomHelper.applyStyles(this.dom, style); + return this; + }, + + setSize: function(width, height, animate) { + var me = this; + + if (Ext.isObject(width)) { + animate = height; + height = width.height; + width = width.width; + } + + width = me.adjustWidth(width); + height = me.adjustHeight(height); + + if (!animate || !me.anim) { + me.dom.style.width = me.addUnits(width); + me.dom.style.height = me.addUnits(height); + } + else { + if (animate === true) { + animate = {}; + } + me.animate(Ext.applyIf({ + to: { + width: width, + height: height + } + }, animate)); + } + + return me; + }, + + getViewSize : function() { + var me = this, + dom = me.dom, + isDoc = DOCORBODYRE.test(dom.nodeName), + ret; + + + if (isDoc) { + ret = { + width : Element.getViewWidth(), + height : Element.getViewHeight() + }; + } else { + ret = { + width : dom.clientWidth, + height : dom.clientHeight + }; + } + + return ret; + }, + + getSize: function(contentSize) { + return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)}; + }, + + + + + adjustWidth : function(width) { + var me = this, + isNum = (typeof width == 'number'); + + if (isNum && me.autoBoxAdjust && !me.isBorderBox()) { + width -= (me.getBorderWidth("lr") + me.getPadding("lr")); + } + return (isNum && width < 0) ? 0 : width; + }, + + + adjustHeight : function(height) { + var me = this, + isNum = (typeof height == "number"); + + if (isNum && me.autoBoxAdjust && !me.isBorderBox()) { + height -= (me.getBorderWidth("tb") + me.getPadding("tb")); + } + return (isNum && height < 0) ? 0 : height; + }, + + + getColor : function(attr, defaultValue, prefix) { + var v = this.getStyle(attr), + color = prefix || prefix === '' ? prefix : '#', + h, len, i=0; + + if (!v || (/transparent|inherit/.test(v))) { + return defaultValue; + } + if (/^r/.test(v)) { + v = v.slice(4, v.length - 1).split(','); + len = v.length; + for (; i 5 ? color.toLowerCase() : defaultValue); + }, + + + setOpacity: function(opacity, animate) { + var me = this; + + if (!me.dom) { + return me; + } + + if (!animate || !me.anim) { + me.setStyle('opacity', opacity); + } + else { + if (typeof animate != 'object') { + animate = { + duration: 350, + easing: 'ease-in' + }; + } + + me.animate(Ext.applyIf({ + to: { + opacity: opacity + } + }, animate)); + } + return me; + }, + + + clearOpacity : function() { + return this.setOpacity(''); + }, + + + adjustDirect2DDimension: function(dimension) { + var me = this, + dom = me.dom, + display = me.getStyle('display'), + inlineDisplay = dom.style.display, + inlinePosition = dom.style.position, + originIndex = dimension === WIDTH ? 0 : 1, + currentStyle = dom.currentStyle, + floating; + + if (display === 'inline') { + dom.style.display = 'inline-block'; + } + + dom.style.position = display.match(adjustDirect2DTableRe) ? 'absolute' : 'static'; + + + + + + + floating = (parseFloat(currentStyle[dimension]) || parseFloat(currentStyle.msTransformOrigin.split(' ')[originIndex]) * 2) % 1; + + dom.style.position = inlinePosition; + + if (display === 'inline') { + dom.style.display = inlineDisplay; + } + + return floating; + }, + + + clip : function() { + var me = this, + data = (me.$cache || me.getCache()).data, + style; + + if (!data[ISCLIPPED]) { + data[ISCLIPPED] = true; + style = me.getStyle([OVERFLOW, OVERFLOWX, OVERFLOWY]); + data[ORIGINALCLIP] = { + o: style[OVERFLOW], + x: style[OVERFLOWX], + y: style[OVERFLOWY] + }; + me.setStyle(OVERFLOW, HIDDEN); + me.setStyle(OVERFLOWX, HIDDEN); + me.setStyle(OVERFLOWY, HIDDEN); + } + return me; + }, + + + unclip : function() { + var me = this, + data = (me.$cache || me.getCache()).data, + clip; + + if (data[ISCLIPPED]) { + data[ISCLIPPED] = false; + clip = data[ORIGINALCLIP]; + if (clip.o) { + me.setStyle(OVERFLOW, clip.o); + } + if (clip.x) { + me.setStyle(OVERFLOWX, clip.x); + } + if (clip.y) { + me.setStyle(OVERFLOWY, clip.y); + } + } + return me; + }, + + + boxWrap : function(cls) { + cls = cls || Ext.baseCSSPrefix + 'box'; + var el = Ext.get(this.insertHtml("beforeBegin", "
" + Ext.String.format(Element.boxMarkup, cls) + "
")); + Ext.DomQuery.selectNode('.' + cls + '-mc', el.dom).appendChild(this.dom); + return el; + }, + + + getComputedHeight : function() { + var me = this, + h = Math.max(me.dom.offsetHeight, me.dom.clientHeight); + if (!h) { + h = parseFloat(me.getStyle(HEIGHT)) || 0; + if (!me.isBorderBox()) { + h += me.getFrameWidth('tb'); + } + } + return h; + }, + + + getComputedWidth : function() { + var me = this, + w = Math.max(me.dom.offsetWidth, me.dom.clientWidth); + + if (!w) { + w = parseFloat(me.getStyle(WIDTH)) || 0; + if (!me.isBorderBox()) { + w += me.getFrameWidth('lr'); + } + } + return w; + }, + + + getFrameWidth : function(sides, onlyContentBox) { + return (onlyContentBox && this.isBorderBox()) ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides)); + }, + + + addClsOnOver : function(className, testFn, scope) { + var me = this, + dom = me.dom, + hasTest = Ext.isFunction(testFn); + + me.hover( + function() { + if (hasTest && testFn.call(scope || me, me) === false) { + return; + } + Ext.fly(dom, INTERNAL).addCls(className); + }, + function() { + Ext.fly(dom, INTERNAL).removeCls(className); + } + ); + return me; + }, + + + addClsOnFocus : function(className, testFn, scope) { + var me = this, + dom = me.dom, + hasTest = Ext.isFunction(testFn); + + me.on("focus", function() { + if (hasTest && testFn.call(scope || me, me) === false) { + return false; + } + Ext.fly(dom, INTERNAL).addCls(className); + }); + me.on("blur", function() { + Ext.fly(dom, INTERNAL).removeCls(className); + }); + return me; + }, + + + addClsOnClick : function(className, testFn, scope) { + var me = this, + dom = me.dom, + hasTest = Ext.isFunction(testFn); + + me.on("mousedown", function() { + if (hasTest && testFn.call(scope || me, me) === false) { + return false; + } + Ext.fly(dom, INTERNAL).addCls(className); + var d = Ext.getDoc(), + fn = function() { + Ext.fly(dom, INTERNAL).removeCls(className); + d.removeListener("mouseup", fn); + }; + d.on("mouseup", fn); + }); + return me; + }, + + + getStyleSize : function() { + var me = this, + d = this.dom, + isDoc = DOCORBODYRE.test(d.nodeName), + s , + w, h; + + + if (isDoc) { + return { + width : Element.getViewWidth(), + height : Element.getViewHeight() + }; + } + + s = me.getStyle([HEIGHT, WIDTH], true); + + if (s.width && s.width != 'auto') { + w = parseFloat(s.width); + if (me.isBorderBox()) { + w -= me.getFrameWidth('lr'); + } + } + + if (s.height && s.height != 'auto') { + h = parseFloat(s.height); + if (me.isBorderBox()) { + h -= me.getFrameWidth('tb'); + } + } + + return {width: w || me.getWidth(true), height: h || me.getHeight(true)}; + }, + + statics: { + selectableCls: Ext.baseCSSPrefix + 'selectable', + unselectableCls: Ext.baseCSSPrefix + 'unselectable' + }, + + + selectable : function() { + var me = this; + + + + me.dom.unselectable = ''; + + me.removeCls(Element.unselectableCls); + me.addCls(Element.selectableCls); + + return me; + }, + + + unselectable : function() { + + + + + + + + var me = this; + + + + + + + if (Ext.isOpera) { + me.dom.unselectable = 'on'; + } + + + + + + + + + + + me.removeCls(Element.selectableCls); + me.addCls(Element.unselectableCls); + + return me; + }, + + + setVertical: function(angle, cls) { + var me = this, + proto = Element.prototype, + hooks; + + me.vertical = true; + if (cls) { + me.addCls(me.verticalCls = cls); + } + + me.setWidth = proto.setHeight; + me.setHeight = proto.setWidth; + if (!Ext.isIE9m) { + + + + + me.getWidth = proto.getHeight; + me.getHeight = proto.getWidth; + } + + + me.styleHooks = (angle === 270) ? + Element.prototype.verticalStyleHooks270 : Element.prototype.verticalStyleHooks90; + }, + + + setHorizontal: function() { + var me = this, + cls = me.verticalCls; + + delete me.vertical; + if (cls) { + delete me.verticalCls; + me.removeCls(cls); + } + + + delete me.setWidth; + delete me.setHeight; + if (!Ext.isIE9m) { + delete me.getWidth; + delete me.getHeight; + } + + + delete me.styleHooks; + } +}); + +Element.prototype.styleHooks = styleHooks = Ext.dom.AbstractElement.prototype.styleHooks; + + + +Element.prototype.verticalStyleHooks90 = verticalStyleHooks90 = Ext.Object.chain(Element.prototype.styleHooks); +Element.prototype.verticalStyleHooks270 = verticalStyleHooks270 = Ext.Object.chain(Element.prototype.styleHooks); + +verticalStyleHooks90.width = { name: 'height' }; +verticalStyleHooks90.height = { name: 'width' }; +verticalStyleHooks90['margin-top'] = { name: 'marginLeft' }; +verticalStyleHooks90['margin-right'] = { name: 'marginTop' }; +verticalStyleHooks90['margin-bottom'] = { name: 'marginRight' }; +verticalStyleHooks90['margin-left'] = { name: 'marginBottom' }; +verticalStyleHooks90['padding-top'] = { name: 'paddingLeft' }; +verticalStyleHooks90['padding-right'] = { name: 'paddingTop' }; +verticalStyleHooks90['padding-bottom'] = { name: 'paddingRight' }; +verticalStyleHooks90['padding-left'] = { name: 'paddingBottom' }; +verticalStyleHooks90['border-top'] = { name: 'borderLeft' }; +verticalStyleHooks90['border-right'] = { name: 'borderTop' }; +verticalStyleHooks90['border-bottom'] = { name: 'borderRight' }; +verticalStyleHooks90['border-left'] = { name: 'borderBottom' }; + +verticalStyleHooks270.width = { name: 'height' }; +verticalStyleHooks270.height = { name: 'width' }; +verticalStyleHooks270['margin-top'] = { name: 'marginRight' }; +verticalStyleHooks270['margin-right'] = { name: 'marginBottom' }; +verticalStyleHooks270['margin-bottom'] = { name: 'marginLeft' }; +verticalStyleHooks270['margin-left'] = { name: 'marginTop' }; +verticalStyleHooks270['padding-top'] = { name: 'paddingRight' }; +verticalStyleHooks270['padding-right'] = { name: 'paddingBottom' }; +verticalStyleHooks270['padding-bottom'] = { name: 'paddingLeft' }; +verticalStyleHooks270['padding-left'] = { name: 'paddingTop' }; +verticalStyleHooks270['border-top'] = { name: 'borderRight' }; +verticalStyleHooks270['border-right'] = { name: 'borderBottom' }; +verticalStyleHooks270['border-bottom'] = { name: 'borderLeft' }; +verticalStyleHooks270['border-left'] = { name: 'borderTop' }; + +if (Ext.isIE7m) { + styleHooks.fontSize = styleHooks['font-size'] = { + name: 'fontSize', + canThrow: true + }; + + styleHooks.fontStyle = styleHooks['font-style'] = { + name: 'fontStyle', + canThrow: true + }; + + styleHooks.fontFamily = styleHooks['font-family'] = { + name: 'fontFamily', + canThrow: true + }; +} + + +if (Ext.isIEQuirks || Ext.isIE && Ext.ieVersion <= 8) { + function getBorderWidth (dom, el, inline, style) { + if (style[this.styleName] == 'none') { + return '0px'; + } + return style[this.name]; + } + + edges = ['Top','Right','Bottom','Left']; + k = edges.length; + + while (k--) { + edge = edges[k]; + borderWidth = 'border' + edge + 'Width'; + + styleHooks['border-'+edge.toLowerCase()+'-width'] = styleHooks[borderWidth] = { + name: borderWidth, + styleName: 'border' + edge + 'Style', + get: getBorderWidth + }; + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ext.getDoc().on('selectstart', function(ev, dom) { + var doc = document.documentElement, + selectableCls = Element.selectableCls, + unselectableCls = Element.unselectableCls, + tagName = dom && dom.tagName; + + tagName = tagName && tagName.toLowerCase(); + + + + + if (tagName === 'input' || tagName === 'textarea') { + return; + } + + + while (dom && dom.nodeType === 1 && dom !== doc) { + var el = Ext.fly(dom); + + + if (el.hasCls(selectableCls)) { + return; + } + + + if (el.hasCls(unselectableCls)) { + ev.stopEvent(); + return; + } + + dom = dom.parentNode; + } +}); + +}); + +Ext.onReady(function () { + var opacityRe = /alpha\(opacity=(.*)\)/i, + trimRe = /^\s+|\s+$/g, + hooks = Ext.dom.Element.prototype.styleHooks; + + + hooks.opacity = { + name: 'opacity', + afterSet: function(dom, value, el) { + if (el.isLayer) { + el.onOpacitySet(value); + } + } + }; + if (!Ext.supports.Opacity && Ext.isIE) { + Ext.apply(hooks.opacity, { + get: function (dom) { + var filter = dom.style.filter, + match, opacity; + if (filter.match) { + match = filter.match(opacityRe); + if (match) { + opacity = parseFloat(match[1]); + if (!isNaN(opacity)) { + return opacity ? opacity / 100 : 0; + } + } + } + return 1; + }, + set: function (dom, value) { + var style = dom.style, + val = style.filter.replace(opacityRe, '').replace(trimRe, ''); + + style.zoom = 1; + + + if (typeof(value) == 'number' && value >= 0 && value < 1) { + value *= 100; + style.filter = val + (val.length ? ' ' : '') + 'alpha(opacity='+value+')'; + } else { + style.filter = val; + } + } + }); + } + + +}); + + + +Ext.define('Ext.util.Positionable', { + + _positionTopLeft: ['position', 'top', 'left'], + + _alignRe: /^([a-z]+)-([a-z]+)(\?)?$/, + + + + afterSetPosition: Ext.emptyFn, + + + + + adjustForConstraints: function(xy, parent) { + var vector = this.getConstrainVector(parent, xy); + if (vector) { + xy[0] += vector[0]; + xy[1] += vector[1]; + } + return xy; + }, + + + alignTo: function(element, position, offsets, animate) { + var me = this, + el = me.el; + + return me.setXY(me.getAlignToXY(element, position, offsets), + el.anim && !!animate ? el.anim(animate) : false); + }, + + + anchorTo: function(anchorToEl, alignment, offsets, animate, monitorScroll, callback) { + var me = this, + scroll = !Ext.isEmpty(monitorScroll), + action = function() { + me.alignTo(anchorToEl, alignment, offsets, animate); + Ext.callback(callback, me); + }, + anchor = me.getAnchor(); + + + me.removeAnchor(); + Ext.apply(anchor, { + fn: action, + scroll: scroll + }); + + Ext.EventManager.onWindowResize(action, null); + + if (scroll) { + Ext.EventManager.on(window, 'scroll', action, null, + {buffer: !isNaN(monitorScroll) ? monitorScroll : 50}); + } + action(); + return me; + }, + + + calculateAnchorXY: function(anchor, extraX, extraY, mySize) { + + + var me = this, + el = me.el, + doc = document, + isViewport = el.dom == doc.body || el.dom == doc, + round = Math.round, + xy, myWidth, myHeight; + + anchor = (anchor || "tl").toLowerCase(); + mySize = mySize || {}; + + myWidth = mySize.width || isViewport ? Ext.Element.getViewWidth() : me.getWidth(); + myHeight = mySize.height || isViewport ? Ext.Element.getViewHeight() : me.getHeight(); + + + + switch (anchor) { + case 'tl' : xy = [0, 0]; + break; + case 'bl' : xy = [0, myHeight]; + break; + case 'tr' : xy = [myWidth, 0]; + break; + case 'c' : xy = [round(myWidth * 0.5), round(myHeight * 0.5)]; + break; + case 't' : xy = [round(myWidth * 0.5), 0]; + break; + case 'l' : xy = [0, round(myHeight * 0.5)]; + break; + case 'r' : xy = [myWidth, round(myHeight * 0.5)]; + break; + case 'b' : xy = [round(myWidth * 0.5), myHeight]; + break; + case 'tc' : xy = [round(myWidth * 0.5), 0]; + break; + case 'bc' : xy = [round(myWidth * 0.5), myHeight]; + break; + case 'br' : xy = [myWidth, myHeight]; + } + return [xy[0] + extraX, xy[1] + extraY]; + }, + + + convertPositionSpec: Ext.identityFn, + + + getAlignToXY: function(alignToEl, posSpec, offset) { + var me = this, + viewportWidth = Ext.Element.getViewWidth() - 10, + viewportHeight = Ext.Element.getViewHeight() - 10, + doc = document, + docElement = doc.documentElement, + docBody = doc.body, + scrollX = (docElement.scrollLeft || docBody.scrollLeft || 0), + scrollY = (docElement.scrollTop || docBody.scrollTop || 0), + alignMatch, myPosition, alignToElPosition, myWidth, myHeight, + alignToElRegion, swapY, swapX, constrain, align1, align2, + p1y, p1x, p2y, p2x, x, y; + + alignToEl = Ext.get(alignToEl.el || alignToEl); + + if (!alignToEl || !alignToEl.dom) { + } + + offset = offset || [0,0]; + posSpec = (!posSpec || posSpec == "?" ? "tl-bl?" : + (!(/-/).test(posSpec) && posSpec !== "" ? "tl-" + posSpec : posSpec || "tl-bl")).toLowerCase(); + + posSpec = me.convertPositionSpec(posSpec); + + alignMatch = posSpec.match(me._alignRe); + + + align1 = alignMatch[1]; + align2 = alignMatch[2]; + constrain = !!alignMatch[3]; + + + + myPosition = me.getAnchorXY(align1, true); + alignToElPosition = me.getAnchorToXY(alignToEl, align2, false); + + x = alignToElPosition[0] - myPosition[0] + offset[0]; + y = alignToElPosition[1] - myPosition[1] + offset[1]; + + + if (constrain) { + myWidth = me.getWidth(); + myHeight = me.getHeight(); + alignToElRegion = alignToEl.getRegion(); + + + + + p1y = align1.charAt(0); + p1x = align1.charAt(align1.length - 1); + p2y = align2.charAt(0); + p2x = align2.charAt(align2.length - 1); + swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t")); + swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r")); + + if (x + myWidth > viewportWidth + scrollX) { + x = swapX ? alignToElRegion.left - myWidth : viewportWidth + scrollX - myWidth; + } + if (x < scrollX) { + x = swapX ? alignToElRegion.right : scrollX; + } + if (y + myHeight > viewportHeight + scrollY) { + y = swapY ? alignToElRegion.top - myHeight : viewportHeight + scrollY - myHeight; + } + if (y < scrollY) { + y = swapY ? alignToElRegion.bottom : scrollY; + } + } + return [x,y]; + }, + + + getAnchor: function(){ + var el = this.el, + data = (el.$cache || el.getCache()).data, + anchor; + + if (!el.dom) { + return; + } + anchor = data._anchor; + + if(!anchor){ + anchor = data._anchor = {}; + } + return anchor; + }, + + + getAnchorXY: function(anchor, local, mySize) { + var me = this, + myPos = me.getXY(), + el = me.el, + doc = document, + isViewport = el.dom == doc.body || el.dom == doc, + scroll = el.getScroll(), + extraX = isViewport ? scroll.left : local ? 0 : myPos[0], + extraY = isViewport ? scroll.top : local ? 0 : myPos[1]; + + return me.calculateAnchorXY(anchor, extraX, extraY, mySize); + }, + + + getBox: function(contentBox, local) { + var me = this, + xy = local ? me.getLocalXY() : me.getXY(), + x = xy[0], + y = xy[1], + w = me.getWidth(), + h = me.getHeight(), + borderPadding, beforeX, beforeY; + + if (contentBox) { + borderPadding = me.getBorderPadding(); + beforeX = borderPadding.beforeX; + beforeY = borderPadding.beforeY; + + x += beforeX; + y += beforeY; + w -= (beforeX + borderPadding.afterX); + h -= (beforeY + borderPadding.afterY); + } + + return { + x: x, + left: x, + 0: x, + y: y, + top: y, + 1: y, + width: w, + height: h, + right: x + w, + bottom: y + h + }; + }, + + + calculateConstrainedPosition: function(constrainTo, proposedPosition, local, proposedSize) { + var me = this, + vector, + fp = me.floatParent, + parentNode = fp ? fp.getTargetEl() : null, + parentOffset, + borderPadding, + proposedConstrainPosition, + xy = false; + + if (local && fp) { + parentOffset = parentNode.getXY(); + borderPadding = parentNode.getBorderPadding(); + parentOffset[0] += borderPadding.beforeX; + parentOffset[1] += borderPadding.beforeY; + if (proposedPosition) { + proposedConstrainPosition = [proposedPosition[0] + parentOffset[0], proposedPosition[1] + parentOffset[1]]; + } + } else { + proposedConstrainPosition = proposedPosition; + } + + + + constrainTo = constrainTo || me.constrainTo || parentNode || me.container || me.el.parent(); + vector = (me.constrainHeader ? me.header : me).getConstrainVector(constrainTo, proposedConstrainPosition, proposedSize); + + + if (vector) { + xy = proposedPosition || me.getPosition(local); + xy[0] += vector[0]; + xy[1] += vector[1]; + } + return xy; + }, + + + getConstrainVector: function(constrainTo, proposedPosition, proposedSize) { + var thisRegion = this.getRegion(), + vector = [0, 0], + shadowSize = (this.shadow && this.constrainShadow && !this.shadowDisabled) ? this.shadow.getShadowSize() : undefined, + overflowed = false, + constraintInsets = this.constraintInsets; + + if (!(constrainTo instanceof Ext.util.Region)) { + constrainTo = Ext.get(constrainTo.el || constrainTo).getViewRegion(); + } + + + if (constraintInsets) { + constraintInsets = Ext.isObject(constraintInsets) ? constraintInsets : Ext.Element.parseBox(constraintInsets); + constrainTo.adjust(constraintInsets.top, constraintInsets.right, constraintInsets.bottom, constraintInsets.length); + } + + + if (proposedPosition) { + thisRegion.translateBy(proposedPosition[0] - thisRegion.x, proposedPosition[1] - thisRegion.y); + } + + if (proposedSize) { + thisRegion.right = thisRegion.left + proposedSize[0]; + thisRegion.bottom = thisRegion.top + proposedSize[1]; + } + + + if (shadowSize) { + constrainTo.adjust(shadowSize[0], -shadowSize[1], -shadowSize[2], shadowSize[3]); + } + + + if (thisRegion.right > constrainTo.right) { + overflowed = true; + vector[0] = (constrainTo.right - thisRegion.right); + } + if (thisRegion.left + vector[0] < constrainTo.left) { + overflowed = true; + vector[0] = (constrainTo.left - thisRegion.left); + } + + + if (thisRegion.bottom > constrainTo.bottom) { + overflowed = true; + vector[1] = (constrainTo.bottom - thisRegion.bottom); + } + if (thisRegion.top + vector[1] < constrainTo.top) { + overflowed = true; + vector[1] = (constrainTo.top - thisRegion.top); + } + return overflowed ? vector : false; + }, + + + getOffsetsTo: function(offsetsTo) { + var o = this.getXY(), + e = Ext.fly(offsetsTo.el || offsetsTo, '_internal').getXY(); + return [o[0] - e[0],o[1] - e[1]]; + }, + + + getRegion: function() { + var box = this.getBox(); + return new Ext.util.Region(box.top, box.right, box.bottom, box.left); + }, + + + getViewRegion: function() { + var me = this, + el = me.el, + isBody = el.dom.nodeName === 'BODY', + borderPadding, scroll, pos, top, left, width, height; + + + if (isBody) { + scroll = el.getScroll(); + left = scroll.left; + top = scroll.top; + width = Ext.dom.AbstractElement.getViewportWidth(); + height = Ext.dom.AbstractElement.getViewportHeight(); + } + else { + borderPadding = me.getBorderPadding(); + pos = me.getXY(); + left = pos[0] + borderPadding.beforeX; + top = pos[1] + borderPadding.beforeY; + width = me.getWidth(true); + height = me.getHeight(true); + } + + return new Ext.util.Region(top, left + width, top + height, left); + }, + + + move: function(direction, distance, animate) { + var me = this, + xy = me.getXY(), + x = xy[0], + y = xy[1], + left = [x - distance, y], + right = [x + distance, y], + top = [x, y - distance], + bottom = [x, y + distance], + hash = { + l: left, + left: left, + r: right, + right: right, + t: top, + top: top, + up: top, + b: bottom, + bottom: bottom, + down: bottom + }; + + direction = direction.toLowerCase(); + me.setXY([hash[direction][0], hash[direction][1]], animate); + }, + + + removeAnchor: function() { + var anchor = this.getAnchor(); + + if (anchor && anchor.fn) { + Ext.EventManager.removeResizeListener(anchor.fn); + if (anchor.scroll) { + Ext.EventManager.un(window, 'scroll', anchor.fn); + } + delete anchor.fn; + } + return this; + }, + + + setBox: function(box, animate) { + var me = this, + el = me.el, + x = box.x, + y = box.y, + xy = [x, y], + w = box.width, + h = box.height, + doConstrain = (me.constrain || me.constrainHeader), + constrainedPos = doConstrain && me.calculateConstrainedPosition(null, [x, y], false, [w, h]); + + + if (constrainedPos) { + x = constrainedPos[0]; + y = constrainedPos[1]; + } + if (!animate || !el.anim) { + me.setSize(w, h); + me.setXY([x, y]); + me.afterSetPosition(x, y); + } else { + me.animate(Ext.applyIf({ + to: { + x: x, + y: y, + width: el.adjustWidth(w), + height: el.adjustHeight(h) + }, + listeners: { + afteranimate: Ext.Function.bind(me.afterSetPosition, me, [x, y]) + } + }, animate)); + } + return me; + }, + + + setRegion: function(region, animate) { + return this.setBox({ + x: region.left, + y: region.top, + width: region.right - region.left, + height: region.bottom - region.top + }, animate); + }, + + + translatePoints: function(x, y) { + var pos = this.translateXY(x, y); + + return { + left: pos.x, + top: pos.y + }; + }, + + + translateXY: function(x, y) { + var me = this, + el = me.el, + styles = el.getStyle(me._positionTopLeft), + relative = styles.position == 'relative', + left = parseFloat(styles.left), + top = parseFloat(styles.top), + xy = me.getXY(); + + if (Ext.isArray(x)) { + y = x[1]; + x = x[0]; + } + if (isNaN(left)) { + left = relative ? 0 : el.dom.offsetLeft; + } + if (isNaN(top)) { + top = relative ? 0 : el.dom.offsetTop; + } + left = (typeof x == 'number') ? x - xy[0] + left : undefined; + top = (typeof y == 'number') ? y - xy[1] + top : undefined; + return { + x: left, + y: top + }; + } +}); + + + +Ext.define('Ext.dom.Element', function(Element) { + var HIDDEN = 'hidden', + DOC = document, + VISIBILITY = "visibility", + DISPLAY = "display", + NONE = "none", + XMASKED = Ext.baseCSSPrefix + "masked", + XMASKEDRELATIVE = Ext.baseCSSPrefix + "masked-relative", + EXTELMASKMSG = Ext.baseCSSPrefix + "mask-msg", + bodyRe = /^body/i, + visFly, + + + noBoxAdjust = Ext.isStrict ? { + select: 1 + }: { + input: 1, + select: 1, + textarea: 1 + }, + + + isScrolled = function(c) { + var r = [], ri = -1, + i, ci; + for (i = 0; ci = c[i]; i++) { + if (ci.scrollTop > 0 || ci.scrollLeft > 0) { + r[++ri] = ci; + } + } + return r; + }; + + return { + + extend: Ext.dom.AbstractElement , + + alternateClassName: ['Ext.Element', 'Ext.core.Element'], + + + + + + + + + + + + tableTagRe: /^(?:tr|td|table|tbody)$/i, + + mixins: [ + Ext.util.Positionable + ], + + addUnits: function() { + return Element.addUnits.apply(Element, arguments); + }, + + + focus: function(defer, dom) { + var me = this; + + dom = dom || me.dom; + try { + if (Number(defer)) { + Ext.defer(me.focus, defer, me, [null, dom]); + } else { + dom.focus(); + } + } catch(e) { + } + return me; + }, + + + blur: function() { + var me = this, + dom = me.dom; + + + if (dom !== document.body) { + try { + dom.blur(); + } catch(e) { + } + return me; + } else { + return me.focus(undefined, dom); + } + }, + + + isBorderBox: function() { + var box = Ext.isBorderBox; + + + if (box && Ext.isIE7m) { + box = !((this.dom.tagName || "").toLowerCase() in noBoxAdjust); + } + return box; + }, + + + hover: function(overFn, outFn, scope, options) { + var me = this; + me.on('mouseenter', overFn, scope || me.dom, options); + me.on('mouseleave', outFn, scope || me.dom, options); + return me; + }, + + + getAttributeNS: function(ns, name) { + return this.getAttribute(name, ns); + }, + + getAttribute: (Ext.isIE && !(Ext.isIE9p && DOC.documentMode >= 9)) ? + + + + + + + + + + + + function(name, ns) { + var d = this.dom, + type; + if (ns) { + type = typeof d[ns + ":" + name]; + if (type != 'undefined' && type != 'unknown') { + return d[ns + ":" + name] || null; + } + return null; + } + if (name === "for") { + name = "htmlFor"; + } + return d[name] || null; + } : function(name, ns) { + var d = this.dom; + if (ns) { + return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name); + } + return d.getAttribute(name) || d[name] || null; + }, + + + cacheScrollValues: function() { + var me = this, + scrolledDescendants, + el, i, + scrollValues = [], + result = function() { + for (i = 0; i < scrolledDescendants.length; i++) { + el = scrolledDescendants[i]; + el.scrollLeft = scrollValues[i][0]; + el.scrollTop = scrollValues[i][1]; + } + }; + + if (!Ext.DomQuery.pseudos.isScrolled) { + Ext.DomQuery.pseudos.isScrolled = isScrolled; + } + scrolledDescendants = me.query(':isScrolled'); + for (i = 0; i < scrolledDescendants.length; i++) { + el = scrolledDescendants[i]; + scrollValues[i] = [el.scrollLeft, el.scrollTop]; + } + return result; + }, + + + autoBoxAdjust: true, + + + isVisible : function(deep) { + var me = this, + dom = me.dom, + stopNode = dom.ownerDocument.documentElement; + + if (!visFly) { + visFly = new Element.Fly(); + } + + while (dom !== stopNode) { + + + if (!dom || dom.nodeType === 11 || (visFly.attach(dom)).isStyle(VISIBILITY, HIDDEN) || visFly.isStyle(DISPLAY, NONE)) { + return false; + } + + if (!deep) { + break; + } + dom = dom.parentNode; + } + return true; + }, + + + isDisplayed : function() { + return !this.isStyle(DISPLAY, NONE); + }, + + + enableDisplayMode : function(display) { + var me = this; + + me.setVisibilityMode(Element.DISPLAY); + + if (!Ext.isEmpty(display)) { + (me.$cache || me.getCache()).data.originalDisplay = display; + } + + return me; + }, + + + mask : function(msg, msgCls , elHeight) { + var me = this, + dom = me.dom, + + + setExpression = dom.style.setExpression, + data = (me.$cache || me.getCache()).data, + maskShimEl = data.maskShimEl, + maskEl = data.maskEl, + maskMsg = data.maskMsg, + widthExpression, heightExpression; + + if (!(bodyRe.test(dom.tagName) && me.getStyle('position') == 'static')) { + me.addCls(XMASKEDRELATIVE); + } + + + if (maskEl) { + maskEl.remove(); + } + + if (maskMsg) { + maskMsg.remove(); + } + + if (maskShimEl) { + maskShimEl.remove(); + } + + if (Ext.isIE6) { + maskShimEl = Ext.DomHelper.append(dom, { + tag: 'iframe', + cls : Ext.baseCSSPrefix + 'shim ' + Ext.baseCSSPrefix + 'mask-shim' + }, true); + data.maskShimEl = maskShimEl; + maskShimEl.setDisplayed(true); + } + + Ext.DomHelper.append(dom, [{ + cls : Ext.baseCSSPrefix + "mask", + style: 'top:0;left:0;' + }, { + cls : msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG, + cn : { + tag: 'div', + cls: Ext.baseCSSPrefix + 'mask-msg-inner', + cn: { + tag: 'div', + cls: Ext.baseCSSPrefix + 'mask-msg-text', + html: msg || '' + } + } + }]); + + maskMsg = Ext.get(dom.lastChild); + maskEl = Ext.get(maskMsg.dom.previousSibling); + data.maskMsg = maskMsg; + data.maskEl = maskEl; + + me.addCls(XMASKED); + maskEl.setDisplayed(true); + + if (typeof msg == 'string') { + maskMsg.setDisplayed(true); + maskMsg.center(me); + } else { + maskMsg.setDisplayed(false); + } + + + + + + if (!Ext.supports.IncludePaddingInWidthCalculation && setExpression) { + + try { + maskEl.dom.style.setExpression('width', 'this.parentNode.clientWidth + "px"'); + widthExpression = 'this.parentNode.clientWidth + "px"'; + if (maskShimEl) { + maskShimEl.dom.style.setExpression('width', widthExpression); + } + maskEl.dom.style.setExpression('width', widthExpression); + } catch (e) {} + } + + + + if (!Ext.supports.IncludePaddingInHeightCalculation && setExpression) { + + try { + heightExpression = 'this.parentNode.' + (dom == DOC.body ? 'scrollHeight' : 'offsetHeight') + ' + "px"'; + if (maskShimEl) { + maskShimEl.dom.style.setExpression('height', heightExpression); + } + maskEl.dom.style.setExpression('height', heightExpression); + } catch (e) {} + } + + else if (Ext.isIE9m && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto') { + if (maskShimEl) { + maskShimEl.setSize(undefined, elHeight || me.getHeight()); + } + maskEl.setSize(undefined, elHeight || me.getHeight()); + } + return maskEl; + }, + + + unmask : function() { + var me = this, + data = (me.$cache || me.getCache()).data, + maskEl = data.maskEl, + maskShimEl = data.maskShimEl, + maskMsg = data.maskMsg, + style; + + if (maskEl) { + style = maskEl.dom.style; + + if (style.clearExpression) { + style.clearExpression('width'); + style.clearExpression('height'); + } + + if (maskEl) { + maskEl.remove(); + delete data.maskEl; + } + + if (maskMsg) { + maskMsg.remove(); + delete data.maskMsg; + } + + me.removeCls([XMASKED, XMASKEDRELATIVE]); + + if (maskShimEl) { + style = maskShimEl.dom.style; + + if (style.clearExpression) { + style.clearExpression('width'); + style.clearExpression('height'); + } + + maskShimEl.remove(); + delete data.maskShimEl; + } + } + }, + + + isMasked : function() { + var me = this, + data = (me.$cache || me.getCache()).data, + maskEl = data.maskEl, + maskMsg = data.maskMsg, + hasMask = false; + + if (maskEl && maskEl.isVisible()) { + if (maskMsg) { + maskMsg.center(me); + } + hasMask = true; + } + return hasMask; + }, + + + createShim : function() { + var el = DOC.createElement('iframe'), + shim; + + el.frameBorder = '0'; + el.className = Ext.baseCSSPrefix + 'shim'; + el.src = Ext.SSL_SECURE_URL; + shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom)); + shim.autoBoxAdjust = false; + return shim; + }, + + + addKeyListener : function(key, fn, scope){ + var config; + if(typeof key != 'object' || Ext.isArray(key)){ + config = { + target: this, + key: key, + fn: fn, + scope: scope + }; + }else{ + config = { + target: this, + key : key.key, + shift : key.shift, + ctrl : key.ctrl, + alt : key.alt, + fn: fn, + scope: scope + }; + } + return new Ext.util.KeyMap(config); + }, + + + addKeyMap : function(config) { + return new Ext.util.KeyMap(Ext.apply({ + target: this + }, config)); + }, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + on: function(eventName, fn, scope, options) { + Ext.EventManager.on(this, eventName, fn, scope || this, options); + return this; + }, + + + un: function(eventName, fn, scope) { + Ext.EventManager.un(this, eventName, fn, scope || this); + return this; + }, + + + removeAllListeners: function() { + Ext.EventManager.removeAll(this); + return this; + }, + + + purgeAllListeners: function() { + Ext.EventManager.purgeElement(this); + return this; + }, + + select: function(selector) { + return Element.select(selector, false, this.dom); + } + }; +}, function() { + + var DOC = document, + EC = Ext.cache, + Element = this, + AbstractElement = Ext.dom.AbstractElement, + focusRe = /^a|button|embed|iframe|input|object|select|textarea$/i, + nonSpaceRe = /\S/, + scriptTagRe = /(?:]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig, + replaceScriptTagRe = /(?:)((\n|\r|.)*?)(?:<\/script>)/ig, + srcRe = /\ssrc=([\'\"])(.*?)\1/i, + typeRe = /\stype=([\'\"])(.*?)\1/i, + useDocForId = !Ext.isIE8m, + internalFly; + + Element.boxMarkup = '
'; + + + + + + function garbageCollect() { + if (!Ext.enableGarbageCollector) { + clearInterval(Element.collectorThreadId); + } else { + var eid, + d, + o, + t; + + for (eid in EC) { + if (!EC.hasOwnProperty(eid)) { + continue; + } + + o = EC[eid]; + + + if (o.skipGarbageCollection) { + continue; + } + + d = o.dom; + + + + + + + + + + + + + + + + + if (d && (!d.parentNode || (!d.offsetParent && !Ext.getElementById(eid)))) { + if (Ext.enableListenerCollection) { + Ext.EventManager.removeAll(d); + } + delete EC[eid]; + } + } + + if (Ext.isIE) { + t = {}; + for (eid in EC) { + if (!EC.hasOwnProperty(eid)) { + continue; + } + t[eid] = EC[eid]; + } + EC = Ext.cache = t; + } + } + } + + Element.collectorThreadId = setInterval(garbageCollect, 30000); + + + Element.addMethods({ + + + monitorMouseLeave: function(delay, handler, scope) { + var me = this, + timer, + listeners = { + mouseleave: function(e) { + timer = setTimeout(Ext.Function.bind(handler, scope||me, [e]), delay); + }, + mouseenter: function() { + clearTimeout(timer); + }, + freezeEvent: true + }; + + me.on(listeners); + return listeners; + }, + + + swallowEvent : function(eventName, preventDefault) { + var me = this, + e, eLen, + fn = function(e) { + e.stopPropagation(); + if (preventDefault) { + e.preventDefault(); + } + }; + + if (Ext.isArray(eventName)) { + eLen = eventName.length; + + for (e = 0; e < eLen; e++) { + me.on(eventName[e], fn); + } + + return me; + } + me.on(eventName, fn); + return me; + }, + + + relayEvent : function(eventName, observable) { + this.on(eventName, function(e) { + observable.fireEvent(eventName, e); + }); + }, + + + clean : function(forceReclean) { + var me = this, + dom = me.dom, + data = (me.$cache || me.getCache()).data, + n = dom.firstChild, + ni = -1, + nx; + + if (data.isCleaned && forceReclean !== true) { + return me; + } + + while (n) { + nx = n.nextSibling; + if (n.nodeType == 3) { + + if (!(nonSpaceRe.test(n.nodeValue))) { + dom.removeChild(n); + + } else if (nx && nx.nodeType == 3) { + n.appendData(Ext.String.trim(nx.data)); + dom.removeChild(nx); + nx = n.nextSibling; + n.nodeIndex = ++ni; + } + } else { + + internalFly.attach(n).clean(); + n.nodeIndex = ++ni; + } + n = nx; + } + + data.isCleaned = true; + return me; + }, + + + load : function(options) { + this.getLoader().load(options); + return this; + }, + + + getLoader : function() { + var me = this, + data = (me.$cache || me.getCache()).data, + loader = data.loader; + + if (!loader) { + data.loader = loader = new Ext.ElementLoader({ + target: me + }); + } + return loader; + }, + + + syncContent: function(source) { + source = Ext.getDom(source); + var sourceNodes = source.childNodes, + sourceLen = sourceNodes.length, + dest = this.dom, + destNodes = dest.childNodes, + destLen = destNodes.length, + i, destNode, sourceNode, + nodeType, newAttrs, attLen, attName; + + + + + + if (Ext.isIE9m && dest.mergeAttributes) { + dest.mergeAttributes(source, true); + + + + dest.src = source.src; + } else { + newAttrs = source.attributes; + attLen = newAttrs.length; + for (i = 0; i < attLen; i++) { + attName = newAttrs[i].name; + if (attName !== 'id') { + dest.setAttribute(attName, newAttrs[i].value); + } + } + } + + + if (sourceLen !== destLen) { + dest.innerHTML = source.innerHTML; + return; + } + + + + for (i = 0; i < sourceLen; i++) { + sourceNode = sourceNodes[i]; + destNode = destNodes[i]; + nodeType = sourceNode.nodeType; + + + if (nodeType !== destNode.nodeType || (nodeType === 1 && sourceNode.tagName !== destNode.tagName)) { + dest.innerHTML = source.innerHTML; + return; + } + + + if (nodeType === 3) { + destNode.data = sourceNode.data; + } + + else { + if (sourceNode.id && destNode.id !== sourceNode.id) { + destNode.id = sourceNode.id; + } + destNode.style.cssText = sourceNode.style.cssText; + destNode.className = sourceNode.className; + internalFly.attach(destNode).syncContent(sourceNode); + } + } + }, + + + update : function(html, loadScripts, callback) { + var me = this, + id, + dom, + interval; + + if (!me.dom) { + return me; + } + html = html || ''; + dom = me.dom; + + if (loadScripts !== true) { + dom.innerHTML = html; + Ext.callback(callback, me); + return me; + } + + id = Ext.id(); + html += ''; + + interval = setInterval(function() { + var hd, + match, + attrs, + srcMatch, + typeMatch, + el, + s; + if (!(el = DOC.getElementById(id))) { + return false; + } + clearInterval(interval); + Ext.removeNode(el); + hd = Ext.getHead().dom; + + while ((match = scriptTagRe.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]); + } + } + } + Ext.callback(callback, me); + }, 20); + dom.innerHTML = html.replace(replaceScriptTagRe, ''); + return me; + }, + + + removeAllListeners : function() { + this.removeAnchor(); + Ext.EventManager.removeAll(this.dom); + return this; + }, + + + createProxy : function(config, renderTo, matchBox) { + config = (typeof config == 'object') ? config : {tag : "div", cls: config}; + + var me = this, + proxy = renderTo ? Ext.DomHelper.append(renderTo, config, true) : + Ext.DomHelper.insertBefore(me.dom, config, true); + + proxy.setVisibilityMode(Element.DISPLAY); + proxy.hide(); + if (matchBox && me.setBox && me.getBox) { + proxy.setBox(me.getBox()); + } + return proxy; + }, + + + needsTabIndex: function() { + if (this.dom) { + if ((this.dom.nodeName === 'a') && (!this.dom.href)) { + return true; + } + return !focusRe.test(this.dom.nodeName); + } + }, + + + isFocusable: function ( asFocusEl) { + var dom = this.dom, + tabIndexAttr = dom.getAttributeNode('tabIndex'), + tabIndex, + nodeName = dom.nodeName, + canFocus = false; + + + + + + + + + + + + if (tabIndexAttr && tabIndexAttr.specified) { + tabIndex = tabIndexAttr.value; + } + if (dom && !dom.disabled) { + + + if (tabIndex == -1) { + canFocus = Ext.FocusManager && Ext.FocusManager.enabled && asFocusEl; + } + else { + + if (focusRe.test(nodeName)) { + if ((nodeName !== 'a') || dom.href) { + canFocus = true; + } + } + + else { + canFocus = tabIndex != null && tabIndex >= 0; + } + } + canFocus = canFocus && this.isVisible(true); + } + return canFocus; + } + }); + + if (Ext.isIE) { + Element.prototype.getById = function (id, asDom) { + var dom = this.dom, + cacheItem, el, ret; + + if (dom) { + + + el = (useDocForId && DOC.getElementById(id)) || dom.all[id]; + if (el) { + if (asDom) { + ret = el; + } else { + + + cacheItem = EC[id]; + if (cacheItem && cacheItem.el) { + ret = Ext.updateCacheEntry(cacheItem, el).el; + } else { + ret = new Element(el); + } + } + return ret; + } + } + + return asDom ? Ext.getDom(id) : Element.get(id); + }; + } + + Element.createAlias({ + + addListener: 'on', + + removeListener: 'un', + + clearListeners: 'removeAllListeners', + + focusable: 'isFocusable' + }); + + Element.Fly = AbstractElement.Fly = new Ext.Class({ + extend: Element, + + isFly: true, + + constructor: function(dom) { + this.dom = dom; + + + + this.el = this; + }, + + attach: AbstractElement.Fly.prototype.attach + }); + + internalFly = new Element.Fly(); + + if (Ext.isIE) { + Ext.getElementById = function (id) { + var el = DOC.getElementById(id), + detachedBodyEl; + + if (!el && (detachedBodyEl = AbstractElement.detachedBodyEl)) { + el = detachedBodyEl.dom.all[id]; + } + + return el; + }; + } else if (!DOC.querySelector) { + Ext.getDetachedBody = Ext.getBody; + + Ext.getElementById = function (id) { + return DOC.getElementById(id); + }; + } +}); + + + +Ext.define('Ext.dom.CompositeElementLite', { + alternateClassName: 'Ext.CompositeElementLite', + + + + statics: { + + importElementMethods: function() { + var name, + elementPrototype = Ext.dom.Element.prototype, + prototype = this.prototype; + + for (name in elementPrototype) { + if (typeof elementPrototype[name] == 'function'){ + (function(key) { + prototype[key] = prototype[key] || function() { + return this.invoke(key, arguments); + }; + }).call(prototype, name); + + } + } + } + }, + + constructor: function(elements, root) { + + this.elements = []; + this.add(elements, root); + this.el = new Ext.dom.AbstractElement.Fly(); + }, + + + isComposite: true, + + + getElement: function(el) { + + return this.el.attach(el); + }, + + + transformElement: function(el) { + return Ext.getDom(el); + }, + + + getCount: function() { + return this.elements.length; + }, + + + add: function(els, root) { + var elements = this.elements, + i, ln; + + if (!els) { + return this; + } + + if (typeof els == "string") { + els = Ext.dom.Element.selectorFunction(els, root); + } + else if (els.isComposite) { + els = els.elements; + } + else if (!Ext.isIterable(els)) { + els = [els]; + } + + for (i = 0, ln = els.length; i < ln; ++i) { + elements.push(this.transformElement(els[i])); + } + + return this; + }, + + invoke: function(fn, args) { + var elements = this.elements, + ln = elements.length, + element, + i; + + fn = Ext.dom.Element.prototype[fn]; + for (i = 0; i < ln; i++) { + element = elements[i]; + + if (element) { + fn.apply(this.getElement(element), args); + } + } + return this; + }, + + + item: function(index) { + var el = this.elements[index], + out = null; + + if (el) { + out = this.getElement(el); + } + + return out; + }, + + + slice: function() { + return this.elements.slice.apply(this.elements, arguments); + }, + + + addListener: function(eventName, handler, scope, opt) { + var els = this.elements, + len = els.length, + i, e; + + for (i = 0; i < len; i++) { + e = els[i]; + if (e) { + Ext.EventManager.on(e, eventName, handler, scope || e, opt); + } + } + return this; + }, + + each: function(fn, scope) { + var me = this, + els = me.elements, + len = els.length, + i, e; + + for (i = 0; i < len; i++) { + e = els[i]; + if (e) { + e = this.getElement(e); + if (fn.call(scope || e, e, me, i) === false) { + break; + } + } + } + return me; + }, + + + fill: function(els) { + var me = this; + me.elements = []; + me.add(els); + return me; + }, + + insert: function(index, nodes) { + Ext.Array.insert(this.elements, index, nodes); + }, + + + filter: function(selector) { + var me = this, + els = me.elements, + len = els.length, + out = [], + i = 0, + isFunc = typeof selector == 'function', + add, + el; + + for (; i < len; i++) { + el = els[i]; + add = false; + if (el) { + el = me.getElement(el); + + if (isFunc) { + add = selector.call(el, el, me, i) !== false; + } else { + add = el.is(selector); + } + + if (add) { + out.push(me.transformElement(el)); + } + } + } + + me.elements = out; + return me; + }, + + + indexOf: function(el) { + return Ext.Array.indexOf(this.elements, this.transformElement(el)); + }, + + + replaceElement: function(el, replacement, domReplace) { + var index = !isNaN(el) ? el : this.indexOf(el), + d; + if (index > -1) { + replacement = Ext.getDom(replacement); + if (domReplace) { + d = this.elements[index]; + d.parentNode.insertBefore(replacement, d); + Ext.removeNode(d); + } + Ext.Array.splice(this.elements, index, 1, replacement); + } + return this; + }, + + + clear: function(removeDom) { + var me = this, + els = me.elements, + i = els.length - 1; + + if (removeDom) { + for (; i >= 0; i--) { + Ext.removeNode(els[i]); + } + } + this.elements = []; + }, + + addElements: function(els, root) { + if (!els) { + return this; + } + + if (typeof els == "string") { + els = Ext.dom.Element.selectorFunction(els, root); + } + + var yels = this.elements, + eLen = els.length, + e; + + for (e = 0; e < eLen; e++) { + yels.push(Ext.get(els[e])); + } + + return this; + }, + + + first: function() { + return this.item(0); + }, + + + last: function() { + return this.item(this.getCount() - 1); + }, + + + contains: function(el) { + return this.indexOf(el) != -1; + }, + + + removeElement: function(keys, removeDom) { + keys = [].concat(keys); + + var me = this, + elements = me.elements, + kLen = keys.length, + val, el, k; + + for (k = 0; k < kLen; k++) { + val = keys[k]; + + if ((el = (elements[val] || elements[val = me.indexOf(val)]))) { + if (removeDom) { + if (el.dom) { + el.remove(); + } else { + Ext.removeNode(el); + } + } + Ext.Array.erase(elements, val, 1); + } + } + + return me; + } + +}, function() { + this.importElementMethods(); + + this.prototype.on = this.prototype.addListener; + + if (Ext.DomQuery){ + Ext.dom.Element.selectorFunction = Ext.DomQuery.select; + } + + + Ext.dom.Element.select = function(selector, root) { + var elements; + + if (typeof selector == "string") { + elements = Ext.dom.Element.selectorFunction(selector, root); + } + else if (selector.length !== undefined) { + elements = selector; + } + else { + } + + return new Ext.CompositeElementLite(elements); + }; + + + Ext.select = function() { + return Ext.dom.Element.select.apply(Ext.dom.Element, arguments); + }; +}); + + + +Ext.define('Ext.dom.CompositeElement', { + alternateClassName: 'Ext.CompositeElement', + + extend: Ext.dom.CompositeElementLite , + + + getElement: function(el) { + + return el; + }, + + + transformElement: function(el) { + return Ext.get(el); + } + +}, function() { + + + Ext.dom.Element.select = function(selector, unique, root) { + var elements; + + if (typeof selector == "string") { + elements = Ext.dom.Element.selectorFunction(selector, root); + } + else if (selector.length !== undefined) { + elements = selector; + } + else { + } + return (unique === true) ? new Ext.CompositeElement(elements) : new Ext.CompositeElementLite(elements); + }; +}); + + +Ext.select = Ext.Element.select; + + +Ext.define('Ext.util.HashMap', { + mixins: { + observable: Ext.util.Observable + }, + + + generation: 0, + + + + + constructor: function(config) { + config = config || {}; + + var me = this, + keyFn = config.keyFn; + + me.initialConfig = config; + me.addEvents( + + 'add', + + 'clear', + + 'remove', + + 'replace' + ); + + me.mixins.observable.constructor.call(me, config); + me.clear(true); + + if (keyFn) { + me.getKey = keyFn; + } + }, + + + getCount: function() { + return this.length; + }, + + + getData: function(key, value) { + + if (value === undefined) { + value = key; + key = this.getKey(value); + } + + return [key, value]; + }, + + + getKey: function(o) { + return o.id; + }, + + + add: function(key, value) { + var me = this; + + + + if (arguments.length === 1) { + value = key; + key = me.getKey(value); + } + + if (me.containsKey(key)) { + return me.replace(key, value); + } + + me.map[key] = value; + ++me.length; + me.generation++; + if (me.hasListeners.add) { + me.fireEvent('add', me, key, value); + } + return value; + }, + + + replace: function(key, value) { + var me = this, + map = me.map, + old; + + + + if (arguments.length === 1) { + value = key; + key = me.getKey(value); + } + + if (!me.containsKey(key)) { + me.add(key, value); + } + old = map[key]; + map[key] = value; + me.generation++; + if (me.hasListeners.replace) { + me.fireEvent('replace', me, key, value, old); + } + return value; + }, + + + remove: function(o) { + var key = this.findKey(o); + if (key !== undefined) { + return this.removeAtKey(key); + } + return false; + }, + + + removeAtKey: function(key) { + var me = this, + value; + + if (me.containsKey(key)) { + value = me.map[key]; + delete me.map[key]; + --me.length; + me.generation++; + if (me.hasListeners.remove) { + me.fireEvent('remove', me, key, value); + } + return true; + } + return false; + }, + + + get: function(key) { + var map = this.map; + return map.hasOwnProperty(key) ? map[key] : undefined; + }, + + + clear: function( initial) { + var me = this; + + + if (initial || me.generation) { + me.map = {}; + me.length = 0; + me.generation = initial ? 0 : me.generation + 1; + } + if (initial !== true && me.hasListeners.clear) { + me.fireEvent('clear', me); + } + return me; + }, + + + containsKey: function(key) { + var map = this.map; + return map.hasOwnProperty(key) && map[key] !== undefined; + }, + + + contains: function(value) { + return this.containsKey(this.findKey(value)); + }, + + + getKeys: function() { + return this.getArray(true); + }, + + + getValues: function() { + return this.getArray(false); + }, + + + getArray: function(isKey) { + var arr = [], + key, + map = this.map; + for (key in map) { + if (map.hasOwnProperty(key)) { + arr.push(isKey ? key: map[key]); + } + } + return arr; + }, + + + each: function(fn, scope) { + + var items = Ext.apply({}, this.map), + key, + length = this.length; + + scope = scope || this; + for (key in items) { + if (items.hasOwnProperty(key)) { + if (fn.call(scope, key, items[key], length) === false) { + break; + } + } + } + return this; + }, + + + clone: function() { + var hash = new this.self(this.initialConfig), + map = this.map, + key; + + hash.suspendEvents(); + for (key in map) { + if (map.hasOwnProperty(key)) { + hash.add(key, map[key]); + } + } + hash.resumeEvents(); + return hash; + }, + + + findKey: function(value) { + var key, + map = this.map; + + for (key in map) { + if (map.hasOwnProperty(key) && map[key] === value) { + return key; + } + } + return undefined; + } +}); + + +Ext.define('Ext.AbstractManager', { + + + + + + + + typeName: 'type', + + constructor: function(config) { + Ext.apply(this, config || {}); + + + this.all = new Ext.util.HashMap(); + + this.types = {}; + }, + + + get : function(id) { + return this.all.get(id); + }, + + + register: function(item) { + this.all.add(item); + }, + + + unregister: function(item) { + this.all.remove(item); + }, + + + registerType : function(type, cls) { + this.types[type] = cls; + cls[this.typeName] = type; + }, + + + isRegistered : function(type){ + return this.types[type] !== undefined; + }, + + + create: function(config, defaultType) { + var type = config[this.typeName] || config.type || defaultType, + Constructor = this.types[type]; + + + return new Constructor(config); + }, + + + onAvailable : function(id, fn, scope){ + var all = this.all, + item, + callback; + + if (all.containsKey(id)) { + item = all.get(id); + fn.call(scope || item, item); + } else { + callback = function(map, key, item){ + if (key == id) { + fn.call(scope || item, item); + all.un('add', callback); + } + }; + all.on('add', callback); + } + }, + + + each: function(fn, scope){ + this.all.each(fn, scope || this); + }, + + + getCount: function(){ + return this.all.getCount(); + } +}); + + +Ext.define('Ext.ComponentManager', { + extend: Ext.AbstractManager , + alternateClassName: 'Ext.ComponentMgr', + + singleton: true, + + typeName: 'xtype', + + + create: function(component, defaultType){ + if (typeof component == 'string') { + return Ext.widget(component); + } + if (component.isComponent) { + return component; + } + return Ext.widget(component.xtype || defaultType, component); + }, + + registerType: function(type, cls) { + this.types[type] = cls; + cls[this.typeName] = type; + cls.prototype[this.typeName] = type; + } +}, +function () { + + Ext.getCmp = function(id) { + return Ext.ComponentManager.get(id); + }; +}); + + +Ext.define('Ext.ComponentQuery', { + singleton: true + + + + +}, function() { + + var cq = this, + domQueryOperators = Ext.dom.Query.operators, + nthRe = /(\d*)n\+?(\d*)/, + nthRe2 = /\D/, + + + + filterFnPattern = [ + 'var r = [],', + 'i = 0,', + 'it = items,', + 'l = it.length,', + 'c;', + 'for (; i < l; i++) {', + 'c = it[i];', + 'if (c.{0}) {', + 'r.push(c);', + '}', + '}', + 'return r;' + ].join(''), + + filterItems = function(items, operation) { + + + + return operation.method.apply(this, [ items ].concat(operation.args)); + }, + + getItems = function(items, mode) { + var result = [], + i = 0, + length = items.length, + candidate, + deep = mode !== '>'; + + for (; i < length; i++) { + candidate = items[i]; + if (candidate.getRefItems) { + result = result.concat(candidate.getRefItems(deep)); + } + } + return result; + }, + + getAncestors = function(items) { + var result = [], + i = 0, + length = items.length, + candidate; + for (; i < length; i++) { + candidate = items[i]; + while (!!(candidate = candidate.getRefOwner())) { + result.push(candidate); + } + } + return result; + }, + + + filterByXType = function(items, xtype, shallow) { + if (xtype === '*') { + return items.slice(); + } + else { + var result = [], + i = 0, + length = items.length, + candidate; + for (; i < length; i++) { + candidate = items[i]; + if (candidate.isXType(xtype, shallow)) { + result.push(candidate); + } + } + return result; + } + }, + + + filterByClassName = function(items, className) { + var result = [], + i = 0, + length = items.length, + candidate; + for (; i < length; i++) { + candidate = items[i]; + if (candidate.hasCls(className)) { + result.push(candidate); + } + } + return result; + }, + + + filterByAttribute = function(items, property, operator, compareTo) { + var result = [], + i = 0, + length = items.length, + mustBeOwnProperty, + presenceOnly, + candidate, propValue, + j, propLen; + + + if (property.charAt(0) === '@') { + mustBeOwnProperty = true; + property = property.substr(1); + } + if (property.charAt(0) === '?') { + mustBeOwnProperty = true; + presenceOnly = true; + property = property.substr(1); + } + + for (; i < length; i++) { + candidate = items[i]; + + + if (!mustBeOwnProperty || candidate.hasOwnProperty(property)) { + + + propValue = candidate[property]; + + if (presenceOnly) { + result.push(candidate); + } + + else if (operator === '~=') { + if (propValue) { + + if (!Ext.isArray(propValue)) { + propValue = propValue.split(' '); + } + + for (j = 0, propLen = propValue.length; j < propLen; j++) { + if (domQueryOperators[operator](Ext.coerce(propValue[j], compareTo), compareTo)) { + result.push(candidate); + break; + } + } + } + } else if (!compareTo ? !!candidate[property] : domQueryOperators[operator](Ext.coerce(propValue, compareTo), compareTo)) { + result.push(candidate); + } + } + } + return result; + }, + + + filterById = function(items, id) { + var result = [], + i = 0, + length = items.length, + candidate; + for (; i < length; i++) { + candidate = items[i]; + if (candidate.getItemId() === id) { + result.push(candidate); + } + } + return result; + }, + + + filterByPseudo = function(items, name, value) { + return cq.pseudos[name](items, value); + }, + + + + modeRe = /^(\s?([>\^])\s?|\s|$)/, + + + tokenRe = /^(#)?([\w\-]+|\*)(?:\((true|false)\))?/, + + matchers = [{ + + re: /^\.([\w\-]+)(?:\((true|false)\))?/, + method: filterByXType + }, { + + + + re: /^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/, + method: filterByAttribute + }, { + + re: /^#([\w\-]+)/, + method: filterById + }, { + + re: /^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/, + method: filterByPseudo + }, { + + re: /^(?:\{([^\}]+)\})/, + method: filterFnPattern + }]; + + + cq.Query = Ext.extend(Object, { + constructor: function(cfg) { + cfg = cfg || {}; + Ext.apply(this, cfg); + }, + + + + + + + + + + execute : function(root) { + var operations = this.operations, + i = 0, + length = operations.length, + operation, + workingItems; + + + if (!root) { + workingItems = Ext.ComponentManager.all.getArray(); + } + + else if (Ext.isIterable(root)) { + workingItems = root; + } + + else if (root.isMixedCollection) { + workingItems = root.items; + } + + + + for (; i < length; i++) { + operation = operations[i]; + + + + + + + + if (operation.mode === '^') { + workingItems = getAncestors(workingItems || [root]); + } + else if (operation.mode) { + workingItems = getItems(workingItems || [root], operation.mode); + } + else { + workingItems = filterItems(workingItems || getItems([root]), operation); + } + + + + if (i === length -1) { + return workingItems; + } + } + return []; + }, + + is: function(component) { + var operations = this.operations, + components = Ext.isArray(component) ? component : [component], + originalLength = components.length, + lastOperation = operations[operations.length-1], + ln, i; + + components = filterItems(components, lastOperation); + if (components.length === originalLength) { + if (operations.length > 1) { + for (i = 0, ln = components.length; i < ln; i++) { + if (Ext.Array.indexOf(this.execute(), components[i]) === -1) { + return false; + } + } + } + return true; + } + return false; + } + }); + + Ext.apply(this, { + + + cache: {}, + + + pseudos: { + not: function(components, selector){ + var CQ = Ext.ComponentQuery, + i = 0, + length = components.length, + results = [], + index = -1, + component; + + for(; i < length; ++i) { + component = components[i]; + if (!CQ.is(component, selector)) { + results[++index] = component; + } + } + return results; + }, + first: function(components) { + var ret = []; + + if (components.length > 0) { + ret.push(components[0]); + } + return ret; + }, + last: function(components) { + var len = components.length, + ret = []; + + if (len > 0) { + ret.push(components[len - 1]); + } + return ret; + }, + focusable: function(cmps) { + var len = cmps.length, + results = [], + i = 0, + c; + + for (; i < len; i++) { + c = cmps[i]; + + + if (c.isFocusable()) { + results.push(c); + } + } + + return results; + }, + "nth-child" : function(c, a) { + var result = [], + 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, + i, n, nodeIndex; + for (i = 0; n = c[i]; i++) { + nodeIndex = i + 1; + if (f == 1) { + if (l == 0 || nodeIndex == l) { + result.push(n); + } + } else if ((nodeIndex + l) % f == 0){ + result.push(n); + } + } + + return result; + } + }, + + + query: function(selector, root) { + var selectors = selector.split(','), + length = selectors.length, + i = 0, + results = [], + noDupResults = [], + dupMatcher = {}, + query, resultsLn, cmp; + + for (; i < length; i++) { + selector = Ext.String.trim(selectors[i]); + query = this.cache[selector] || (this.cache[selector] = this.parse(selector)); + results = results.concat(query.execute(root)); + } + + + + if (length > 1) { + resultsLn = results.length; + for (i = 0; i < resultsLn; i++) { + cmp = results[i]; + if (!dupMatcher[cmp.id]) { + noDupResults.push(cmp); + dupMatcher[cmp.id] = true; + } + } + results = noDupResults; + } + return results; + }, + + + is: function(component, selector) { + if (!selector) { + return true; + } + var selectors = selector.split(','), + length = selectors.length, + i = 0, + query; + + for (; i < length; i++) { + selector = Ext.String.trim(selectors[i]); + query = this.cache[selector] || (this.cache[selector] = this.parse(selector)); + if (query.is(component)) { + return true; + } + } + return false; + }, + + parse: function(selector) { + var operations = [], + length = matchers.length, + lastSelector, + tokenMatch, + matchedChar, + modeMatch, + selectorMatch, + i, matcher, method; + + + + + while (selector && lastSelector !== selector) { + lastSelector = selector; + + + tokenMatch = selector.match(tokenRe); + + if (tokenMatch) { + matchedChar = tokenMatch[1]; + + + if (matchedChar === '#') { + operations.push({ + method: filterById, + args: [Ext.String.trim(tokenMatch[2])] + }); + } + + + else if (matchedChar === '.') { + operations.push({ + method: filterByClassName, + args: [Ext.String.trim(tokenMatch[2])] + }); + } + + + else { + operations.push({ + method: filterByXType, + args: [Ext.String.trim(tokenMatch[2]), Boolean(tokenMatch[3])] + }); + } + + + selector = selector.replace(tokenMatch[0], ''); + } + + + + + while (!(modeMatch = selector.match(modeRe))) { + + + for (i = 0; selector && i < length; i++) { + matcher = matchers[i]; + selectorMatch = selector.match(matcher.re); + method = matcher.method; + + + + + if (selectorMatch) { + operations.push({ + method: Ext.isString(matcher.method) + + + + ? Ext.functionFactory('items', Ext.String.format.apply(Ext.String, [method].concat(selectorMatch.slice(1)))) + : matcher.method, + args: selectorMatch.slice(1) + }); + selector = selector.replace(selectorMatch[0], ''); + break; + } + + if (i === (length - 1)) { + Ext.Error.raise('Invalid ComponentQuery selector: "' + arguments[0] + '"'); + } + } + } + + + + + + if (modeMatch[1]) { + operations.push({ + mode: modeMatch[2]||modeMatch[1] + }); + selector = selector.replace(modeMatch[0], ''); + } + } + + + + return new cq.Query({ + operations: operations + }); + } + }); +}); + + + + +Ext.define('Ext.util.ProtoElement', (function () { + var splitWords = Ext.String.splitWords, + toMap = Ext.Array.toMap; + + return { + + isProtoEl: true, + + + clsProp: 'cls', + + + styleProp: 'style', + + + removedProp: 'removed', + + + styleIsText: false, + + constructor: function (config) { + var me = this; + + Ext.apply(me, config); + + me.classList = splitWords(me.cls); + me.classMap = toMap(me.classList); + delete me.cls; + + if (Ext.isFunction(me.style)) { + me.styleFn = me.style; + delete me.style; + } else if (typeof me.style == 'string') { + me.style = Ext.Element.parseStyles(me.style); + } else if (me.style) { + me.style = Ext.apply({}, me.style); + } + }, + + + flush: function(){ + this.flushClassList = []; + this.removedClasses = {}; + + delete this.style; + delete this.unselectableAttr; + }, + + + addCls: function (cls) { + var me = this, + add = (typeof cls === 'string') ? splitWords(cls) : cls, + length = add.length, + list = me.classList, + map = me.classMap, + flushList = me.flushClassList, + i = 0, + c; + + for (; i < length; ++i) { + c = add[i]; + if (!map[c]) { + map[c] = true; + list.push(c); + if (flushList) { + flushList.push(c); + delete me.removedClasses[c]; + } + } + } + + return me; + }, + + + hasCls: function (cls) { + return cls in this.classMap; + }, + + + removeCls: function (cls) { + var me = this, + list = me.classList, + newList = (me.classList = []), + remove = toMap(splitWords(cls)), + length = list.length, + map = me.classMap, + removedClasses = me.removedClasses, + i, c; + + for (i = 0; i < length; ++i) { + c = list[i]; + if (remove[c]) { + if (removedClasses) { + if (map[c]) { + removedClasses[c] = true; + Ext.Array.remove(me.flushClassList, c); + } + } + delete map[c]; + } else { + newList.push(c); + } + } + + return me; + }, + + + setStyle: function (prop, value) { + var me = this, + style = me.style || (me.style = {}); + + if (typeof prop == 'string') { + if (arguments.length === 1) { + me.setStyle(Ext.Element.parseStyles(prop)); + } else { + style[prop] = value; + } + } else { + Ext.apply(style, prop); + } + + return me; + }, + + unselectable: function() { + + this.addCls(Ext.dom.Element.unselectableCls); + + if (Ext.isOpera) { + this.unselectableAttr = true; + } + }, + + + writeTo: function (to) { + var me = this, + classList = me.flushClassList || me.classList, + removedClasses = me.removedClasses, + style; + + if (me.styleFn) { + style = Ext.apply({}, me.styleFn()); + Ext.apply(style, me.style); + } else { + style = me.style; + } + + to[me.clsProp] = classList.join(' '); + + if (style) { + to[me.styleProp] = me.styleIsText ? Ext.DomHelper.generateStyles(style) : style; + } + + if (removedClasses) { + removedClasses = Ext.Object.getKeys(removedClasses); + if (removedClasses.length) { + to[me.removedProp] = removedClasses.join(' '); + } + } + + if (me.unselectableAttr) { + to.unselectable = 'on'; + } + + return to; + } + }; +}())); + + +Ext.define('Ext.PluginManager', { + extend: Ext.AbstractManager , + alternateClassName: 'Ext.PluginMgr', + singleton: true, + typeName: 'ptype', + + + create : function(config, defaultType, host) { + var result; + + if (config.init) { + result = config; + } else { + + if (host) { + config = Ext.apply({}, config); + config.cmp = host; + } + + else { + host = config.cmp; + } + + if (config.xclass) { + result = Ext.create(config); + } else { + + result = Ext.ClassManager.getByAlias(('plugin.' + (config.ptype || defaultType))); + + if (typeof result === 'function') { + result = new result(config); + } + } + } + + + if (result && host && result.setCmp && !result.setCmpCalled) { + result.setCmp(host); + result.setCmpCalled = true; + } + return result; + }, + + + findByType: function(type, defaultsOnly) { + var matches = [], + types = this.types, + name, + item; + + for (name in types) { + if (!types.hasOwnProperty(name)) { + continue; + } + item = types[name]; + + if (item.type == type && (!defaultsOnly || (defaultsOnly === true && item.isDefault))) { + matches.push(item); + } + } + + return matches; + } +}, function() { + + Ext.preg = function() { + return Ext.PluginManager.registerType.apply(Ext.PluginManager, arguments); + }; +}); + + +Ext.define('Ext.util.Filter', { + + + + + + + + id: null, + + + anyMatch: false, + + + exactMatch: false, + + + caseSensitive: false, + + + disabled: false, + + + operator: null, + + + + statics: { + + createFilterFn: function(filters) { + return filters && filters.length ? function(candidate) { + var isMatch = true, + length = filters.length, + i, filter; + + for (i = 0; isMatch && i < length; i++) { + filter = filters[i]; + + + if (!filter.disabled) { + isMatch = isMatch && filter.filterFn.call(filter.scope || filter, candidate); + } + } + return isMatch; + } : function() { + return true; + }; + } + }, + + operatorFns: { + "<": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) < this.value; + }, + "<=": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) <= this.value; + }, + "=": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) == this.value; + }, + ">=": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) >= this.value; + }, + ">": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) > this.value; + }, + "!=": function(candidate) { + return Ext.coerce(this.getRoot(candidate)[this.property], this.value) != this.value; + } + }, + + + constructor: function(config) { + var me = this; + me.initialConfig = config; + Ext.apply(me, config); + + + + me.filter = me.filter || me.filterFn; + + if (me.filter === undefined) { + me.setValue(config.value); + } + }, + + + setValue: function(value) { + var me = this; + me.value = value; + if (me.property === undefined || me.value === undefined) { + + + + + } else { + me.filter = me.createFilterFn(); + } + + me.filterFn = me.filter; + }, + + + setFilterFn: function(filterFn) { + this.filterFn = this.filter = filterFn; + }, + + + createFilterFn: function() { + var me = this, + matcher = me.createValueMatcher(), + property = me.property; + + if (me.operator) { + return me.operatorFns[me.operator]; + } else { + return function(item) { + var value = me.getRoot(item)[property]; + return matcher === null ? value === null : matcher.test(value); + }; + } + }, + + + getRoot: function(item) { + var root = this.root; + return root === undefined ? item : item[root]; + }, + + + createValueMatcher : function() { + var me = this, + value = me.value, + anyMatch = me.anyMatch, + exactMatch = me.exactMatch, + caseSensitive = me.caseSensitive, + escapeRe = Ext.String.escapeRegex; + + if (value === null) { + return value; + } + + if (!value.exec) { + value = String(value); + + if (anyMatch === true) { + value = escapeRe(value); + } else { + value = '^' + escapeRe(value); + if (exactMatch === true) { + value += '$'; + } + } + value = new RegExp(value, caseSensitive ? '' : 'i'); + } + + return value; + }, + + serialize: function() { + var me = this, + result = Ext.apply({}, me.initialConfig); + + result.value = me.value; + return result; + } +}, function() { + + this.prototype.operatorFns['=='] = this.prototype.operatorFns['=']; +}); + + +Ext.define('Ext.util.AbstractMixedCollection', { + + + mixins: { + observable: Ext.util.Observable + }, + + + isMixedCollection: true, + + + generation: 0, + + + indexGeneration: 0, + + constructor: function(allowFunctions, keyFn) { + var me = this; + + + if (arguments.length === 1 && Ext.isObject(allowFunctions)) { + me.initialConfig = allowFunctions; + Ext.apply(me, allowFunctions); + } + + else { + me.allowFunctions = allowFunctions === true; + if (keyFn) { + me.getKey = keyFn; + } + me.initialConfig = { + allowFunctions: me.allowFunctions, + getKey: me.getKey + }; + } + + me.items = []; + me.map = {}; + me.keys = []; + me.indexMap = {}; + me.length = 0; + + + + + + + + + + me.mixins.observable.constructor.call(me); + }, + + + allowFunctions : false, + + + add : function(key, obj) { + var len = this.length, + out; + + if (arguments.length === 1) { + out = this.insert(len, key); + } else { + out = this.insert(len, key, obj); + } + return out; + }, + + + getKey : function(o) { + return o.id; + }, + + + replace : function(key, o) { + var me = this, + old, + index; + + if (arguments.length == 1) { + o = arguments[0]; + key = me.getKey(o); + } + old = me.map[key]; + if (typeof key == 'undefined' || key === null || typeof old == 'undefined') { + return me.add(key, o); + } + me.generation++; + index = me.indexOfKey(key); + me.items[index] = o; + me.map[key] = o; + if (me.hasListeners.replace) { + me.fireEvent('replace', key, old, o); + } + return o; + }, + + + updateKey: function(oldKey, newKey) { + var me = this, + map = me.map, + indexMap = me.indexMap, + index = me.indexOfKey(oldKey), + item; + + if (index > -1) { + item = map[oldKey]; + delete map[oldKey]; + delete indexMap[oldKey]; + map[newKey] = item; + indexMap[newKey] = index; + me.keys[index] = newKey; + me.generation++; + + } + }, + + + addAll : function(objs) { + var me = this, + key; + + if (arguments.length > 1 || Ext.isArray(objs)) { + me.insert(me.length, arguments.length > 1 ? arguments : objs); + } else { + for (key in objs) { + if (objs.hasOwnProperty(key)) { + if (me.allowFunctions || typeof objs[key] != 'function') { + me.add(key, objs[key]); + } + } + } + } + }, + + + each : function(fn, scope){ + var items = Ext.Array.push([], this.items), + i = 0, + len = items.length, + item; + + for (; i < len; i++) { + item = items[i]; + if (fn.call(scope || item, item, i, len) === false) { + break; + } + } + }, + + + eachKey : function(fn, scope){ + var keys = this.keys, + items = this.items, + i = 0, + len = keys.length; + + for (; i < len; i++) { + fn.call(scope || window, keys[i], items[i], i, len); + } + }, + + + findBy : function(fn, scope) { + var keys = this.keys, + items = this.items, + i = 0, + len = items.length; + + for (; i < len; i++) { + if (fn.call(scope || window, items[i], keys[i])) { + return items[i]; + } + } + return null; + }, + + + find : function() { + if (Ext.isDefined(Ext.global.console)) { + Ext.global.console.warn('Ext.util.MixedCollection: find has been deprecated. Use findBy instead.'); + } + return this.findBy.apply(this, arguments); + }, + + + insert : function(index, key, obj) { + var out; + if (Ext.isIterable(key)) { + out = this.doInsert(index, key, obj); + } else { + if (arguments.length > 2) { + out = this.doInsert(index, [key], [obj]); + } else { + out = this.doInsert(index, [key]); + } + out = out[0]; + } + return out; + }, + + + doInsert : function(index, keys, objects) { + var me = this, + itemKey, + removeIndex, + i, len = keys.length, + deDupedLen = len, + fireAdd = me.hasListeners.add, + syncIndices, + newKeys = {}, + passedDuplicates, + oldKeys, oldObjects; + + + + if (objects != null) { + me.useLinearSearch = true; + } + + else { + objects = keys; + keys = new Array(len); + for (i = 0; i < len; i++) { + keys[i] = this.getKey(objects[i]); + } + } + + + me.suspendEvents(); + for (i = 0; i < len; i++) { + itemKey = keys[i]; + + + removeIndex = me.indexOfKey(itemKey); + if (removeIndex !== -1) { + if (removeIndex < index) { + index--; + } + me.removeAt(removeIndex); + } + + if (itemKey != null) { + + if (newKeys[itemKey] != null) { + passedDuplicates = true; + deDupedLen--; + } + newKeys[itemKey] = i; + } + } + me.resumeEvents(); + + + if (passedDuplicates) { + oldKeys = keys; + oldObjects = objects; + keys = new Array(deDupedLen); + objects = new Array(deDupedLen); + i = 0; + + + + for (itemKey in newKeys) { + keys[i] = oldKeys[newKeys[itemKey]]; + objects[i] = oldObjects[newKeys[itemKey]]; + i++; + } + len = deDupedLen; + } + + + syncIndices = index === me.length && me.indexGeneration === me.generation; + + + Ext.Array.insert(me.items, index, objects); + Ext.Array.insert(me.keys, index, keys); + me.length += len; + me.generation++; + if (syncIndices) { + me.indexGeneration = me.generation; + } + for (i = 0; i < len; i++, index++) { + itemKey = keys[i]; + if (itemKey != null) { + me.map[itemKey] = objects[i]; + + + if (syncIndices) { + me.indexMap[itemKey] = index; + } + } + if (fireAdd) { + me.fireEvent('add', index, objects[i], itemKey); + } + } + return objects; + }, + + + remove : function(o) { + var me = this, + removeKey, + index; + + + + + + + if (!me.useLinearSearch && (removeKey = me.getKey(o))) { + index = me.indexOfKey(removeKey); + } + + + else { + index = Ext.Array.indexOf(me.items, o); + } + + return (index === -1) ? false : me.removeAt(index); + }, + + + removeAll : function(items) { + var me = this, + i; + + if (items || me.hasListeners.remove) { + + if (items) { + for (i = items.length - 1; i >= 0; --i) { + me.remove(items[i]); + } + } else { + while (me.length) { + me.removeAt(0); + } + } + } else { + me.length = me.items.length = me.keys.length = 0; + me.map = {}; + me.indexMap = {}; + me.generation++; + me.indexGeneration = me.generation; + } + }, + + + removeAt : function(index) { + var me = this, + o, + key; + + if (index < me.length && index >= 0) { + me.length--; + o = me.items[index]; + Ext.Array.erase(me.items, index, 1); + key = me.keys[index]; + if (typeof key != 'undefined') { + delete me.map[key]; + } + Ext.Array.erase(me.keys, index, 1); + if (me.hasListeners.remove) { + me.fireEvent('remove', o, key); + } + me.generation++; + return o; + } + return false; + }, + + + removeRange : function(index, removeCount) { + var me = this, + o, + key, + i, + limit, + syncIndices, + trimming; + + if (index < me.length && index >= 0) { + if (!removeCount) { + removeCount = 1; + } + limit = Math.min(index + removeCount, me.length); + removeCount = limit - index; + + + trimming = limit === me.length; + syncIndices = trimming && me.indexGeneration === me.generation; + + + for (i = index; i < limit; i++) { + key = me.keys[i]; + if (key != null) { + delete me.map[key]; + if (syncIndices) { + delete me.indexMap[key]; + } + } + } + + o = me.items[i - 1]; + + me.length -= removeCount; + me.generation++; + if (syncIndices) { + me.indexGeneration = me.generation; + } + + + + + + if (trimming) { + me.items.length = me.keys.length = me.length; + } else { + me.items.splice(index, removeCount); + me.keys.splice(index, removeCount); + } + + + return o; + } + return false; + }, + + + removeAtKey : function(key) { + var me = this, + keys = me.keys, + i; + + + if (key == null) { + for (i = keys.length - 1; i >=0; i--) { + if (keys[i] == null) { + me.removeAt(i); + } + } + } + + else { + return me.removeAt(me.indexOfKey(key)); + } + }, + + + getCount : function() { + return this.length; + }, + + + indexOf : function(o) { + var me = this, + key; + + if (o != null) { + + + + + + if (!me.useLinearSearch && (key = me.getKey(o))) { + return this.indexOfKey(key); + } + + + return Ext.Array.indexOf(me.items, o); + } + + + return -1; + }, + + + indexOfKey : function(key) { + if (!this.map.hasOwnProperty(key)) { + return -1; + } + if (this.indexGeneration !== this.generation) { + this.rebuildIndexMap(); + } + return this.indexMap[key]; + }, + + rebuildIndexMap: function() { + var me = this, + indexMap = me.indexMap = {}, + keys = me.keys, + len = keys.length, + i; + + for (i = 0; i < len; i++) { + indexMap[keys[i]] = i; + } + me.indexGeneration = me.generation; + }, + + + get : function(key) { + var me = this, + mk = me.map[key], + item = mk !== undefined ? mk : (typeof key == 'number') ? me.items[key] : undefined; + return typeof item != 'function' || me.allowFunctions ? item : null; + }, + + + getAt : function(index) { + return this.items[index]; + }, + + + getByKey : function(key) { + return this.map[key]; + }, + + + contains : function(o) { + var me = this, + key; + + if (o != null) { + + + + + + if (!me.useLinearSearch && (key = me.getKey(o))) { + return this.map[key] != null; + } + + + return Ext.Array.indexOf(this.items, o) !== -1; + } + + return false; + }, + + + containsKey : function(key) { + return this.map.hasOwnProperty(key); + }, + + + clear : function() { + var me = this; + + + if (me.generation) { + me.length = 0; + me.items = []; + me.keys = []; + me.map = {}; + me.indexMap = {}; + + me.generation++; + me.indexGeneration = me.generation; + } + if (me.hasListeners.clear) { + me.fireEvent('clear'); + } + }, + + + first : function() { + return this.items[0]; + }, + + + last : function() { + return this.items[this.length - 1]; + }, + + + sum: function(property, root, start, end) { + var values = this.extractValues(property, root), + length = values.length, + sum = 0, + i; + + start = start || 0; + end = (end || end === 0) ? end : length - 1; + + for (i = start; i <= end; i++) { + sum += values[i]; + } + + return sum; + }, + + + collect: function(property, root, allowNull) { + var values = this.extractValues(property, root), + length = values.length, + hits = {}, + unique = [], + value, strValue, i; + + for (i = 0; i < length; i++) { + value = values[i]; + strValue = String(value); + + if ((allowNull || !Ext.isEmpty(value)) && !hits[strValue]) { + hits[strValue] = true; + unique.push(value); + } + } + + return unique; + }, + + + extractValues: function(property, root) { + var values = this.items; + + if (root) { + values = Ext.Array.pluck(values, root); + } + + return Ext.Array.pluck(values, property); + }, + + + hasRange: function(start, end) { + return (end < this.length); + }, + + + getRange : function(start, end){ + var me = this, + items = me.items, + range = [], + len = items.length, + tmp, reverse; + + if (len < 1) { + return range; + } + + if (start > end) { + reverse = true; + tmp = start; + start = end; + end = tmp; + } + + if (start < 0) { + start = 0; + } + + if (end == null || end >= len) { + end = len - 1; + } + + range = items.slice(start, end + 1); + if (reverse && range.length) { + range.reverse(); + } + return range; + }, + + + filter : function(property, value, anyMatch, caseSensitive) { + var filters = []; + + + if (Ext.isString(property)) { + filters.push(new Ext.util.Filter({ + property : property, + value : value, + anyMatch : anyMatch, + caseSensitive: caseSensitive + })); + } else if (Ext.isArray(property) || property instanceof Ext.util.Filter) { + filters = filters.concat(property); + } + + + + + return this.filterBy(Ext.util.Filter.createFilterFn(filters)); + }, + + + filterBy : function(fn, scope) { + var me = this, + newMC = new me.self(me.initialConfig), + keys = me.keys, + items = me.items, + length = items.length, + i; + + newMC.getKey = me.getKey; + + for (i = 0; i < length; i++) { + if (fn.call(scope || me, items[i], keys[i])) { + newMC.add(keys[i], items[i]); + } + } + + return newMC; + }, + + + findIndex : function(property, value, start, anyMatch, caseSensitive){ + if(Ext.isEmpty(value, false)){ + return -1; + } + value = this.createValueMatcher(value, anyMatch, caseSensitive); + return this.findIndexBy(function(o){ + return o && value.test(o[property]); + }, null, start); + }, + + + findIndexBy : function(fn, scope, start){ + var me = this, + keys = me.keys, + items = me.items, + i = start || 0, + len = items.length; + + for (; i < len; i++) { + if (fn.call(scope || me, items[i], keys[i])) { + return i; + } + } + return -1; + }, + + + createValueMatcher : function(value, anyMatch, caseSensitive, exactMatch) { + if (!value.exec) { + var er = Ext.String.escapeRegex; + value = String(value); + + if (anyMatch === true) { + value = er(value); + } else { + value = '^' + er(value); + if (exactMatch === true) { + value += '$'; + } + } + value = new RegExp(value, caseSensitive ? '' : 'i'); + } + return value; + }, + + + clone : function() { + var me = this, + copy = new this.self(me.initialConfig); + + copy.add(me.keys, me.items); + return copy; + } +}); + + +Ext.define('Ext.util.Sorter', { + + + + + + + + + + + direction: "ASC", + + constructor: function(config) { + var me = this; + + Ext.apply(me, config); + + + me.updateSortFunction(); + }, + + + createSortFunction: function(sorterFn) { + var me = this, + direction = me.direction || "ASC", + modifier = direction.toUpperCase() == "DESC" ? -1 : 1; + + + + return function(o1, o2) { + return modifier * sorterFn.call(me, o1, o2); + }; + }, + + + defaultSorterFn: function(o1, o2) { + var me = this, + transform = me.transform, + v1 = me.getRoot(o1)[me.property], + v2 = me.getRoot(o2)[me.property]; + + if (transform) { + v1 = transform(v1); + v2 = transform(v2); + } + + return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0); + }, + + + getRoot: function(item) { + return this.root === undefined ? item : item[this.root]; + }, + + + setDirection: function(direction) { + var me = this; + me.direction = direction ? direction.toUpperCase() : direction; + me.updateSortFunction(); + }, + + + toggle: function() { + var me = this; + me.direction = Ext.String.toggle(me.direction, "ASC", "DESC"); + me.updateSortFunction(); + }, + + + updateSortFunction: function(fn) { + var me = this; + fn = fn || me.sorterFn || me.defaultSorterFn; + me.sort = me.createSortFunction(fn); + }, + + serialize: function() { + return { + root: this.root, + property: this.property, + direction: this.direction + }; + } +}); + + +Ext.define("Ext.util.Sortable", { + + isSortable: true, + + + defaultSortDirection: "ASC", + + + + + + statics: { + + createComparator: function(sorters) { + return sorters && sorters.length ? function(r1, r2) { + var result = sorters[0].sort(r1, r2), + length = sorters.length, + i = 1; + + + for (; i < length; i++) { + result = result || sorters[i].sort.call(this, r1, r2); + } + return result; + }: function() { + return 0; + }; + } + }, + + + + + + + initSortable: function() { + var me = this, + sorters = me.sorters; + + + me.sorters = new Ext.util.AbstractMixedCollection(false, function(item) { + return item.id || item.property; + }); + + if (sorters) { + me.sorters.addAll(me.decodeSorters(sorters)); + } + }, + + + sort: function(sorters, direction, where, doSort) { + var me = this, + sorter, + newSorters; + + if (Ext.isArray(sorters)) { + doSort = where; + where = direction; + newSorters = sorters; + } + else if (Ext.isObject(sorters)) { + doSort = where; + where = direction; + newSorters = [sorters]; + } + else if (Ext.isString(sorters)) { + sorter = me.sorters.get(sorters); + + if (!sorter) { + sorter = { + property : sorters, + direction: direction + }; + newSorters = [sorter]; + } + else if (direction === undefined) { + sorter.toggle(); + } + else { + sorter.setDirection(direction); + } + } + + if (newSorters && newSorters.length) { + newSorters = me.decodeSorters(newSorters); + if (Ext.isString(where)) { + if (where === 'prepend') { + me.sorters.insert(0, newSorters); + } + else { + me.sorters.addAll(newSorters); + } + } + else { + me.sorters.clear(); + me.sorters.addAll(newSorters); + } + } + + if (doSort !== false) { + me.fireEvent('beforesort', me, newSorters); + me.onBeforeSort(newSorters); + + sorters = me.sorters.items; + if (sorters.length) { + + me.doSort(me.generateComparator()); + } + } + + return sorters; + }, + + + generateComparator: function() { + var sorters = this.sorters.getRange(); + return sorters.length ? this.createComparator(sorters) : this.emptyComparator; + }, + + emptyComparator: function(){ + return 0; + }, + + onBeforeSort: Ext.emptyFn, + + + decodeSorters: function(sorters) { + if (!Ext.isArray(sorters)) { + if (sorters === undefined) { + sorters = []; + } else { + sorters = [sorters]; + } + } + + var length = sorters.length, + Sorter = Ext.util.Sorter, + fields = this.model ? this.model.prototype.fields : null, + field, + config, i; + + for (i = 0; i < length; i++) { + config = sorters[i]; + + if (!(config instanceof Sorter)) { + if (Ext.isString(config)) { + config = { + property: config + }; + } + + Ext.applyIf(config, { + root : this.sortRoot, + direction: "ASC" + }); + + + if (config.fn) { + config.sorterFn = config.fn; + } + + + if (typeof config == 'function') { + config = { + sorterFn: config + }; + } + + + if (fields && !config.transform) { + field = fields.get(config.property); + config.transform = field && field.sortType !== Ext.identityFn ? field.sortType : undefined; + } + sorters[i] = new Ext.util.Sorter(config); + } + } + + return sorters; + }, + + getSorters: function() { + return this.sorters.items; + }, + + + getFirstSorter: function(){ + var sorters = this.sorters.items, + len = sorters.length, + i = 0, + sorter; + + for (; i < len; ++i) { + sorter = sorters[i]; + if (!sorter.isGrouper) { + return sorter; + } + } + return null; + } +}, function() { + + this.prototype.createComparator = this.createComparator; +}); + + +Ext.define('Ext.util.MixedCollection', { + extend: Ext.util.AbstractMixedCollection , + mixins: { + sortable: Ext.util.Sortable + }, + + + + + constructor: function() { + var me = this; + me.callParent(arguments); + me.addEvents('sort'); + me.mixins.sortable.initSortable.call(me); + }, + + doSort: function(sorterFn) { + this.sortBy(sorterFn); + }, + + + _sort : function(property, dir, fn) { + var me = this, + i, len, + dsc = String(dir).toUpperCase() == 'DESC' ? -1 : 1, + + + c = [], + keys = me.keys, + items = me.items, + o; + + + fn = fn || function(a, b) { + return a - b; + }; + + + for (i = 0, len = items.length; i < len; i++) { + c[c.length] = { + key : keys[i], + value: items[i], + index: i + }; + } + + + Ext.Array.sort(c, function(a, b) { + return fn(a[property], b[property]) * dsc || + + (a.index < b.index ? -1 : 1); + }); + + + + for (i = 0, len = c.length; i < len; i++) { + o = c[i]; + items[i] = o.value; + keys[i] = o.key; + me.indexMap[o.key] = i; + } + me.generation++; + me.indexGeneration = me.generation; + me.fireEvent('sort', me); + }, + + + sortBy: function(sorterFn) { + var me = this, + items = me.items, + item, + keys = me.keys, + key, + length = items.length, + i; + + + for (i = 0; i < length; i++) { + items[i].$extCollectionIndex = i; + } + + Ext.Array.sort(items, function(a, b) { + return sorterFn(a, b) || + + (a.$extCollectionIndex < b.$extCollectionIndex ? -1 : 1); + }); + + + for (i = 0; i < length; i++) { + item = items[i]; + key = me.getKey(item); + keys[i] = key; + me.indexMap[key] = i; + delete items.$extCollectionIndex; + } + me.generation++; + me.indexGeneration = me.generation; + me.fireEvent('sort', me, items, keys); + }, + + + findInsertionIndex: function(newItem, sorterFn) { + var me = this, + items = me.items, + start = 0, + end = items.length - 1, + middle, + comparison; + + if (!sorterFn) { + sorterFn = me.generateComparator(); + } + while (start <= end) { + middle = (start + end) >> 1; + comparison = sorterFn(newItem, items[middle]); + if (comparison >= 0) { + start = middle + 1; + } else if (comparison < 0) { + end = middle - 1; + } + } + return start; + }, + + + reorder: function(mapping) { + var me = this, + items = me.items, + index = 0, + length = items.length, + order = [], + remaining = [], + oldIndex; + + me.suspendEvents(); + + + for (oldIndex in mapping) { + order[mapping[oldIndex]] = items[oldIndex]; + } + + for (index = 0; index < length; index++) { + if (mapping[index] == undefined) { + remaining.push(items[index]); + } + } + + for (index = 0; index < length; index++) { + if (order[index] == undefined) { + order[index] = remaining.shift(); + } + } + + me.clear(); + me.addAll(order); + + me.resumeEvents(); + me.fireEvent('sort', me); + }, + + + sortByKey : function(dir, fn){ + this._sort('key', dir, fn || function(a, b){ + var v1 = String(a).toUpperCase(), v2 = String(b).toUpperCase(); + return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0); + }); + } +}); + + +Ext.define('Ext.fx.target.Target', { + + isAnimTarget: true, + + + constructor: function(target) { + this.target = target; + this.id = this.getId(); + }, + + getId: function() { + return this.target.id; + } +}); + + +Ext.define('Ext.fx.target.Element', { + + + + extend: Ext.fx.target.Target , + + + + type: 'element', + + getElVal: function(el, attr, val) { + if (val == undefined) { + if (attr === 'x') { + val = el.getX(); + } else if (attr === 'y') { + val = el.getY(); + } else if (attr === 'scrollTop') { + val = el.getScroll().top; + } else if (attr === 'scrollLeft') { + val = el.getScroll().left; + } else if (attr === 'height') { + val = el.getHeight(); + } else if (attr === 'width') { + val = el.getWidth(); + } else { + val = el.getStyle(attr); + } + } + return val; + }, + + getAttr: function(attr, val) { + var el = this.target; + return [[ el, this.getElVal(el, attr, val)]]; + }, + + setAttr: function(targetData) { + var target = this.target, + ln = targetData.length, + attrs, attr, o, i, j, ln2; + + for (i = 0; i < ln; i++) { + attrs = targetData[i].attrs; + for (attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + ln2 = attrs[attr].length; + for (j = 0; j < ln2; j++) { + o = attrs[attr][j]; + this.setElVal(o[0], attr, o[1]); + } + } + } + } + }, + + setElVal: function(element, attr, value){ + if (attr === 'x') { + element.setX(value); + } else if (attr === 'y') { + element.setY(value); + } else if (attr === 'scrollTop') { + element.scrollTo('top', value); + } else if (attr === 'scrollLeft') { + element.scrollTo('left',value); + } else if (attr === 'width') { + element.setWidth(value); + } else if (attr === 'height') { + element.setHeight(value); + } else { + element.setStyle(attr, value); + } + } +}); + + +Ext.define('Ext.fx.target.ElementCSS', { + + + + extend: Ext.fx.target.Element , + + + + setAttr: function(targetData, isFirstFrame) { + var cssArr = { + attrs: [], + duration: [], + easing: [] + }, + ln = targetData.length, + attributes, + attrs, + attr, + easing, + duration, + o, + i, + j, + ln2; + for (i = 0; i < ln; i++) { + attrs = targetData[i]; + duration = attrs.duration; + easing = attrs.easing; + attrs = attrs.attrs; + for (attr in attrs) { + if (Ext.Array.indexOf(cssArr.attrs, attr) == -1) { + cssArr.attrs.push(attr.replace(/[A-Z]/g, function(v) { + return '-' + v.toLowerCase(); + })); + cssArr.duration.push(duration + 'ms'); + cssArr.easing.push(easing); + } + } + } + attributes = cssArr.attrs.join(','); + duration = cssArr.duration.join(','); + easing = cssArr.easing.join(', '); + for (i = 0; i < ln; i++) { + attrs = targetData[i].attrs; + for (attr in attrs) { + ln2 = attrs[attr].length; + for (j = 0; j < ln2; j++) { + o = attrs[attr][j]; + o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionProperty', isFirstFrame ? '' : attributes); + o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionDuration', isFirstFrame ? '' : duration); + o[0].setStyle(Ext.supports.CSS3Prefix + 'TransitionTimingFunction', isFirstFrame ? '' : easing); + o[0].setStyle(attr, o[1]); + + + if (isFirstFrame) { + o = o[0].dom.offsetWidth; + } + else { + + o[0].on(Ext.supports.CSS3TransitionEnd, function() { + this.setStyle(Ext.supports.CSS3Prefix + 'TransitionProperty', null); + this.setStyle(Ext.supports.CSS3Prefix + 'TransitionDuration', null); + this.setStyle(Ext.supports.CSS3Prefix + 'TransitionTimingFunction', null); + }, o[0], { single: true }); + } + } + } + } + } +}); + + +Ext.define('Ext.fx.target.CompositeElement', { + + + + extend: Ext.fx.target.Element , + + + + + isComposite: true, + + constructor: function(target) { + target.id = target.id || Ext.id(null, 'ext-composite-'); + this.callParent([target]); + }, + + getAttr: function(attr, val) { + var out = [], + target = this.target, + elements = target.elements, + length = elements.length, + i, + el; + + for (i = 0; i < length; i++) { + el = elements[i]; + + if (el) { + el = target.getElement(el); + out.push([el, this.getElVal(el, attr, val)]); + } + } + + return out; + }, + + setAttr: function(targetData){ + var target = this.target, + ln = targetData.length, + elements = target.elements, + ln3 = elements.length, + value, k, + attrs, attr, o, i, j, ln2; + + for (i = 0; i < ln; i++) { + attrs = targetData[i].attrs; + for (attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + ln2 = attrs[attr].length; + for (j = 0; j < ln2; j++) { + value = attrs[attr][j][1]; + for (k = 0; k < ln3; ++k) { + el = elements[k]; + if (el) { + el = target.getElement(el); + this.setElVal(el, attr, value); + } + } + } + } + } + } + } +}); + + +Ext.define('Ext.fx.target.CompositeElementCSS', { + + + + extend: Ext.fx.target.CompositeElement , + + + + + setAttr: function() { + return Ext.fx.target.ElementCSS.prototype.setAttr.apply(this, arguments); + } +}); + + + +Ext.define('Ext.fx.target.Sprite', { + + + + extend: Ext.fx.target.Target , + + + + type: 'draw', + + getFromPrim: function (sprite, attr) { + var obj; + switch (attr) { + case 'rotate': + case 'rotation': + obj = sprite.attr.rotation; + return { + x: obj.x || 0, + y: obj.y || 0, + degrees: obj.degrees || 0 + }; + case 'scale': + case 'scaling': + obj = sprite.attr.scaling; + return { + x: obj.x || 1, + y: obj.y || 1, + cx: obj.cx || 0, + cy: obj.cy || 0 + }; + case 'translate': + case 'translation': + obj = sprite.attr.translation; + return { + x: obj.x || 0, + y: obj.y || 0 + }; + default: + return sprite.attr[attr]; + } + }, + + getAttr: function (attr, val) { + return [ + [this.target, val != undefined ? val : this.getFromPrim(this.target, attr)] + ]; + }, + + setAttr: function (targetData) { + var ln = targetData.length, + spriteArr = [], + attrsConf, attr, attrArr, attrs, sprite, idx, value, i, j, x, y, ln2; + for (i = 0; i < ln; i++) { + attrsConf = targetData[i].attrs; + for (attr in attrsConf) { + attrArr = attrsConf[attr]; + ln2 = attrArr.length; + for (j = 0; j < ln2; j++) { + sprite = attrArr[j][0]; + attrs = attrArr[j][1]; + if (attr === 'translate' || attr === 'translation') { + value = { + x: attrs.x, + y: attrs.y + }; + } + else if (attr === 'rotate' || attr === 'rotation') { + x = attrs.x; + if (isNaN(x)) { + x = null; + } + y = attrs.y; + if (isNaN(y)) { + y = null; + } + value = { + degrees: attrs.degrees, + x: x, + y: y + }; + } else if (attr === 'scale' || attr === 'scaling') { + x = attrs.x; + if (isNaN(x)) { + x = null; + } + y = attrs.y; + if (isNaN(y)) { + y = null; + } + value = { + x: x, + y: y, + cx: attrs.cx, + cy: attrs.cy + }; + } + else if (attr === 'width' || attr === 'height' || attr === 'x' || attr === 'y') { + value = parseFloat(attrs); + } + else { + value = attrs; + } + idx = Ext.Array.indexOf(spriteArr, sprite); + if (idx == -1) { + spriteArr.push([sprite, {}]); + idx = spriteArr.length - 1; + } + spriteArr[idx][1][attr] = value; + } + } + } + ln = spriteArr.length; + for (i = 0; i < ln; i++) { + spriteArr[i][0].setAttributes(spriteArr[i][1]); + } + this.target.redraw(); + } +}); + + + +Ext.define('Ext.fx.target.CompositeSprite', { + + + + extend: Ext.fx.target.Sprite , + + + + getAttr: function(attr, val) { + var out = [], + sprites = [].concat(this.target.items), + length = sprites.length, + i, + sprite; + + for (i = 0; i < length; i++) { + sprite = sprites[i]; + out.push([sprite, val != undefined ? val : this.getFromPrim(sprite, attr)]); + } + + return out; + } +}); + + +Ext.define('Ext.fx.target.Component', { + + + + extend: Ext.fx.target.Target , + + + + type: 'component', + + + getPropMethod: { + top: function() { + return this.getPosition(true)[1]; + }, + left: function() { + return this.getPosition(true)[0]; + }, + x: function() { + return this.getPosition()[0]; + }, + y: function() { + return this.getPosition()[1]; + }, + height: function() { + return this.getHeight(); + }, + width: function() { + return this.getWidth(); + }, + opacity: function() { + return this.el.getStyle('opacity'); + } + }, + + setMethods: { + top: 'setPosition', + left: 'setPosition', + x: 'setPagePosition', + y: 'setPagePosition', + height: 'setSize', + width: 'setSize', + opacity: 'setOpacity' + }, + + + getAttr: function(attr, val) { + return [[this.target, val !== undefined ? val : this.getPropMethod[attr].call(this.target)]]; + }, + + setAttr: function(targetData, isFirstFrame, isLastFrame) { + var me = this, + ln = targetData.length, + attrs, attr, o, i, j, targets, left, top, w, h, + methodsToCall = {}, + methodProps; + + for (i = 0; i < ln; i++) { + attrs = targetData[i].attrs; + for (attr in attrs) { + targets = attrs[attr].length; + for (j = 0; j < targets; j++) { + o = attrs[attr][j]; + methodProps = methodsToCall[me.setMethods[attr]] || (methodsToCall[me.setMethods[attr]] = {}); + methodProps.target = o[0]; + methodProps[attr] = o[1]; + + } + } + if (methodsToCall.setPosition) { + o = methodsToCall.setPosition; + left = (o.left === undefined) ? undefined : parseFloat(o.left); + top = (o.top === undefined) ? undefined : parseFloat(o.top); + o.target.setPosition(left, top); + } + if (methodsToCall.setPagePosition) { + o = methodsToCall.setPagePosition; + o.target.setPagePosition(o.x, o.y); + } + if (methodsToCall.setSize) { + o = methodsToCall.setSize; + + w = (o.width === undefined) ? o.target.getWidth() : parseFloat(o.width); + h = (o.height === undefined) ? o.target.getHeight() : parseFloat(o.height); + + + + + + + + + o.target.el.setSize(w, h); + if (isLastFrame || me.dynamic) { + + + + Ext.globalEvents.on({ + idle: Ext.Function.bind(o.target.setSize, o.target, [w, h]), + single: true + }); + } + } + if (methodsToCall.setOpacity) { + o = methodsToCall.setOpacity; + o.target.el.setStyle('opacity', o.opacity); + } + } + } +}); + + + +Ext.define('Ext.fx.Queue', { + + + + constructor: function() { + this.targets = new Ext.util.HashMap(); + this.fxQueue = {}; + }, + + + getFxDefaults: function(targetId) { + var target = this.targets.get(targetId); + if (target) { + return target.fxDefaults; + } + return {}; + }, + + + setFxDefaults: function(targetId, obj) { + var target = this.targets.get(targetId); + if (target) { + target.fxDefaults = Ext.apply(target.fxDefaults || {}, obj); + } + }, + + + stopAnimation: function(targetId) { + var me = this, + queue = me.getFxQueue(targetId), + ln = queue.length; + while (ln) { + queue[ln - 1].end(); + ln--; + } + }, + + + getActiveAnimation: function(targetId) { + var queue = this.getFxQueue(targetId); + return (queue && !!queue.length) ? queue[0] : false; + }, + + + hasFxBlock: function(targetId) { + var queue = this.getFxQueue(targetId); + return queue && queue[0] && queue[0].block; + }, + + + getFxQueue: function(targetId) { + if (!targetId) { + return false; + } + var me = this, + queue = me.fxQueue[targetId], + target = me.targets.get(targetId); + + if (!target) { + return false; + } + + if (!queue) { + me.fxQueue[targetId] = []; + + if (target.type != 'element') { + target.target.on('destroy', function() { + me.fxQueue[targetId] = []; + }); + } + } + return me.fxQueue[targetId]; + }, + + + queueFx: function(anim) { + var me = this, + target = anim.target, + queue, ln; + + if (!target) { + return; + } + + queue = me.getFxQueue(target.getId()); + ln = queue.length; + + if (ln) { + if (anim.concurrent) { + anim.paused = false; + } + else { + queue[ln - 1].on('afteranimate', function() { + anim.paused = false; + }); + } + } + else { + anim.paused = false; + } + anim.on('afteranimate', function() { + Ext.Array.remove(queue, anim); + if (queue.length === 0) { + me.targets.remove(anim.target); + } + if (anim.remove) { + if (target.type == 'element') { + var el = Ext.get(target.id); + if (el) { + el.remove(); + } + } + } + }, me, { + single: true + }); + queue.push(anim); + } +}); + + + +Ext.define('Ext.fx.Manager', { + + + + singleton: true, + + + + + + + + + + + mixins: { + queue: Ext.fx.Queue + }, + + + + constructor: function() { + var me = this; + me.items = new Ext.util.MixedCollection(); + me.mixins.queue.constructor.call(me); + + + + me.taskRunner = new Ext.util.TaskRunner(); + + + + + + + + + + + + + + + + + + + }, + + + interval: 16, + + + forceJS: true, + + + createTarget: function(target) { + var me = this, + useCSS3 = !me.forceJS && Ext.supports.Transitions, + targetObj; + + me.useCSS3 = useCSS3; + + if (target) { + + if (target.tagName || Ext.isString(target) || target.isFly) { + target = Ext.get(target); + targetObj = new Ext.fx.target['Element' + (useCSS3 ? 'CSS' : '')](target); + } + + else if (target.dom) { + targetObj = new Ext.fx.target['Element' + (useCSS3 ? 'CSS' : '')](target); + } + + else if (target.isComposite) { + targetObj = new Ext.fx.target['CompositeElement' + (useCSS3 ? 'CSS' : '')](target); + } + + else if (target.isSprite) { + targetObj = new Ext.fx.target.Sprite(target); + } + + else if (target.isCompositeSprite) { + targetObj = new Ext.fx.target.CompositeSprite(target); + } + + else if (target.isComponent) { + targetObj = new Ext.fx.target.Component(target); + } + else if (target.isAnimTarget) { + return target; + } + else { + return null; + } + me.targets.add(targetObj); + return targetObj; + } + else { + return null; + } + }, + + + addAnim: function(anim) { + var me = this, + items = me.items, + task = me.task; + + + + + items.add(anim.id, anim); + + + + if (!task && items.length) { + task = me.task = { + run: me.runner, + interval: me.interval, + scope: me + }; + + me.taskRunner.start(task); + } + }, + + + removeAnim: function(anim) { + var me = this, + items = me.items, + task = me.task; + + items.removeAtKey(anim.id); + + + + if (task && !items.length) { + + me.taskRunner.stop(task); + delete me.task; + } + }, + + + runner: function() { + var me = this, + items = me.items.getRange(), + i = 0, + len = items.length, + anim; + + + me.targetArr = {}; + + + me.timestamp = new Date(); + + + + + + + + + + + + for (; i < len; i++) { + anim = items[i]; + + if (anim.isReady()) { + + me.startAnim(anim); + } + } + + for (i = 0; i < len; i++) { + anim = items[i]; + + if (anim.isRunning()) { + + me.runAnim(anim); + } + } + + + me.applyPendingAttrs(); + }, + + + startAnim: function(anim) { + anim.start(this.timestamp); + }, + + + runAnim: function(anim) { + if (!anim) { + return; + } + var me = this, + useCSS3 = me.useCSS3 && anim.target.type == 'element', + elapsedTime = me.timestamp - anim.startTime, + lastFrame = (elapsedTime >= anim.duration), + target, o; + + target = this.collectTargetData(anim, elapsedTime, useCSS3, lastFrame); + + + + if (useCSS3) { + + + + anim.target.setAttr(target.anims[anim.id].attributes, true); + + + me.collectTargetData(anim, anim.duration, useCSS3, lastFrame); + + + anim.paused = true; + + target = anim.target.target; + + if (anim.target.isComposite) { + target = anim.target.target.last(); + } + + + o = {}; + o[Ext.supports.CSS3TransitionEnd] = anim.lastFrame; + o.scope = anim; + o.single = true; + target.on(o); + } + }, + + + collectTargetData: function(anim, elapsedTime, useCSS3, isLastFrame) { + var targetId = anim.target.getId(), + target = this.targetArr[targetId]; + + if (!target) { + + + + + target = this.targetArr[targetId] = { + id: targetId, + el: anim.target, + anims: {} + }; + } + + + + + + target.anims[anim.id] = { + id: anim.id, + anim: anim, + elapsed: elapsedTime, + isLastFrame: isLastFrame, + + attributes: [{ + duration: anim.duration, + easing: (useCSS3 && anim.reverse) ? anim.easingFn.reverse().toCSS3() : anim.easing, + + + attrs: anim.runAnim(elapsedTime) + }] + }; + + return target; + }, + + + applyPendingAttrs: function() { + var targetArr = this.targetArr, + target, targetId, animWrap, anim, animId; + + + for (targetId in targetArr) { + if (targetArr.hasOwnProperty(targetId)) { + target = targetArr[targetId]; + + + for (animId in target.anims) { + if (target.anims.hasOwnProperty(animId)) { + animWrap = target.anims[animId]; + anim = animWrap.anim; + + + if (animWrap.attributes && anim.isRunning()) { + + target.el.setAttr(animWrap.attributes, false, animWrap.isLastFrame); + + + if (animWrap.isLastFrame) { + + anim.lastFrame(); + } + } + } + } + } + } + } +}); + + +Ext.define('Ext.fx.Animator', { + + + + mixins: { + observable: Ext.util.Observable + }, + + + + + + + isAnimator: true, + + + duration: 250, + + + delay: 0, + + + delayStart: 0, + + + dynamic: false, + + + easing: 'ease', + + + running: false, + + + paused: false, + + + damper: 1, + + + iterations: 1, + + + currentIteration: 0, + + + keyframeStep: 0, + + + animKeyFramesRE: /^(from|to|\d+%?)$/, + + + + + constructor: function(config) { + var me = this; + config = Ext.apply(me, config || {}); + me.config = config; + me.id = Ext.id(null, 'ext-animator-'); + me.addEvents( + + 'beforeanimate', + + 'keyframe', + + 'afteranimate' + ); + me.mixins.observable.constructor.call(me, config); + me.timeline = []; + me.createTimeline(me.keyframes); + if (me.target) { + me.applyAnimator(me.target); + Ext.fx.Manager.addAnim(me); + } + }, + + + sorter: function (a, b) { + return a.pct - b.pct; + }, + + + createTimeline: function(keyframes) { + var me = this, + attrs = [], + to = me.to || {}, + duration = me.duration, + prevMs, ms, i, ln, pct, attr; + + for (pct in keyframes) { + if (keyframes.hasOwnProperty(pct) && me.animKeyFramesRE.test(pct)) { + attr = {attrs: Ext.apply(keyframes[pct], to)}; + + if (pct == "from") { + pct = 0; + } + else if (pct == "to") { + pct = 100; + } + + attr.pct = parseInt(pct, 10); + attrs.push(attr); + } + } + + Ext.Array.sort(attrs, me.sorter); + + + + + + ln = attrs.length; + for (i = 0; i < ln; i++) { + prevMs = (attrs[i - 1]) ? duration * (attrs[i - 1].pct / 100) : 0; + ms = duration * (attrs[i].pct / 100); + me.timeline.push({ + duration: ms - prevMs, + attrs: attrs[i].attrs + }); + } + }, + + + applyAnimator: function(target) { + var me = this, + anims = [], + timeline = me.timeline, + ln = timeline.length, + anim, easing, damper, attrs, i; + + if (me.fireEvent('beforeanimate', me) !== false) { + for (i = 0; i < ln; i++) { + anim = timeline[i]; + attrs = anim.attrs; + easing = attrs.easing || me.easing; + damper = attrs.damper || me.damper; + delete attrs.easing; + delete attrs.damper; + anim = new Ext.fx.Anim({ + target: target, + easing: easing, + damper: damper, + duration: anim.duration, + paused: true, + to: attrs + }); + anims.push(anim); + } + me.animations = anims; + me.target = anim.target; + for (i = 0; i < ln - 1; i++) { + anim = anims[i]; + anim.nextAnim = anims[i + 1]; + anim.on('afteranimate', function() { + this.nextAnim.paused = false; + }); + anim.on('afteranimate', function() { + this.fireEvent('keyframe', this, ++this.keyframeStep); + }, me); + } + anims[ln - 1].on('afteranimate', function() { + this.lastFrame(); + }, me); + } + }, + + + start: function(startTime) { + var me = this, + delay = me.delay, + delayStart = me.delayStart, + delayDelta; + if (delay) { + if (!delayStart) { + me.delayStart = startTime; + return; + } + else { + delayDelta = startTime - delayStart; + if (delayDelta < delay) { + return; + } + else { + + startTime = new Date(delayStart.getTime() + delay); + } + } + } + if (me.fireEvent('beforeanimate', me) !== false) { + me.startTime = startTime; + me.running = true; + me.animations[me.keyframeStep].paused = false; + } + }, + + + lastFrame: function() { + var me = this, + iter = me.iterations, + iterCount = me.currentIteration; + + iterCount++; + if (iterCount < iter) { + me.startTime = new Date(); + me.currentIteration = iterCount; + me.keyframeStep = 0; + me.applyAnimator(me.target); + me.animations[me.keyframeStep].paused = false; + } + else { + me.currentIteration = 0; + me.end(); + } + }, + + + end: function() { + var me = this; + me.fireEvent('afteranimate', me, me.startTime, new Date() - me.startTime); + }, + + isReady: function() { + return this.paused === false && this.running === false && this.iterations > 0; + }, + + isRunning: function() { + + return false; + } +}); + + +Ext.define('Ext.fx.CubicBezier', { + + + + singleton: true, + + + + cubicBezierAtTime: function(t, p1x, p1y, p2x, p2y, duration) { + var cx = 3 * p1x, + bx = 3 * (p2x - p1x) - cx, + ax = 1 - cx - bx, + cy = 3 * p1y, + by = 3 * (p2y - p1y) - cy, + ay = 1 - cy - by; + function sampleCurveX(t) { + return ((ax * t + bx) * t + cx) * t; + } + function solve(x, epsilon) { + var t = solveCurveX(x, epsilon); + return ((ay * t + by) * t + cy) * t; + } + function solveCurveX(x, epsilon) { + var t0, t1, t2, x2, d2, i; + for (t2 = x, i = 0; i < 8; i++) { + x2 = sampleCurveX(t2) - x; + if (Math.abs(x2) < epsilon) { + return t2; + } + d2 = (3 * ax * t2 + 2 * bx) * t2 + cx; + if (Math.abs(d2) < 1e-6) { + break; + } + t2 = t2 - x2 / d2; + } + t0 = 0; + t1 = 1; + t2 = x; + if (t2 < t0) { + return t0; + } + if (t2 > t1) { + return t1; + } + while (t0 < t1) { + x2 = sampleCurveX(t2); + if (Math.abs(x2 - x) < epsilon) { + return t2; + } + if (x > x2) { + t0 = t2; + } else { + t1 = t2; + } + t2 = (t1 - t0) / 2 + t0; + } + return t2; + } + return solve(t, 1 / (200 * duration)); + }, + + cubicBezier: function(x1, y1, x2, y2) { + var fn = function(pos) { + return Ext.fx.CubicBezier.cubicBezierAtTime(pos, x1, y1, x2, y2, 1); + }; + fn.toCSS3 = function() { + return 'cubic-bezier(' + [x1, y1, x2, y2].join(',') + ')'; + }; + fn.reverse = function() { + return Ext.fx.CubicBezier.cubicBezier(1 - x2, 1 - y2, 1 - x1, 1 - y1); + }; + return fn; + } +}); + + + + +Ext.require('Ext.fx.CubicBezier', function() { + var math = Math, + pi = math.PI, + pow = math.pow, + sin = math.sin, + sqrt = math.sqrt, + abs = math.abs, + backInSeed = 1.70158; + + Ext.define('Ext.fx.Easing', { + singleton: true, + + linear: Ext.identityFn, + ease: function(n) { + var q = 0.07813 - n / 2, + alpha = -0.25, + Q = sqrt(0.0066 + q * q), + x = Q - q, + X = pow(abs(x), 1/3) * (x < 0 ? -1 : 1), + y = -Q - q, + Y = pow(abs(y), 1/3) * (y < 0 ? -1 : 1), + t = X + Y + 0.25; + return pow(1 - t, 2) * 3 * t * 0.1 + (1 - t) * 3 * t * t + t * t * t; + }, + easeIn: function (n) { + return pow(n, 1.7); + }, + easeOut: function (n) { + return pow(n, 0.48); + }, + easeInOut: function(n) { + var q = 0.48 - n / 1.04, + Q = sqrt(0.1734 + q * q), + x = Q - q, + X = pow(abs(x), 1/3) * (x < 0 ? -1 : 1), + y = -Q - q, + Y = pow(abs(y), 1/3) * (y < 0 ? -1 : 1), + t = X + Y + 0.5; + return (1 - t) * 3 * t * t + t * t * t; + }, + backIn: function (n) { + return n * n * ((backInSeed + 1) * n - backInSeed); + }, + backOut: function (n) { + n = n - 1; + return n * n * ((backInSeed + 1) * n + backInSeed) + 1; + }, + elasticIn: function (n) { + if (n === 0 || n === 1) { + return n; + } + var p = 0.3, + s = p / 4; + return pow(2, -10 * n) * sin((n - s) * (2 * pi) / p) + 1; + }, + elasticOut: function (n) { + return 1 - Ext.fx.Easing.elasticIn(1 - n); + }, + bounceIn: function (n) { + return 1 - Ext.fx.Easing.bounceOut(1 - n); + }, + bounceOut: function (n) { + var s = 7.5625, + p = 2.75, + l; + if (n < (1 / p)) { + l = s * n * n; + } else { + if (n < (2 / p)) { + n -= (1.5 / p); + l = s * n * n + 0.75; + } else { + if (n < (2.5 / p)) { + n -= (2.25 / p); + l = s * n * n + 0.9375; + } else { + n -= (2.625 / p); + l = s * n * n + 0.984375; + } + } + } + return l; + } + }, function(){ + var easing = Ext.fx.Easing.self, + proto = easing.prototype; + + easing.implement({ + 'back-in': proto.backIn, + 'back-out': proto.backOut, + 'ease-in': proto.easeIn, + 'ease-out': proto.easeOut, + 'elastic-in': proto.elasticIn, + 'elastic-out': proto.elasticOut, + 'bounce-in': proto.bounceIn, + 'bounce-out': proto.bounceOut, + 'ease-in-out': proto.easeInOut + }); + }); +}); + + +Ext.define('Ext.draw.Color', { + + + + + + colorToHexRe: /(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/, + rgbRe: /\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/, + hexRe: /\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/, + + + lightnessFactor: 0.2, + + + constructor : function(red, green, blue) { + var me = this, + clamp = Ext.Number.constrain; + me.r = clamp(red, 0, 255); + me.g = clamp(green, 0, 255); + me.b = clamp(blue, 0, 255); + }, + + + getRed: function() { + return this.r; + }, + + + getGreen: function() { + return this.g; + }, + + + getBlue: function() { + return this.b; + }, + + + getRGB: function() { + var me = this; + return [me.r, me.g, me.b]; + }, + + + getHSL: function() { + var me = this, + r = me.r / 255, + g = me.g / 255, + b = me.b / 255, + max = Math.max(r, g, b), + min = Math.min(r, g, b), + delta = max - min, + h, + s = 0, + l = 0.5 * (max + min); + + + if (min != max) { + s = (l < 0.5) ? delta / (max + min) : delta / (2 - max - min); + if (r == max) { + h = 60 * (g - b) / delta; + } else if (g == max) { + h = 120 + 60 * (b - r) / delta; + } else { + h = 240 + 60 * (r - g) / delta; + } + if (h < 0) { + h += 360; + } + if (h >= 360) { + h -= 360; + } + } + return [h, s, l]; + }, + + + getLighter: function(factor) { + var hsl = this.getHSL(); + factor = factor || this.lightnessFactor; + hsl[2] = Ext.Number.constrain(hsl[2] + factor, 0, 1); + return this.fromHSL(hsl[0], hsl[1], hsl[2]); + }, + + + getDarker: function(factor) { + factor = factor || this.lightnessFactor; + return this.getLighter(-factor); + }, + + + toString: function() { + var me = this, + round = Math.round, + r = round(me.r).toString(16), + g = round(me.g).toString(16), + b = round(me.b).toString(16); + r = (r.length == 1) ? '0' + r : r; + g = (g.length == 1) ? '0' + g : g; + b = (b.length == 1) ? '0' + b : b; + return ['#', r, g, b].join(''); + }, + + + toHex: function(color) { + if (Ext.isArray(color)) { + color = color[0]; + } + if (!Ext.isString(color)) { + return ''; + } + if (color.substr(0, 1) === '#') { + return color; + } + var digits = this.colorToHexRe.exec(color), + red, + green, + blue, + rgb; + + if (Ext.isArray(digits)) { + red = parseInt(digits[2], 10); + green = parseInt(digits[3], 10); + blue = parseInt(digits[4], 10); + rgb = blue | (green << 8) | (red << 16); + return digits[1] + '#' + ("000000" + rgb.toString(16)).slice(-6); + } + else { + return color; + } + }, + + + fromString: function(str) { + var values, r, g, b, + parse = parseInt; + + if ((str.length == 4 || str.length == 7) && str.substr(0, 1) === '#') { + values = str.match(this.hexRe); + if (values) { + r = parse(values[1], 16) >> 0; + g = parse(values[2], 16) >> 0; + b = parse(values[3], 16) >> 0; + if (str.length == 4) { + r += (r * 16); + g += (g * 16); + b += (b * 16); + } + } + } + else { + values = str.match(this.rgbRe); + if (values) { + r = values[1]; + g = values[2]; + b = values[3]; + } + } + + return (typeof r == 'undefined') ? undefined : new Ext.draw.Color(r, g, b); + }, + + + getGrayscale: function() { + + return this.r * 0.3 + this.g * 0.59 + this.b * 0.11; + }, + + + fromHSL: function(h, s, l) { + var C, X, m, i, rgb = [], + abs = Math.abs, + floor = Math.floor; + + if (s == 0 || h == null) { + + rgb = [l, l, l]; + } + else { + + + + + h /= 60; + C = s * (1 - abs(2 * l - 1)); + X = C * (1 - abs(h - 2 * floor(h / 2) - 1)); + m = l - C / 2; + switch (floor(h)) { + case 0: + rgb = [C, X, 0]; + break; + case 1: + rgb = [X, C, 0]; + break; + case 2: + rgb = [0, C, X]; + break; + case 3: + rgb = [0, X, C]; + break; + case 4: + rgb = [X, 0, C]; + break; + case 5: + rgb = [C, 0, X]; + break; + } + rgb = [rgb[0] + m, rgb[1] + m, rgb[2] + m]; + } + return new Ext.draw.Color(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255); + } +}, function() { + var prototype = this.prototype; + + + this.addStatics({ + fromHSL: function() { + return prototype.fromHSL.apply(prototype, arguments); + }, + fromString: function() { + return prototype.fromString.apply(prototype, arguments); + }, + toHex: function() { + return prototype.toHex.apply(prototype, arguments); + } + }); +}); + + +Ext.define('Ext.draw.Draw', { + + + singleton: true, + + + + + + pathToStringRE: /,?([achlmqrstvxz]),?/gi, + pathCommandRE: /([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig, + pathValuesRE: /(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig, + stopsRE: /^(\d+%?)$/, + radian: Math.PI / 180, + + availableAnimAttrs: { + along: "along", + blur: null, + "clip-rect": "csv", + cx: null, + cy: null, + fill: "color", + "fill-opacity": null, + "font-size": null, + height: null, + opacity: null, + path: "path", + r: null, + rotation: "csv", + rx: null, + ry: null, + scale: "csv", + stroke: "color", + "stroke-opacity": null, + "stroke-width": null, + translation: "csv", + width: null, + x: null, + y: null + }, + + is: function(o, type) { + type = String(type).toLowerCase(); + return (type == "object" && o === Object(o)) || + (type == "undefined" && typeof o == type) || + (type == "null" && o === null) || + (type == "array" && Array.isArray && Array.isArray(o)) || + (Object.prototype.toString.call(o).toLowerCase().slice(8, -1)) == type; + }, + + ellipsePath: function(sprite) { + var attr = sprite.attr; + return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z", attr.x, attr.y - attr.ry, attr.rx, attr.ry, attr.y + attr.ry); + }, + + rectPath: function(sprite) { + var attr = sprite.attr; + if (attr.radius) { + return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z", attr.x + attr.radius, attr.y, attr.width - attr.radius * 2, attr.radius, -attr.radius, attr.height - attr.radius * 2, attr.radius * 2 - attr.width, attr.radius * 2 - attr.height); + } + else { + return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z", attr.x, attr.y, attr.width + attr.x, attr.height + attr.y); + } + }, + + + path2string: function () { + return this.join(",").replace(Ext.draw.Draw.pathToStringRE, "$1"); + }, + + + pathToString: function(arrayPath) { + return arrayPath.join(",").replace(Ext.draw.Draw.pathToStringRE, "$1"); + }, + + parsePathString: function (pathString) { + if (!pathString) { + return null; + } + var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0}, + data = [], + me = this; + if (me.is(pathString, "array") && me.is(pathString[0], "array")) { + data = me.pathClone(pathString); + } + if (!data.length) { + String(pathString).replace(me.pathCommandRE, function (a, b, c) { + var params = [], + name = b.toLowerCase(); + c.replace(me.pathValuesRE, function (a, b) { + b && params.push(+b); + }); + if (name == "m" && params.length > 2) { + data.push([b].concat(Ext.Array.splice(params, 0, 2))); + name = "l"; + b = (b == "m") ? "l" : "L"; + } + while (params.length >= paramCounts[name]) { + data.push([b].concat(Ext.Array.splice(params, 0, paramCounts[name]))); + if (!paramCounts[name]) { + break; + } + } + }); + } + data.toString = me.path2string; + return data; + }, + + mapPath: function (path, matrix) { + if (!matrix) { + return path; + } + var x, y, i, ii, j, jj, pathi; + path = this.path2curve(path); + for (i = 0, ii = path.length; i < ii; i++) { + pathi = path[i]; + for (j = 1, jj = pathi.length; j < jj-1; j += 2) { + x = matrix.x(pathi[j], pathi[j + 1]); + y = matrix.y(pathi[j], pathi[j + 1]); + pathi[j] = x; + pathi[j + 1] = y; + } + } + return path; + }, + + pathClone: function(pathArray) { + var res = [], + j, jj, i, ii; + if (!this.is(pathArray, "array") || !this.is(pathArray && pathArray[0], "array")) { + pathArray = this.parsePathString(pathArray); + } + for (i = 0, ii = pathArray.length; i < ii; i++) { + res[i] = []; + for (j = 0, jj = pathArray[i].length; j < jj; j++) { + res[i][j] = pathArray[i][j]; + } + } + res.toString = this.path2string; + return res; + }, + + pathToAbsolute: function (pathArray) { + if (!this.is(pathArray, "array") || !this.is(pathArray && pathArray[0], "array")) { + pathArray = this.parsePathString(pathArray); + } + var res = [], + x = 0, + y = 0, + mx = 0, + my = 0, + i = 0, + ln = pathArray.length, + r, pathSegment, j, ln2; + + if (ln && pathArray[0][0] == "M") { + x = +pathArray[0][1]; + y = +pathArray[0][2]; + mx = x; + my = y; + i++; + res[0] = ["M", x, y]; + } + for (; i < ln; i++) { + r = res[i] = []; + pathSegment = pathArray[i]; + if (pathSegment[0] != pathSegment[0].toUpperCase()) { + r[0] = pathSegment[0].toUpperCase(); + switch (r[0]) { + + case "A": + r[1] = pathSegment[1]; + r[2] = pathSegment[2]; + r[3] = pathSegment[3]; + r[4] = pathSegment[4]; + r[5] = pathSegment[5]; + r[6] = +(pathSegment[6] + x); + r[7] = +(pathSegment[7] + y); + break; + + case "V": + r[1] = +pathSegment[1] + y; + break; + + case "H": + r[1] = +pathSegment[1] + x; + break; + case "M": + + mx = +pathSegment[1] + x; + my = +pathSegment[2] + y; + default: + j = 1; + ln2 = pathSegment.length; + for (; j < ln2; j++) { + r[j] = +pathSegment[j] + ((j % 2) ? x : y); + } + } + } + else { + j = 0; + ln2 = pathSegment.length; + for (; j < ln2; j++) { + res[i][j] = pathSegment[j]; + } + } + switch (r[0]) { + + case "Z": + x = mx; + y = my; + break; + + case "H": + x = r[1]; + break; + + case "V": + y = r[1]; + break; + + case "M": + pathSegment = res[i]; + ln2 = pathSegment.length; + mx = pathSegment[ln2 - 2]; + my = pathSegment[ln2 - 1]; + default: + pathSegment = res[i]; + ln2 = pathSegment.length; + x = pathSegment[ln2 - 2]; + y = pathSegment[ln2 - 1]; + } + } + res.toString = this.path2string; + return res; + }, + + + pathToRelative: function (pathArray) { + if (!this.is(pathArray, "array") || !this.is(pathArray && pathArray[0], "array")) { + pathArray = this.parsePathString(pathArray); + } + var res = [], + x = 0, + y = 0, + mx = 0, + my = 0, + start = 0, + r, + pa, + i, + j, + k, + len, + ii, + jj, + kk; + + if (pathArray[0][0] == "M") { + x = pathArray[0][1]; + y = pathArray[0][2]; + mx = x; + my = y; + start++; + res.push(["M", x, y]); + } + for (i = start, ii = pathArray.length; i < ii; i++) { + r = res[i] = []; + pa = pathArray[i]; + if (pa[0] != pa[0].toLowerCase()) { + r[0] = pa[0].toLowerCase(); + switch (r[0]) { + case "a": + r[1] = pa[1]; + r[2] = pa[2]; + r[3] = pa[3]; + r[4] = pa[4]; + r[5] = pa[5]; + r[6] = +(pa[6] - x).toFixed(3); + r[7] = +(pa[7] - y).toFixed(3); + break; + case "v": + r[1] = +(pa[1] - y).toFixed(3); + break; + case "m": + mx = pa[1]; + my = pa[2]; + default: + for (j = 1, jj = pa.length; j < jj; j++) { + r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3); + } + } + } else { + r = res[i] = []; + if (pa[0] == "m") { + mx = pa[1] + x; + my = pa[2] + y; + } + for (k = 0, kk = pa.length; k < kk; k++) { + res[i][k] = pa[k]; + } + } + len = res[i].length; + switch (res[i][0]) { + case "z": + x = mx; + y = my; + break; + case "h": + x += +res[i][len - 1]; + break; + case "v": + y += +res[i][len - 1]; + break; + default: + x += +res[i][len - 2]; + y += +res[i][len - 1]; + } + } + res.toString = this.path2string; + return res; + }, + + + path2curve: function (path) { + var me = this, + points = me.pathToAbsolute(path), + ln = points.length, + attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null}, + i, seg, segLn, point; + + for (i = 0; i < ln; i++) { + points[i] = me.command2curve(points[i], attrs); + if (points[i].length > 7) { + points[i].shift(); + point = points[i]; + while (point.length) { + Ext.Array.splice(points, i++, 0, ["C"].concat(Ext.Array.splice(point, 0, 6))); + } + Ext.Array.erase(points, i, 1); + ln = points.length; + i--; + } + seg = points[i]; + segLn = seg.length; + attrs.x = seg[segLn - 2]; + attrs.y = seg[segLn - 1]; + attrs.bx = parseFloat(seg[segLn - 4]) || attrs.x; + attrs.by = parseFloat(seg[segLn - 3]) || attrs.y; + } + return points; + }, + + interpolatePaths: function (path, path2) { + var me = this, + p = me.pathToAbsolute(path), + p2 = me.pathToAbsolute(path2), + attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null}, + attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null}, + fixArc = function (pp, i) { + if (pp[i].length > 7) { + pp[i].shift(); + var pi = pp[i]; + while (pi.length) { + Ext.Array.splice(pp, i++, 0, ["C"].concat(Ext.Array.splice(pi, 0, 6))); + } + Ext.Array.erase(pp, i, 1); + ii = Math.max(p.length, p2.length || 0); + } + }, + fixM = function (path1, path2, a1, a2, i) { + if (path1 && path2 && path1[i][0] == "M" && path2[i][0] != "M") { + Ext.Array.splice(path2, i, 0, ["M", a2.x, a2.y]); + a1.bx = 0; + a1.by = 0; + a1.x = path1[i][1]; + a1.y = path1[i][2]; + ii = Math.max(p.length, p2.length || 0); + } + }, + i, ii, + seg, seg2, seglen, seg2len; + for (i = 0, ii = Math.max(p.length, p2.length || 0); i < ii; i++) { + p[i] = me.command2curve(p[i], attrs); + fixArc(p, i); + (p2[i] = me.command2curve(p2[i], attrs2)); + fixArc(p2, i); + fixM(p, p2, attrs, attrs2, i); + fixM(p2, p, attrs2, attrs, i); + seg = p[i]; + seg2 = p2[i]; + seglen = seg.length; + seg2len = seg2.length; + attrs.x = seg[seglen - 2]; + attrs.y = seg[seglen - 1]; + attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x; + attrs.by = parseFloat(seg[seglen - 3]) || attrs.y; + attrs2.bx = (parseFloat(seg2[seg2len - 4]) || attrs2.x); + attrs2.by = (parseFloat(seg2[seg2len - 3]) || attrs2.y); + attrs2.x = seg2[seg2len - 2]; + attrs2.y = seg2[seg2len - 1]; + } + return [p, p2]; + }, + + + command2curve: function (pathCommand, d) { + var me = this; + if (!pathCommand) { + return ["C", d.x, d.y, d.x, d.y, d.x, d.y]; + } + if (pathCommand[0] != "T" && pathCommand[0] != "Q") { + d.qx = d.qy = null; + } + switch (pathCommand[0]) { + case "M": + d.X = pathCommand[1]; + d.Y = pathCommand[2]; + break; + case "A": + pathCommand = ["C"].concat(me.arc2curve.apply(me, [d.x, d.y].concat(pathCommand.slice(1)))); + break; + case "S": + pathCommand = ["C", d.x + (d.x - (d.bx || d.x)), d.y + (d.y - (d.by || d.y))].concat(pathCommand.slice(1)); + break; + case "T": + d.qx = d.x + (d.x - (d.qx || d.x)); + d.qy = d.y + (d.y - (d.qy || d.y)); + pathCommand = ["C"].concat(me.quadratic2curve(d.x, d.y, d.qx, d.qy, pathCommand[1], pathCommand[2])); + break; + case "Q": + d.qx = pathCommand[1]; + d.qy = pathCommand[2]; + pathCommand = ["C"].concat(me.quadratic2curve(d.x, d.y, pathCommand[1], pathCommand[2], pathCommand[3], pathCommand[4])); + break; + case "L": + pathCommand = ["C"].concat(d.x, d.y, pathCommand[1], pathCommand[2], pathCommand[1], pathCommand[2]); + break; + case "H": + pathCommand = ["C"].concat(d.x, d.y, pathCommand[1], d.y, pathCommand[1], d.y); + break; + case "V": + pathCommand = ["C"].concat(d.x, d.y, d.x, pathCommand[1], d.x, pathCommand[1]); + break; + case "Z": + pathCommand = ["C"].concat(d.x, d.y, d.X, d.Y, d.X, d.Y); + break; + } + return pathCommand; + }, + + quadratic2curve: function (x1, y1, ax, ay, x2, y2) { + var _13 = 1 / 3, + _23 = 2 / 3; + return [ + _13 * x1 + _23 * ax, + _13 * y1 + _23 * ay, + _13 * x2 + _23 * ax, + _13 * y2 + _23 * ay, + x2, + y2 + ]; + }, + + rotate: function (x, y, rad) { + var cos = Math.cos(rad), + sin = Math.sin(rad), + X = x * cos - y * sin, + Y = x * sin + y * cos; + return {x: X, y: Y}; + }, + + arc2curve: function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) { + + + var me = this, + PI = Math.PI, + radian = me.radian, + _120 = PI * 120 / 180, + rad = radian * (+angle || 0), + res = [], + math = Math, + mcos = math.cos, + msin = math.sin, + msqrt = math.sqrt, + mabs = math.abs, + masin = math.asin, + xy, x, y, h, rx2, ry2, k, cx, cy, f1, f2, df, c1, s1, c2, s2, + t, hx, hy, m1, m2, m3, m4, newres, i, ln, f2old, x2old, y2old; + if (!recursive) { + xy = me.rotate(x1, y1, -rad); + x1 = xy.x; + y1 = xy.y; + xy = me.rotate(x2, y2, -rad); + x2 = xy.x; + y2 = xy.y; + x = (x1 - x2) / 2; + y = (y1 - y2) / 2; + h = (x * x) / (rx * rx) + (y * y) / (ry * ry); + if (h > 1) { + h = msqrt(h); + rx = h * rx; + ry = h * ry; + } + rx2 = rx * rx; + ry2 = ry * ry; + k = (large_arc_flag == sweep_flag ? -1 : 1) * + msqrt(mabs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))); + cx = k * rx * y / ry + (x1 + x2) / 2; + cy = k * -ry * x / rx + (y1 + y2) / 2; + f1 = masin(((y1 - cy) / ry).toFixed(7)); + f2 = masin(((y2 - cy) / ry).toFixed(7)); + + f1 = x1 < cx ? PI - f1 : f1; + f2 = x2 < cx ? PI - f2 : f2; + if (f1 < 0) { + f1 = PI * 2 + f1; + } + if (f2 < 0) { + f2 = PI * 2 + f2; + } + if (sweep_flag && f1 > f2) { + f1 = f1 - PI * 2; + } + if (!sweep_flag && f2 > f1) { + f2 = f2 - PI * 2; + } + } + else { + f1 = recursive[0]; + f2 = recursive[1]; + cx = recursive[2]; + cy = recursive[3]; + } + df = f2 - f1; + if (mabs(df) > _120) { + f2old = f2; + x2old = x2; + y2old = y2; + f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1); + x2 = cx + rx * mcos(f2); + y2 = cy + ry * msin(f2); + res = me.arc2curve(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]); + } + df = f2 - f1; + c1 = mcos(f1); + s1 = msin(f1); + c2 = mcos(f2); + s2 = msin(f2); + t = math.tan(df / 4); + hx = 4 / 3 * rx * t; + hy = 4 / 3 * ry * t; + m1 = [x1, y1]; + m2 = [x1 + hx * s1, y1 - hy * c1]; + m3 = [x2 + hx * s2, y2 - hy * c2]; + m4 = [x2, y2]; + m2[0] = 2 * m1[0] - m2[0]; + m2[1] = 2 * m1[1] - m2[1]; + if (recursive) { + return [m2, m3, m4].concat(res); + } + else { + res = [m2, m3, m4].concat(res).join().split(","); + newres = []; + ln = res.length; + for (i = 0; i < ln; i++) { + newres[i] = i % 2 ? me.rotate(res[i - 1], res[i], rad).y : me.rotate(res[i], res[i + 1], rad).x; + } + return newres; + } + }, + + + rotateAndTranslatePath: function (sprite) { + var alpha = sprite.rotation.degrees, + cx = sprite.rotation.x, + cy = sprite.rotation.y, + dx = sprite.translation.x, + dy = sprite.translation.y, + path, + i, + p, + xy, + j, + res = []; + if (!alpha && !dx && !dy) { + return this.pathToAbsolute(sprite.attr.path); + } + dx = dx || 0; + dy = dy || 0; + path = this.pathToAbsolute(sprite.attr.path); + for (i = path.length; i--;) { + p = res[i] = path[i].slice(); + if (p[0] == "A") { + xy = this.rotatePoint(p[6], p[7], alpha, cx, cy); + p[6] = xy.x + dx; + p[7] = xy.y + dy; + } else { + j = 1; + while (p[j + 1] != null) { + xy = this.rotatePoint(p[j], p[j + 1], alpha, cx, cy); + p[j] = xy.x + dx; + p[j + 1] = xy.y + dy; + j += 2; + } + } + } + return res; + }, + + + rotatePoint: function (x, y, alpha, cx, cy) { + if (!alpha) { + return { + x: x, + y: y + }; + } + cx = cx || 0; + cy = cy || 0; + x = x - cx; + y = y - cy; + alpha = alpha * this.radian; + var cos = Math.cos(alpha), + sin = Math.sin(alpha); + return { + x: x * cos - y * sin + cx, + y: x * sin + y * cos + cy + }; + }, + + pathDimensions: function (path) { + if (!path || !(path + "")) { + return {x: 0, y: 0, width: 0, height: 0}; + } + path = this.path2curve(path); + var x = 0, + y = 0, + X = [], + Y = [], + i = 0, + ln = path.length, + p, xmin, ymin, xmax, ymax, dim; + for (; i < ln; i++) { + p = path[i]; + if (p[0] == "M") { + x = p[1]; + y = p[2]; + X.push(x); + Y.push(y); + } + else { + dim = this.curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]); + X = X.concat(dim.min.x, dim.max.x); + Y = Y.concat(dim.min.y, dim.max.y); + x = p[5]; + y = p[6]; + } + } + xmin = Math.min.apply(0, X); + ymin = Math.min.apply(0, Y); + xmax = Math.max.apply(0, X); + ymax = Math.max.apply(0, Y); + return { + x: Math.round(xmin), + y: Math.round(ymin), + path: path, + width: Math.round(xmax - xmin), + height: Math.round(ymax - ymin) + }; + }, + + intersectInside: function(path, cp1, cp2) { + return (cp2[0] - cp1[0]) * (path[1] - cp1[1]) > (cp2[1] - cp1[1]) * (path[0] - cp1[0]); + }, + + intersectIntersection: function(s, e, cp1, cp2) { + var p = [], + dcx = cp1[0] - cp2[0], + dcy = cp1[1] - cp2[1], + dpx = s[0] - e[0], + dpy = s[1] - e[1], + n1 = cp1[0] * cp2[1] - cp1[1] * cp2[0], + n2 = s[0] * e[1] - s[1] * e[0], + n3 = 1 / (dcx * dpy - dcy * dpx); + + p[0] = (n1 * dpx - n2 * dcx) * n3; + p[1] = (n1 * dpy - n2 * dcy) * n3; + return p; + }, + + intersect: function(subjectPolygon, clipPolygon) { + var me = this, + i = 0, + ln = clipPolygon.length, + cp1 = clipPolygon[ln - 1], + outputList = subjectPolygon, + cp2, s, e, ln2, inputList, j; + for (; i < ln; ++i) { + cp2 = clipPolygon[i]; + inputList = outputList; + outputList = []; + s = inputList[inputList.length - 1]; + j = 0; + ln2 = inputList.length; + for (; j < ln2; j++) { + e = inputList[j]; + if (me.intersectInside(e, cp1, cp2)) { + if (!me.intersectInside(s, cp1, cp2)) { + outputList.push(me.intersectIntersection(s, e, cp1, cp2)); + } + outputList.push(e); + } + else if (me.intersectInside(s, cp1, cp2)) { + outputList.push(me.intersectIntersection(s, e, cp1, cp2)); + } + s = e; + } + cp1 = cp2; + } + return outputList; + }, + + bezier : function (a, b, c, d, x) { + if (x === 0) { + return a; + } + else if (x === 1) { + return d; + } + var du = 1 - x, + d3 = du * du * du, + r = x / du; + return d3 * (a + r * (3 * b + r * (3 * c + d * r))); + }, + + bezierDim : function (a, b, c, d) { + var points = [], r, + A, top, C, delta, bottom, s, + min, max, i; + + if (a + 3 * c == d + 3 * b) { + r = a - b; + r /= 2 * (a - b - b + c); + if ( r < 1 && r > 0) { + points.push(r); + } + } else { + + + A = a - 3 * b + 3 * c - d; + top = 2 * (a - b - b + c); + C = a - b; + delta = top * top - 4 * A * C; + bottom = A + A; + if (delta === 0) { + r = top / bottom; + if (r < 1 && r > 0) { + points.push(r); + } + } else if (delta > 0) { + s = Math.sqrt(delta); + r = (s + top) / bottom; + + if (r < 1 && r > 0) { + points.push(r); + } + + r = (top - s) / bottom; + + if (r < 1 && r > 0) { + points.push(r); + } + } + } + min = Math.min(a, d); + max = Math.max(a, d); + for (i = 0; i < points.length; i++) { + min = Math.min(min, this.bezier(a, b, c, d, points[i])); + max = Math.max(max, this.bezier(a, b, c, d, points[i])); + } + return [min, max]; + }, + + curveDim: function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { + var x = this.bezierDim(p1x, c1x, c2x, p2x), + y = this.bezierDim(p1y, c1y, c2y, p2y); + return { + min: { + x: x[0], + y: y[0] + }, + max: { + x: x[1], + y: y[1] + } + }; + }, + + + getAnchors: function (prevX, prevY, curX, curY, nextX, nextY, value) { + value = value || 4; + var M = Math, + PI = M.PI, + halfPI = PI / 2, + abs = M.abs, + sin = M.sin, + cos = M.cos, + atan = M.atan, + control1Length, control2Length, control1Angle, control2Angle, + control1X, control1Y, control2X, control2Y, alpha; + + + + control1Length = (curX - prevX) / value; + control2Length = (nextX - curX) / value; + + + + + + if ((curY >= prevY && curY >= nextY) || (curY <= prevY && curY <= nextY)) { + control1Angle = control2Angle = halfPI; + } else { + control1Angle = atan((curX - prevX) / abs(curY - prevY)); + if (prevY < curY) { + control1Angle = PI - control1Angle; + } + control2Angle = atan((nextX - curX) / abs(curY - nextY)); + if (nextY < curY) { + control2Angle = PI - control2Angle; + } + } + + + alpha = halfPI - ((control1Angle + control2Angle) % (PI * 2)) / 2; + if (alpha > halfPI) { + alpha -= PI; + } + control1Angle += alpha; + control2Angle += alpha; + + + control1X = curX - control1Length * sin(control1Angle); + control1Y = curY + control1Length * cos(control1Angle); + control2X = curX + control2Length * sin(control2Angle); + control2Y = curY + control2Length * cos(control2Angle); + + + + + + if ((curY > prevY && control1Y < prevY) || (curY < prevY && control1Y > prevY)) { + control1X += abs(prevY - control1Y) * (control1X - curX) / (control1Y - curY); + control1Y = prevY; + } + if ((curY > nextY && control2Y < nextY) || (curY < nextY && control2Y > nextY)) { + control2X -= abs(nextY - control2Y) * (control2X - curX) / (control2Y - curY); + control2Y = nextY; + } + + return { + x1: control1X, + y1: control1Y, + x2: control2X, + y2: control2Y + }; + }, + + + smooth: function (originalPath, value) { + var path = this.path2curve(originalPath), + newp = [path[0]], + x = path[0][1], + y = path[0][2], + j, + points, + i = 1, + ii = path.length, + beg = 1, + mx = x, + my = y, + pathi, + pathil, + pathim, + pathiml, + pathip, + pathipl, + begl; + + for (; i < ii; i++) { + pathi = path[i]; + pathil = pathi.length; + pathim = path[i - 1]; + pathiml = pathim.length; + pathip = path[i + 1]; + pathipl = pathip && pathip.length; + if (pathi[0] == "M") { + mx = pathi[1]; + my = pathi[2]; + j = i + 1; + while (path[j][0] != "C") { + j++; + } + newp.push(["M", mx, my]); + beg = newp.length; + x = mx; + y = my; + continue; + } + if (pathi[pathil - 2] == mx && pathi[pathil - 1] == my && (!pathip || pathip[0] == "M")) { + begl = newp[beg].length; + points = this.getAnchors(pathim[pathiml - 2], pathim[pathiml - 1], mx, my, newp[beg][begl - 2], newp[beg][begl - 1], value); + newp[beg][1] = points.x2; + newp[beg][2] = points.y2; + } + else if (!pathip || pathip[0] == "M") { + points = { + x1: pathi[pathil - 2], + y1: pathi[pathil - 1] + }; + } else { + points = this.getAnchors(pathim[pathiml - 2], pathim[pathiml - 1], pathi[pathil - 2], pathi[pathil - 1], pathip[pathipl - 2], pathip[pathipl - 1], value); + } + newp.push(["C", x, y, points.x1, points.y1, pathi[pathil - 2], pathi[pathil - 1]]); + x = points.x2; + y = points.y2; + } + return newp; + }, + + findDotAtSegment: function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) { + var t1 = 1 - t; + return { + x: Math.pow(t1, 3) * p1x + Math.pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + Math.pow(t, 3) * p2x, + y: Math.pow(t1, 3) * p1y + Math.pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + Math.pow(t, 3) * p2y + }; + }, + + + snapEnds: function (from, to, stepsMax, prettyNumbers) { + if (Ext.isDate(from)) { + return this.snapEndsByDate(from, to, stepsMax); + } + var step = (to - from) / stepsMax, + level = Math.floor(Math.log(step) / Math.LN10) + 1, + m = Math.pow(10, level), + cur, + floor, + modulo = Math.round((step % m) * Math.pow(10, 2 - level)), + interval = [[0, 15], [10, 1], [20, 4], [25, 2], [50, 9], [100, 15]], + stepCount = 0, + value, + weight, + i, + topValue, + topWeight = 1e9, + ln = interval.length; + + floor = Math.floor(from / m) * m; + if (from == floor && floor > 0) { + floor = Math.floor((from - (m/10)) / m) * m; + } + + if (prettyNumbers) { + for (i = 0; i < ln; i++) { + value = interval[i][0]; + weight = (value - modulo) < 0 ? 1e6 : (value - modulo) / interval[i][1]; + if (weight < topWeight) { + topValue = value; + topWeight = weight; + } + } + step = Math.floor(step * Math.pow(10, -level)) * Math.pow(10, level) + topValue * Math.pow(10, level - 2); + + if (from < 0 && to >= 0) { + cur = 0; + while (cur > from) { + cur -= step; + stepCount++; + } + from = +cur.toFixed(10); + + cur = 0; + while (cur < to) { + cur += step; + stepCount++; + } + to = +cur.toFixed(10); + } else { + cur = from = floor; + while (cur < to) { + cur += step; + stepCount++; + } + } + to = +cur.toFixed(10); + } else { + from = floor; + stepCount = stepsMax; + } + + return { + from: from, + to: to, + power: level, + step: step, + steps: stepCount + }; + }, + + + snapEndsByDate: function (from, to, stepsMax, lockEnds) { + var selectedStep = false, + scales = [ + [Ext.Date.MILLI, [1, 2, 5, 10, 20, 50, 100, 200, 250, 500]], + [Ext.Date.SECOND, [1, 2, 5, 10, 15, 30]], + [Ext.Date.MINUTE, [1, 2, 5, 10, 15, 30]], + [Ext.Date.HOUR, [1, 2, 3, 4, 6, 12]], + [Ext.Date.DAY, [1, 2, 7, 14]], + [Ext.Date.MONTH, [1, 2, 3, 6]] + ], + sLen = scales.length, + stop = false, + scale, j, yearDiff, s; + + + for (s = 0; s < sLen; s++) { + scale = scales[s]; + if (!stop) { + for (j = 0; j < scale[1].length; j++) { + if (to < Ext.Date.add(from, scale[0], scale[1][j] * stepsMax)) { + selectedStep = [scale[0], scale[1][j]]; + stop = true; + break; + } + } + } + } + + if (!selectedStep) { + yearDiff = this.snapEnds(from.getFullYear(), to.getFullYear() + 1, stepsMax, lockEnds); + selectedStep = [Date.YEAR, Math.round(yearDiff.step)]; + } + return this.snapEndsByDateAndStep(from, to, selectedStep, lockEnds); + }, + + + + + snapEndsByDateAndStep: function(from, to, step, lockEnds) { + var fromStat = [from.getFullYear(), from.getMonth(), from.getDate(), + from.getHours(), from.getMinutes(), from.getSeconds(), from.getMilliseconds()], + steps, testFrom, testTo, date, year, month, day, fractionalMonth, + stepUnit = step[0], stepValue = step[1]; + if (lockEnds) { + testFrom = from; + } else { + switch (stepUnit) { + case Ext.Date.MILLI: + testFrom = new Date(fromStat[0], fromStat[1], fromStat[2], fromStat[3], + fromStat[4], fromStat[5], Math.floor(fromStat[6] / stepValue) * stepValue); + break; + case Ext.Date.SECOND: + testFrom = new Date(fromStat[0], fromStat[1], fromStat[2], fromStat[3], + fromStat[4], Math.floor(fromStat[5] / stepValue) * stepValue, 0); + break; + case Ext.Date.MINUTE: + testFrom = new Date(fromStat[0], fromStat[1], fromStat[2], fromStat[3], + Math.floor(fromStat[4] / stepValue) * stepValue, 0, 0); + break; + case Ext.Date.HOUR: + testFrom = new Date(fromStat[0], fromStat[1], fromStat[2], + Math.floor(fromStat[3] / stepValue) * stepValue, 0, 0, 0); + break; + case Ext.Date.DAY: + testFrom = new Date(fromStat[0], fromStat[1], + Math.floor((fromStat[2] - 1) / stepValue) * stepValue + 1, 0, 0, 0, 0); + break; + case Ext.Date.MONTH: + testFrom = new Date(fromStat[0], Math.floor(fromStat[1] / stepValue) * stepValue, 1, 0, 0, 0, 0); + break; + default: + testFrom = new Date(Math.floor(fromStat[0] / stepValue) * stepValue, 0, 1, 0, 0, 0, 0); + break; + } + } + + fractionalMonth = ((stepUnit === Ext.Date.MONTH) && (stepValue == 1/2 || stepValue == 1/3 || stepValue == 1/4)); + steps = (fractionalMonth ? [] : 0); + + + testTo = new Date(testFrom); + while (testTo < to) { + if (fractionalMonth) { + date = new Date(testTo); + year = date.getFullYear(); + month = date.getMonth(); + day = date.getDate(); + switch(stepValue) { + case 1/2: + if (day >= 15) { + day = 1; + if (++month > 11) { + year++; + } + } + else { + day = 15; + } + break; + + case 1/3: + if (day >= 20) { + day = 1; + if (++month > 11) { + year++; + } + } + else { + if (day >= 10) { + day = 20 + } + else { + day = 10; + } + } + break; + + case 1/4: + if (day >= 22) { + day = 1; + if (++month > 11) { + year++; + } + } + else { + if (day >= 15) { + day = 22 + } + else { + if (day >= 8) { + day = 15 + } + else { + day = 8; + } + } + } + break; + } + testTo.setYear(year); + testTo.setMonth(month); + testTo.setDate(day); + steps.push(new Date(testTo)); + } + else { + testTo = Ext.Date.add(testTo, stepUnit, stepValue); + steps++; + } + } + + if (lockEnds) { + testTo = to; + } + + if (fractionalMonth) { + return { + from : +testFrom, + to : +testTo, + steps : steps + }; + } + else { + return { + from : +testFrom, + to : +testTo, + step : (testTo - testFrom) / steps, + steps : steps + }; + } + }, + + sorter: function (a, b) { + return a.offset - b.offset; + }, + + rad: function(degrees) { + return degrees % 360 * Math.PI / 180; + }, + + degrees: function(radian) { + return radian * 180 / Math.PI % 360; + }, + + withinBox: function(x, y, bbox) { + bbox = bbox || {}; + return (x >= bbox.x && x <= (bbox.x + bbox.width) && y >= bbox.y && y <= (bbox.y + bbox.height)); + }, + + parseGradient: function(gradient) { + var me = this, + type = gradient.type || 'linear', + angle = gradient.angle || 0, + radian = me.radian, + stops = gradient.stops, + stopsArr = [], + stop, + vector, + max, + stopObj; + + if (type == 'linear') { + vector = [0, 0, Math.cos(angle * radian), Math.sin(angle * radian)]; + max = 1 / (Math.max(Math.abs(vector[2]), Math.abs(vector[3])) || 1); + vector[2] *= max; + vector[3] *= max; + if (vector[2] < 0) { + vector[0] = -vector[2]; + vector[2] = 0; + } + if (vector[3] < 0) { + vector[1] = -vector[3]; + vector[3] = 0; + } + } + + for (stop in stops) { + if (stops.hasOwnProperty(stop) && me.stopsRE.test(stop)) { + stopObj = { + offset: parseInt(stop, 10), + color: Ext.draw.Color.toHex(stops[stop].color) || '#ffffff', + opacity: stops[stop].opacity || 1 + }; + stopsArr.push(stopObj); + } + } + + Ext.Array.sort(stopsArr, me.sorter); + if (type == 'linear') { + return { + id: gradient.id, + type: type, + vector: vector, + stops: stopsArr + }; + } + else { + return { + id: gradient.id, + type: type, + centerX: gradient.centerX, + centerY: gradient.centerY, + focalX: gradient.focalX, + focalY: gradient.focalY, + radius: gradient.radius, + vector: vector, + stops: stopsArr + }; + } + } +}); + + +Ext.define('Ext.fx.PropertyHandler', { + + + + + + statics: { + defaultHandler: { + pixelDefaultsRE: /width|height|top$|bottom$|left$|right$/i, + unitRE: /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/, + scrollRE: /^scroll/i, + + computeDelta: function(from, end, damper, initial, attr) { + damper = (typeof damper == 'number') ? damper : 1; + var unitRE = this.unitRE, + match = unitRE.exec(from), + start, units; + if (match) { + from = match[1]; + units = match[2]; + if (!this.scrollRE.test(attr) && !units && this.pixelDefaultsRE.test(attr)) { + units = 'px'; + } + } + from = +from || 0; + + match = unitRE.exec(end); + if (match) { + end = match[1]; + units = match[2] || units; + } + end = +end || 0; + start = (initial != null) ? initial : from; + return { + from: from, + delta: (end - start) * damper, + units: units + }; + }, + + get: function(from, end, damper, initialFrom, attr) { + var ln = from.length, + out = [], + i, initial, res, j, len; + for (i = 0; i < ln; i++) { + if (initialFrom) { + initial = initialFrom[i][1].from; + } + if (Ext.isArray(from[i][1]) && Ext.isArray(end)) { + res = []; + j = 0; + len = from[i][1].length; + for (; j < len; j++) { + res.push(this.computeDelta(from[i][1][j], end[j], damper, initial, attr)); + } + out.push([from[i][0], res]); + } + else { + out.push([from[i][0], this.computeDelta(from[i][1], end, damper, initial, attr)]); + } + } + return out; + }, + + set: function(values, easing) { + var ln = values.length, + out = [], + i, val, res, len, j; + for (i = 0; i < ln; i++) { + val = values[i][1]; + if (Ext.isArray(val)) { + res = []; + j = 0; + len = val.length; + for (; j < len; j++) { + res.push(val[j].from + val[j].delta * easing + (val[j].units || 0)); + } + out.push([values[i][0], res]); + } else { + out.push([values[i][0], val.from + val.delta * easing + (val.units || 0)]); + } + } + return out; + } + }, + stringHandler: { + computeDelta: function(from, end, damper, initial, attr) { + return { + from: from, + delta: end + }; + }, + + get: function(from, end, damper, initialFrom, attr) { + var ln = from.length, + out = [], + i, initial, res, j, len; + for (i = 0; i < ln; i++) { + out.push([from[i][0], this.computeDelta(from[i][1], end, damper, initial, attr)]); + } + return out; + }, + + set: function(values, easing) { + var ln = values.length, + out = [], + i, val, res, len, j; + for (i = 0; i < ln; i++) { + val = values[i][1]; + out.push([values[i][0], val.delta]); + } + return out; + } + }, + color: { + rgbRE: /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i, + hexRE: /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i, + hex3RE: /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i, + + parseColor : function(color, damper) { + damper = (typeof damper == 'number') ? damper : 1; + var out = false, + reList = [this.hexRE, this.rgbRE, this.hex3RE], + length = reList.length, + match, base, re, i; + + for (i = 0; i < length; i++) { + re = reList[i]; + + base = (i % 2 === 0) ? 16 : 10; + match = re.exec(color); + if (match && match.length === 4) { + if (i === 2) { + match[1] += match[1]; + match[2] += match[2]; + match[3] += match[3]; + } + out = { + red: parseInt(match[1], base), + green: parseInt(match[2], base), + blue: parseInt(match[3], base) + }; + break; + } + } + + return out || color; + }, + + computeDelta: function(from, end, damper, initial) { + from = this.parseColor(from); + end = this.parseColor(end, damper); + var start = initial ? initial : from, + tfrom = typeof start, + tend = typeof end; + + if (tfrom == 'string' || tfrom == 'undefined' + || tend == 'string' || tend == 'undefined') { + return end || start; + } + return { + from: from, + delta: { + red: Math.round((end.red - start.red) * damper), + green: Math.round((end.green - start.green) * damper), + blue: Math.round((end.blue - start.blue) * damper) + } + }; + }, + + get: function(start, end, damper, initialFrom) { + var ln = start.length, + out = [], + i, initial; + for (i = 0; i < ln; i++) { + if (initialFrom) { + initial = initialFrom[i][1].from; + } + out.push([start[i][0], this.computeDelta(start[i][1], end, damper, initial)]); + } + return out; + }, + + set: function(values, easing) { + var ln = values.length, + out = [], + i, val, parsedString, from, delta; + for (i = 0; i < ln; i++) { + val = values[i][1]; + if (val) { + from = val.from; + delta = val.delta; + + val = (typeof val == 'object' && 'red' in val)? + 'rgb(' + val.red + ', ' + val.green + ', ' + val.blue + ')' : val; + val = (typeof val == 'object' && val.length)? val[0] : val; + if (typeof val == 'undefined') { + return []; + } + parsedString = typeof val == 'string'? val : + 'rgb(' + [ + (from.red + Math.round(delta.red * easing)) % 256, + (from.green + Math.round(delta.green * easing)) % 256, + (from.blue + Math.round(delta.blue * easing)) % 256 + ].join(',') + ')'; + out.push([ + values[i][0], + parsedString + ]); + } + } + return out; + } + }, + object: { + interpolate: function(prop, damper) { + damper = (typeof damper == 'number') ? damper : 1; + var out = {}, + p; + for(p in prop) { + out[p] = parseFloat(prop[p]) * damper; + } + return out; + }, + + computeDelta: function(from, end, damper, initial) { + from = this.interpolate(from); + end = this.interpolate(end, damper); + var start = initial ? initial : from, + delta = {}, + p; + + for(p in end) { + delta[p] = end[p] - start[p]; + } + return { + from: from, + delta: delta + }; + }, + + get: function(start, end, damper, initialFrom) { + var ln = start.length, + out = [], + i, initial; + for (i = 0; i < ln; i++) { + if (initialFrom) { + initial = initialFrom[i][1].from; + } + out.push([start[i][0], this.computeDelta(start[i][1], end, damper, initial)]); + } + return out; + }, + + set: function(values, easing) { + var ln = values.length, + out = [], + outObject = {}, + i, from, delta, val, p; + for (i = 0; i < ln; i++) { + val = values[i][1]; + from = val.from; + delta = val.delta; + for (p in from) { + outObject[p] = from[p] + delta[p] * easing; + } + out.push([ + values[i][0], + outObject + ]); + } + return out; + } + }, + + path: { + computeDelta: function(from, end, damper, initial) { + damper = (typeof damper == 'number') ? damper : 1; + var start; + from = +from || 0; + end = +end || 0; + start = (initial != null) ? initial : from; + return { + from: from, + delta: (end - start) * damper + }; + }, + + forcePath: function(path) { + if (!Ext.isArray(path) && !Ext.isArray(path[0])) { + path = Ext.draw.Draw.parsePathString(path); + } + return path; + }, + + get: function(start, end, damper, initialFrom) { + var endPath = this.forcePath(end), + out = [], + startLn = start.length, + startPathLn, pointsLn, i, deltaPath, initial, j, k, path, startPath; + for (i = 0; i < startLn; i++) { + startPath = this.forcePath(start[i][1]); + + deltaPath = Ext.draw.Draw.interpolatePaths(startPath, endPath); + startPath = deltaPath[0]; + endPath = deltaPath[1]; + + startPathLn = startPath.length; + path = []; + for (j = 0; j < startPathLn; j++) { + deltaPath = [startPath[j][0]]; + pointsLn = startPath[j].length; + for (k = 1; k < pointsLn; k++) { + initial = initialFrom && initialFrom[0][1][j][k].from; + deltaPath.push(this.computeDelta(startPath[j][k], endPath[j][k], damper, initial)); + } + path.push(deltaPath); + } + out.push([start[i][0], path]); + } + return out; + }, + + set: function(values, easing) { + var ln = values.length, + out = [], + i, j, k, newPath, calcPath, deltaPath, deltaPathLn, pointsLn; + for (i = 0; i < ln; i++) { + deltaPath = values[i][1]; + newPath = []; + deltaPathLn = deltaPath.length; + for (j = 0; j < deltaPathLn; j++) { + calcPath = [deltaPath[j][0]]; + pointsLn = deltaPath[j].length; + for (k = 1; k < pointsLn; k++) { + calcPath.push(deltaPath[j][k].from + deltaPath[j][k].delta * easing); + } + newPath.push(calcPath.join(',')); + } + out.push([values[i][0], newPath.join(',')]); + } + return out; + } + } + + } +}, function() { + + var props = [ + 'outlineColor', + 'backgroundColor', + 'borderColor', + 'borderTopColor', + 'borderRightColor', + 'borderBottomColor', + 'borderLeftColor', + 'fill', + 'stroke' + ], + length = props.length, + i = 0, + prop; + + for (; i= duration) { + elapsedTime = duration; + lastFrame = true; + } + if (me.reverse) { + elapsedTime = duration - elapsedTime; + } + + for (attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + values = attrs[attr]; + easing = lastFrame ? 1 : easingFn(elapsedTime / duration); + ret[attr] = propHandlers[attr].set(values, easing); + } + } + me.frameCount++; + + return ret; + }, + + + lastFrame: function() { + var me = this, + iter = me.iterations, + iterCount = me.currentIteration; + + iterCount++; + if (iterCount < iter) { + if (me.alternate) { + me.reverse = !me.reverse; + } + me.startTime = new Date(); + me.currentIteration = iterCount; + + me.paused = false; + } + else { + me.currentIteration = 0; + me.end(); + me.fireEvent('lastframe', me, me.startTime); + } + }, + + endWasCalled: 0, + + + end: function() { + if (this.endWasCalled++) { + return; + } + var me = this; + me.startTime = 0; + me.paused = false; + me.running = false; + Ext.fx.Manager.removeAnim(me); + me.fireEvent('afteranimate', me, me.startTime); + Ext.callback(me.callback, me.scope, [me, me.startTime]); + }, + + isReady: function() { + return this.paused === false && this.running === false && this.iterations > 0; + }, + + isRunning: function() { + return this.paused === false && this.running === true && this.isAnimator !== true; + } +}); + +Ext.enableFx = true; + + +Ext.define('Ext.util.Animate', { + + + + + + + + isAnimate: true, + + + animate: function(animObj) { + var me = this; + if (Ext.fx.Manager.hasFxBlock(me.id)) { + return me; + } + Ext.fx.Manager.queueFx(new Ext.fx.Anim(me.anim(animObj))); + return this; + }, + + + anim: function(config) { + if (!Ext.isObject(config)) { + return (config) ? {} : false; + } + + var me = this; + + if (config.stopAnimation) { + me.stopAnimation(); + } + + Ext.applyIf(config, Ext.fx.Manager.getFxDefaults(me.id)); + + return Ext.apply({ + target: me, + paused: true + }, config); + }, + + + stopFx: Ext.Function.alias(Ext.util.Animate, 'stopAnimation'), + + + stopAnimation: function() { + Ext.fx.Manager.stopAnimation(this.id); + return this; + }, + + + syncFx: function() { + Ext.fx.Manager.setFxDefaults(this.id, { + concurrent: true + }); + return this; + }, + + + sequenceFx: function() { + Ext.fx.Manager.setFxDefaults(this.id, { + concurrent: false + }); + return this; + }, + + + hasActiveFx: Ext.Function.alias(Ext.util.Animate, 'getActiveAnimation'), + + + getActiveAnimation: function() { + return Ext.fx.Manager.getActiveAnimation(this.id); + } +}, function(){ + + Ext.applyIf(Ext.Element.prototype, this.prototype); + + Ext.CompositeElementLite.importElementMethods(); +}); + + +Ext.define('Ext.util.ElementContainer', { + + childEls: [ + + + + + ], + + constructor: function () { + var me = this, + childEls; + + + + if (me.hasOwnProperty('childEls')) { + childEls = me.childEls; + delete me.childEls; + + me.addChildEls.apply(me, childEls); + } + }, + + destroy: function () { + var me = this, + childEls = me.getChildEls(), + child, childName, i, k; + + for (i = childEls.length; i--; ) { + childName = childEls[i]; + if (typeof childName != 'string') { + childName = childName.name; + } + + child = me[childName]; + if (child) { + me[childName] = null; + child.remove(); + } + } + }, + + + addChildEls: function () { + var me = this, + args = arguments; + + if (me.hasOwnProperty('childEls')) { + me.childEls.push.apply(me.childEls, args); + } else { + me.childEls = me.getChildEls().concat(Array.prototype.slice.call(args)); + } + + me.prune(me.childEls, false); + }, + + + applyChildEls: function(el, id) { + var me = this, + childEls = me.getChildEls(), + baseId, childName, i, selector, value; + + baseId = (id || me.id) + '-'; + for (i = childEls.length; i--; ) { + childName = childEls[i]; + + if (typeof childName == 'string') { + + + value = el.getById(baseId + childName); + } else { + if ((selector = childName.select)) { + value = Ext.select(selector, true, el.dom); + } else if ((selector = childName.selectNode)) { + value = Ext.get(Ext.DomQuery.selectNode(selector, el.dom)); + } else { + + value = el.getById(childName.id || (baseId + childName.itemId)); + } + + childName = childName.name; + } + + me[childName] = value; + } + }, + + getChildEls: function () { + var me = this, + self; + + + if (me.hasOwnProperty('childEls')) { + return me.childEls; + } + + + + self = me.self; + return self.$childEls || me.getClassChildEls(self); + }, + + getClassChildEls: function (cls) { + var me = this, + result = cls.$childEls, + childEls, i, length, forked, mixin, mixins, name, parts, proto, supr, superMixins; + + if (!result) { + + + + + supr = cls.superclass; + if (supr) { + supr = supr.self; + parts = [supr.$childEls || me.getClassChildEls(supr)]; + superMixins = supr.prototype.mixins || {}; + } else { + parts = []; + superMixins = {}; + } + + proto = cls.prototype; + mixins = proto.mixins; + for (name in mixins) { + if (mixins.hasOwnProperty(name) && !superMixins.hasOwnProperty(name)) { + mixin = mixins[name].self; + parts.push(mixin.$childEls || me.getClassChildEls(mixin)); + } + } + + parts.push(proto.hasOwnProperty('childEls') && proto.childEls); + + for (i = 0, length = parts.length; i < length; ++i) { + childEls = parts[i]; + if (childEls && childEls.length) { + if (!result) { + result = childEls; + } else { + if (!forked) { + forked = true; + result = result.slice(0); + } + result.push.apply(result, childEls); + } + } + } + + cls.$childEls = result = (result ? me.prune(result, !forked) : []); + } + + return result; + }, + + prune: function (childEls, shared) { + var index = childEls.length, + map = {}, + name; + + while (index--) { + name = childEls[index]; + if (typeof name != 'string') { + name = name.name; + } + + if (!map[name]) { + map[name] = 1; + } else { + if (shared) { + shared = false; + childEls = childEls.slice(0); + } + Ext.Array.erase(childEls, index, 1); + } + } + + return childEls; + }, + + + removeChildEls: function (testFn) { + var me = this, + old = me.getChildEls(), + keepers = (me.childEls = []), + n, i, cel; + + for (i = 0, n = old.length; i < n; ++i) { + cel = old[i]; + if (!testFn(cel)) { + keepers.push(cel); + } + } + } +}); + + +Ext.define('Ext.util.Renderable', { + + + + + frameCls: Ext.baseCSSPrefix + 'frame', + + frameIdRegex: /[\-]frame\d+[TMB][LCR]$/, + + frameElNames: ['TL','TC','TR','ML','MC','MR','BL','BC','BR'], + + frameTpl: [ + '{%this.renderDockedItems(out,values,0);%}', + '', + '
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation">
', + '
', + '
', + '
', + '
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">', + '{%this.applyRenderTpl(out, values)%}', + '
', + '
', + '
', + '', + '
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">', + '
{parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation">
', + '
', + '
', + '
', + '{%this.renderDockedItems(out,values,1);%}' + ], + + frameTableTpl: [ + '{%this.renderDockedItems(out,values,0);%}', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '
{parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">', + '{%this.applyRenderTpl(out, values)%}', + ' {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">
{parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">
', + '{%this.renderDockedItems(out,values,1);%}' + ], + + + afterRender : function() { + var me = this, + data = {}, + protoEl = me.protoEl, + target = me.el, + item, pre, hide, contentEl; + + me.finishRenderChildren(); + + + + if (me.contentEl) { + pre = Ext.baseCSSPrefix; + hide = pre + 'hide-'; + contentEl = Ext.get(me.contentEl); + contentEl.removeCls([pre+'hidden', hide+'display', hide+'offsets', hide+'nosize']); + me.getContentTarget().appendChild(contentEl.dom); + } + + protoEl.writeTo(data); + + + + + item = data.removed; + if (item) { + target.removeCls(item); + } + + item = data.cls; + if (item.length) { + target.addCls(item); + } + + item = data.style; + if (data.style) { + target.setStyle(item); + } + + me.protoEl = null; + + + if (!me.ownerCt) { + me.updateLayout(); + } + }, + + afterFirstLayout : function(width, height) { + var me = this, + x = me.x, + y = me.y, + hasX, + hasY, + pos, xy; + + + + if (!me.ownerLayout) { + hasX = Ext.isDefined(x); + hasY = Ext.isDefined(y); + } + + + + if (me.floating && (!hasX || !hasY)) { + if (me.floatParent) { + pos = me.floatParent.getTargetEl().getViewRegion(); + xy = me.el.getAlignToXY(me.floatParent.getTargetEl(), 'c-c'); + pos.x = xy[0] - pos.x; + pos.y = xy[1] - pos.y; + } else { + xy = me.el.getAlignToXY(me.container, 'c-c'); + pos = me.container.translateXY(xy[0], xy[1]); + } + x = hasX ? x : pos.x; + y = hasY ? y : pos.y; + hasX = hasY = true; + } + + if (hasX || hasY) { + me.setPosition(x, y); + } + me.onBoxReady(width, height); + }, + + + applyRenderSelectors: function() { + var me = this, + selectors = me.renderSelectors, + el = me.el, + dom = el.dom, + selector; + + me.applyChildEls(el); + + + + + if (selectors) { + for (selector in selectors) { + if (selectors.hasOwnProperty(selector) && selectors[selector]) { + me[selector] = Ext.get(Ext.DomQuery.selectNode(selectors[selector], dom)); + } + } + } + }, + + beforeRender: function () { + var me = this, + target = me.getTargetEl(), + overflowEl = me.getOverflowEl(), + layout = me.getComponentLayout(), + + overflowStyle = me.getOverflowStyle(); + + + me.frame = me.frame || me.alwaysFramed; + + if (!layout.initialized) { + layout.initLayout(); + } + + + + if (overflowEl) { + overflowEl.setStyle(overflowStyle); + me.overflowStyleSet = true; + } + + me.setUI(me.ui); + + if (me.disabled) { + + me.disable(true); + } + }, + + + doApplyRenderTpl: function(out, values) { + + + + var me = values.$comp, + tpl; + + + if (!me.rendered) { + tpl = me.initRenderTpl(); + tpl.applyOut(values.renderData, out); + } + }, + + + doAutoRender: function() { + var me = this; + if (!me.rendered) { + if (me.floating) { + me.render(document.body); + } else { + me.render(Ext.isBoolean(me.autoRender) ? Ext.getBody() : me.autoRender); + } + } + }, + + doRenderContent: function (out, renderData) { + + + + var me = renderData.$comp; + + if (me.html) { + Ext.DomHelper.generateMarkup(me.html, out); + delete me.html; + } + + if (me.tpl) { + + if (!me.tpl.isTemplate) { + me.tpl = new Ext.XTemplate(me.tpl); + } + + if (me.data) { + + me.tpl.applyOut(me.data, out); + delete me.data; + } + } + }, + + doRenderFramingDockedItems: function (out, renderData, after) { + + + + var me = renderData.$comp; + + + + if (!me.rendered && me.doRenderDockedItems) { + + + renderData.renderData.$skipDockedItems = true; + + + + me.doRenderDockedItems.call(this, out, renderData, after); + } + }, + + + finishRender: function(containerIdx) { + var me = this, + tpl, data, el; + + + + + + + + + + if (!me.el || me.$pid) { + if (me.container) { + el = me.container.getById(me.id, true); + } else { + el = Ext.getDom(me.id); + } + + if (!me.el) { + + me.wrapPrimaryEl(el); + } else { + + + delete me.$pid; + + if (!me.el.dom) { + + me.wrapPrimaryEl(me.el); + } + el.parentNode.insertBefore(me.el.dom, el); + Ext.removeNode(el); + + } + } else if (!me.rendering) { + + + + tpl = me.initRenderTpl(); + if (tpl) { + data = me.initRenderData(); + tpl.insertFirst(me.getTargetEl(), data); + } + } + + + if (!me.container) { + + me.container = Ext.get(me.el.dom.parentNode); + } + + if (me.ctCls) { + me.container.addCls(me.ctCls); + } + + + me.onRender(me.container, containerIdx); + + + if (!me.overflowStyleSet) { + me.getOverflowEl().setStyle(me.getOverflowStyle()); + } + + + + me.el.setVisibilityMode(Ext.Element[me.hideMode.toUpperCase()]); + + if (me.overCls) { + me.el.hover(me.addOverCls, me.removeOverCls, me); + } + + if (me.hasListeners.render) { + me.fireEvent('render', me); + } + + me.afterRender(); + if (me.hasListeners.afterrender) { + me.fireEvent('afterrender', me); + } + me.initEvents(); + + if (me.hidden) { + + + + me.el.hide(); + } + }, + + finishRenderChildren: function () { + var layout = this.getComponentLayout(); + + layout.finishRender(); + }, + + getElConfig : function() { + var me = this, + autoEl = me.autoEl, + frameInfo = me.getFrameInfo(), + config = { + tag: 'div', + tpl: frameInfo ? me.initFramingTpl(frameInfo.table) : me.initRenderTpl() + }, + protoEl = me.protoEl, + i, frameElNames, len, suffix, frameGenId, frameData; + + me.initStyles(protoEl); + protoEl.writeTo(config); + protoEl.flush(); + + if (Ext.isString(autoEl)) { + config.tag = autoEl; + } else { + Ext.apply(config, autoEl); + } + + + config.id = me.id; + + if (config.tpl) { + + if (frameInfo) { + frameElNames = me.frameElNames; + len = frameElNames.length; + + config.tplData = frameData = me.getFrameRenderData(); + frameData.renderData = me.initRenderData(); + frameGenId = frameData.fgid; + + + for (i = 0; i < len; i++) { + suffix = frameElNames[i]; + me.addChildEls({ name: 'frame' + suffix, id: frameGenId + suffix }); + } + + + me.addChildEls({ + name: 'frameBody', + id: frameGenId + 'MC' + }); + } else { + config.tplData = me.initRenderData(); + } + } + + return config; + }, + + + + initFramingTpl: function(table) { + var tpl = this.getFrameTpl(table); + + if (tpl && !tpl.applyRenderTpl) { + this.setupFramingTpl(tpl); + } + + return tpl; + }, + + + setupFramingTpl: function(frameTpl) { + frameTpl.applyRenderTpl = this.doApplyRenderTpl; + frameTpl.renderDockedItems = this.doRenderFramingDockedItems; + }, + + + getInsertPosition: function(position) { + + if (position !== undefined) { + if (Ext.isNumber(position)) { + position = this.container.dom.childNodes[position]; + } + else { + position = Ext.getDom(position); + } + } + + return position; + }, + + getRenderTree: function() { + var me = this; + + if (!me.hasListeners.beforerender || me.fireEvent('beforerender', me) !== false) { + me.beforeRender(); + + + + me.rendering = true; + + if (me.el) { + + + + return { + tag: 'div', + id: (me.$pid = Ext.id()) + }; + } + + return me.getElConfig(); + } + + return null; + }, + + initContainer: function(container) { + var me = this; + + + + + if (!container && me.el) { + container = me.el.dom.parentNode; + me.allowDomMove = false; + } + me.container = container.dom ? container : Ext.get(container); + + return me.container; + }, + + + initRenderData: function() { + var me = this; + + return Ext.apply({ + $comp: me, + id: me.id, + ui: me.ui, + uiCls: me.uiCls, + baseCls: me.baseCls, + componentCls: me.componentCls, + frame: me.frame, + childElCls: '' + }, me.renderData); + }, + + + initRenderTpl: function() { + var tpl = this.getTpl('renderTpl'); + + if (tpl && !tpl.renderContent) { + this.setupRenderTpl(tpl); + } + + return tpl; + }, + + + onRender: function(parentNode, containerIdx) { + var me = this, + x = me.x, + y = me.y, + lastBox = null, + width, height, + el = me.el; + + me.applyRenderSelectors(); + + + + me.rendering = null; + + me.rendered = true; + + + if (x != null) { + lastBox = {x:x}; + } + if (y != null) { + (lastBox = lastBox || {}).y = y; + } + + + + if (!me.getFrameInfo() && Ext.isBorderBox) { + width = me.width; + height = me.height; + + if (typeof width === 'number') { + lastBox = lastBox || {}; + lastBox.width = width; + } + if (typeof height === 'number') { + lastBox = lastBox || {}; + lastBox.height = height; + } + } + + me.lastBox = el.lastBox = lastBox; + }, + + + render: function(container, position) { + var me = this, + el = me.el && (me.el = Ext.get(me.el)), + vetoed, + tree, + nextSibling; + + Ext.suspendLayouts(); + + container = me.initContainer(container); + + nextSibling = me.getInsertPosition(position); + + if (!el) { + tree = me.getRenderTree(); + if (me.ownerLayout && me.ownerLayout.transformItemRenderTree) { + tree = me.ownerLayout.transformItemRenderTree(tree); + } + + + if (tree) { + if (nextSibling) { + el = Ext.DomHelper.insertBefore(nextSibling, tree); + } else { + el = Ext.DomHelper.append(container, tree); + } + + me.wrapPrimaryEl(el); + } + } else { + if (!me.hasListeners.beforerender || me.fireEvent('beforerender', me) !== false) { + me.beforeRender(); + + me.initStyles(el); + if (me.allowDomMove !== false) { + if (nextSibling) { + container.dom.insertBefore(el.dom, nextSibling); + } else { + container.dom.appendChild(el.dom); + } + } + } else { + vetoed = true; + } + } + + if (el && !vetoed) { + me.finishRender(position); + } + + Ext.resumeLayouts(!me.hidden && !container.isDetachedBody); + }, + + + ensureAttachedToBody: function (runLayout) { + var comp = this, + body; + + while (comp.ownerCt) { + comp = comp.ownerCt; + } + + if (comp.container.isDetachedBody) { + comp.container = body = Ext.getBody(); + body.appendChild(comp.el.dom); + if (runLayout) { + comp.updateLayout(); + } + if (typeof comp.x == 'number' || typeof comp.y == 'number') { + comp.setPosition(comp.x, comp.y); + } + } + }, + + setupRenderTpl: function (renderTpl) { + renderTpl.renderBody = renderTpl.renderContent = this.doRenderContent; + }, + + wrapPrimaryEl: function (dom) { + this.el = Ext.get(dom, true); + }, + + + initFrame : function() { + if (Ext.supports.CSS3BorderRadius || !this.frame) { + return; + } + + var me = this, + frameInfo = me.getFrameInfo(), + frameTpl, frameGenId, + frameElNames = me.frameElNames, + len = frameElNames.length, + i, frameData, suffix; + + if (frameInfo) { + frameTpl = me.getFrameTpl(frameInfo.table); + frameData = me.getFrameRenderData(); + frameGenId = frameData.fgid; + + + + frameTpl.insertFirst(me.el, frameData); + + + + me.frameBody = me.el.down('.' + me.frameCls + '-mc'); + + + me.removeChildEls(function (c) { + return c.id && me.frameIdRegex.test(c.id); + }); + + + for (i = 0; i < len; i++) { + suffix = frameElNames[i]; + me['frame' + suffix] = me.el.getById(frameGenId + suffix); + } + } + }, + + getFrameRenderData: function () { + var me = this, + + frameInfo = me.frameSize, + frameGenId = (me.frameGenId || 0) + 1; + + + + me.frameGenId = frameGenId; + + return { + $comp: me, + fgid: me.id + '-frame' + frameGenId, + ui: me.ui, + uiCls: me.uiCls, + frameCls: me.frameCls, + baseCls: me.baseCls, + top: !!frameInfo.top, + left: !!frameInfo.left, + right: !!frameInfo.right, + bottom: !!frameInfo.bottom, + + + frameElCls: '' + }; + }, + + updateFrame: function() { + if (Ext.supports.CSS3BorderRadius || !this.frame) { + return; + } + + var me = this, + wasTable = me.frameSize && me.frameSize.table, + oldFrameTL = me.frameTL, + oldFrameBL = me.frameBL, + oldFrameML = me.frameML, + oldFrameMC = me.frameMC, + newMCClassName; + + me.initFrame(); + + if (oldFrameMC) { + if (me.frame) { + + + newMCClassName = me.frameMC.dom.className; + + + + oldFrameMC.insertAfter(me.frameMC); + me.frameMC.remove(); + + + me.frameBody = me.frameMC = oldFrameMC; + + + oldFrameMC.dom.className = newMCClassName; + + + if (wasTable) { + me.el.query('> table')[1].remove(); + } + else { + if (oldFrameTL) { + oldFrameTL.remove(); + } + if (oldFrameBL) { + oldFrameBL.remove(); + } + if (oldFrameML) { + oldFrameML.remove(); + } + } + } + } + else if (me.frame) { + me.applyRenderSelectors(); + } + }, + + + getFrameInfo: function() { + + if (Ext.supports.CSS3BorderRadius || !this.frame) { + return false; + } + + var me = this, + frameInfoCache = me.frameInfoCache, + cls = me.getFramingInfoCls() + '-frameInfo', + frameInfo = frameInfoCache[cls], + max = Math.max, + styleEl, match, info, frameTop, frameRight, frameBottom, frameLeft, + borderWidthT, borderWidthR, borderWidthB, borderWidthL, + paddingT, paddingR, paddingB, paddingL, + borderRadiusTL, borderRadiusTR, borderRadiusBR, borderRadiusBL; + + if (frameInfo == null) { + + styleEl = Ext.fly(me.getStyleProxy(cls), 'frame-style-el'); + info = styleEl.getStyle('font-family'); + + if (info) { + + + + + + + + + + + + + + + + + + info = info.split('-'); + + borderRadiusTL = parseInt(info[1], 10); + borderRadiusTR = parseInt(info[2], 10); + borderRadiusBR = parseInt(info[3], 10); + borderRadiusBL = parseInt(info[4], 10); + borderWidthT = parseInt(info[5], 10); + borderWidthR = parseInt(info[6], 10); + borderWidthB = parseInt(info[7], 10); + borderWidthL = parseInt(info[8], 10); + paddingT = parseInt(info[9], 10); + paddingR = parseInt(info[10], 10); + paddingB = parseInt(info[11], 10); + paddingL = parseInt(info[12], 10); + + + + frameTop = max(borderWidthT, max(borderRadiusTL, borderRadiusTR)); + frameRight = max(borderWidthR, max(borderRadiusTR, borderRadiusBR)); + frameBottom = max(borderWidthB, max(borderRadiusBL, borderRadiusBR)); + frameLeft = max(borderWidthL, max(borderRadiusTL, borderRadiusBL)); + + frameInfo = { + table: info[0].charAt(0) === 't', + vertical: info[0].charAt(1) === 'v', + + top: frameTop, + right: frameRight, + bottom: frameBottom, + left: frameLeft, + + width: frameLeft + frameRight, + height: frameTop + frameBottom, + + maxWidth: max(frameTop, frameRight, frameBottom, frameLeft), + + border: { + top: borderWidthT, + right: borderWidthR, + bottom: borderWidthB, + left: borderWidthL, + width: borderWidthL + borderWidthR, + height: borderWidthT + borderWidthB + }, + padding: { + top: paddingT, + right: paddingR, + bottom: paddingB, + left: paddingL, + width: paddingL + paddingR, + height: paddingT + paddingB + }, + radius: { + tl: borderRadiusTL, + tr: borderRadiusTR, + br: borderRadiusBR, + bl: borderRadiusBL + } + }; + } else { + frameInfo = false; + } + + + frameInfoCache[cls] = frameInfo; + } + + me.frame = !!frameInfo; + me.frameSize = frameInfo; + + return frameInfo; + }, + + getFramingInfoCls: function(){ + return this.baseCls + '-' + this.ui; + }, + + + getStyleProxy: function(cls) { + var result = this.styleProxyEl || (Ext.AbstractComponent.prototype.styleProxyEl = Ext.getBody().createChild({ + style: { + position: 'absolute', + top: '-10000px' + } + }, null, true)); + + result.className = cls; + return result; + }, + + + getFrameTpl : function(table) { + return this.getTpl(table ? 'frameTableTpl' : 'frameTpl'); + }, + + + frameInfoCache: {} +}); + + +Ext.define('Ext.state.Provider', { + mixins: { + observable: Ext.util.Observable + }, + + + prefix: 'ext-', + + constructor : function(config){ + config = config || {}; + var me = this; + Ext.apply(me, config); + + me.addEvents("statechange"); + me.state = {}; + me.mixins.observable.constructor.call(me); + }, + + + get : function(name, defaultValue){ + return typeof this.state[name] == "undefined" ? + defaultValue : this.state[name]; + }, + + + clear : function(name){ + var me = this; + delete me.state[name]; + me.fireEvent("statechange", me, name, null); + }, + + + set : function(name, value){ + var me = this; + me.state[name] = value; + me.fireEvent("statechange", me, name, value); + }, + + + decodeValue : function(value){ + + + + + + + + + + var me = this, + re = /^(a|n|d|b|s|o|e)\:(.*)$/, + matches = re.exec(unescape(value)), + all, + type, + keyValue, + values, + vLen, + v; + + if(!matches || !matches[1]){ + return; + } + + type = matches[1]; + value = matches[2]; + switch (type) { + case 'e': + return null; + case 'n': + return parseFloat(value); + case 'd': + return new Date(Date.parse(value)); + case 'b': + return (value == '1'); + case 'a': + all = []; + if(value != ''){ + values = value.split('^'); + vLen = values.length; + + for (v = 0; v < vLen; v++) { + value = values[v]; + all.push(me.decodeValue(value)); + } + } + return all; + case 'o': + all = {}; + if(value != ''){ + values = value.split('^'); + vLen = values.length; + + for (v = 0; v < vLen; v++) { + value = values[v]; + keyValue = value.split('='); + all[keyValue[0]] = me.decodeValue(keyValue[1]); + } + } + return all; + default: + return value; + } + }, + + + encodeValue : function(value){ + var flat = '', + i = 0, + enc, + len, + key; + + if (value == null) { + return 'e:1'; + } else if(typeof value == 'number') { + enc = 'n:' + value; + } else if(typeof value == 'boolean') { + enc = 'b:' + (value ? '1' : '0'); + } else if(Ext.isDate(value)) { + enc = 'd:' + value.toGMTString(); + } else if(Ext.isArray(value)) { + for (len = value.length; i < len; i++) { + flat += this.encodeValue(value[i]); + if (i != len - 1) { + flat += '^'; + } + } + enc = 'a:' + flat; + } else if (typeof value == 'object') { + for (key in value) { + if (typeof value[key] != 'function' && value[key] !== undefined) { + flat += key + '=' + this.encodeValue(value[key]) + '^'; + } + } + enc = 'o:' + flat.substring(0, flat.length-1); + } else { + enc = 's:' + value; + } + return escape(enc); + } +}); + + +Ext.define('Ext.state.Manager', { + singleton: true, + + constructor: function() { + this.provider = new Ext.state.Provider(); + }, + + + + setProvider : function(stateProvider){ + this.provider = stateProvider; + }, + + + get : function(key, defaultValue){ + return this.provider.get(key, defaultValue); + }, + + + set : function(key, value){ + this.provider.set(key, value); + }, + + + clear : function(key){ + this.provider.clear(key); + }, + + + getProvider : function(){ + return this.provider; + } +}); + + +Ext.define('Ext.state.Stateful', { + + + + mixins: { + observable: Ext.util.Observable + }, + + + + + + + stateful: false, + + + + + + + saveDelay: 100, + + constructor: function(config) { + var me = this; + + config = config || {}; + if (config.stateful !== undefined) { + me.stateful = config.stateful; + } + if (config.saveDelay !== undefined) { + me.saveDelay = config.saveDelay; + } + me.stateId = me.stateId || config.stateId; + + if (!me.stateEvents) { + me.stateEvents = []; + } + if (config.stateEvents) { + me.stateEvents.concat(config.stateEvents); + } + this.addEvents( + + 'beforestaterestore', + + + 'staterestore', + + + 'beforestatesave', + + + 'statesave' + ); + me.mixins.observable.constructor.call(me); + + if (me.stateful !== false) { + me.addStateEvents(me.stateEvents); + me.initState(); + } + }, + + + addStateEvents: function (events) { + var me = this, + i, event, stateEventsByName; + + if (me.stateful && me.getStateId()) { + if (typeof events == 'string') { + events = Array.prototype.slice.call(arguments, 0); + } + + stateEventsByName = me.stateEventsByName || (me.stateEventsByName = {}); + + for (i = events.length; i--; ) { + event = events[i]; + + if (!stateEventsByName[event]) { + stateEventsByName[event] = 1; + me.on(event, me.onStateChange, me); + } + } + } + }, + + + onStateChange: function(){ + var me = this, + delay = me.saveDelay, + statics, runner; + + if (!me.stateful) { + return; + } + + if (delay) { + if (!me.stateTask) { + statics = Ext.state.Stateful; + runner = statics.runner || (statics.runner = new Ext.util.TaskRunner()); + + me.stateTask = runner.newTask({ + run: me.saveState, + scope: me, + interval: delay, + repeat: 1 + }); + } + + me.stateTask.start(); + } else { + me.saveState(); + } + }, + + + saveState: function() { + var me = this, + id = me.stateful && me.getStateId(), + hasListeners = me.hasListeners, + state; + + if (id) { + state = me.getState() || {}; + if (!hasListeners.beforestatesave || me.fireEvent('beforestatesave', me, state) !== false) { + Ext.state.Manager.set(id, state); + if (hasListeners.statesave) { + me.fireEvent('statesave', me, state); + } + } + } + }, + + + getState: function(){ + return null; + }, + + + applyState: function(state) { + if (state) { + Ext.apply(this, state); + } + }, + + + getStateId: function() { + var me = this; + return me.stateId || (me.autoGenId ? null : me.id); + }, + + + initState: function(){ + var me = this, + id = me.stateful && me.getStateId(), + hasListeners = me.hasListeners, + state; + + if (id) { + state = Ext.state.Manager.get(id); + if (state) { + state = Ext.apply({}, state); + if (!hasListeners.beforestaterestore || me.fireEvent('beforestaterestore', me, state) !== false) { + me.applyState(state); + if (hasListeners.staterestore) { + me.fireEvent('staterestore', me, state); + } + } + } + } + }, + + + savePropToState: function (propName, state, stateName) { + var me = this, + value = me[propName], + config = me.initialConfig; + + if (me.hasOwnProperty(propName)) { + if (!config || config[propName] !== value) { + if (state) { + state[stateName || propName] = value; + } + return true; + } + } + return false; + }, + + + savePropsToState: function (propNames, state) { + var me = this, + i, n; + + if (typeof propNames == 'string') { + me.savePropToState(propNames, state); + } else { + for (i = 0, n = propNames.length; i < n; ++i) { + me.savePropToState(propNames[i], state); + } + } + + return state; + }, + + + destroy: function(){ + var me = this, + task = me.stateTask; + + if (task) { + task.destroy(); + me.stateTask = null; + } + + me.clearListeners(); + } +}); + + + +Ext.define('Ext.AbstractComponent', { + + + + + + + + + + + mixins: { + positionable: Ext.util.Positionable , + observable: Ext.util.Observable , + animate: Ext.util.Animate , + elementCt: Ext.util.ElementContainer , + renderable: Ext.util.Renderable , + state: Ext.state.Stateful + }, + + + + + + + + + + + + + + + + + + statics: { + AUTO_ID: 1000, + + pendingLayouts: null, + + layoutSuspendCount: 0, + + + cancelLayout: function(comp, isDestroying) { + var context = this.runningLayoutContext || this.pendingLayouts; + + if (context) { + context.cancelComponent(comp, false, isDestroying); + } + }, + + + flushLayouts: function () { + var me = this, + context = me.pendingLayouts; + + if (context && context.invalidQueue.length) { + me.pendingLayouts = null; + me.runningLayoutContext = context; + + Ext.override(context, { + runComplete: function () { + + + + me.runningLayoutContext = null; + + var result = this.callParent(); + if (Ext.globalEvents.hasListeners.afterlayout) { + Ext.globalEvents.fireEvent('afterlayout'); + } + return result; + } + }); + + context.run(); + } + }, + + + resumeLayouts: function (flush) { + if (this.layoutSuspendCount && ! --this.layoutSuspendCount) { + if (flush) { + this.flushLayouts(); + } + if (Ext.globalEvents.hasListeners.resumelayouts) { + Ext.globalEvents.fireEvent('resumelayouts'); + } + } + }, + + + suspendLayouts: function () { + ++this.layoutSuspendCount; + }, + + + updateLayout: function (comp, defer) { + var me = this, + running = me.runningLayoutContext, + pending; + + if (running) { + running.queueInvalidate(comp); + } else { + pending = me.pendingLayouts || (me.pendingLayouts = new Ext.layout.Context()); + pending.queueInvalidate(comp); + + if (!defer && !me.layoutSuspendCount && !comp.isLayoutSuspended()) { + me.flushLayouts(); + } + } + } + }, + + + + + isComponent: true, + + + getAutoId: function() { + this.autoGenId = true; + return ++Ext.AbstractComponent.AUTO_ID; + }, + + deferLayouts: false, + + + + + autoGenId: false, + + + + + + + + + renderTpl: '{%this.renderContent(out,values)%}', + + + + + + + + + + + + + frameSize: null, + + + + + + + + + + + tplWriteMode: 'overwrite', + + + baseCls: Ext.baseCSSPrefix + 'component', + + + + + + + + + disabledCls: Ext.baseCSSPrefix + 'item-disabled', + + + ui: 'default', + + + uiCls: [], + + + + + + + + + + + + + + + hidden: false, + + + disabled: false, + + + + + draggable: false, + + + floating: false, + + + hideMode: 'display', + + + + + + + + + + + + + + + + autoShow: false, + + + autoRender: false, + + + allowDomMove: true, + + + + + rendered: false, + + + componentLayoutCounter: 0, + + + shrinkWrap: 2, + + weight: 0, + + + maskOnDisable: true, + + + _isLayoutRoot: false, + + + contentPaddingProperty: 'padding', + + horizontalPosProp: 'left', + + + borderBoxCls: Ext.baseCSSPrefix + 'border-box', + + + constructor : function(config) { + var me = this, + i, len, xhooks; + + if (config) { + Ext.apply(me, config); + + xhooks = me.xhooks; + if (xhooks) { + delete me.xhooks; + Ext.override(me, xhooks); + } + } else { + config = {}; + } + + me.initialConfig = config; + + me.mixins.elementCt.constructor.call(me); + + me.addEvents( + + 'beforeactivate', + + 'activate', + + 'beforedeactivate', + + 'deactivate', + + 'added', + + 'disable', + + 'enable', + + 'beforeshow', + + 'show', + + 'beforehide', + + 'hide', + + 'removed', + + 'beforerender', + + 'render', + + 'afterrender', + + 'boxready', + + 'beforedestroy', + + 'destroy', + + 'resize', + + 'move', + + 'focus', + + 'blur' + ); + + me.getId(); + + me.setupProtoEl(); + + + + if (me.cls) { + me.initialCls = me.cls; + me.protoEl.addCls(me.cls); + } + if (me.style) { + me.initialStyle = me.style; + me.protoEl.setStyle(me.style); + } + + me.renderData = me.renderData || {}; + me.renderSelectors = me.renderSelectors || {}; + + if (me.plugins) { + me.plugins = me.constructPlugins(); + } + + + if (!me.hasListeners) { + me.hasListeners = new me.HasListeners(); + } + + me.initComponent(); + + + Ext.ComponentManager.register(me); + + + me.mixins.observable.constructor.call(me); + me.mixins.state.constructor.call(me, config); + + + this.addStateEvents('resize'); + + + if (me.plugins) { + for (i = 0, len = me.plugins.length; i < len; i++) { + me.plugins[i] = me.initPlugin(me.plugins[i]); + } + } + + me.loader = me.getLoader(); + + if (me.renderTo) { + me.render(me.renderTo); + + + + } + + + + if (me.autoShow && !me.isContained) { + me.show(); + } + + }, + + initComponent: function () { + + + this.plugins = this.constructPlugins(); + + + + this.setSize(this.width, this.height); + }, + + + getState: function() { + var me = this, + state = null, + sizeModel = me.getSizeModel(); + + if (sizeModel.width.configured) { + state = me.addPropertyToState(state, 'width'); + } + if (sizeModel.height.configured) { + state = me.addPropertyToState(state, 'height'); + } + + return state; + }, + + + addPropertyToState: function (state, propName, value) { + var me = this, + len = arguments.length; + + + + if (len == 3 || me.hasOwnProperty(propName)) { + if (len < 3) { + value = me[propName]; + } + + + + if (value !== me.initialConfig[propName]) { + (state || (state = {}))[propName] = value; + } + } + + return state; + }, + + show: Ext.emptyFn, + + animate: function(animObj) { + var me = this, + hasToWidth, + hasToHeight, + toHeight, + toWidth, + to, + clearWidth, + clearHeight, + curWidth, w, curHeight, h, isExpanding, + wasConstrained, + wasConstrainedHeader, + passedCallback, + oldOverflow; + + animObj = animObj || {}; + to = animObj.to || {}; + + if (Ext.fx.Manager.hasFxBlock(me.id)) { + return me; + } + + hasToWidth = Ext.isDefined(to.width); + if (hasToWidth) { + toWidth = Ext.Number.constrain(to.width, me.minWidth, me.maxWidth); + } + + hasToHeight = Ext.isDefined(to.height); + if (hasToHeight) { + toHeight = Ext.Number.constrain(to.height, me.minHeight, me.maxHeight); + } + + + if (!animObj.dynamic && (hasToWidth || hasToHeight)) { + curWidth = (animObj.from ? animObj.from.width : undefined) || me.getWidth(); + w = curWidth; + curHeight = (animObj.from ? animObj.from.height : undefined) || me.getHeight(); + h = curHeight; + isExpanding = false; + + if (hasToHeight && toHeight > curHeight) { + h = toHeight; + isExpanding = true; + } + if (hasToWidth && toWidth > curWidth) { + w = toWidth; + isExpanding = true; + } + + + if (hasToHeight || hasToWidth) { + oldOverflow = me.el.getStyle('overtflow'); + if (oldOverflow !== 'hidden') { + me.el.setStyle('overflow', 'hidden'); + } + } + + + + + if (isExpanding) { + clearWidth = !Ext.isNumber(me.width); + clearHeight = !Ext.isNumber(me.height); + + + + + me.setSize(w, h); + me.el.setSize(curWidth, curHeight); + + if (clearWidth) { + delete me.width; + } + if (clearHeight) { + delete me.height; + } + } + if (hasToWidth) { + to.width = toWidth; + } + + if (hasToHeight) { + to.height = toHeight; + } + } + + + + wasConstrained = me.constrain; + wasConstrainedHeader = me.constrainHeader; + if (wasConstrained || wasConstrainedHeader) { + me.constrain = me.constrainHeader = false; + passedCallback = animObj.callback; + animObj.callback = function() { + me.constrain = wasConstrained; + me.constrainHeader = wasConstrainedHeader; + + if (passedCallback) { + passedCallback.call(animObj.scope||me, arguments); + } + if (oldOverflow !== 'hidden') { + me.el.setStyle('overflow', oldOverflow); + } + }; + } + return me.mixins.animate.animate.apply(me, arguments); + }, + + setHiddenState: function(hidden){ + var hierarchyState = this.getHierarchyState(); + + this.hidden = hidden; + if (hidden) { + hierarchyState.hidden = true; + } else { + delete hierarchyState.hidden; + } + }, + + onHide: function() { + + if (this.ownerLayout) { + this.updateLayout({ isRoot: false }); + } + }, + + onShow : function() { + this.updateLayout({ isRoot: false }); + }, + + + constructPlugin: function(plugin) { + var me = this; + + + if (typeof plugin == 'string') { + plugin = Ext.PluginManager.create({}, plugin, me); + } + + else { + plugin = Ext.PluginManager.create(plugin, null, me); + } + return plugin; + }, + + + constructPlugins: function() { + var me = this, + plugins = me.plugins, + result, i, len; + + if (plugins) { + result = []; + if (!Ext.isArray(plugins)) { + plugins = [ plugins ]; + } + for (i = 0, len = plugins.length; i < len; i++) { + + result[i] = me.constructPlugin(plugins[i]); + } + } + + me.pluginsInitialized = true; + return result; + }, + + + initPlugin : function(plugin) { + plugin.init(this); + + return plugin; + }, + + + + addPlugin: function(plugin) { + var me = this; + + plugin = me.constructPlugin(plugin); + if (me.plugins) { + me.plugins.push(plugin); + } else { + me.plugins = [ plugin ]; + } + if (me.pluginsInitialized) { + me.initPlugin(plugin); + } + return plugin; + }, + + removePlugin: function(plugin) { + Ext.Array.remove(this.plugins, plugin); + plugin.destroy(); + }, + + + findPlugin: function(ptype) { + var i, + plugins = this.plugins, + ln = plugins && plugins.length; + for (i = 0; i < ln; i++) { + if (plugins[i].ptype === ptype) { + return plugins[i]; + } + } + }, + + + getPlugin: function(pluginId) { + var i, + plugins = this.plugins, + ln = plugins && plugins.length; + for (i = 0; i < ln; i++) { + if (plugins[i].pluginId === pluginId) { + return plugins[i]; + } + } + }, + + + beforeLayout: Ext.emptyFn, + + + updateAria: Ext.emptyFn, + + + registerFloatingItem: function(cmp) { + var me = this; + if (!me.floatingDescendants) { + me.floatingDescendants = new Ext.ZIndexManager(me); + } + me.floatingDescendants.register(cmp); + }, + + unregisterFloatingItem: function(cmp) { + var me = this; + if (me.floatingDescendants) { + me.floatingDescendants.unregister(cmp); + } + }, + + layoutSuspendCount: 0, + + suspendLayouts: function () { + var me = this; + if (!me.rendered) { + return; + } + if (++me.layoutSuspendCount == 1) { + me.suspendLayout = true; + } + }, + + resumeLayouts: function (flushOptions) { + var me = this; + if (!me.rendered) { + return; + } + if (! --me.layoutSuspendCount) { + me.suspendLayout = false; + if (flushOptions && !me.isLayoutSuspended()) { + me.updateLayout(flushOptions); + } + } + }, + + setupProtoEl: function() { + var cls = this.initCls(); + + this.protoEl = new Ext.util.ProtoElement({ + cls: cls.join(' ') + }); + }, + + initCls: function() { + var me = this, + cls = [ me.baseCls, me.getComponentLayout().targetCls ]; + + if (Ext.isDefined(me.cmpCls)) { + if (Ext.isDefined(Ext.global.console)) { + Ext.global.console.warn('Ext.Component: cmpCls has been deprecated. Please use componentCls.'); + } + me.componentCls = me.cmpCls; + delete me.cmpCls; + } + + if (me.componentCls) { + cls.push(me.componentCls); + } else { + me.componentCls = me.baseCls; + } + + return cls; + }, + + + setUI: function(ui) { + var me = this, + uiCls = me.uiCls, + activeUI = me.activeUI, + classes; + + if (ui === activeUI) { + + return; + } + + + if (activeUI) { + classes = me.removeClsWithUI(uiCls, true); + + if (classes.length) { + me.removeCls(classes); + } + + + me.removeUIFromElement(); + } + else { + + me.uiCls = []; + } + + + me.ui = ui; + + + + me.activeUI = ui; + + + me.addUIToElement(); + + classes = me.addClsWithUI(uiCls, true); + + if (classes.length) { + me.addCls(classes); + } + + + + + if (me.rendered) { + me.updateLayout(); + } + }, + + + addClsWithUI: function(classes, skip) { + var me = this, + clsArray = [], + i = 0, + uiCls = me.uiCls = Ext.Array.clone(me.uiCls), + activeUI = me.activeUI, + length, + cls; + + if (typeof classes === "string") { + classes = (classes.indexOf(' ') < 0) ? [classes] : Ext.String.splitWords(classes); + } + + length = classes.length; + + for (; i < length; i++) { + cls = classes[i]; + + if (cls && !me.hasUICls(cls)) { + uiCls.push(cls); + + + if (activeUI) { + clsArray = clsArray.concat(me.addUIClsToElement(cls)); + } + } + } + + if (skip !== true && activeUI) { + me.addCls(clsArray); + } + + return clsArray; + }, + + + removeClsWithUI: function(classes, skip) { + var me = this, + clsArray = [], + i = 0, + extArray = Ext.Array, + remove = extArray.remove, + uiCls = me.uiCls = extArray.clone(me.uiCls), + activeUI = me.activeUI, + length, cls; + + if (typeof classes === "string") { + classes = (classes.indexOf(' ') < 0) ? [classes] : Ext.String.splitWords(classes); + } + + length = classes.length; + + for (i = 0; i < length; i++) { + cls = classes[i]; + + if (cls && me.hasUICls(cls)) { + remove(uiCls, cls); + + + if (activeUI) { + clsArray = clsArray.concat(me.removeUIClsFromElement(cls)); + } + } + } + + if (skip !== true && activeUI) { + me.removeCls(clsArray); + } + + return clsArray; + }, + + + hasUICls: function(cls) { + var me = this, + uiCls = me.uiCls || []; + + return Ext.Array.contains(uiCls, cls); + }, + + frameElementsArray: ['tl', 'tc', 'tr', 'ml', 'mc', 'mr', 'bl', 'bc', 'br'], + + + addUIClsToElement: function(cls) { + var me = this, + baseClsUi = me.baseCls + '-' + me.ui + '-' + cls, + result = [Ext.baseCSSPrefix + cls, me.baseCls + '-' + cls, baseClsUi], + frameElementsArray, frameElementsLength, i, el, frameElement; + + if (me.rendered && me.frame && !Ext.supports.CSS3BorderRadius) { + + frameElementsArray = me.frameElementsArray; + frameElementsLength = frameElementsArray.length; + + + for (i = 0; i < frameElementsLength; i++) { + frameElement = frameElementsArray[i]; + el = me['frame' + frameElement.toUpperCase()]; + + if (el) { + el.addCls(baseClsUi + '-' + frameElement); + } + } + } + + return result; + }, + + + removeUIClsFromElement: function(cls) { + var me = this, + baseClsUi = me.baseCls + '-' + me.ui + '-' + cls, + result = [Ext.baseCSSPrefix + cls, me.baseCls + '-' + cls, baseClsUi], + frameElementsArray, frameElementsLength, i, el, frameElement; + + if (me.rendered && me.frame && !Ext.supports.CSS3BorderRadius) { + + frameElementsArray = me.frameElementsArray; + frameElementsLength = frameElementsArray.length; + + + for (i = 0; i < frameElementsLength; i++) { + frameElement = frameElementsArray[i]; + el = me['frame' + frameElement.toUpperCase()]; + + if (el) { + el.removeCls(baseClsUi + '-' + frameElement); + } + } + } + + return result; + }, + + + addUIToElement: function() { + var me = this, + baseClsUI = me.baseCls + '-' + me.ui, + frameElementsArray, frameElementsLength, i, el, frameElement; + + me.addCls(baseClsUI); + + if (me.rendered && me.frame && !Ext.supports.CSS3BorderRadius) { + + frameElementsArray = me.frameElementsArray; + frameElementsLength = frameElementsArray.length; + + + for (i = 0; i < frameElementsLength; i++) { + frameElement = frameElementsArray[i]; + el = me['frame' + frameElement.toUpperCase()]; + + if (el) { + el.addCls(baseClsUI + '-' + frameElement); + } + } + } + }, + + + removeUIFromElement: function() { + var me = this, + baseClsUI = me.baseCls + '-' + me.ui, + frameElementsArray, frameElementsLength, i, el, frameElement; + + me.removeCls(baseClsUI); + + if (me.rendered && me.frame && !Ext.supports.CSS3BorderRadius) { + + frameElementsArray = me.frameElementsArray; + frameElementsLength = frameElementsArray.length; + + for (i = 0; i < frameElementsLength; i++) { + frameElement = frameElementsArray[i]; + el = me['frame' + frameElement.toUpperCase()]; + + if (el) { + el.removeCls(baseClsUI + '-' + frameElement); + } + } + } + }, + + + getTpl: function(name) { + return Ext.XTemplate.getTpl(this, name); + }, + + + initStyles: function(targetEl) { + var me = this, + Element = Ext.Element, + margin = me.margin, + border = me.border, + cls = me.cls, + style = me.style, + x = me.x, + y = me.y, + width, height; + + me.initPadding(targetEl); + + if (margin != null) { + targetEl.setStyle('margin', this.unitizeBox((margin === true) ? 5 : margin)); + } + + if (border != null) { + me.setBorder(border, targetEl); + } + + + + if (cls && cls != me.initialCls) { + targetEl.addCls(cls); + me.cls = me.initialCls = null; + } + if (style && style != me.initialStyle) { + targetEl.setStyle(style); + me.style = me.initialStyle = null; + } + + if (x != null) { + targetEl.setStyle(me.horizontalPosProp, (typeof x == 'number') ? (x + 'px') : x); + } + if (y != null) { + targetEl.setStyle('top', (typeof y == 'number') ? (y + 'px') : y); + } + + if (Ext.isBorderBox && (!me.ownerCt || me.floating)) { + targetEl.addCls(me.borderBoxCls); + } + + + + if (!me.getFrameInfo()) { + width = me.width; + height = me.height; + + + if (width != null) { + if (typeof width === 'number') { + if (Ext.isBorderBox) { + targetEl.setStyle('width', width + 'px'); + } + } else { + targetEl.setStyle('width', width); + } + } + if (height != null) { + if (typeof height === 'number') { + if (Ext.isBorderBox) { + targetEl.setStyle('height', height + 'px'); + } + } else { + targetEl.setStyle('height', height); + } + } + } + }, + + + initPadding: function(targetEl) { + var me = this, + padding = me.padding; + + if (padding != null) { + if (me.layout && me.layout.managePadding && me.contentPaddingProperty === 'padding') { + + + + + + targetEl.setStyle('padding', 0); + } else { + + + targetEl.setStyle('padding', this.unitizeBox((padding === true) ? 5 : padding)); + } + } + }, + + parseBox: function(box) { + return Ext.dom.Element.parseBox(box); + }, + + unitizeBox: function(box) { + return Ext.dom.Element.unitizeBox(box); + }, + + + setMargin: function(margin, preventLayout) { + var me = this; + + if (me.rendered) { + if (!margin && margin !== 0) { + margin = ''; + } else { + if (margin === true) { + margin = 5; + } + margin = this.unitizeBox(margin); + } + me.getTargetEl().setStyle('margin', margin); + if (!preventLayout) { + me.updateLayout(); + } + } else { + me.margin = margin; + } + }, + + + initEvents : function() { + var me = this, + afterRenderEvents = me.afterRenderEvents, + afterRenderEvent, el, property, index, len; + + if (afterRenderEvents) { + for (property in afterRenderEvents) { + el = me[property]; + + if (el && el.on) { + afterRenderEvent = afterRenderEvents[property]; + + for (index = 0, len = afterRenderEvent.length ; index < len ; ++index) { + me.mon(el, afterRenderEvent[index]); + } + } + } + } + + + + + me.addFocusListener(); + }, + + + addFocusListener: function() { + var me = this, + focusEl = me.getFocusEl(), + needsTabIndex; + + + + + + + + + + if (focusEl) { + + + if (focusEl.isComponent) { + return focusEl.addFocusListener(); + } + + + + + needsTabIndex = focusEl.needsTabIndex(); + if (!me.focusListenerAdded && (!needsTabIndex || Ext.FocusManager.enabled)) { + if (needsTabIndex) { + focusEl.dom.tabIndex = -1; + } + focusEl.on({ + focus: me.onFocus, + blur: me.onBlur, + scope: me + }); + me.focusListenerAdded = true; + } + } + }, + + + getFocusEl: Ext.emptyFn, + + isFocusable: function() { + var me = this, + focusEl; + if ((me.focusable !== false) && (focusEl = me.getFocusEl()) && me.rendered && !me.destroying && !me.isDestroyed && !me.disabled && me.isVisible(true)) { + + + + + return focusEl.isFocusable(true); + } + }, + + + beforeFocus: Ext.emptyFn, + + + onFocus: function(e) { + var me = this, + focusCls = me.focusCls, + focusEl = me.getFocusEl(); + + if (!me.disabled) { + me.beforeFocus(e); + if (focusCls && focusEl) { + focusEl.addCls(me.addClsWithUI(focusCls, true)); + } + if (!me.hasFocus) { + me.hasFocus = true; + me.fireEvent('focus', me, e); + } + } + }, + + + beforeBlur : Ext.emptyFn, + + + onBlur : function(e) { + var me = this, + focusCls = me.focusCls, + focusEl = me.getFocusEl(); + + if (me.destroying) { + return; + } + + me.beforeBlur(e); + if (focusCls && focusEl) { + focusEl.removeCls(me.removeClsWithUI(focusCls, true)); + } + if (me.validateOnBlur) { + me.validate(); + } + me.hasFocus = false; + me.fireEvent('blur', me, e); + me.postBlur(e); + }, + + + postBlur : Ext.emptyFn, + + + is: function(selector) { + return Ext.ComponentQuery.is(this, selector); + }, + + + up: function (selector, limit) { + var result = this.getRefOwner(), + limitSelector = typeof limit === 'string', + limitCount = typeof limit === 'number', + limitComponent = limit && limit.isComponent, + steps = 0; + + if (selector) { + for (; result; result = result.getRefOwner()) { + steps++; + if (selector.isComponent) { + if (result === selector) { + return result; + } + } else { + if (Ext.ComponentQuery.is(result, selector)) { + return result; + } + } + + + if (limitSelector && result.is(limit)) { + return; + } + if (limitCount && steps === limit) { + return; + } + if (limitComponent && result === limit) { + return; + } + } + } + return result; + }, + + + nextSibling: function(selector) { + var o = this.ownerCt, it, last, idx, c; + if (o) { + it = o.items; + idx = it.indexOf(this) + 1; + if (idx) { + if (selector) { + for (last = it.getCount(); idx < last; idx++) { + if ((c = it.getAt(idx)).is(selector)) { + return c; + } + } + } else { + if (idx < it.getCount()) { + return it.getAt(idx); + } + } + } + } + return null; + }, + + + previousSibling: function(selector) { + var o = this.ownerCt, it, idx, c; + if (o) { + it = o.items; + idx = it.indexOf(this); + if (idx != -1) { + if (selector) { + for (--idx; idx >= 0; idx--) { + if ((c = it.getAt(idx)).is(selector)) { + return c; + } + } + } else { + if (idx) { + return it.getAt(--idx); + } + } + } + } + return null; + }, + + + previousNode: function(selector, includeSelf) { + var node = this, + ownerCt = node.ownerCt, + result, + it, i, sib; + + + if (includeSelf && node.is(selector)) { + return node; + } + + if (ownerCt) { + for (it = ownerCt.items.items, i = Ext.Array.indexOf(it, node) - 1; i > -1; i--) { + sib = it[i]; + if (sib.query) { + result = sib.query(selector); + result = result[result.length - 1]; + if (result) { + return result; + } + } + if (sib.is(selector)) { + return sib; + } + } + return ownerCt.previousNode(selector, true); + } + return null; + }, + + + nextNode: function(selector, includeSelf) { + var node = this, + ownerCt = node.ownerCt, + result, + it, len, i, sib; + + + if (includeSelf && node.is(selector)) { + return node; + } + + if (ownerCt) { + for (it = ownerCt.items.items, i = Ext.Array.indexOf(it, node) + 1, len = it.length; i < len; i++) { + sib = it[i]; + if (sib.is(selector)) { + return sib; + } + if (sib.down) { + result = sib.down(selector); + if (result) { + return result; + } + } + } + return ownerCt.nextNode(selector); + } + return null; + }, + + + getId : function() { + return this.id || (this.id = 'ext-comp-' + (this.getAutoId())); + }, + + + getItemId : function() { + return this.itemId || this.id; + }, + + + getEl : function() { + return this.el; + }, + + + getTargetEl: function() { + return this.frameBody || this.el; + }, + + + getOverflowEl: function(){ + return this.getTargetEl(); + }, + + + getOverflowStyle: function() { + var me = this, + result = null, + ox, oy, + overflowStyle; + + + + + if (typeof me.autoScroll === 'boolean') { + result = { + overflow: overflowStyle = me.autoScroll ? 'auto' : '' + }; + me.scrollFlags = { + overflowX: overflowStyle, + overflowY: overflowStyle, + x: true, + y: true, + both: true + }; + } else { + ox = me.overflowX; + oy = me.overflowY; + if (ox !== undefined || oy !== undefined) { + result = { + 'overflowX': ox = ox || '', + 'overflowY': oy = oy || '' + }; + + + me.scrollFlags = { + overflowX: ox, + overflowY: oy, + x: ox = (ox === 'auto' || ox === 'scroll'), + y: oy = (oy === 'auto' || oy === 'scroll'), + both: ox && oy + }; + } else { + me.scrollFlags = { + overflowX: '', + overflowY: '', + x: false, + y: false, + both: false + }; + } + } + + + + if (result && Ext.isIE7m) { + result.position = 'relative'; + } + + return result; + }, + + + isXType: function(xtype, shallow) { + if (shallow) { + return this.xtype === xtype; + } + else { + return this.xtypesMap[xtype]; + } + }, + + + getXTypes: function() { + var self = this.self, + xtypes, parentPrototype, parentXtypes; + + if (!self.xtypes) { + xtypes = []; + parentPrototype = this; + + while (parentPrototype) { + parentXtypes = parentPrototype.xtypes; + + if (parentXtypes !== undefined) { + xtypes.unshift.apply(xtypes, parentXtypes); + } + + parentPrototype = parentPrototype.superclass; + } + + self.xtypeChain = xtypes; + self.xtypes = xtypes.join('/'); + } + + return self.xtypes; + }, + + + update : function(htmlOrData, loadScripts, cb) { + var me = this, + isData = (me.tpl && !Ext.isString(htmlOrData)), + el; + + if (isData) { + me.data = htmlOrData; + } else { + me.html = Ext.isObject(htmlOrData) ? Ext.DomHelper.markup(htmlOrData) : htmlOrData; + } + + if (me.rendered) { + el = me.isContainer ? me.layout.getRenderTarget() : me.getTargetEl(); + if (isData) { + me.tpl[me.tplWriteMode](el, htmlOrData || {}); + } else { + el.update(me.html, loadScripts, cb); + } + me.updateLayout(); + } + + }, + + + setVisible : function(visible) { + return this[visible ? 'show': 'hide'](); + }, + + + isVisible: function(deep) { + var me = this, + hidden; + + if (me.hidden || !me.rendered || me.isDestroyed) { + hidden = true; + } else if (deep) { + hidden = me.isHierarchicallyHidden(); + } + + return !hidden; + }, + + isHierarchicallyHidden: function() { + var child = this, + hidden = false, + parent, parentHierarchyState; + + + + + + for (; (parent = child.ownerCt || child.floatParent); child = parent) { + parentHierarchyState = parent.getHierarchyState(); + if (parentHierarchyState.hidden) { + hidden = true; + break; + } + if (child.getHierarchyState().collapseImmune) { + + if (parent.collapsed && !child.collapseImmune) { + + + + hidden = true; + break; + } + } else { + + + + hidden = !!parentHierarchyState.collapsed; + break; + } + } + + return hidden; + }, + + onBoxReady: function(width, height) { + var me = this; + + if (me.disableOnBoxReady) { + me.onDisable(); + } else if (me.enableOnBoxReady) { + me.onEnable(); + } + if (me.resizable) { + me.initResizable(me.resizable); + } + + + + if (me.draggable) { + me.initDraggable(); + } + + if (me.hasListeners.boxready) { + me.fireEvent('boxready', me, width, height); + } + }, + + + enable: function(silent) { + var me = this; + + delete me.disableOnBoxReady; + me.removeCls(me.disabledCls); + if (me.rendered) { + me.onEnable(); + } else { + me.enableOnBoxReady = true; + } + + me.disabled = false; + delete me.resetDisable; + + if (silent !== true) { + me.fireEvent('enable', me); + } + + return me; + }, + + + disable: function(silent) { + var me = this; + + delete me.enableOnBoxReady; + me.addCls(me.disabledCls); + if (me.rendered) { + me.onDisable(); + } else { + me.disableOnBoxReady = true; + } + + me.disabled = true; + + if (silent !== true) { + delete me.resetDisable; + me.fireEvent('disable', me); + } + + return me; + }, + + + onEnable: function() { + if (this.maskOnDisable) { + this.el.dom.disabled = false; + this.unmask(); + } + }, + + + onDisable : function() { + var me = this, + focusCls = me.focusCls, + focusEl = me.getFocusEl(); + + if (focusCls && focusEl) { + focusEl.removeCls(me.removeClsWithUI(focusCls, true)); + } + + if (me.maskOnDisable) { + me.el.dom.disabled = true; + me.mask(); + } + }, + + mask: function() { + var box = this.lastBox, + target = this.getMaskTarget(), + args = []; + + + if (box) { + args[2] = box.height; + } + target.mask.apply(target, args); + }, + + unmask: function() { + this.getMaskTarget().unmask(); + }, + + getMaskTarget: function(){ + return this.el; + }, + + + isDisabled : function() { + return this.disabled; + }, + + + setDisabled : function(disabled) { + return this[disabled ? 'disable': 'enable'](); + }, + + + isHidden : function() { + return this.hidden; + }, + + + addCls : function(cls) { + var me = this, + el = me.rendered ? me.el : me.protoEl; + + el.addCls.apply(el, arguments); + return me; + }, + + + addClass : function() { + return this.addCls.apply(this, arguments); + }, + + + hasCls: function (cls) { + var me = this, + el = me.rendered ? me.el : me.protoEl; + + return el.hasCls.apply(el, arguments); + }, + + + removeCls : function(cls) { + var me = this, + el = me.rendered ? me.el : me.protoEl; + + el.removeCls.apply(el, arguments); + return me; + }, + + + addOverCls: function() { + var me = this; + if (!me.disabled) { + me.el.addCls(me.overCls); + } + }, + + removeOverCls: function() { + this.el.removeCls(this.overCls); + }, + + addListener : function(element, listeners, scope, options) { + var me = this, + fn, + option; + + if (Ext.isString(element) && (Ext.isObject(listeners) || options && options.element)) { + if (options.element) { + fn = listeners; + + listeners = {}; + listeners[element] = fn; + element = options.element; + if (scope) { + listeners.scope = scope; + } + + for (option in options) { + if (options.hasOwnProperty(option)) { + if (me.eventOptionsRe.test(option)) { + listeners[option] = options[option]; + } + } + } + } + + + + if (me[element] && me[element].on) { + me.mon(me[element], listeners); + } else { + me.afterRenderEvents = me.afterRenderEvents || {}; + if (!me.afterRenderEvents[element]) { + me.afterRenderEvents[element] = []; + } + me.afterRenderEvents[element].push(listeners); + } + return; + } + + return me.mixins.observable.addListener.apply(me, arguments); + }, + + + removeManagedListenerItem: function(isClear, managedListener, item, ename, fn, scope){ + var me = this, + element = managedListener.options ? managedListener.options.element : null; + + if (element) { + element = me[element]; + if (element && element.un) { + if (isClear || (managedListener.item === item && managedListener.ename === ename && (!fn || managedListener.fn === fn) && (!scope || managedListener.scope === scope))) { + element.un(managedListener.ename, managedListener.fn, managedListener.scope); + if (!isClear) { + Ext.Array.remove(me.managedListeners, managedListener); + } + } + } + } else { + return me.mixins.observable.removeManagedListenerItem.apply(me, arguments); + } + }, + + + getBubbleTarget : function() { + return this.ownerCt; + }, + + + isFloating : function() { + return this.floating; + }, + + + isDraggable : function() { + return !!this.draggable; + }, + + + isDroppable : function() { + return !!this.droppable; + }, + + + onAdded : function(container, pos) { + var me = this; + + me.ownerCt = container; + + if (me.hierarchyState) { + + + + me.hierarchyState.invalid = true; + + + + + + delete me.hierarchyState; + } + + if (me.hasListeners.added) { + me.fireEvent('added', me, container, pos); + } + }, + + + onRemoved : function(destroying) { + var me = this; + if (me.hasListeners.removed) { + me.fireEvent('removed', me, me.ownerCt); + } + delete me.ownerCt; + delete me.ownerLayout; + }, + + + beforeDestroy : Ext.emptyFn, + + + onResize: function(width, height, oldWidth, oldHeight) { + var me = this; + + + if (me.floating && me.constrain) { + me.doConstrain(); + } + if (me.hasListeners.resize) { + me.fireEvent('resize', me, width, height, oldWidth, oldHeight); + } + }, + + + setSize : function(width, height) { + var me = this; + + + if (width && typeof width == 'object') { + height = width.height; + width = width.width; + } + + + if (typeof width == 'number') { + me.width = Ext.Number.constrain(width, me.minWidth, me.maxWidth); + } else if (width === null) { + delete me.width; + } + + if (typeof height == 'number') { + me.height = Ext.Number.constrain(height, me.minHeight, me.maxHeight); + } else if (height === null) { + delete me.height; + } + + + + if (me.rendered && me.isVisible()) { + + + me.updateLayout({ + isRoot: false + }); + } + + return me; + }, + + + isLayoutRoot: function() { + var me = this, + ownerLayout = me.ownerLayout; + + + + + + if (!ownerLayout || me._isLayoutRoot || me.floating) { + return true; + } + + return ownerLayout.isItemLayoutRoot(me); + }, + + + isLayoutSuspended: function () { + var comp = this, + ownerLayout; + + while (comp) { + if (comp.layoutSuspendCount || comp.suspendLayout) { + return true; + } + + ownerLayout = comp.ownerLayout; + if (!ownerLayout) { + break; + } + + + + + + + comp = ownerLayout.owner; + } + + return false; + }, + + + updateLayout: function (options) { + var me = this, + defer, + lastBox = me.lastBox, + isRoot = options && options.isRoot; + + if (lastBox) { + + + lastBox.invalid = true; + } + + if (!me.rendered || me.layoutSuspendCount || me.suspendLayout) { + return; + } + + if (me.hidden) { + Ext.AbstractComponent.cancelLayout(me); + } else if (typeof isRoot != 'boolean') { + isRoot = me.isLayoutRoot(); + } + + + if (isRoot || !me.ownerLayout || !me.ownerLayout.onContentChange(me)) { + + if (!me.isLayoutSuspended()) { + + defer = (options && options.hasOwnProperty('defer')) ? options.defer : me.deferLayouts; + Ext.AbstractComponent.updateLayout(me, defer); + } + } + }, + + + getSizeModel: function (ownerCtSizeModel) { + var me = this, + models = Ext.layout.SizeModel, + ownerContext = me.componentLayout.ownerContext, + width = me.width, + height = me.height, + typeofWidth, typeofHeight, + hasPixelWidth, hasPixelHeight, + heightModel, ownerLayout, policy, shrinkWrap, topLevel, widthModel; + + if (ownerContext) { + + + + + widthModel = ownerContext.widthModel; + heightModel = ownerContext.heightModel; + } + + if (!widthModel || !heightModel) { + hasPixelWidth = ((typeofWidth = typeof width) == 'number'); + hasPixelHeight = ((typeofHeight = typeof height) == 'number'); + topLevel = me.floating || !(ownerLayout = me.ownerLayout); + + + if (topLevel) { + policy = Ext.layout.Layout.prototype.autoSizePolicy; + shrinkWrap = me.floating ? 3 : me.shrinkWrap; + + if (hasPixelWidth) { + widthModel = models.configured; + } + + if (hasPixelHeight) { + heightModel = models.configured; + } + } else { + policy = ownerLayout.getItemSizePolicy(me, ownerCtSizeModel); + shrinkWrap = ownerLayout.isItemShrinkWrap(me); + } + + if (ownerContext) { + ownerContext.ownerSizePolicy = policy; + } + + shrinkWrap = (shrinkWrap === true) ? 3 : (shrinkWrap || 0); + + + + + + if (topLevel && shrinkWrap) { + if (width && typeofWidth == 'string') { + shrinkWrap &= 2; + } + if (height && typeofHeight == 'string') { + shrinkWrap &= 1; + } + } + + if (shrinkWrap !== 3) { + if (!ownerCtSizeModel) { + ownerCtSizeModel = me.ownerCt && me.ownerCt.getSizeModel(); + } + + if (ownerCtSizeModel) { + shrinkWrap |= (ownerCtSizeModel.width.shrinkWrap ? 1 : 0) | (ownerCtSizeModel.height.shrinkWrap ? 2 : 0); + } + } + + if (!widthModel) { + if (!policy.setsWidth) { + if (hasPixelWidth) { + widthModel = models.configured; + } else { + widthModel = (shrinkWrap & 1) ? models.shrinkWrap : models.natural; + } + } else if (policy.readsWidth) { + if (hasPixelWidth) { + widthModel = models.calculatedFromConfigured; + } else { + widthModel = (shrinkWrap & 1) ? models.calculatedFromShrinkWrap : + models.calculatedFromNatural; + } + } else { + widthModel = models.calculated; + } + } + + if (!heightModel) { + if (!policy.setsHeight) { + if (hasPixelHeight) { + heightModel = models.configured; + } else { + heightModel = (shrinkWrap & 2) ? models.shrinkWrap : models.natural; + } + } else if (policy.readsHeight) { + if (hasPixelHeight) { + heightModel = models.calculatedFromConfigured; + } else { + heightModel = (shrinkWrap & 2) ? models.calculatedFromShrinkWrap : + models.calculatedFromNatural; + } + } else { + heightModel = models.calculated; + } + } + } + + + + return widthModel.pairsByHeightOrdinal[heightModel.ordinal]; + }, + + isDescendant: function(ancestor) { + if (ancestor.isContainer) { + for (var c = this.ownerCt; c; c = c.ownerCt) { + if (c === ancestor) { + return true; + } + } + } + return false; + }, + + + doComponentLayout : function() { + this.updateLayout(); + return this; + }, + + + forceComponentLayout: function () { + this.updateLayout(); + }, + + + setComponentLayout : function(layout) { + var currentLayout = this.componentLayout; + if (currentLayout && currentLayout.isLayout && currentLayout != layout) { + currentLayout.setOwner(null); + } + this.componentLayout = layout; + layout.setOwner(this); + }, + + getComponentLayout : function() { + var me = this; + + if (!me.componentLayout || !me.componentLayout.isLayout) { + me.setComponentLayout(Ext.layout.Layout.create(me.componentLayout, 'autocomponent')); + } + return me.componentLayout; + }, + + + afterComponentLayout: function(width, height, oldWidth, oldHeight) { + var me = this; + + if (++me.componentLayoutCounter === 1) { + me.afterFirstLayout(width, height); + } + + if (width !== oldWidth || height !== oldHeight) { + me.onResize(width, height, oldWidth, oldHeight); + } + }, + + + beforeComponentLayout: function(width, height) { + return true; + }, + + + setPosition: function(x, y, animate) { + var me = this, + pos = me.beforeSetPosition.apply(me, arguments); + + if (pos && me.rendered) { + x = pos.x; + y = pos.y; + + if (animate) { + + + + if (x !== me.getLocalX() || y !== me.getLocalY()) { + me.stopAnimation(); + me.animate(Ext.apply({ + duration: 1000, + listeners: { + afteranimate: Ext.Function.bind(me.afterSetPosition, me, [x, y]) + }, + to: { + x: x, + y: y + } + }, animate)); + } + } else { + me.setLocalXY(x, y); + me.afterSetPosition(x, y); + } + } + return me; + }, + + + beforeSetPosition: function (x, y, animate) { + var pos, x0; + + + + if (x) { + + if (Ext.isNumber(x0 = x[0])) { + animate = y; + y = x[1]; + x = x0; + } + + else if ((x0 = x.x) !== undefined) { + animate = y; + y = x.y; + x = x0; + } + } + + if (this.constrain || this.constrainHeader) { + pos = this.calculateConstrainedPosition(null, [x, y], true); + if (pos) { + x = pos[0]; + y = pos[1]; + } + } + + + pos = { + x : this.x = x, + y : this.y = y, + anim: animate, + hasX: x !== undefined, + hasY: y !== undefined + }; + + return (pos.hasX || pos.hasY) ? pos : null; + }, + + + afterSetPosition: function(x, y) { + var me = this; + me.onPosition(x, y); + if (me.hasListeners.move) { + me.fireEvent('move', me, x, y); + } + }, + + + onPosition: Ext.emptyFn, + + + setWidth : function(width) { + return this.setSize(width); + }, + + + setHeight : function(height) { + return this.setSize(undefined, height); + }, + + + getSize : function() { + return this.el.getSize(); + }, + + + getWidth : function() { + return this.el.getWidth(); + }, + + + getHeight : function() { + return this.el.getHeight(); + }, + + + getLoader: function(){ + var me = this, + autoLoad = me.autoLoad ? (Ext.isObject(me.autoLoad) ? me.autoLoad : {url: me.autoLoad}) : null, + loader = me.loader || autoLoad; + + if (loader) { + if (!loader.isLoader) { + me.loader = new Ext.ComponentLoader(Ext.apply({ + target: me, + autoLoad: autoLoad + }, loader)); + } else { + loader.setTarget(me); + } + return me.loader; + + } + return null; + }, + + + setDocked : function(dock, layoutParent) { + var me = this; + + me.dock = dock; + if (layoutParent && me.ownerCt && me.rendered) { + me.ownerCt.updateLayout(); + } + return me; + }, + + + setBorder: function(border, targetEl) { + var me = this, + initial = !!targetEl; + + if (me.rendered || initial) { + if (!initial) { + targetEl = me.el; + } + + if (!border) { + border = 0; + } else if (border === true) { + border = '1px'; + } else { + border = this.unitizeBox(border); + } + targetEl.setStyle('border-width', border); + if (!initial) { + me.updateLayout(); + } + } + me.border = border; + }, + + onDestroy : function() { + var me = this; + + if (me.monitorResize && Ext.EventManager.resizeEvent) { + Ext.EventManager.resizeEvent.removeListener(me.setSize, me); + } + + + Ext.destroy( + me.componentLayout, + me.loadMask, + me.floatingDescendants + ); + }, + + + destroy : function() { + var me = this, + selectors = me.renderSelectors, + selector, + el; + + if (!me.isDestroyed) { + if (!me.hasListeners.beforedestroy || me.fireEvent('beforedestroy', me) !== false) { + me.destroying = true; + me.beforeDestroy(); + + if (me.floating) { + delete me.floatParent; + + + if (me.zIndexManager) { + me.zIndexManager.unregister(me); + } + } else if (me.ownerCt && me.ownerCt.remove) { + me.ownerCt.remove(me, false); + } + + me.stopAnimation(); + me.onDestroy(); + + + Ext.destroy(me.plugins); + + if (me.hasListeners.destroy) { + me.fireEvent('destroy', me); + } + Ext.ComponentManager.unregister(me); + + me.mixins.state.destroy.call(me); + + me.clearListeners(); + + if (me.rendered) { + if (!me.preserveElOnDestroy) { + me.el.remove(); + } + me.mixins.elementCt.destroy.call(me); + if (selectors) { + for (selector in selectors) { + if (selectors.hasOwnProperty(selector)) { + el = me[selector]; + if (el) { + delete me[selector]; + el.remove(); + } + } + } + } + + delete me.el; + delete me.frameBody; + delete me.rendered; + } + + me.destroying = false; + me.isDestroyed = true; + } + } + }, + + + isDescendantOf: function(container) { + return !!this.findParentBy(function(p){ + return p === container; + }); + }, + + + getHierarchyState: function (inner) { + var me = this, + hierarchyState = (inner && me.hierarchyStateInner) || me.hierarchyState, + ownerCt = me.ownerCt, + parent, layout, hierarchyStateInner, getInner; + + if (!hierarchyState || hierarchyState.invalid) { + + + + + parent = me.getRefOwner(); + + if (ownerCt) { + + + getInner = me.ownerLayout === ownerCt.layout; + } + + me.hierarchyState = hierarchyState = + + + + + + Ext.Object.chain(parent ? parent.getHierarchyState(getInner) + : Ext.rootHierarchyState); + + me.initHierarchyState(hierarchyState); + if ((layout = me.componentLayout).initHierarchyState) { + layout.initHierarchyState(hierarchyState); + } + + if (me.isContainer) { + me.hierarchyStateInner = hierarchyStateInner = Ext.Object.chain(hierarchyState); + + layout = me.layout; + if (layout && layout.initHierarchyState) { + layout.initHierarchyState(hierarchyStateInner, hierarchyState); + } + if (inner) { + hierarchyState = hierarchyStateInner; + } + } + } + + return hierarchyState; + }, + + + initHierarchyState: function(hierarchyState) { + var me = this; + + if (me.collapsed) { + hierarchyState.collapsed = true; + } + if (me.hidden) { + hierarchyState.hidden = true; + } + if (me.collapseImmune) { + hierarchyState.collapseImmune = true; + } + }, + + + + + + getAnchorToXY: function(el, anchor, local, mySize) { + return el.getAnchorXY(anchor, local, mySize); + }, + + getBorderPadding: function() { + return this.el.getBorderPadding(); + }, + + getLocalX: function() { + return this.el.getLocalX(); + }, + + getLocalXY: function() { + return this.el.getLocalXY(); + }, + + getLocalY: function() { + return this.el.getLocalY(); + }, + + getX: function() { + return this.el.getX(); + }, + + getXY: function() { + return this.el.getXY(); + }, + + getY: function() { + return this.el.getY(); + }, + + setLocalX: function(x) { + this.el.setLocalX(x); + }, + + setLocalXY: function(x, y) { + this.el.setLocalXY(x, y); + }, + + setLocalY: function(y) { + this.el.setLocalY(y); + }, + + setX: function(x, animate) { + this.el.setX(x, animate); + }, + + setXY: function(xy, animate) { + this.el.setXY(xy, animate); + }, + + setY: function(y, animate) { + this.el.setY(y, animate); + } + + + + +}, function() { + var AbstractComponent = this; + + AbstractComponent.createAlias({ + on: 'addListener', + prev: 'previousSibling', + next: 'nextSibling' + }); + + + Ext.resumeLayouts = function (flush) { + AbstractComponent.resumeLayouts(flush); + }; + + + Ext.suspendLayouts = function () { + AbstractComponent.suspendLayouts(); + }; + + + Ext.batchLayouts = function(fn, scope) { + AbstractComponent.suspendLayouts(); + + fn.call(scope); + AbstractComponent.resumeLayouts(true); + }; +}); + + +Ext.define('Ext.AbstractPlugin', { + disabled: false, + + + isPlugin: true, + + + constructor: function(config) { + this.pluginConfig = config; + Ext.apply(this, config); + }, + + + clonePlugin: function(overrideCfg) { + return new this.self(Ext.apply({}, overrideCfg, this.pluginConfig)); + }, + + + setCmp: function(cmp) { + this.cmp = cmp; + }, + + + getCmp: function() { + return this.cmp; + }, + + + + + init: Ext.emptyFn, + + + destroy: Ext.emptyFn, + + + enable: function() { + this.disabled = false; + }, + + + disable: function() { + this.disabled = true; + }, + + + + onClassExtended: function(cls, data, hooks) { + var alias = data.alias; + + + if (alias && !data.ptype) { + if (Ext.isArray(alias)) { + alias = alias[0]; + } + cls.prototype.ptype = alias.split('plugin.')[1]; + } + } +}); + + +Ext.define('Ext.Action', { + + + + + + + + + + + + + + + constructor : function(config){ + this.initialConfig = config; + this.itemId = config.itemId = (config.itemId || config.id || Ext.id()); + this.items = []; + }, + + + isAction : true, + + + setText : function(text){ + this.initialConfig.text = text; + this.callEach('setText', [text]); + }, + + + getText : function(){ + return this.initialConfig.text; + }, + + + setIconCls : function(cls){ + this.initialConfig.iconCls = cls; + this.callEach('setIconCls', [cls]); + }, + + + getIconCls : function(){ + return this.initialConfig.iconCls; + }, + + + setDisabled : function(v){ + this.initialConfig.disabled = v; + this.callEach('setDisabled', [v]); + }, + + + enable : function(){ + this.setDisabled(false); + }, + + + disable : function(){ + this.setDisabled(true); + }, + + + isDisabled : function(){ + return this.initialConfig.disabled; + }, + + + setHidden : function(v){ + this.initialConfig.hidden = v; + this.callEach('setVisible', [!v]); + }, + + + show : function(){ + this.setHidden(false); + }, + + + hide : function(){ + this.setHidden(true); + }, + + + isHidden : function(){ + return this.initialConfig.hidden; + }, + + + setHandler : function(fn, scope){ + this.initialConfig.handler = fn; + this.initialConfig.scope = scope; + this.callEach('setHandler', [fn, scope]); + }, + + + each : function(fn, scope){ + Ext.each(this.items, fn, scope); + }, + + + callEach : function(fnName, args){ + var items = this.items, + i = 0, + len = items.length, + item; + + Ext.suspendLayouts(); + for(; i < len; i++){ + item = items[i]; + item[fnName].apply(item, args); + } + Ext.resumeLayouts(true); + }, + + + addComponent : function(comp){ + this.items.push(comp); + comp.on('destroy', this.removeComponent, this); + }, + + + removeComponent : function(comp){ + Ext.Array.remove(this.items, comp); + }, + + + execute : function(){ + this.initialConfig.handler.apply(this.initialConfig.scope || Ext.global, arguments); + } +}); + + +Ext.define('Ext.data.flash.BinaryXhr', { + + statics: { + + flashPluginActivated: function() { + Ext.data.flash.BinaryXhr.flashPluginActive = true; + Ext.data.flash.BinaryXhr.flashPlugin = document.getElementById("ext-flash-polyfill"); + Ext.globalEvents.fireEvent("flashready"); + }, + + + flashPluginActive: false, + + + flashPluginInjected: false, + + + + connectionIndex: 1, + + + liveConnections: {}, + + + flashPlugin: null, + + + onFlashStateChange: function(javascriptId, state, data) { + var connection; + + connection = this.liveConnections[Number(javascriptId)]; + if (connection) { + connection.onFlashStateChange(state, data); + } + }, + + + registerConnection: function(conn) { + var i = this.connectionIndex; + this.conectionIndex = this.connectionIndex + 1; + this.liveConnections[i] = conn; + return i; + }, + + + injectFlashPlugin: function() { + var divTag, pTag, aTag, iTag, + me=this, + flashLoaderPath, flashObjectPath; + + + + + + + iTag=document.createElement("img"); + iTag.setAttribute("src", window.location.protocol + '//www.adobe.com/images/shared/download_buttons/get_flash_player.gif'); + iTag.setAttribute("alt", "Get Adobe Flash player"); + + aTag=document.createElement("a"); + aTag.setAttribute("href", "http://www.adobe.com/go/getflashplayer"); + aTag.appendChild(iTag); + + pTag=document.createElement("p"); + pTag.innerHTML="To view this page ensure that Adobe Flash Player version 11.1.0 or greater is installed."; + + divTag=document.createElement("div"); + divTag.setAttribute("id", "ext-flash-polyfill"); + divTag.appendChild(pTag); + divTag.appendChild(iTag); + + Ext.getBody().dom.appendChild(divTag); + + + + + + flashLoaderPath = [Ext.Loader.getPath('Ext.data.Connection'), '../../../plugins/flash/swfobject.js'].join('/'); + flashObjectPath = "/plugins/flash/FlashPlugin.swf"; + if (Ext.flashPluginPath) { + flashObjectPath = Ext.flashPluginPath; + } + + Ext.Loader.loadScript({ + url:flashLoaderPath, + onLoad: function() { + + var swfVersionStr = "11.4.0"; + + var xiSwfUrlStr = "playerProductInstall.swf"; + var flashvars = {}; + var params = {}; + params.quality = "high"; + params.bgcolor = "#ffffff"; + params.allowscriptaccess = "sameDomain"; + params.allowfullscreen = "true"; + var attributes = {}; + attributes.id = "ext-flash-polyfill"; + attributes.name = "polyfill"; + attributes.align = "middle"; + swfobject.embedSWF( + flashObjectPath, "ext-flash-polyfill", + "0", "0", + swfVersionStr, xiSwfUrlStr, + flashvars, params, attributes); + }, + onError: function() { + }, + scope: me + }); + Ext.globalEvents.addEvents("flashready"); + Ext.data.flash.BinaryXhr.flashPluginInjected = true; + } + + + }, + + + readyState: 0, + + + status: 0, + + + + statusText: "", + + + responseBytes: null, + + + javascriptId: null, + + + + constructor: function (config) { + + if (!Ext.data.flash.BinaryXhr.flashPluginInjected) { + Ext.data.flash.BinaryXhr.injectFlashPlugin(); + } + var me = this; + + Ext.apply(me, config); + me.requestHeaders = {}; + }, + + + abort: function () { + var me = this; + + if (me.readyState == 4) { + return; + } + + me.aborted = true; + + if (!Ext.data.flash.BinaryXhr.flashPluginActive) { + Ext.globalEvents.removeListener("flashready", me.onFlashReady, me); + return; + } + + Ext.data.flash.BinaryXhr.flashPlugin.abortRequest(me.javascriptId); + + delete Ext.data.flash.BinaryXhr.liveConnections[me.javascriptId]; + }, + + + getAllResponseHeaders: function () { + var headers = []; + Ext.Object.each(this.responseHeaders, function (name, value) { + headers.push(name + ': ' + value); + }); + return headers.join('\x0d\x0a'); + }, + + + getResponseHeader: function (header) { + var headers = this.responseHeaders; + return (headers && headers[header]) || null; + }, + + + open: function (method, url, async, user, password) { + var me = this; + me.method = method; + me.url = url; + me.async = async !== false; + me.user = user; + me.password = password; + + }, + + + overrideMimeType: function (mimeType) { + this.mimeType = mimeType; + }, + + + send: function (body) { + var me = this; + me.body = body; + if (!Ext.data.flash.BinaryXhr.flashPluginActive) { + Ext.globalEvents.addListener("flashready", me.onFlashReady, me); + } else { + this.onFlashReady(); + } + }, + + + onFlashReady: function() { + var me = this, req, status; + me.javascriptId = Ext.data.flash.BinaryXhr.registerConnection(me); + + + req = { + method: me.method, + url: me.url, + user: me.user, + password: me.password, + mimeType: me.mimeType, + requestHeaders: me.requestHeaders, + body: me.body, + javascriptId: me.javascriptId + }; + status = Ext.data.flash.BinaryXhr.flashPlugin.postBinary(req); + }, + + + setReadyState: function (state) { + var me = this; + if (me.readyState != state) { + me.readyState = state; + me.onreadystatechange(); + } + }, + + + setRequestHeader: function (header, value) { + this.requestHeaders[header] = value; + }, + + + onreadystatechange: Ext.emptyFn, + + + parseData: function (data) { + var me = this; + + this.status = data.status || 0; + + me.responseHeaders = {}; + if (me.mimeType) { + me.responseHeaders["content-type"] = me.mimeType; + } + if (data.reason == "complete") { + + this.responseBytes = data.data; + me.responseHeaders["content-length"] = data.data.length; + } else if (data.reason == "error" || data.reason == "securityError") { + this.statusText = data.text; + me.responseHeaders["content-length"] = 0; + } + }, + + + onFlashStateChange: function(state, data) { + var me = this; + if (state == 4) { + + me.parseData(data); + + delete Ext.data.flash.BinaryXhr.liveConnections[me.javascriptId]; + } + me.setReadyState(state); + } + +}); + + +Ext.define('Ext.data.Connection', { + mixins: { + observable: Ext.util.Observable + }, + + + + + + statics: { + requestId: 0 + }, + + url: null, + async: true, + method: null, + username: '', + password: '', + + + disableCaching: true, + + + withCredentials: false, + + + binary: false, + + + cors: false, + + isXdr: false, + + defaultXdrContentType: 'text/plain', + + + disableCachingParam: '_dc', + + + timeout : 30000, + + + + + + + + + + useDefaultHeader : true, + defaultPostHeader : 'application/x-www-form-urlencoded; charset=UTF-8', + useDefaultXhrHeader : true, + defaultXhrHeader : 'XMLHttpRequest', + + constructor : function(config) { + config = config || {}; + Ext.apply(this, config); + + + + + this.requests = {}; + this.mixins.observable.constructor.call(this); + }, + + + request : function(options) { + options = options || {}; + var me = this, + scope = options.scope || window, + username = options.username || me.username, + password = options.password || me.password || '', + async, + requestOptions, + request, + headers, + xhr; + if (me.fireEvent('beforerequest', me, options) !== false) { + + requestOptions = me.setOptions(options, scope); + + if (me.isFormUpload(options)) { + me.upload(options.form, requestOptions.url, requestOptions.data, options); + return null; + } + + + if (options.autoAbort || me.autoAbort) { + me.abort(); + } + + + async = options.async !== false ? (options.async || me.async) : false; + xhr = me.openRequest(options, requestOptions, async, username, password); + + + if (!me.isXdr) { + headers = me.setupHeaders(xhr, options, requestOptions.data, requestOptions.params); + } + + + request = { + id: ++Ext.data.Connection.requestId, + xhr: xhr, + headers: headers, + options: options, + async: async, + binary: options.binary || me.binary, + timeout: setTimeout(function() { + request.timedout = true; + me.abort(request); + }, options.timeout || me.timeout) + }; + + me.requests[request.id] = request; + me.latestId = request.id; + + if (async) { + if (!me.isXdr) { + xhr.onreadystatechange = Ext.Function.bind(me.onStateChange, me, [request]); + } + } + + if (me.isXdr) { + me.processXdrRequest(request, xhr); + } + + + xhr.send(requestOptions.data); + if (!async) { + return me.onComplete(request); + } + return request; + } else { + Ext.callback(options.callback, options.scope, [options, undefined, undefined]); + return null; + } + }, + + processXdrRequest: function(request, xhr) { + var me = this; + + + delete request.headers; + + request.contentType = request.options.contentType || me.defaultXdrContentType; + + xhr.onload = Ext.Function.bind(me.onStateChange, me, [request, true]); + xhr.onerror = xhr.ontimeout = Ext.Function.bind(me.onStateChange, me, [request, false]); + }, + + processXdrResponse: function(response, xhr) { + + response.getAllResponseHeaders = function () { + return []; + }; + response.getResponseHeader = function () { + return ''; + }; + response.contentType = xhr.contentType || this.defaultXdrContentType; + }, + + + upload: function(form, url, params, options) { + form = Ext.getDom(form); + options = options || {}; + + var id = Ext.id(), + frame = document.createElement('iframe'), + hiddens = [], + encoding = 'multipart/form-data', + buf = { + target: form.target, + method: form.method, + encoding: form.encoding, + enctype: form.enctype, + action: form.action + }, + addField = function(name, value) { + hiddenItem = document.createElement('input'); + Ext.fly(hiddenItem).set({ + type: 'hidden', + value: value, + name: name + }); + form.appendChild(hiddenItem); + hiddens.push(hiddenItem); + }, + hiddenItem, obj, value, name, vLen, v, hLen, h; + + + Ext.fly(frame).set({ + id: id, + name: id, + cls: Ext.baseCSSPrefix + 'hide-display', + src: Ext.SSL_SECURE_URL + }); + + document.body.appendChild(frame); + + + if (document.frames) { + document.frames[id].name = id; + } + + Ext.fly(form).set({ + target: id, + method: 'POST', + enctype: encoding, + encoding: encoding, + action: url || buf.action + }); + + + if (params) { + obj = Ext.Object.fromQueryString(params) || {}; + + for (name in obj) { + if (obj.hasOwnProperty(name)) { + value = obj[name]; + if (Ext.isArray(value)) { + vLen = value.length; + for (v = 0; v < vLen; v++) { + addField(name, value[v]); + } + } else { + addField(name, value); + } + } + } + } + + Ext.fly(frame).on('load', Ext.Function.bind(this.onUploadComplete, this, [frame, options]), null, {single: !Ext.isOpera}); + form.submit(); + + Ext.fly(form).set(buf); + + hLen = hiddens.length; + + for (h = 0; h < hLen; h++) { + Ext.removeNode(hiddens[h]); + } + }, + + + onUploadComplete: function(frame, options) { + var me = this, + + response = { + responseText: '', + responseXML: null + }, callback, success, doc, contentNode; + + try { + doc = frame.contentWindow.document || frame.contentDocument || window.frames[frame.id].document; + + + if (doc) { + if (Ext.isOpera && doc.location == 'about:blank') { + return; + } + if (doc.body) { + + + + if ((contentNode = doc.body.firstChild) && /pre/i.test(contentNode.tagName)) { + response.responseText = contentNode.textContent; + } + + + + else if ((contentNode = doc.getElementsByTagName('textarea')[0])) { + response.responseText = contentNode.value; + } + + else { + response.responseText = doc.body.textContent || doc.body.innerText; + } + } + + response.responseXML = doc.XMLDocument || doc; + callback = options.success; + success = true; + } + } catch (e) { + + response.responseText = '{success:false,message:"' + Ext.String.trim(e.message || e.description) + '"}'; + callback = options.failure; + success = false; + } + + me.fireEvent('requestcomplete', me, response, options); + + Ext.callback(callback, options.scope, [response, options]); + Ext.callback(options.callback, options.scope, [options, success, response]); + + setTimeout(function() { + Ext.removeNode(frame); + }, 100); + }, + + + isFormUpload: function(options) { + var form = this.getForm(options); + if (form) { + return (options.isUpload || (/multipart\/form-data/i).test(form.getAttribute('enctype'))); + } + return false; + }, + + + getForm: function(options) { + return Ext.getDom(options.form) || null; + }, + + + setOptions: function(options, scope) { + var me = this, + params = options.params || {}, + extraParams = me.extraParams, + urlParams = options.urlParams, + url = options.url || me.url, + jsonData = options.jsonData, + method, + disableCache, + data; + + + + if (Ext.isFunction(params)) { + params = params.call(scope, options); + } + + + if (Ext.isFunction(url)) { + url = url.call(scope, options); + } + + url = this.setupUrl(options, url); + + + + data = options.rawData || options.binaryData || options.xmlData || jsonData || null; + if (jsonData && !Ext.isPrimitive(jsonData)) { + data = Ext.encode(data); + } + + if (options.binaryData) { + if (me.nativeBinaryPostSupport()) { + data = (new Uint8Array(options.binaryData)); + if ((Ext.isChrome && Ext.chromeVersion < 22) || Ext.isSafari || Ext.isGecko) { + data = data.buffer; + } + } + } + + + if (Ext.isObject(params)) { + params = Ext.Object.toQueryString(params); + } + + if (Ext.isObject(extraParams)) { + extraParams = Ext.Object.toQueryString(extraParams); + } + + params = params + ((extraParams) ? ((params) ? '&' : '') + extraParams : ''); + + urlParams = Ext.isObject(urlParams) ? Ext.Object.toQueryString(urlParams) : urlParams; + + params = this.setupParams(options, params); + + + method = (options.method || me.method || ((params || data) ? 'POST' : 'GET')).toUpperCase(); + this.setupMethod(options, method); + + + disableCache = options.disableCaching !== false ? (options.disableCaching || me.disableCaching) : false; + + if (method === 'GET' && disableCache) { + url = Ext.urlAppend(url, (options.disableCachingParam || me.disableCachingParam) + '=' + (new Date().getTime())); + } + + + if ((method == 'GET' || data) && params) { + url = Ext.urlAppend(url, params); + params = null; + } + + + if (urlParams) { + url = Ext.urlAppend(url, urlParams); + } + + return { + url: url, + method: method, + data: data || params || null + }; + }, + + + setupUrl: function(options, url) { + var form = this.getForm(options); + if (form) { + url = url || form.action; + } + return url; + }, + + + + setupParams: function(options, params) { + var form = this.getForm(options), + serializedForm; + if (form && !this.isFormUpload(options)) { + serializedForm = Ext.Element.serializeForm(form); + params = params ? (params + '&' + serializedForm) : serializedForm; + } + return params; + }, + + + setupMethod: function(options, method) { + if (this.isFormUpload(options)) { + return 'POST'; + } + return method; + }, + + + setupHeaders: function(xhr, options, data, params) { + var me = this, + headers = Ext.apply({}, options.headers || {}, me.defaultHeaders || {}), + contentType = me.defaultPostHeader, + jsonData = options.jsonData, + xmlData = options.xmlData, + key, + header; + + if (!headers['Content-Type'] && (data || params)) { + if (data) { + if (options.rawData) { + contentType = 'text/plain'; + } else { + if (xmlData && Ext.isDefined(xmlData)) { + contentType = 'text/xml'; + } else if (jsonData && Ext.isDefined(jsonData)) { + contentType = 'application/json'; + } + } + } + headers['Content-Type'] = contentType; + } + + if (me.useDefaultXhrHeader && !headers['X-Requested-With']) { + headers['X-Requested-With'] = me.defaultXhrHeader; + } + + try { + for (key in headers) { + if (headers.hasOwnProperty(key)) { + header = headers[key]; + xhr.setRequestHeader(key, header); + } + } + } catch(e) { + me.fireEvent('exception', key, header); + } + return headers; + }, + + + newRequest: function (options) { + var me = this, + xhr; + + if (options.binaryData) { + + if (me.nativeBinaryPostSupport()) { + xhr = this.getXhrInstance(); + } else { + + xhr = new Ext.data.flash.BinaryXhr(); + } + } else if ((options.cors || me.cors) && Ext.isIE && Ext.ieVersion <= 9) { + xhr = me.getXdrInstance(); + me.isXdr = true; + } else { + xhr = me.getXhrInstance(); + } + + return xhr; + }, + + + openRequest: function (options, requestOptions, async, username, password) { + var me = this, + xhr = me.newRequest(options); + + if (username) { + xhr.open(requestOptions.method, requestOptions.url, async, username, password); + } else { + if (me.isXdr) { + xhr.open(requestOptions.method, requestOptions.url); + } else { + xhr.open(requestOptions.method, requestOptions.url, async); + } + } + + if (options.binary || me.binary) { + if (window.Uint8Array) { + xhr.responseType = 'arraybuffer'; + } else if (xhr.overrideMimeType) { + + + + + xhr.overrideMimeType('text\/plain; charset=x-user-defined'); + } + } + + if (options.withCredentials || me.withCredentials) { + xhr.withCredentials = true; + } + + return xhr; + }, + + + getXdrInstance: function() { + var xdr; + + if (Ext.ieVersion >= 8) { + xdr = new XDomainRequest(); + } else { + Ext.Error.raise({ + msg: 'Your browser does not support CORS' + }); + } + + return xdr; + }, + + + getXhrInstance: (function() { + var options = [function() { + return new XMLHttpRequest(); + }, function() { + return new ActiveXObject('MSXML2.XMLHTTP.3.0'); + }, function() { + return new ActiveXObject('MSXML2.XMLHTTP'); + }, function() { + return new ActiveXObject('Microsoft.XMLHTTP'); + }], i = 0, + len = options.length, + xhr; + + for (; i < len; ++i) { + try { + xhr = options[i]; + xhr(); + break; + } catch(e) { + } + } + return xhr; + }()), + + + isLoading : function(request) { + if (!request) { + request = this.getLatest(); + } + if (!(request && request.xhr)) { + return false; + } + + var state = request.xhr.readyState; + return ((request.xhr instanceof Ext.data.flash.BinaryXhr) && state != 4) || !(state === 0 || state == 4); + }, + + + abort : function(request) { + var me = this, + xhr; + + if (!request) { + request = me.getLatest(); + } + + if (request && me.isLoading(request)) { + + xhr = request.xhr; + try { + xhr.onreadystatechange = null; + } catch (e) { + + + xhr.onreadystatechange = Ext.emptyFn; + } + xhr.abort(); + me.clearTimeout(request); + if (!request.timedout) { + request.aborted = true; + } + me.onComplete(request); + me.cleanup(request); + } + }, + + + abortAll: function(){ + var requests = this.requests, + id; + + for (id in requests) { + if (requests.hasOwnProperty(id)) { + this.abort(requests[id]); + } + } + }, + + + getLatest: function(){ + var id = this.latestId, + request; + + if (id) { + request = this.requests[id]; + } + return request || null; + }, + + + onStateChange : function(request, xdrResult) { + var me = this; + + + if ((request.xhr && request.xhr.readyState == 4) || me.isXdr) { + me.clearTimeout(request); + me.onComplete(request, xdrResult); + me.cleanup(request); + Ext.EventManager.idleEvent.fire(); + } + }, + + + clearTimeout: function(request) { + clearTimeout(request.timeout); + delete request.timeout; + }, + + + cleanup: function(request) { + request.xhr = null; + delete request.xhr; + }, + + + onComplete : function(request, xdrResult) { + var me = this, + options = request.options, + result, + success, + response; + + try { + result = me.parseStatus(request.xhr.status); + } catch (e) { + + result = { + success : false, + isException : false + }; + + } + success = me.isXdr ? xdrResult : result.success; + + if (success) { + response = me.createResponse(request); + me.fireEvent('requestcomplete', me, response, options); + Ext.callback(options.success, options.scope, [response, options]); + } else { + if (result.isException || request.aborted || request.timedout) { + response = me.createException(request); + } else { + response = me.createResponse(request); + } + me.fireEvent('requestexception', me, response, options); + Ext.callback(options.failure, options.scope, [response, options]); + } + Ext.callback(options.callback, options.scope, [options, success, response]); + delete me.requests[request.id]; + return response; + }, + + + parseStatus: function(status) { + + status = status == 1223 ? 204 : status; + + var success = (status >= 200 && status < 300) || status == 304, + isException = false; + + if (!success) { + switch (status) { + case 12002: + case 12029: + case 12030: + case 12031: + case 12152: + case 13030: + isException = true; + break; + } + } + return { + success: success, + isException: isException + }; + }, + + + createResponse : function(request) { + var me = this, + xhr = request.xhr, + isXdr = me.isXdr, + headers = {}, + lines = isXdr ? [] : xhr.getAllResponseHeaders().replace(/\r\n/g, '\n').split('\n'), + count = lines.length, + line, index, key, response, byteArray; + + while (count--) { + line = lines[count]; + index = line.indexOf(':'); + if (index >= 0) { + key = line.substr(0, index).toLowerCase(); + if (line.charAt(index + 1) == ' ') { + ++index; + } + headers[key] = line.substr(index + 1); + } + } + + request.xhr = null; + delete request.xhr; + + response = { + request: request, + requestId: request.id, + status: xhr.status, + statusText: xhr.statusText, + getResponseHeader: function(header) { + return headers[header.toLowerCase()]; + }, + getAllResponseHeaders: function() { + return headers; + } + }; + + if (isXdr) { + me.processXdrResponse(response, xhr); + } + + if (request.binary) { + response.responseBytes = me.getByteArray(xhr); + } else { + + + + + response.responseText = xhr.responseText; + response.responseXML = xhr.responseXML; + } + + + + xhr = null; + return response; + }, + + + createException : function(request) { + return { + request : request, + requestId : request.id, + status : request.aborted ? -1 : 0, + statusText : request.aborted ? 'transaction aborted' : 'communication failure', + aborted: request.aborted, + timedout: request.timedout + }; + }, + + + getByteArray: function(xhr) { + var response = xhr.response, + responseBody = xhr.responseBody, + byteArray, responseText, len, i; + + if (xhr instanceof Ext.data.flash.BinaryXhr) { + + byteArray = xhr.responseBytes; + } else if (window.Uint8Array) { + + + + byteArray = response ? new Uint8Array(response) : []; + } else if (Ext.isIE9p) { + + + + + try { + byteArray = new VBArray(responseBody).toArray(); + } catch(e) { + + + + + byteArray = []; + } + } else if (Ext.isIE) { + + + + + + if (!this.self.vbScriptInjected) { + this.injectVBScript(); + } + getIEByteArray(xhr.responseBody, byteArray = []); + } else { + + + byteArray = []; + responseText = xhr.responseText; + len = responseText.length; + for (i = 0; i < len; i++) { + + + + byteArray.push(responseText.charCodeAt(i) & 0xFF); + } + } + + return byteArray; + }, + + + injectVBScript: function() { + var scriptTag = document.createElement('script'); + scriptTag.type = 'text/vbscript'; + scriptTag.text = [ + 'Function getIEByteArray(byteArray, out)', + 'Dim len, i', + 'len = LenB(byteArray)', + 'For i = 1 to len', + 'out.push(AscB(MidB(byteArray, i, 1)))', + 'Next', + 'End Function' + ].join('\n'); + Ext.getHead().dom.appendChild(scriptTag); + this.self.vbScriptInjected = true; + }, + + + nativeBinaryPostSupport: function() { + return Ext.isChrome || + (Ext.isSafari && Ext.isDefined(window.Uint8Array)) || + (Ext.isGecko && Ext.isDefined(window.Uint8Array)); + } + + +}); + + +Ext.define('Ext.Ajax', { + extend: Ext.data.Connection , + singleton: true, + + + + + + + + + + + + + + + + + autoAbort : false +}); + + +Ext.define('Ext.util.Floating', { + + + + + focusOnToFront: true, + + + shadow: 'sides', + + + constrain: false, + + + + + + constructor: function (dom) { + var me = this; + + + me.fixed = me.fixed && !(Ext.isIE6 || Ext.isIEQuirks); + + me.el = new Ext.dom.Layer(Ext.apply({ + preventSync : true, + hideMode : me.hideMode, + hidden : me.hidden, + shadow : (typeof me.shadow != 'undefined') ? me.shadow : 'sides', + shadowOffset : me.shadowOffset, + constrain : false, + fixed : me.fixed, + shim : (me.shim === false) ? false : undefined + }, me.floating), dom); + + + + if (me.modal && !(Ext.FocusManager && Ext.FocusManager.enabled)) { + me.mon(me.el, { + keydown: me.onKeyDown, + scope: me + }); + } + + + me.mon(me.el, { + mousedown: me.onMouseDown, + scope: me + }); + + + me.floating = true; + + + + + me.registerWithOwnerCt(); + + me.initHierarchyEvents(); + }, + + initHierarchyEvents: function() { + var me = this, + syncHidden = this.syncHidden; + + if (!me.hasHierarchyEventListeners) { + me.mon(me.hierarchyEventSource, { + hide: syncHidden, + collapse: syncHidden, + show: syncHidden, + expand: syncHidden, + added: syncHidden, + scope: me + }); + me.hasHierarchyEventListeners = true; + } + }, + + registerWithOwnerCt: function() { + var me = this, + ownerCt = me.ownerCt, + zip = me.zIndexParent; + + if (zip) { + zip.unregisterFloatingItem(me); + } + + + + zip = me.zIndexParent = me.up('[floating]'); + + + + + me.setFloatParent(ownerCt || zip); + delete me.ownerCt; + + if (zip) { + zip.registerFloatingItem(me); + } else { + Ext.WindowManager.register(me); + } + }, + + + onKeyDown: function(e) { + var me = this, + shift, + focusables, + first, + last; + + + + + + + + + + + + + if (e.getKey() == Ext.EventObject.TAB) { + shift = e.shiftKey; + focusables = me.el.query(':focusable'); + first = focusables[0]; + last = focusables[focusables.length - 1]; + if (first && last && e.target === (shift ? first : last)) { + e.stopEvent(); + (shift ? last : first).focus(false, true); + } + } + }, + + + + onMouseDown: function (e) { + var focusTask = this.focusTask; + + if (this.floating && + + + + (!focusTask || !focusTask.id)) { + + this.toFront(!!e.getTarget(':focusable')); + } + }, + + setFloatParent: function(floatParent) { + var me = this; + + me.floatParent = floatParent; + + + + if ((me.constrain || me.constrainHeader) && !me.constrainTo) { + me.constrainTo = floatParent ? floatParent.getTargetEl() : me.container; + } + }, + + + syncShadow : function() { + if (this.floating) { + this.el.sync(true); + } + }, + + onBeforeFloatLayout: function(){ + this.el.preventSync = true; + }, + + onAfterFloatLayout: function(){ + delete this.el.preventSync; + this.syncShadow(); + }, + + + syncHidden: function() { + var me = this, + hidden = me.hidden || !me.rendered, + hierarchicallyHidden = me.hierarchicallyHidden = me.isHierarchicallyHidden(), + pendingShow = me.pendingShow; + + if (hidden !== hierarchicallyHidden) { + if (hierarchicallyHidden) { + me.hide(); + me.pendingShow = true; + } else if (pendingShow) { + delete me.pendingShow; + if (pendingShow.length) { + me.show.apply(me, pendingShow); + } else { + me.show(); + } + } + } + }, + + + + + + + setZIndex: function(index) { + var me = this; + + me.el.setZIndex(index); + + + index += 10; + + + + if (me.floatingDescendants) { + index = Math.floor(me.floatingDescendants.setBase(index) / 100) * 100 + 10000; + } + return index; + }, + + + doConstrain: function(constrainTo) { + var me = this, + + + + xy = me.calculateConstrainedPosition(constrainTo, null, true); + + + if (xy) { + me.setPosition(xy); + } + }, + + + toFront: function(preventFocus) { + var me = this, + zip = me.zIndexParent, + preventFocusSetting = me.preventFocusOnActivate; + + + + if (zip && me.bringParentToFront !== false) { + zip.toFront(true); + } + + if (!Ext.isDefined(preventFocus)) { + preventFocus = !me.focusOnToFront; + } + + if (preventFocus) { + me.preventFocusOnActivate = true; + } + if (me.zIndexManager.bringToFront(me, preventFocus)) { + if (!preventFocus) { + + + + me.focus(false, true); + } + } + + + me.preventFocusOnActivate = preventFocusSetting; + return me; + }, + + + setActive: function(active, newActive) { + var me = this; + + if (active) { + if (me.el.shadow && !me.maximized) { + me.el.enableShadow(true); + } + if (!me.preventFocusOnActivate) { + me.focus(false, true); + } + me.fireEvent('activate', me); + } else { + + + if (me.isWindow && (newActive && newActive.isWindow) && me.hideShadowOnDeactivate) { + me.el.disableShadow(); + } + me.fireEvent('deactivate', me); + } + }, + + + toBack: function() { + this.zIndexManager.sendToBack(this); + return this; + }, + + + center: function() { + var me = this, + xy; + + if (me.isVisible()) { + xy = me.getAlignToXY(me.container, 'c-c'); + me.setPagePosition(xy); + } else { + me.needsCenter = true; + } + return me; + }, + + onFloatShow: function() { + if (this.needsCenter) { + this.center(); + } + delete this.needsCenter; + }, + + + fitContainer: function(animate) { + var me = this, + parent = me.floatParent, + container = parent ? parent.getTargetEl() : me.container, + newBox = container.getViewSize(false), + newPosition = parent || (container.dom !== document.body) ? + + [0, 0] : + + container.getXY(); + + newBox.x = newPosition[0]; + newBox.y = newPosition[1]; + me.setBox(newBox, animate); + } +}); + + +Ext.define('Ext.Component', { + + + + alias: ['widget.component', 'widget.box'], + + extend: Ext.AbstractComponent , + + + + + + + + + mixins: { + floating: Ext.util.Floating + }, + + statics: { + + DIRECTION_TOP: 'top', + DIRECTION_RIGHT: 'right', + DIRECTION_BOTTOM: 'bottom', + DIRECTION_LEFT: 'left', + + VERTICAL_DIRECTION_Re: /^(?:top|bottom)$/, + + + + INVALID_ID_CHARS_Re: /[\.,\s]/g + }, + + + + + + + resizeHandles: 'all', + + + + + + + + + floating: false, + + + defaultAlign: 'tl-bl?', + + + toFrontOnShow: true, + + + + + + + + + + + + + + + + + + + + hideMode: 'display', + + offsetsCls: Ext.baseCSSPrefix + 'hide-offsets', + + bubbleEvents: [], + + defaultComponentLayoutType: 'autocomponent', + + + + + + + + + + constructor: function(config) { + var me = this; + + config = config || {}; + if (config.initialConfig) { + + + if (config.isAction) { + me.baseAction = config; + } + config = config.initialConfig; + + } + else if (config.tagName || config.dom || Ext.isString(config)) { + + config = { + applyTo: config, + id: config.id || config + }; + } + + me.callParent([config]); + + + + if (me.baseAction){ + me.baseAction.addComponent(me); + } + }, + + + initComponent: function() { + var me = this; + + me.callParent(); + + if (me.listeners) { + me.on(me.listeners); + me.listeners = null; + } + me.enableBubble(me.bubbleEvents); + }, + + afterRender: function() { + var me = this; + + me.callParent(); + + if (!(me.x && me.y) && (me.pageX || me.pageY)) { + me.setPagePosition(me.pageX, me.pageY); + } + }, + + + setAutoScroll : function(scroll) { + var me = this; + + me.autoScroll = !!scroll; + + + + + if (me.rendered) { + me.getOverflowEl().setStyle(me.getOverflowStyle()); + } + me.updateLayout(); + return me; + }, + + + setOverflowXY: function(overflowX, overflowY) { + var me = this, + argCount = arguments.length; + + if (argCount) { + me.overflowX = overflowX || ''; + if (argCount > 1) { + me.overflowY = overflowY || ''; + } + } + + + + + if (me.rendered) { + me.getOverflowEl().setStyle(me.getOverflowStyle()); + } + me.updateLayout(); + return me; + }, + + beforeRender: function () { + var me = this, + floating = me.floating, + cls; + + if (floating) { + me.addCls(Ext.baseCSSPrefix + 'layer'); + + cls = floating.cls; + if (cls) { + me.addCls(cls); + } + } + + return me.callParent(); + }, + + beforeLayout: function(){ + this.callParent(arguments); + if (this.floating) { + this.onBeforeFloatLayout(); + } + }, + + afterComponentLayout: function(){ + this.callParent(arguments); + if (this.floating) { + this.onAfterFloatLayout(); + } + }, + + + makeFloating : function (dom) { + this.mixins.floating.constructor.call(this, dom); + }, + + wrapPrimaryEl: function (dom) { + if (this.floating) { + this.makeFloating(dom); + } else { + this.callParent(arguments); + } + }, + + initResizable: function(resizable) { + var me = this; + + resizable = Ext.apply({ + target: me, + dynamic: false, + constrainTo: me.constrainTo || (me.floatParent ? me.floatParent.getTargetEl() : null), + handles: me.resizeHandles + }, resizable); + resizable.target = me; + me.resizer = new Ext.resizer.Resizer(resizable); + }, + + getDragEl: function() { + return this.el; + }, + + initDraggable: function() { + var me = this, + + + + + dragTarget = (me.resizer && me.resizer.el !== me.el) ? me.resizerComponent = new Ext.Component({ + el: me.resizer.el, + rendered: true, + container: me.container + }) : me, + ddConfig = Ext.applyIf({ + el: dragTarget.getDragEl(), + constrainTo: (me.constrain||me.draggable.constrain) ? (me.constrainTo || (me.floatParent ? me.floatParent.getTargetEl() : me.container)) : undefined + }, me.draggable); + + + if (me.constrain || me.constrainDelegate) { + ddConfig.constrain = me.constrain; + ddConfig.constrainDelegate = me.constrainDelegate; + } + + me.dd = new Ext.util.ComponentDragger(dragTarget, ddConfig); + }, + + + scrollBy: function(deltaX, deltaY, animate) { + var el; + + if ((el = this.getTargetEl()) && el.dom) { + el.scrollBy.apply(el, arguments); + } + }, + + + setLoading : function(load, targetEl) { + var me = this, + config = { + target: me + }; + + if (me.rendered) { + Ext.destroy(me.loadMask); + me.loadMask = null; + + if (load !== false && !me.collapsed) { + if (Ext.isObject(load)) { + Ext.apply(config, load); + } else if (Ext.isString(load)) { + config.msg = load; + } + + if (targetEl) { + Ext.applyIf(config, { + useTargetEl: true + }); + } + me.loadMask = new Ext.LoadMask(config); + me.loadMask.show(); + } + } + return me.loadMask; + }, + + beforeSetPosition: function () { + var me = this, + pos = me.callParent(arguments), + adj; + + if (pos) { + adj = me.adjustPosition(pos.x, pos.y); + pos.x = adj.x; + pos.y = adj.y; + } + return pos || null; + }, + + afterSetPosition: function(ax, ay) { + this.onPosition(ax, ay); + this.fireEvent('move', this, ax, ay); + }, + + + showAt: function(x, y, animate) { + var me = this; + + + + if (!me.rendered && (me.autoRender || me.floating)) { + me.x = x; + me.y = y; + return me.show(); + } + if (me.floating) { + me.setPosition(x, y, animate); + } else { + me.setPagePosition(x, y, animate); + } + me.show(); + }, + + + showBy: function(cmp, pos, off) { + var me = this; + + + if (me.floating && cmp) { + me.show(); + + + if (me.rendered && !me.hidden) { + + + + me.alignTo(cmp, pos || me.defaultAlign, off); + } + } + return me; + }, + + + setPagePosition: function(x, y, animate) { + var me = this, + p, + floatParentBox; + + if (Ext.isArray(x)) { + y = x[1]; + x = x[0]; + } + me.pageX = x; + me.pageY = y; + + if (me.floating) { + + + if (me.isContainedFloater()) { + floatParentBox = me.floatParent.getTargetEl().getViewRegion(); + if (Ext.isNumber(x) && Ext.isNumber(floatParentBox.left)) { + x -= floatParentBox.left; + } + if (Ext.isNumber(y) && Ext.isNumber(floatParentBox.top)) { + y -= floatParentBox.top; + } + } else { + p = me.el.translateXY(x, y); + x = p.x; + y = p.y; + } + + me.setPosition(x, y, animate); + } else { + p = me.el.translateXY(x, y); + me.setPosition(p.x, p.y, animate); + } + + return me; + }, + + + + isContainedFloater: function() { + return (this.floating && this.floatParent); + }, + + + updateBox : function(box){ + this.setSize(box.width, box.height); + this.setPagePosition(box.x, box.y); + return this; + }, + + + getOuterSize: function() { + var el = this.el; + return { + width: el.getWidth() + el.getMargin('lr'), + height: el.getHeight() + el.getMargin('tb') + }; + }, + + + adjustPosition: function(x, y) { + var me = this, + floatParentBox; + + + if (me.isContainedFloater()) { + floatParentBox = me.floatParent.getTargetEl().getViewRegion(); + x += floatParentBox.left; + y += floatParentBox.top; + } + + return { + x: x, + y: y + }; + }, + + + getPosition: function(local) { + var me = this, + xy, + isContainedFloater = me.isContainedFloater(), + floatParentBox; + + + if ((local === true) && !isContainedFloater) { + return [me.getLocalX(), me.getLocalY()]; + } + + xy = me.getXY(); + + + if ((local === true) && isContainedFloater) { + floatParentBox = me.floatParent.getTargetEl().getViewRegion(); + xy[0] -= floatParentBox.left; + xy[1] -= floatParentBox.top; + } + return xy; + }, + + getId: function() { + var me = this, + xtype; + + if (!me.id) { + xtype = me.getXType(); + if (xtype) { + xtype = xtype.replace(Ext.Component.INVALID_ID_CHARS_Re, '-'); + } else { + xtype = Ext.name.toLowerCase() + '-comp'; + } + me.id = xtype + '-' + me.getAutoId(); + } + return me.id; + }, + + + show: function(animateTarget, cb, scope) { + var me = this, + rendered = me.rendered; + + if (me.hierarchicallyHidden || (me.floating && !rendered && me.isHierarchicallyHidden())) { + + + + if (!rendered) { + + + + + + + + + + me.initHierarchyEvents(); + } + + if (arguments.length > 1) { + arguments[0] = null; + me.pendingShow = arguments; + } else { + me.pendingShow = true; + } + } else if (rendered && me.isVisible()) { + if (me.toFrontOnShow && me.floating) { + me.toFront(); + } + } else { + if (me.fireEvent('beforeshow', me) !== false) { + me.hidden = false; + delete this.getHierarchyState().hidden; + + + + + + + + + + Ext.suspendLayouts(); + if (!rendered && (me.autoRender || me.floating)) { + me.doAutoRender(); + rendered = me.rendered; + } + + if (rendered) { + me.beforeShow(); + Ext.resumeLayouts(); + me.onShow.apply(me, arguments); + me.afterShow.apply(me, arguments); + } else { + Ext.resumeLayouts(true); + } + } else { + me.onShowVeto(); + } + } + return me; + }, + + onShowVeto: Ext.emptyFn, + + + beforeShow: Ext.emptyFn, + + + onShow: function() { + var me = this; + + me.el.show(); + me.callParent(arguments); + + + if (me.floating) { + if (me.maximized) { + me.fitContainer(); + } + else if (me.constrain) { + me.doConstrain(); + } + } + }, + + getAnimateTarget: function(target){ + target = target || this.animateTarget; + if (target) { + target = target.isComponent ? target.getEl() : Ext.get(target); + } + return target || null; + }, + + + afterShow: function(animateTarget, cb, scope) { + var me = this, + myEl = me.el, + fromBox, + toBox, + ghostPanel; + + + animateTarget = me.getAnimateTarget(animateTarget); + + + if (!me.ghost) { + animateTarget = null; + } + + if (animateTarget) { + toBox = { + x: myEl.getX(), + y: myEl.getY(), + width: myEl.dom.offsetWidth, + height: myEl.dom.offsetHeight + }; + fromBox = { + x: animateTarget.getX(), + y: animateTarget.getY(), + width: animateTarget.dom.offsetWidth, + height: animateTarget.dom.offsetHeight + }; + myEl.addCls(me.offsetsCls); + ghostPanel = me.ghost(); + ghostPanel.el.stopAnimation(); + + + ghostPanel.setX(-10000); + + me.ghostBox = toBox; + ghostPanel.el.animate({ + from: fromBox, + to: toBox, + listeners: { + afteranimate: function() { + delete ghostPanel.componentLayout.lastComponentSize; + me.unghost(); + delete me.ghostBox; + myEl.removeCls(me.offsetsCls); + me.onShowComplete(cb, scope); + } + } + }); + } + else { + me.onShowComplete(cb, scope); + } + me.fireHierarchyEvent('show'); + }, + + + onShowComplete: function(cb, scope) { + var me = this; + if (me.floating) { + me.toFront(); + me.onFloatShow(); + } + Ext.callback(cb, scope || me); + me.fireEvent('show', me); + delete me.hiddenByLayout; + }, + + + hide: function(animateTarget, cb, scope) { + var me = this, + continueHide; + + if (me.pendingShow) { + + + delete me.pendingShow; + } if (!(me.rendered && !me.isVisible())) { + continueHide = (me.fireEvent('beforehide', me) !== false); + if (me.hierarchicallyHidden || continueHide) { + me.hidden = true; + me.getHierarchyState().hidden = true; + if (me.rendered) { + me.onHide.apply(me, arguments); + } + } + } + return me; + }, + + + onHide: function(animateTarget, cb, scope) { + var me = this, + ghostPanel, + fromSize, + toBox; + + + animateTarget = me.getAnimateTarget(animateTarget); + + + if (!me.ghost) { + animateTarget = null; + } + + if (animateTarget) { + toBox = { + x: animateTarget.getX(), + y: animateTarget.getY(), + width: animateTarget.dom.offsetWidth, + height: animateTarget.dom.offsetHeight + }; + ghostPanel = me.ghost(); + ghostPanel.el.stopAnimation(); + fromSize = me.getSize(); + ghostPanel.el.animate({ + to: toBox, + listeners: { + afteranimate: function() { + delete ghostPanel.componentLayout.lastComponentSize; + ghostPanel.el.hide(); + ghostPanel.el.setSize(fromSize); + me.afterHide(cb, scope); + } + } + }); + } + me.el.hide(); + if (!animateTarget) { + me.afterHide(cb, scope); + } + }, + + + afterHide: function(cb, scope) { + var me = this, + activeEl = Ext.Element.getActiveElement(); + + me.hiddenByLayout = null; + + + + Ext.AbstractComponent.prototype.onHide.call(me); + + + if (activeEl === me.el || me.el.contains(activeEl)) { + Ext.fly(activeEl).blur(); + } + + Ext.callback(cb, scope || me); + me.fireEvent('hide', me); + me.fireHierarchyEvent('hide'); + }, + + + onDestroy: function() { + var me = this; + + + if (me.rendered) { + Ext.destroy( + me.dd, + me.resizer, + me.proxy, + me.proxyWrap, + me.resizerComponent + ); + } + delete me.focusTask; + me.callParent(); + }, + + deleteMembers: function() { + var args = arguments, + len = args.length, + i = 0; + for (; i < len; ++i) { + delete this[args[i]]; + } + }, + + + focus: function(selectText, delay, callback, scope) { + var me = this, + focusEl, + focusElDom, + containerScrollTop; + + + if (delay) { + if (!me.focusTask) { + + + Ext.Component.prototype.focusTask = new Ext.util.DelayedTask(me.focus); + } + me.focusTask.delay(Ext.isNumber(delay) ? delay : 10, null, me, [selectText, false, callback, scope]); + return me; + } + + + if (me.focusTask) { + me.focusTask.cancel(); + } + + if (me.rendered && !me.isDestroyed && me.isVisible(true) && (focusEl = me.getFocusEl())) { + + + + if (focusEl.isComponent) { + return focusEl.focus(selectText, delay); + } + + + if ((focusElDom = focusEl.dom)) { + + + if (focusEl.needsTabIndex()) { + focusElDom.tabIndex = -1; + } + + if (me.floating) { + containerScrollTop = me.container.dom.scrollTop; + } + + + + + focusEl.focus(); + if (selectText === true) { + focusElDom.select(); + } + + + Ext.callback(callback, scope); + } + + + + if (me.floating) { + me.toFront(true); + if (containerScrollTop !== undefined) { + me.container.dom.scrollTop = containerScrollTop; + } + } + } + return me; + }, + + + cancelFocus: function() { + var task = this.focusTask; + if (task) { + task.cancel(); + } + }, + + + blur: function() { + var focusEl; + if (this.rendered && (focusEl = this.getFocusEl())) { + focusEl.blur(); + } + return this; + }, + + getEl: function() { + return this.el; + }, + + + getResizeEl: function() { + return this.el; + }, + + + getPositionEl: function() { + return this.el; + }, + + + getActionEl: function() { + return this.el; + }, + + + getVisibilityEl: function() { + return this.el; + }, + + + getRefOwner: function() { + return this.ownerCt || this.floatParent; + }, + + + getBubbleTarget: function() { + return this.getRefOwner(); + }, + + + getContentTarget: function() { + return this.el; + }, + + + cloneConfig: function(overrides) { + overrides = overrides || {}; + var id = overrides.id || Ext.id(), + cfg = Ext.applyIf(overrides, this.initialConfig), + self; + + cfg.id = id; + + self = Ext.getClass(this); + + + return new self(cfg); + }, + + + getXType: function() { + return this.self.xtype; + }, + + + findParentBy: function(fn) { + var p; + + + for (p = this.getBubbleTarget(); p && !fn(p, this); p = p.getBubbleTarget()) { + + } + return p || null; + }, + + + findParentByType: function(xtype) { + return Ext.isFunction(xtype) ? + this.findParentBy(function(p) { + return p.constructor === xtype; + }) + : + this.up(xtype); + }, + + + bubble: function(fn, scope, args) { + var p = this; + while (p) { + if (fn.apply(scope || p, args || [p]) === false) { + break; + } + p = p.getBubbleTarget(); + } + return this; + }, + + getProxy: function() { + var me = this, + target; + + if (!me.proxy) { + target = Ext.getBody(); + me.proxy = me.el.createProxy(Ext.baseCSSPrefix + 'proxy-el', target, true); + } + return me.proxy; + }, + + + fireHierarchyEvent: function (ename) { + this.hierarchyEventSource.fireEvent(ename, this); + }, + + onAdded: function() { + this.callParent(arguments); + if (this.hierarchyEventSource.hasListeners.added) { + this.fireHierarchyEvent('added'); + } + } +}, function () { + + this.hierarchyEventSource = this.prototype.hierarchyEventSource = new Ext.util.Observable({ events: { + hide: true, + show: true, + collapse: true, + expand: true, + added: true + }}); +}); + + +Ext.define('Ext.layout.container.border.Region', { + override: 'Ext.Component', + + + initBorderRegion: function () { + var me = this; + + if (!me._borderRegionInited) { + me._borderRegionInited = true; + + + + me.addStateEvents(['changeregion', 'changeweight']); + + + + + + Ext.override(me, { + getState: function () { + var state = me.callParent(); + + + + state = me.addPropertyToState(state, 'region'); + state = me.addPropertyToState(state, 'weight'); + + return state; + } + }); + } + }, + + + getOwningBorderContainer: function () { + var layout = this.getOwningBorderLayout(); + return layout && layout.owner; + }, + + + getOwningBorderLayout: function () { + + var layout = this.ownerLayout; + return (layout && layout.isBorderLayout) ? layout : null; + }, + + + setBorderRegion: function (region) { + var me = this, + borderLayout, + old = me.region; + + if (region !== old) { + borderLayout = me.getOwningBorderLayout(); + if (borderLayout) { + var regionFlags = borderLayout.regionFlags[region], + placeholder = me.placeholder, + splitter = me.splitter, + owner = borderLayout.owner, + regionMeta = borderLayout.regionMeta, + collapsed = me.collapsed || me.floated, + delta, items, index; + + if (me.fireEventArgs('beforechangeregion', [me, region]) === false) { + return old; + } + Ext.suspendLayouts(); + + me.region = region; + Ext.apply(me, regionFlags); + + if (me.updateCollapseTool) { + me.updateCollapseTool(); + } + + if (splitter) { + + Ext.apply(splitter, regionFlags); + splitter.updateOrientation(); + + items = owner.items; + index = items.indexOf(me); + if (index >= 0) { + delta = regionMeta[region].splitterDelta; + if (items.getAt(index + delta) !== splitter) { + + items.remove(splitter); + index = items.indexOf(me); + if (delta > 0) { + ++index; + } + + items.insert(index, splitter); + + + + + } + } + } + if (placeholder) { + + + + + if (collapsed) { + me.expand(false); + } + + owner.remove(placeholder); + me.placeholder = null; + + if (collapsed) { + me.collapse(null, false); + } + } + + owner.updateLayout(); + Ext.resumeLayouts(true); + + me.fireEventArgs('changeregion', [me, old]); + } else { + me.region = region; + } + } + + return old; + }, + + + setRegionWeight: function (weight) { + var me = this, + ownerCt = me.getOwningBorderContainer(), + placeholder = me.placeholder, + old = me.weight; + + if (weight !== old) { + if (me.fireEventArgs('beforechangeweight', [me, weight]) !== false) { + me.weight = weight; + if (placeholder) { + placeholder.weight = weight; + } + if (ownerCt) { + ownerCt.updateLayout(); + } + me.fireEventArgs('changeweight', [me, old]); + } + } + + return old; + } +}); + + +Ext.define('Ext.ElementLoader', { + + + + mixins: { + observable: Ext.util.Observable + }, + + + + + + + statics: { + Renderer: { + Html: function(loader, response, active){ + loader.getTarget().update(response.responseText, active.scripts === true); + return true; + } + } + }, + + + + + url: null, + + + params: null, + + + baseParams: null, + + + autoLoad: false, + + + target: null, + + + loadMask: false, + + + ajaxOptions: null, + + + scripts: false, + + + + + + + + + + + + + isLoader: true, + + constructor: function(config) { + var me = this, + autoLoad; + + config = config || {}; + Ext.apply(me, config); + me.setTarget(me.target); + me.addEvents( + + 'beforeload', + + + 'exception', + + + 'load' + ); + + + me.mixins.observable.constructor.call(me); + + if (me.autoLoad) { + autoLoad = me.autoLoad; + if (autoLoad === true) { + autoLoad = {}; + } + me.load(autoLoad); + } + }, + + + setTarget: function(target){ + var me = this; + target = Ext.get(target); + if (me.target && me.target != target) { + me.abort(); + } + me.target = target; + }, + + + getTarget: function(){ + return this.target || null; + }, + + + abort: function(){ + var active = this.active; + if (active !== undefined) { + Ext.Ajax.abort(active.request); + if (active.mask) { + this.removeMask(); + } + delete this.active; + } + }, + + + removeMask: function(){ + this.target.unmask(); + }, + + + addMask: function(mask){ + this.target.mask(mask === true ? null : mask); + }, + + + load: function(options) { + + options = Ext.apply({}, options); + + var me = this, + mask = Ext.isDefined(options.loadMask) ? options.loadMask : me.loadMask, + params = Ext.apply({}, options.params), + ajaxOptions = Ext.apply({}, options.ajaxOptions), + callback = options.callback || me.callback, + scope = options.scope || me.scope || me; + + Ext.applyIf(ajaxOptions, me.ajaxOptions); + Ext.applyIf(options, ajaxOptions); + + Ext.applyIf(params, me.params); + Ext.apply(params, me.baseParams); + + Ext.applyIf(options, { + url: me.url + }); + + + Ext.apply(options, { + scope: me, + params: params, + callback: me.onComplete + }); + + if (me.fireEvent('beforeload', me, options) === false) { + return; + } + + if (mask) { + me.addMask(mask); + } + + me.active = { + options: options, + mask: mask, + scope: scope, + callback: callback, + success: options.success || me.success, + failure: options.failure || me.failure, + renderer: options.renderer || me.renderer, + scripts: Ext.isDefined(options.scripts) ? options.scripts : me.scripts + }; + me.active.request = Ext.Ajax.request(options); + me.setOptions(me.active, options); + }, + + + setOptions: Ext.emptyFn, + + + onComplete: function(options, success, response) { + var me = this, + active = me.active, + scope; + + if (active) { + scope = active.scope; + if (success) { + success = me.getRenderer(active.renderer).call(me, me, response, active) !== false; + } + + if (success) { + Ext.callback(active.success, scope, [me, response, options]); + me.fireEvent('load', me, response, options); + } else { + Ext.callback(active.failure, scope, [me, response, options]); + me.fireEvent('exception', me, response, options); + } + Ext.callback(active.callback, scope, [me, success, response, options]); + if (active.mask) { + me.removeMask(); + } + } + + delete me.active; + }, + + + getRenderer: function(renderer){ + if (Ext.isFunction(renderer)) { + return renderer; + } + return this.statics().Renderer.Html; + }, + + + startAutoRefresh: function(interval, options){ + var me = this; + me.stopAutoRefresh(); + me.autoRefresh = setInterval(function(){ + me.load(options); + }, interval); + }, + + + stopAutoRefresh: function(){ + clearInterval(this.autoRefresh); + delete this.autoRefresh; + }, + + + isAutoRefreshing: function(){ + return Ext.isDefined(this.autoRefresh); + }, + + + destroy: function(){ + var me = this; + me.stopAutoRefresh(); + delete me.target; + me.abort(); + me.clearListeners(); + } +}); + + +Ext.define('Ext.ComponentLoader', { + + + + extend: Ext.ElementLoader , + + statics: { + Renderer: { + Data: function(loader, response, active){ + var success = true; + try { + loader.getTarget().update(Ext.decode(response.responseText)); + } catch (e) { + success = false; + } + return success; + }, + + Component: function(loader, response, active){ + var success = true, + target = loader.getTarget(), + items = []; + + + try { + items = Ext.decode(response.responseText); + } catch (e) { + success = false; + } + + if (success) { + target.suspendLayouts(); + if (active.removeAll) { + target.removeAll(); + } + target.add(items); + target.resumeLayouts(true); + } + return success; + } + } + }, + + + + + target: null, + + + loadMask: false, + + + + + renderer: 'html', + + + setTarget: function(target){ + var me = this; + + if (Ext.isString(target)) { + target = Ext.getCmp(target); + } + + if (me.target && me.target != target) { + me.abort(); + } + me.target = target; + }, + + + removeMask: function(){ + this.target.setLoading(false); + }, + + + addMask: function(mask){ + this.target.setLoading(mask); + }, + + + setOptions: function(active, options){ + active.removeAll = Ext.isDefined(options.removeAll) ? options.removeAll : this.removeAll; + }, + + + getRenderer: function(renderer){ + if (Ext.isFunction(renderer)) { + return renderer; + } + + var renderers = this.statics().Renderer; + switch (renderer) { + case 'component': + return renderers.Component; + case 'data': + return renderers.Data; + default: + return Ext.ElementLoader.Renderer.Html; + } + } +}); + + +Ext.define('Ext.layout.SizeModel', { + constructor: function (config) { + var me = this, + SizeModel = me.self, + sizeModelsArray = SizeModel.sizeModelsArray, + name; + + Ext.apply(me, config); + + me[name = me.name] = true; + + me.fixed = !(me.auto = me.natural || me.shrinkWrap); + + + sizeModelsArray[me.ordinal = sizeModelsArray.length] = + SizeModel[name] = + SizeModel.sizeModels[name] = me; + }, + + statics: { + + sizeModelsArray: [], + + + sizeModels: {} + }, + + + + + + + calculated: false, + + + configured: false, + + + constrainedMax: false, + + + constrainedMin: false, + + + + + natural: false, + + + shrinkWrap: false, + + + calculatedFromConfigured: false, + + + calculatedFromNatural: false, + + + calculatedFromShrinkWrap: false, + + + names: null +}, +function () { + var SizeModel = this, + sizeModelsArray = SizeModel.sizeModelsArray, + i, j, n, pairs, sizeModel; + + + + + new SizeModel({ + name: 'calculated' + }); + + new SizeModel({ + name: 'configured', + names: { width: 'width', height: 'height' } + }); + + new SizeModel({ + name: 'natural' + }); + + new SizeModel({ + name: 'shrinkWrap' + }); + + + + + + new SizeModel({ + name: 'calculatedFromConfigured', + configured: true, + names: { width: 'width', height: 'height' } + }); + + new SizeModel({ + name: 'calculatedFromNatural', + natural: true + }); + + new SizeModel({ + name: 'calculatedFromShrinkWrap', + shrinkWrap: true + }); + + new SizeModel({ + name: 'constrainedMax', + configured: true, + constrained: true, + names: { width: 'maxWidth', height: 'maxHeight' } + }); + + new SizeModel({ + name: 'constrainedMin', + configured: true, + constrained: true, + names: { width: 'minWidth', height: 'minHeight' } + }); + + new SizeModel({ + name: 'constrainedDock', + configured: true, + constrained: true, + constrainedByMin: true, + names: { width: 'dockConstrainedWidth', height: 'dockConstrainedHeight' } + }); + + for (i = 0, n = sizeModelsArray.length; i < n; ++i) { + sizeModel = sizeModelsArray[i]; + + + sizeModel.pairsByHeightOrdinal = pairs = []; + + for (j = 0; j < n; ++j) { + pairs.push({ + width: sizeModel, + height: sizeModelsArray[j] + }); + } + } +}); + + +Ext.define('Ext.layout.Layout', { + + + + + + + + + isLayout: true, + initialized: false, + running: false, + + autoSizePolicy: { + readsWidth: 1, + readsHeight: 1, + setsWidth: 0, + setsHeight: 0 + }, + + statics: { + layoutsByType: {}, + + create: function(layout, defaultType) { + var ClassManager = Ext.ClassManager, + layoutsByType = this.layoutsByType, + alias, className, config, layoutClass, type, load; + + if (!layout || typeof layout === 'string') { + type = layout || defaultType; + config = {}; + } else if (layout.isLayout) { + return layout; + } else { + config = layout; + type = layout.type || defaultType; + } + + if (!(layoutClass = layoutsByType[type])) { + alias = 'layout.' + type; + className = ClassManager.getNameByAlias(alias); + + + if (!className) { + load = true; + } + + layoutClass = ClassManager.get(className); + if (load || !layoutClass) { + return ClassManager.instantiateByAlias(alias, config || {}); + } + layoutsByType[type] = layoutClass; + } + + return new layoutClass(config); + } + }, + + constructor : function(config) { + var me = this; + + me.id = Ext.id(null, me.type + '-'); + Ext.apply(me, config); + me.layoutCount = 0; + }, + + + + + beginLayout: Ext.emptyFn, + + + beginLayoutCycle: function (ownerContext) { + var me = this, + context = me.context, + changed; + + if (me.lastWidthModel != ownerContext.widthModel) { + if (me.lastWidthModel) { + changed = true; + } + me.lastWidthModel = ownerContext.widthModel; + } + + if (me.lastHeightModel != ownerContext.heightModel) { + if (me.lastWidthModel) { + changed = true; + } + me.lastHeightModel = ownerContext.heightModel; + } + + if (changed) { + (context = ownerContext.context).clearTriggers(me, false); + context.clearTriggers(me, true); + me.triggerCount = 0; + } + }, + + + + + + + + + finishedLayout: function (ownerContext) { + this.lastWidthModel = ownerContext.widthModel; + this.lastHeightModel = ownerContext.heightModel; + this.ownerContext = null; + }, + + + + redoLayout: Ext.emptyFn, + undoLayout: Ext.emptyFn, + + getAnimatePolicy: function() { + return this.animatePolicy; + }, + + + getItemSizePolicy: function (item) { + return this.autoSizePolicy; + }, + + isItemBoxParent: function (itemContext) { + return false; + }, + + isItemLayoutRoot: function (item) { + var sizeModel = item.getSizeModel(), + width = sizeModel.width, + height = sizeModel.height; + + + + if (!item.componentLayout.lastComponentSize && (width.calculated || height.calculated)) { + return false; + } + + + return !width.shrinkWrap && !height.shrinkWrap; + }, + + isItemShrinkWrap: function (item) { + return item.shrinkWrap; + }, + + isRunning: function () { + return !!this.ownerContext; + }, + + + + + + getItemsRenderTree: function (items, renderCfgs) { + var length = items.length, + i, item, itemConfig, result; + + if (length) { + result = []; + for (i = 0; i < length; ++i) { + item = items[i]; + + + + if (!item.rendered) { + + + + + + + if (renderCfgs && (renderCfgs[item.id] !== undefined)) { + itemConfig = renderCfgs[item.id]; + } else { + + this.configureItem(item); + itemConfig = item.getRenderTree(); + if (renderCfgs) { + renderCfgs[item.id] = itemConfig; + } + } + + + if (itemConfig) { + result.push(itemConfig); + } + } + } + } + + return result; + }, + + finishRender: Ext.emptyFn, + + finishRenderItems: function (target, items) { + var length = items.length, + i, item; + + for (i = 0; i < length; i++) { + item = items[i]; + + + if (item.rendering) { + + + item.finishRender(i); + + this.afterRenderItem(item); + } + } + }, + + renderChildren: function () { + var me = this, + items = me.getLayoutItems(), + target = me.getRenderTarget(); + + me.renderItems(items, target); + }, + + + renderItems : function(items, target) { + var me = this, + ln = items.length, + i = 0, + item; + + if (ln) { + Ext.suspendLayouts(); + for (; i < ln; i++) { + item = items[i]; + if (item && !item.rendered) { + me.renderItem(item, target, i); + } else if (!me.isValidParent(item, target, i)) { + me.moveItem(item, target, i); + } else { + + me.configureItem(item); + } + } + Ext.resumeLayouts(true); + } + }, + + + isValidParent : function(item, target, position) { + var itemDom = item.el ? item.el.dom : Ext.getDom(item), + targetDom = (target && target.dom) || target, + parentNode = itemDom.parentNode, + className; + + + if (parentNode) { + className = parentNode.className; + if (className && className.indexOf(Ext.baseCSSPrefix + 'resizable-wrap') !== -1) { + itemDom = itemDom.parentNode; + } + } + + + if (itemDom && targetDom) { + if (typeof position == 'number') { + position = this.getPositionOffset(position); + return itemDom === targetDom.childNodes[position]; + } + return itemDom.parentNode === targetDom; + } + + return false; + }, + + getPositionOffset: function(position){ + return position; + }, + + + configureItem: function(item) { + item.ownerLayout = this; + }, + + + renderItem : function(item, target, position) { + var me = this; + if (!item.rendered) { + me.configureItem(item); + item.render(target, position); + me.afterRenderItem(item); + } + }, + + + moveItem : function(item, target, position) { + target = target.dom || target; + if (typeof position == 'number') { + position = target.childNodes[position]; + } + target.insertBefore(item.el.dom, position || null); + item.container = Ext.get(target); + this.configureItem(item); + }, + + + onContentChange: function () { + this.owner.updateLayout(); + return true; + }, + + + initLayout : function() { + this.initialized = true; + }, + + + setOwner : function(owner) { + this.owner = owner; + }, + + + getLayoutItems : function() { + return []; + }, + + onAdd: function (item) { + item.ownerLayout = this; + }, + afterRenderItem: Ext.emptyFn, + onRemove : Ext.emptyFn, + onDestroy : Ext.emptyFn, + + + afterRemove : function(item) { + var me = this, + el = item.el, + owner = me.owner, + removeClasses; + + if (item.rendered) { + removeClasses = [].concat(me.itemCls || []); + if (owner.itemCls) { + removeClasses = Ext.Array.push(removeClasses, owner.itemCls); + } + if (removeClasses.length) { + el.removeCls(removeClasses); + } + } + + delete item.ownerLayout; + }, + + + destroy : function() { + var me = this, + target; + + if (me.targetCls) { + target = me.getTarget(); + if (target) { + target.removeCls(me.targetCls); + } + } + + me.onDestroy(); + }, + + sortWeightedItems: function (items, reverseProp) { + for (var i = 0, length = items.length; i < length; ++i) { + items[i].$i = i; + } + + Ext.Array.sort(items, function (item1, item2) { + var ret = item2.weight - item1.weight; + + if (!ret) { + ret = item1.$i - item2.$i; + if (item1[reverseProp]) { + ret = -ret; + } + } + + return ret; + }); + + for (i = 0; i < length; ++i) { + delete items[i].$i; + } + } +}, function () { + var Layout = this; + + Layout.prototype.sizeModels = Layout.sizeModels = Ext.layout.SizeModel.sizeModels; +}); + + +Ext.define('Ext.layout.container.Container', { + + + + alias: ['layout.container'], + + extend: Ext.layout.Layout , + + alternateClassName: 'Ext.layout.ContainerLayout', + + mixins: { + elementCt: Ext.util.ElementContainer + }, + + + + + + type: 'container', + + + + + + + beginCollapse: Ext.emptyFn, + + + beginExpand: Ext.emptyFn, + + + animatePolicy: null, + + childEls: [ + + 'overflowPadderEl' + ], + + renderTpl: [ + '{%this.renderBody(out,values)%}' + ], + + usesContainerHeight: true, + usesContainerWidth: true, + usesHeight: true, + usesWidth: true, + + constructor: function () { + this.callParent(arguments); + this.mixins.elementCt.constructor.call(this); + }, + + destroy : function() { + this.callParent(); + this.mixins.elementCt.destroy.call(this); + }, + + + beginLayout: function (ownerContext) { + this.callParent(arguments); + + ownerContext.targetContext = ownerContext.paddingContext = ownerContext.getEl('getTarget', this); + + this.cacheChildItems(ownerContext); + }, + + beginLayoutCycle: function (ownerContext, firstCycle) { + var me = this; + + me.callParent(arguments); + + if (firstCycle) { + if (me.usesContainerHeight) { + ++ownerContext.consumersContainerHeight; + } + if (me.usesContainerWidth) { + ++ownerContext.consumersContainerWidth; + } + } + }, + + cacheChildItems: function (ownerContext) { + var context = ownerContext.context, + childItems = [], + items = this.getVisibleItems(), + length = items.length, + i; + + ownerContext.childItems = childItems; + ownerContext.visibleItems = items; + + for (i = 0; i < length; ++i) { + childItems.push(context.getCmp(items[i])); + } + }, + + cacheElements: function () { + var owner = this.owner; + + this.applyChildEls(owner.el, owner.id); + }, + + + configureItem: function(item) { + var me = this, + itemCls = me.itemCls, + ownerItemCls = me.owner.itemCls, + addClasses; + + + item.ownerLayout = me; + + if (itemCls) { + + addClasses = typeof itemCls === 'string' ? [itemCls] : itemCls; + } + if (ownerItemCls) { + addClasses = Ext.Array.push(addClasses||[], ownerItemCls); + } + if (addClasses) { + item.addCls(addClasses); + } + }, + + doRenderBody: function (out, renderData) { + + + + this.renderItems(out, renderData); + this.renderContent(out, renderData); + }, + + doRenderContainer: function (out, renderData) { + + + + var me = renderData.$comp.layout, + tpl = me.getRenderTpl(), + data = me.getRenderData(); + + tpl.applyOut(data, out); + }, + + doRenderItems: function (out, renderData) { + + + + var me = renderData.$layout, + tree = me.getRenderTree(); + + if (tree) { + Ext.DomHelper.generateMarkup(tree, out); + } + }, + + finishRender: function () { + var me = this, + target, items; + + me.callParent(); + + me.cacheElements(); + + target = me.getRenderTarget(); + items = me.getLayoutItems(); + + + me.finishRenderItems(target, items); + }, + + + notifyOwner: function() { + this.owner.afterLayout(this); + }, + + + getContainerSize : function(ownerContext, inDom) { + + + + + + + var targetContext = ownerContext.targetContext, + frameInfo = targetContext.getFrameInfo(), + padding = ownerContext.paddingContext.getPaddingInfo(), + got = 0, + needed = 0, + gotWidth, gotHeight, width, height; + + + + + + + + + + if (!ownerContext.widthModel.shrinkWrap) { + ++needed; + width = inDom ? targetContext.getDomProp('width') : targetContext.getProp('width'); + gotWidth = (typeof width == 'number'); + if (gotWidth) { + ++got; + width -= frameInfo.width + padding.width; + if (width < 0) { + width = 0; + } + } + } + + if (!ownerContext.heightModel.shrinkWrap) { + ++needed; + height = inDom ? targetContext.getDomProp('height') : targetContext.getProp('height'); + gotHeight = (typeof height == 'number'); + if (gotHeight) { + ++got; + height -= frameInfo.height + padding.height; + if (height < 0) { + height = 0; + } + } + } + + return { + width: width, + height: height, + needed: needed, + got: got, + gotAll: got == needed, + gotWidth: gotWidth, + gotHeight: gotHeight + }; + }, + + + + + + + + + + getPositionOffset: function(position) { + if (!this.createsInnerCt) { + var offset = this.owner.itemNodeOffset; + if (offset) { + position += offset; + } + } + return position; + }, + + + getLayoutItems: function() { + var owner = this.owner, + items = owner && owner.items; + + return (items && items.items) || []; + }, + + getRenderData: function () { + var comp = this.owner; + + return { + $comp: comp, + $layout: this, + ownerId: comp.id + }; + }, + + + getRenderedItems: function() { + var me = this, + target = me.getRenderTarget(), + items = me.getLayoutItems(), + ln = items.length, + renderedItems = [], + i, item; + + for (i = 0; i < ln; i++) { + item = items[i]; + if (item.rendered && me.isValidParent(item, target, i)) { + renderedItems.push(item); + } + } + + return renderedItems; + }, + + + getRenderTarget: function() { + return this.owner.getTargetEl(); + }, + + + getElementTarget: function() { + return this.getRenderTarget(); + }, + + getRenderTpl: function () { + var me = this, + renderTpl = Ext.XTemplate.getTpl(this, 'renderTpl'); + + + + if (!renderTpl.renderContent) { + me.owner.setupRenderTpl(renderTpl); + } + + return renderTpl; + }, + + getRenderTree: function () { + var result, + items = this.owner.items, + itemsGen, + renderCfgs = {}; + + do { + itemsGen = items.generation; + result = this.getItemsRenderTree(this.getLayoutItems(), renderCfgs); + } while (items.generation !== itemsGen); + return result; + }, + + renderChildren: function () { + var me = this, + ownerItems = me.owner.items, + target = me.getRenderTarget(), + itemsGen, items; + + + + + do { + itemsGen = ownerItems.generation; + items = me.getLayoutItems(); + me.renderItems(items, target); + } while (ownerItems.generation !== itemsGen); + }, + + getScrollbarsNeeded: function (width, height, contentWidth, contentHeight) { + var scrollbarSize = Ext.getScrollbarSize(), + hasWidth = typeof width == 'number', + hasHeight = typeof height == 'number', + needHorz = 0, + needVert = 0; + + + if (!scrollbarSize.width) { + return 0; + } + if (hasHeight && height < contentHeight) { + needVert = 2; + width -= scrollbarSize.width; + } + + if (hasWidth && width < contentWidth) { + needHorz = 1; + if (!needVert && hasHeight) { + height -= scrollbarSize.height; + if (height < contentHeight) { + needVert = 2; + } + } + } + + return needVert + needHorz; + }, + + + getTarget: function() { + return this.owner.getTargetEl(); + }, + + + getVisibleItems: function() { + var target = this.getRenderTarget(), + items = this.getLayoutItems(), + ln = items.length, + visibleItems = [], + i, item; + + for (i = 0; i < ln; i++) { + item = items[i]; + if (item.rendered && this.isValidParent(item, target, i) && item.hidden !== true) { + visibleItems.push(item); + } + } + + return visibleItems; + }, + + setupRenderTpl: function (renderTpl) { + var me = this; + + renderTpl.renderBody = me.doRenderBody; + renderTpl.renderContainer = me.doRenderContainer; + renderTpl.renderItems = me.doRenderItems; + }, + + getContentTarget: function(){ + return this.owner.getDefaultContentTarget(); + } + +}); + + +Ext.define('Ext.layout.container.Auto', { + + + + alias: ['layout.auto', 'layout.autocontainer'], + + extend: Ext.layout.container.Container , + + + + type: 'autocontainer', + + childEls: [ + 'outerCt', + 'innerCt', + 'clearEl' + ], + + + reserveScrollbar: false, + + + managePadding: true, + + + manageOverflow: false, + + + lastOverflowAdjust: { + width: 0, + height: 0 + }, + + + + + + + + + + + + + + renderTpl: [ + '{% if (!(Ext.isIEQuirks || Ext.isIE7m)) { %}', + + + + + + + + '', + + + '
', + '{%this.renderBody(out,values)%}', + '
', + '
', + '{% } else if (values.shrinkWrapWidth) { %}', + + + + '', + '', + '', + '', + '
', + '{%this.renderBody(out,values)%}', + + '
', + '
', + '{% } else { %}', + + + + + + + '
', + '
', + '{%this.renderBody(out,values)%}', + + '
', + '
', + '
', + + '{% values.$layout.isShrinkWrapTpl = false %}', + '{% } %}' + ], + + + + + + tableTpl: [ + '', + '', + '', + '', + '
', + '
' + ], + + isShrinkWrapTpl: true, + + + beginLayout: function(ownerContext) { + var me = this, + bottomPadding, overflowYStyle, overflowXStyle, needsTable; + + me.callParent(arguments); + + me.initContextItems(ownerContext); + + if (!me.isShrinkWrapTpl) { + + + + + if (ownerContext.widthModel.shrinkWrap) { + needsTable = true; + } + + + + if (Ext.isStrict && Ext.isIE7) { + overflowXStyle = me.getOverflowXStyle(ownerContext); + if ((overflowXStyle === 'auto' || overflowXStyle === 'scroll') && + ownerContext.paddingContext.getPaddingInfo().right) { + needsTable = true; + } + } + + if (needsTable) { + me.insertTableCt(ownerContext); + } + } + + + + + if (!me.isShrinkWrapTpl && Ext.isIE7 && Ext.isStrict && !me.clearElHasPadding) { + bottomPadding = ownerContext.paddingContext.getPaddingInfo().bottom; + overflowYStyle = me.getOverflowYStyle(ownerContext); + if (bottomPadding && (overflowYStyle === 'auto' || overflowYStyle === 'scroll')) { + me.clearEl.setStyle('height', bottomPadding); + me.clearElHasPadding = true; + } + } + }, + + beforeLayoutCycle: function(ownerContext){ + var comp = this.owner, + hierarchyState = comp.hierarchyState, + hierarchyStateInner = comp.hierarchyStateInner; + + if (!hierarchyState || hierarchyState.invalid) { + hierarchyState = comp.getHierarchyState(); + hierarchyStateInner = comp.hierarchyStateInner; + } + if (ownerContext.widthModel.shrinkWrap && this.isShrinkWrapTpl) { + hierarchyStateInner.inShrinkWrapTable = true; + } else { + delete hierarchyStateInner.inShrinkWrapTable; + } + }, + + beginLayoutCycle: function(ownerContext) { + var me = this, + outerCt = me.outerCt, + lastOuterCtWidth = me.lastOuterCtWidth || '', + lastOuterCtHeight = me.lastOuterCtHeight || '', + lastOuterCtTableLayout = me.lastOuterCtTableLayout || '', + state = ownerContext.state, + overflowXStyle, overflowYStyle, outerCtWidth, outerCtHeight, outerCtTableLayout, + deferWidth, hierarchyStateInner; + + me.callParent(arguments); + + + outerCtWidth = outerCtHeight = outerCtTableLayout = ''; + + if (!ownerContext.widthModel.shrinkWrap && me.isShrinkWrapTpl) { + + + + if (Ext.isIE7m && Ext.isStrict) { + overflowYStyle = me.getOverflowYStyle(ownerContext); + if (overflowYStyle === 'auto' || overflowYStyle === 'scroll') { + + + + deferWidth = true; + } + } + + if (!deferWidth) { + + outerCtWidth = '100%'; + } + hierarchyStateInner = me.owner.hierarchyStateInner; + + + + overflowXStyle = me.getOverflowXStyle(ownerContext); + outerCtTableLayout = (hierarchyStateInner.inShrinkWrapTable || + overflowXStyle === 'auto' || + overflowXStyle === 'scroll') ? '' : 'fixed'; + } + + if (!ownerContext.heightModel.shrinkWrap && + !Ext.supports.PercentageHeightOverflowBug) { + + + + + + outerCtHeight = '100%'; + } + + + + + if ((outerCtWidth !== lastOuterCtWidth) || me.hasOuterCtPxWidth) { + outerCt.setStyle('width', outerCtWidth); + me.lastOuterCtWidth = outerCtWidth; + me.hasOuterCtPxWidth = false; + } + + + if (outerCtTableLayout !== lastOuterCtTableLayout) { + outerCt.setStyle('table-layout', outerCtTableLayout); + me.lastOuterCtTableLayout = outerCtTableLayout; + } + + + + + if ((outerCtHeight !== lastOuterCtHeight) || me.hasOuterCtPxHeight) { + outerCt.setStyle('height', outerCtHeight); + me.lastOuterCtHeight = outerCtHeight; + me.hasOuterCtPxHeight = false; + } + + if (me.hasInnerCtPxHeight) { + me.innerCt.setStyle('height', ''); + me.hasInnerCtPxHeight = false; + } + + + + + state.overflowAdjust = state.overflowAdjust || me.lastOverflowAdjust; + }, + + calculate: function(ownerContext) { + var me = this, + state = ownerContext.state, + containerSize = me.getContainerSize(ownerContext, true), + + calculatedItems = state.calculatedItems || + (state.calculatedItems = me.calculateItems ? + me.calculateItems(ownerContext, containerSize) : true); + + me.setCtSizeIfNeeded(ownerContext, containerSize); + + if (calculatedItems && ownerContext.hasDomProp('containerChildrenSizeDone')) { + + me.calculateContentSize(ownerContext); + + if (containerSize.gotAll) { + if (me.manageOverflow && !ownerContext.state.secondPass && !me.reserveScrollbar) { + me.calculateOverflow(ownerContext, containerSize); + } + return; + } + } + + me.done = false; + }, + + calculateContentSize: function (ownerContext) { + var me = this, + containerDimensions = ((ownerContext.widthModel.shrinkWrap ? 1 : 0) | + (ownerContext.heightModel.shrinkWrap ? 2 : 0)), + calcWidth = (containerDimensions & 1) || undefined, + calcHeight = (containerDimensions & 2) || undefined, + needed = 0, + props = ownerContext.props; + + if (calcWidth) { + if (isNaN(props.contentWidth)) { + ++needed; + } else { + calcWidth = undefined; + } + } + if (calcHeight) { + if (isNaN(props.contentHeight)) { + ++needed; + } else { + calcHeight = undefined; + } + } + + if (needed) { + if (calcWidth && !ownerContext.setContentWidth(me.measureContentWidth(ownerContext))) { + me.done = false; + } + if (calcHeight && !ownerContext.setContentHeight(me.measureContentHeight(ownerContext))) { + me.done = false; + } + + + + + + + } + }, + + + calculateOverflow: function (ownerContext) { + var me = this, + width, height, scrollbarSize, scrollbars, xauto, yauto, targetEl; + + + + xauto = (me.getOverflowXStyle(ownerContext) === 'auto'); + yauto = (me.getOverflowYStyle(ownerContext) === 'auto'); + + if (xauto || yauto) { + scrollbarSize = Ext.getScrollbarSize(); + targetEl = ownerContext.overflowContext.el.dom; + scrollbars = 0; + + if (targetEl.scrollWidth > targetEl.clientWidth) { + + scrollbars |= 1; + } + + if (targetEl.scrollHeight > targetEl.clientHeight) { + + scrollbars |= 2; + } + + width = (yauto && (scrollbars & 2)) ? scrollbarSize.width : 0; + height = (xauto && (scrollbars & 1)) ? scrollbarSize.height : 0; + + if (width !== me.lastOverflowAdjust.width || height !== me.lastOverflowAdjust.height) { + me.done = false; + + + + ownerContext.invalidate({ + state: { + overflowAdjust: { + width: width, + height: height + }, + overflowState: scrollbars, + secondPass: true + } + }); + } + } + }, + + completeLayout: function(ownerContext) { + this.lastOverflowAdjust = ownerContext.state.overflowAdjust; + }, + + doRenderPadding: function(out, renderData) { + + + + var me = renderData.$layout, + owner = renderData.$layout.owner, + padding = owner[owner.contentPaddingProperty]; + + if (me.managePadding && padding) { + out.push('padding:', owner.unitizeBox(padding)); + } + }, + + finishedLayout: function (ownerContext) { + var innerCt = this.innerCt; + + this.callParent(arguments); + + if (Ext.isIEQuirks || Ext.isIE8m) { + + + + innerCt.repaint(); + } + + if (Ext.isOpera) { + + + + innerCt.setStyle('position', 'relative'); + innerCt.dom.scrollWidth; + innerCt.setStyle('position', ''); + } + }, + + + getContainerSize : function(ownerContext, inDom) { + + + + + + + var size = this.callParent(arguments), + overflowAdjust = ownerContext.state.overflowAdjust; + + if (overflowAdjust) { + size.width -= overflowAdjust.width; + size.height -= overflowAdjust.height; + } + + return size; + }, + + getRenderData: function() { + var owner = this.owner, + data = this.callParent(); + + + + + + + + + + + + + + + + + + + + if ((Ext.isIEQuirks || Ext.isIE7m) && + ((owner.shrinkWrap & 1) || + (owner.floating && !owner.width))) { + data.shrinkWrapWidth = true; + } + + return data; + }, + + + + getRenderTarget: function() { + return this.innerCt; + }, + + + + getElementTarget: function() { + return this.innerCt; + }, + + + getOverflowXStyle: function(ownerContext) { + return ownerContext.overflowXStyle || + (ownerContext.overflowXStyle = this.owner.scrollFlags.overflowX || ownerContext.overflowContext.getStyle('overflow-x')); + }, + + + getOverflowYStyle: function(ownerContext) { + return ownerContext.overflowYStyle || + (ownerContext.overflowYStyle = this.owner.scrollFlags.overflowY || ownerContext.overflowContext.getStyle('overflow-y')); + }, + + initContextItems: function(ownerContext) { + var me = this, + target = ownerContext.target, + customOverflowEl = me.owner.customOverflowEl; + + ownerContext.outerCtContext = ownerContext.getEl('outerCt', me); + ownerContext.innerCtContext = ownerContext.getEl('innerCt', me); + + if (customOverflowEl) { + ownerContext.overflowContext = ownerContext.getEl(customOverflowEl); + } else { + ownerContext.overflowContext = ownerContext.targetContext; + } + + if (target[target.contentPaddingProperty] !== undefined) { + + + + + + ownerContext.paddingContext = me.isShrinkWrapTpl ? + ownerContext.innerCtContext : ownerContext.outerCtContext; + } + }, + + initLayout: function() { + var me = this, + scrollbarWidth = Ext.getScrollbarSize().width, + owner = me.owner; + + me.callParent(); + + + + + if (scrollbarWidth && me.manageOverflow && !me.hasOwnProperty('lastOverflowAdjust')) { + if (owner.autoScroll || me.reserveScrollbar) { + me.lastOverflowAdjust = { + width: scrollbarWidth, + height: 0 + }; + } + } + }, + + + insertTableCt: function(ownerContext) { + var me = this, + owner = me.owner, + i = 0, + renderTpl, fragment, childNodes, childLength, targetEl; + + + renderTpl = Ext.XTemplate.getTpl(this, 'tableTpl'); + renderTpl.renderPadding = me.doRenderPadding + + + + me.outerCt.dom.removeChild(me.innerCt.dom); + + + fragment = document.createDocumentFragment(); + childNodes = me.innerCt.dom.childNodes; + childLength = childNodes.length; + + for (; i < childLength; i++) { + fragment.appendChild(childNodes[0]); + } + + targetEl = me.getTarget(); + targetEl.dom.innerHTML = renderTpl.apply({ + $layout: me, + ownerId: me.owner.id + }); + + + targetEl.down('td').dom.appendChild(fragment); + + + + me.applyChildEls(owner.el, owner.id) + + + + me.isShrinkWrapTpl = true; + + ownerContext.removeEl(me.outerCt); + ownerContext.removeEl(me.innerCt); + me.initContextItems(ownerContext); + }, + + measureContentHeight: function (ownerContext) { + + var contentHeight = this.outerCt.getHeight(), + target = ownerContext.target; + + if (this.managePadding && (target[target.contentPaddingProperty] === undefined)) { + + + + + contentHeight += ownerContext.targetContext.getPaddingInfo().height; + } + return contentHeight; + }, + + measureContentWidth: function (ownerContext) { + var dom, style, old, contentWidth, target; + + + + + if (this.chromeCellMeasureBug) { + dom = this.innerCt.dom; + style = dom.style; + old = style.display; + + if (old == 'table-cell') { + style.display = ''; + dom.offsetWidth; + style.display = old; + } + } + + + contentWidth = this.outerCt.getWidth(); + target = ownerContext.target; + + if (this.managePadding && (target[target.contentPaddingProperty] === undefined)) { + + + + + contentWidth += ownerContext.targetContext.getPaddingInfo().width; + } + return contentWidth; + }, + + + setCtSizeIfNeeded: function(ownerContext, containerSize) { + var me = this, + width = containerSize.width, + height = containerSize.height, + padding = ownerContext.paddingContext.getPaddingInfo(), + targetEl = me.getTarget(), + overflowXStyle = me.getOverflowXStyle(ownerContext), + overflowYStyle = me.getOverflowYStyle(ownerContext), + canOverflowX = (overflowXStyle === 'auto' || overflowXStyle === 'scroll'), + canOverflowY = (overflowYStyle === 'auto' || overflowYStyle === 'scroll'), + scrollbarSize = Ext.getScrollbarSize(), + isShrinkWrapTpl = me.isShrinkWrapTpl, + manageOverflow = me.manageOverflow, + overflowStyleName, needsOuterHeight, needsInnerHeight, needsInnerCtPaddingHeight; + + if (width && !ownerContext.widthModel.shrinkWrap && + + + ((Ext.isIE7m && Ext.isStrict && isShrinkWrapTpl && canOverflowY) || + + + + (Ext.isIEQuirks && !isShrinkWrapTpl && !canOverflowX))) { + + if (!manageOverflow) { + + + + if (canOverflowY && (targetEl.dom.scrollHeight > targetEl.dom.clientHeight)) { + + width -= scrollbarSize.width; + } + } + + ownerContext.outerCtContext.setProp('width', width + padding.width); + me.hasOuterCtPxWidth = true; + } + + if (height && !ownerContext.heightModel.shrinkWrap) { + if (Ext.supports.PercentageHeightOverflowBug) { + + + needsOuterHeight = true; + } + if (((Ext.isIE8 && Ext.isStrict) || + Ext.isIE7m && Ext.isStrict && isShrinkWrapTpl)) { + + + + needsInnerHeight = true; + + + needsInnerCtPaddingHeight = !Ext.isIE8; + } + + if ((needsOuterHeight || needsInnerHeight) && canOverflowX && + (targetEl.dom.scrollWidth > targetEl.dom.clientWidth)) { + + + + height = Math.max(height - scrollbarSize.height, 0); + } + + if (needsOuterHeight) { + ownerContext.outerCtContext.setProp('height', height + padding.height); + me.hasOuterCtPxHeight = true; + } + + if (needsInnerHeight) { + if (needsInnerCtPaddingHeight) { + height += padding.height; + } + ownerContext.innerCtContext.setProp('height', height); + me.hasInnerCtPxHeight = true; + } + } + + if (Ext.isIE7 && Ext.isStrict && !isShrinkWrapTpl && (overflowYStyle === 'auto')) { + + + + + + + + overflowStyleName = (overflowXStyle === 'auto') ? 'overflow-x' : 'overflow-y'; + targetEl.setStyle(overflowStyleName, 'hidden'); + targetEl.setStyle(overflowStyleName, 'auto'); + } + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + + renderTpl.renderPadding = this.doRenderPadding; + }, + + getContentTarget: function(){ + return this.innerCt; + } + +}, function(){ + this.prototype.chromeCellMeasureBug = Ext.isChrome && Ext.chromeVersion >= 26; +}); + + +Ext.define('Ext.ZIndexManager', { + alternateClassName: 'Ext.WindowGroup', + + statics: { + zBase : 9000 + }, + + constructor: function(container) { + var me = this; + + me.list = {}; + me.zIndexStack = []; + me.front = null; + + if (container) { + + + if (container.isContainer) { + container.on('resize', me._onContainerResize, me); + me.zseed = Ext.Number.from(me.rendered ? container.getEl().getStyle('zIndex') : undefined, me.getNextZSeed()); + + me.targetEl = container.getTargetEl(); + me.container = container; + } + + else { + Ext.EventManager.onWindowResize(me._onContainerResize, me); + me.zseed = me.getNextZSeed(); + me.targetEl = Ext.get(container); + } + } + + + else { + Ext.EventManager.onWindowResize(me._onContainerResize, me); + me.zseed = me.getNextZSeed(); + Ext.onDocumentReady(function() { + me.targetEl = Ext.getBody(); + }); + } + }, + + getNextZSeed: function() { + return (Ext.ZIndexManager.zBase += 10000); + }, + + setBase: function(baseZIndex) { + this.zseed = baseZIndex; + var result = this.assignZIndices(); + this._activateLast(); + return result; + }, + + + assignZIndices: function() { + var a = this.zIndexStack, + len = a.length, + i = 0, + zIndex = this.zseed, + comp, + topModal; + + for (; i < len; i++) { + comp = a[i]; + if (comp && !comp.hidden) { + + + + + + + + + zIndex = comp.setZIndex(zIndex); + if (comp.modal) { + topModal = comp; + } + } + } + + + if (topModal) { + this._showModalMask(topModal) + } + return zIndex; + }, + + + _setActiveChild: function(comp, oldFront) { + var front = this.front, + oldPreventFocus = comp.preventFocusOnActivate; + + if (comp !== front) { + + if (front && !front.destroying) { + front.setActive(false, comp); + } + this.front = comp; + if (comp && comp != oldFront) { + + + comp.preventFocusOnActivate = comp.preventFocusOnActivate || oldFront && (oldFront.preventFocusOnActivate || !oldFront.focusOnToFront); + + comp.setActive(true); + + + if (comp.modal) { + this._showModalMask(comp); + } + + + comp.preventFocusOnActivate = oldPreventFocus; + } + } + }, + + onComponentHide: function(comp){ + this._activateLast(); + }, + + + _activateLast: function() { + var me = this, + stack = me.zIndexStack, + i = stack.length - 1, + comp; + + + + + for (; i >= 0 && stack[i].hidden; --i); + + + if ((comp = stack[i])) { + me._setActiveChild(comp, me.front); + if (comp.modal) { + return; + } + } + + else { + if (me.front && !me.front.destroying) { + me.front.setActive(false); + } + me.front = null; + } + + + + for (; i >= 0; --i) { + comp = stack[i]; + + if (comp.isVisible() && comp.modal) { + me._showModalMask(comp); + return; + } + } + + + + me._hideModalMask(); + }, + + _showModalMask: function(comp) { + var me = this, + zIndex = comp.el.getStyle('zIndex') - 4, + maskTarget = comp.floatParent ? comp.floatParent.getTargetEl() : comp.container, + mask = me.mask, + shim = me.maskShim, + viewSize; + + if (!mask) { + if (Ext.isIE6) { + shim = me.maskShim = Ext.getBody().createChild({ + tag: 'iframe', + cls : Ext.baseCSSPrefix + 'shim ' + Ext.baseCSSPrefix + 'mask-shim' + }); + shim.setVisibilityMode(Ext.Element.DISPLAY); + } + + + mask = me.mask = Ext.getBody().createChild({ + cls: Ext.baseCSSPrefix + 'mask', + style: 'height:0;width:0' + }); + mask.setVisibilityMode(Ext.Element.DISPLAY); + mask.on('click', me._onMaskClick, me); + } + + mask.maskTarget = maskTarget; + viewSize = me.getMaskBox(); + + if (shim) { + shim.setStyle('zIndex', zIndex); + shim.show(); + shim.setBox(viewSize); + } + mask.setStyle('zIndex', zIndex); + + + + mask.show(); + mask.setBox(viewSize); + }, + + _hideModalMask: function() { + var mask = this.mask, + maskShim = this.maskShim; + + if (mask && mask.isVisible()) { + mask.maskTarget = undefined; + mask.hide(); + if (maskShim) { + maskShim.hide(); + } + } + }, + + _onMaskClick: function() { + if (this.front) { + this.front.focus(); + } + }, + + getMaskBox: function(){ + var maskTarget = this.mask.maskTarget; + if (maskTarget.dom === document.body) { + return { + height: Math.max(document.body.scrollHeight, Ext.dom.Element.getDocumentHeight()), + width: Math.max(document.body.scrollWidth, document.documentElement.clientWidth), + x: 0, + y: 0 + }; + } else { + return maskTarget.getBox(); + } + }, + + _onContainerResize: function() { + var me = this, + mask = me.mask, + maskShim = me.maskShim, + viewSize; + + if (mask && mask.isVisible()) { + + + + mask.hide(); + if (maskShim) { + maskShim.hide(); + } + + viewSize = me.getMaskBox(); + if (maskShim) { + maskShim.setSize(viewSize); + maskShim.show(); + } + mask.setSize(viewSize); + mask.show(); + } + }, + + + register : function(comp) { + var me = this, + compAfterHide = comp.afterHide; + + if (comp.zIndexManager) { + comp.zIndexManager.unregister(comp); + } + comp.zIndexManager = me; + + me.list[comp.id] = comp; + me.zIndexStack.push(comp); + + + comp.afterHide = function() { + compAfterHide.apply(comp, arguments); + me.onComponentHide(comp); + }; + }, + + + unregister : function(comp) { + var me = this, + list = me.list; + + delete comp.zIndexManager; + if (list && list[comp.id]) { + delete list[comp.id]; + + + delete comp.afterHide; + Ext.Array.remove(me.zIndexStack, comp); + + + me._activateLast(); + } + }, + + + get : function(id) { + return id.isComponent ? id : this.list[id]; + }, + + + bringToFront : function(comp, preventFocus) { + var me = this, + result = false, + zIndexStack = me.zIndexStack; + + comp = me.get(comp); + if (comp !== me.front) { + Ext.Array.remove(zIndexStack, comp); + if (comp.preventBringToFront) { + + zIndexStack.unshift(comp); + } else { + + zIndexStack.push(comp); + } + + me.assignZIndices(); + + + if (!preventFocus) { + me._activateLast(); + } + result = true; + me.front = comp; + + + if (comp.modal) { + me._showModalMask(comp); + } + } + return result; + }, + + + sendToBack : function(comp) { + var me = this; + + comp = me.get(comp); + Ext.Array.remove(me.zIndexStack, comp); + me.zIndexStack.unshift(comp); + me.assignZIndices(); + this._activateLast(); + return comp; + }, + + + hideAll : function() { + var list = this.list, + item, + id; + + for (id in list) { + if (list.hasOwnProperty(id)) { + item = list[id]; + if (item.isComponent && item.isVisible()) { + item.hide(); + } + } + } + }, + + + hide: function() { + var i = 0, + stack = this.zIndexStack, + len = stack.length, + comp; + + this.tempHidden = []; + for (; i < len; i++) { + comp = stack[i]; + if (comp.isVisible()) { + this.tempHidden.push(comp); + comp.el.hide(); + comp.hidden = true; + } + } + }, + + + show: function() { + var i = 0, + tempHidden = this.tempHidden, + len = tempHidden ? tempHidden.length : 0, + comp; + + for (; i < len; i++) { + comp = tempHidden[i]; + comp.el.show(); + comp.hidden = false; + comp.setPosition(comp.x, comp.y); + } + delete this.tempHidden; + }, + + + getActive : function() { + return this.front; + }, + + + getBy : function(fn, scope) { + var r = [], + i = 0, + stack = this.zIndexStack, + len = stack.length, + comp; + + for (; i < len; i++) { + comp = stack[i]; + if (fn.call(scope||comp, comp) !== false) { + r.push(comp); + } + } + return r; + }, + + + each : function(fn, scope) { + var list = this.list, + id, + comp; + + for (id in list) { + if (list.hasOwnProperty(id)) { + comp = list[id]; + if (comp.isComponent && fn.call(scope || comp, comp) === false) { + return; + } + } + } + }, + + + eachBottomUp: function (fn, scope) { + var stack = this.zIndexStack, + i = 0, + len = stack.length, + comp; + + for (; i < len; i++) { + comp = stack[i]; + if (comp.isComponent && fn.call(scope || comp, comp) === false) { + return; + } + } + }, + + + eachTopDown: function (fn, scope) { + var stack = this.zIndexStack, + i = stack.length, + comp; + + for (; i-- > 0; ) { + comp = stack[i]; + if (comp.isComponent && fn.call(scope || comp, comp) === false) { + return; + } + } + }, + + destroy: function() { + var me = this, + list = me.list, + comp, + id; + + for (id in list) { + if (list.hasOwnProperty(id)) { + comp = list[id]; + + if (comp.isComponent) { + comp.destroy(); + } + } + } + + delete me.zIndexStack; + delete me.list; + delete me.container; + delete me.targetEl; + } +}, function() { + + Ext.WindowManager = Ext.WindowMgr = new this(); +}); + + +Ext.define('Ext.Queryable', { + + isQueryable: true, + + + query : function(selector) { + selector = selector || '*'; + return Ext.ComponentQuery.query(selector, this); + }, + + + queryBy: function(fn, scope) { + var out = [], + items = this.getRefItems(true), + i = 0, + len = items.length, + item; + + for (; i < len; ++i) { + item = items[i]; + if (fn.call(scope || item, item) !== false) { + out.push(item); + } + } + return out; + }, + + + queryById: function(id){ + return this.down('#' + id); + }, + + + child: function (selector) { + if (selector && selector.isComponent) { + selector = '#' + Ext.escapeId(selector.getItemId()); + } + + selector = selector || ''; + return this.query('> ' + selector)[0] || null; + }, + + + down: function (selector) { + if (selector && selector.isComponent) { + selector = '#' + Ext.escapeId(selector.getItemId()); + } + + selector = selector || ''; + return this.query(selector)[0] || null; + }, + + getRefItems: function(){ + return []; + } + +}); + + +Ext.define('Ext.layout.component.Component', { + + + + extend: Ext.layout.Layout , + + + + type: 'component', + + isComponentLayout: true, + + nullBox: {}, + + usesContentHeight: true, + usesContentWidth: true, + usesHeight: true, + usesWidth: true, + + beginLayoutCycle: function (ownerContext, firstCycle) { + var me = this, + owner = me.owner, + ownerCtContext = ownerContext.ownerCtContext, + heightModel = ownerContext.heightModel, + widthModel = ownerContext.widthModel, + body = owner.el.dom === document.body, + lastBox = owner.lastBox || me.nullBox, + lastSize = owner.el.lastBox || me.nullBox, + dirty = !body, + ownerLayout, v, widthName, heightName; + + me.callParent(arguments); + + if (firstCycle) { + if (me.usesContentWidth) { + ++ownerContext.consumersContentWidth; + } + if (me.usesContentHeight) { + ++ownerContext.consumersContentHeight; + } + if (me.usesWidth) { + ++ownerContext.consumersWidth; + } + if (me.usesHeight) { + ++ownerContext.consumersHeight; + } + + if (ownerCtContext && !ownerCtContext.hasRawContent) { + ownerLayout = owner.ownerLayout; + + if (ownerLayout.usesWidth) { + ++ownerContext.consumersWidth; + } + if (ownerLayout.usesHeight) { + ++ownerContext.consumersHeight; + } + } + } + + + + + if (widthModel.configured) { + + + + + widthName = widthModel.names.width; + + if (!body) { + dirty = firstCycle ? owner[widthName] !== lastSize.width + : widthModel.constrained; + } + + ownerContext.setWidth(owner[widthName], dirty); + } else if (ownerContext.isTopLevel) { + if (widthModel.calculated) { + v = lastBox.width; + ownerContext.setWidth(v, v != lastSize.width); + } + + v = lastBox.x; + ownerContext.setProp('x', v, v != lastSize.x); + } + + if (heightModel.configured) { + heightName = heightModel.names.height; + + if (!body) { + dirty = firstCycle ? owner[heightName] !== lastSize.height + : heightModel.constrained; + } + + ownerContext.setHeight(owner[heightName], dirty); + } else if (ownerContext.isTopLevel) { + if (heightModel.calculated) { + v = lastBox.height; + ownerContext.setHeight(v, v != lastSize.height); + } + + v = lastBox.y; + ownerContext.setProp('y', v, v != lastSize.y); + } + }, + + finishedLayout: function(ownerContext) { + var me = this, + elementChildren = ownerContext.children, + owner = me.owner, + len, i, elContext, lastBox, props; + + + + + + if (elementChildren) { + len = elementChildren.length; + for (i = 0; i < len; i++) { + elContext = elementChildren[i]; + elContext.el.lastBox = elContext.props; + } + } + + + ownerContext.previousSize = me.lastComponentSize; + + + me.lastComponentSize = owner.el.lastBox = props = ownerContext.props; + + + + lastBox = owner.lastBox || (owner.lastBox = {}); + lastBox.x = props.x; + lastBox.y = props.y; + lastBox.width = props.width; + lastBox.height = props.height; + lastBox.invalid = false; + + me.callParent(arguments); + }, + + notifyOwner: function(ownerContext) { + var me = this, + currentSize = me.lastComponentSize, + prevSize = ownerContext.previousSize, + args = [currentSize.width, currentSize.height]; + + if (prevSize) { + args.push(prevSize.width, prevSize.height); + } + + + me.owner.afterComponentLayout.apply(me.owner, args); + }, + + + getTarget : function() { + return this.owner.el; + }, + + + getRenderTarget : function() { + return this.owner.el; + }, + + cacheTargetInfo: function(ownerContext) { + var me = this, + targetInfo = me.targetInfo, + target; + + if (!targetInfo) { + target = ownerContext.getEl('getTarget', me); + + me.targetInfo = targetInfo = { + padding: target.getPaddingInfo(), + border: target.getBorderInfo() + }; + } + + return targetInfo; + }, + + measureAutoDimensions: function (ownerContext, dimensions) { + + + + + + + var me = this, + owner = me.owner, + containerLayout = owner.layout, + heightModel = ownerContext.heightModel, + widthModel = ownerContext.widthModel, + boxParent = ownerContext.boxParent, + isBoxParent = ownerContext.isBoxParent, + props = ownerContext.props, + isContainer, + ret = { + gotWidth: false, + gotHeight: false, + isContainer: (isContainer = !ownerContext.hasRawContent) + }, + hv = dimensions || 3, + zeroWidth, zeroHeight, + needed = 0, + got = 0, + ready, size, temp; + + + + + + + + if (widthModel.shrinkWrap && ownerContext.consumersContentWidth) { + ++needed; + zeroWidth = !(hv & 1); + + if (isContainer) { + + + if (zeroWidth) { + ret.contentWidth = 0; + ret.gotWidth = true; + ++got; + } else if ((ret.contentWidth = ownerContext.getProp('contentWidth')) !== undefined) { + ret.gotWidth = true; + ++got; + } + } else { + size = props.contentWidth; + + if (typeof size == 'number') { + ret.contentWidth = size; + ret.gotWidth = true; + ++got; + } else { + if (zeroWidth) { + ready = true; + } else if (!ownerContext.hasDomProp('containerChildrenSizeDone')) { + ready = false; + } else if (isBoxParent || !boxParent || boxParent.widthModel.shrinkWrap) { + + + + ready = true; + } else { + + + + ready = boxParent.hasDomProp('width'); + } + + if (ready) { + if (zeroWidth) { + temp = 0; + } else if (containerLayout && containerLayout.measureContentWidth) { + + + temp = containerLayout.measureContentWidth(ownerContext); + } else { + temp = me.measureContentWidth(ownerContext); + } + + if (!isNaN(ret.contentWidth = temp)) { + ownerContext.setContentWidth(temp, true); + ret.gotWidth = true; + ++got; + } + } + } + } + } else if (widthModel.natural && ownerContext.consumersWidth) { + ++needed; + size = props.width; + + + if (typeof size == 'number') { + ret.width = size; + ret.gotWidth = true; + ++got; + } else { + if (isBoxParent || !boxParent) { + ready = true; + } else { + + + + ready = boxParent.hasDomProp('width'); + } + + if (ready) { + if (!isNaN(ret.width = me.measureOwnerWidth(ownerContext))) { + ownerContext.setWidth(ret.width, false); + ret.gotWidth = true; + ++got; + } + } + } + } + + + + + if (heightModel.shrinkWrap && ownerContext.consumersContentHeight) { + ++needed; + zeroHeight = !(hv & 2); + + if (isContainer) { + + if (zeroHeight) { + ret.contentHeight = 0; + ret.gotHeight = true; + ++got; + } else if ((ret.contentHeight = ownerContext.getProp('contentHeight')) !== undefined) { + ret.gotHeight = true; + ++got; + } + } else { + size = props.contentHeight; + + if (typeof size == 'number') { + ret.contentHeight = size; + ret.gotHeight = true; + ++got; + } else { + if (zeroHeight) { + ready = true; + } else if (!ownerContext.hasDomProp('containerChildrenSizeDone')) { + ready = false; + } else if (owner.noWrap) { + ready = true; + } else if (!widthModel.shrinkWrap) { + + ready = (ownerContext.bodyContext || ownerContext).hasDomProp('width'); + } else if (isBoxParent || !boxParent || boxParent.widthModel.shrinkWrap) { + + + + ready = true; + } else { + + + + ready = boxParent.hasDomProp('width'); + } + + if (ready) { + if (zeroHeight) { + temp = 0; + } else if (containerLayout && containerLayout.measureContentHeight) { + + + temp = containerLayout.measureContentHeight(ownerContext); + } else { + temp = me.measureContentHeight(ownerContext); + } + + if (!isNaN(ret.contentHeight = temp)) { + ownerContext.setContentHeight(temp, true); + ret.gotHeight = true; + ++got; + } + } + } + } + } else if (heightModel.natural && ownerContext.consumersHeight) { + ++needed; + size = props.height; + + + if (typeof size == 'number') { + ret.height = size; + ret.gotHeight = true; + ++got; + } else { + if (isBoxParent || !boxParent) { + ready = true; + } else { + + + + ready = boxParent.hasDomProp('width'); + } + + if (ready) { + if (!isNaN(ret.height = me.measureOwnerHeight(ownerContext))) { + ownerContext.setHeight(ret.height, false); + ret.gotHeight = true; + ++got; + } + } + } + } + + if (boxParent) { + ownerContext.onBoxMeasured(); + } + + ret.gotAll = got == needed; + + return ret; + }, + + measureContentWidth: function (ownerContext) { + + return ownerContext.el.getWidth() - ownerContext.getFrameInfo().width; + }, + + measureContentHeight: function (ownerContext) { + + return ownerContext.el.getHeight() - ownerContext.getFrameInfo().height; + }, + + measureOwnerHeight: function (ownerContext) { + return ownerContext.el.getHeight(); + }, + + measureOwnerWidth: function (ownerContext) { + return ownerContext.el.getWidth(); + } +}); + + +Ext.define('Ext.layout.component.Auto', { + + + + alias: 'layout.autocomponent', + + extend: Ext.layout.component.Component , + + + + type: 'autocomponent', + + + setHeightInDom: false, + + + setWidthInDom: false, + + waitForOuterHeightInDom: false, + waitForOuterWidthInDom: false, + + beginLayoutCycle: function(ownerContext, firstCycle){ + var me = this, + lastWidthModel = me.lastWidthModel, + lastHeightModel = me.lastHeightModel, + el = me.owner.el; + + me.callParent(arguments); + + if (lastWidthModel && lastWidthModel.fixed && ownerContext.widthModel.shrinkWrap) { + el.setWidth(null); + } + + if (lastHeightModel && lastHeightModel.fixed && ownerContext.heightModel.shrinkWrap) { + el.setHeight(null); + } + }, + + calculate: function(ownerContext) { + var me = this, + measurement = me.measureAutoDimensions(ownerContext), + heightModel = ownerContext.heightModel, + widthModel = ownerContext.widthModel, + width, height; + + + + if (measurement.gotWidth) { + if (widthModel.shrinkWrap) { + me.publishOwnerWidth(ownerContext, measurement.contentWidth); + } else if (me.publishInnerWidth) { + me.publishInnerWidth(ownerContext, measurement.width); + } + } else if (!widthModel.auto && me.publishInnerWidth) { + width = me.waitForOuterWidthInDom ? ownerContext.getDomProp('width') + : ownerContext.getProp('width'); + if (width === undefined) { + me.done = false; + } else { + me.publishInnerWidth(ownerContext, width); + } + } + + if (measurement.gotHeight) { + if (heightModel.shrinkWrap) { + me.publishOwnerHeight(ownerContext, measurement.contentHeight); + } else if (me.publishInnerHeight) { + me.publishInnerHeight(ownerContext, measurement.height); + } + } else if (!heightModel.auto && me.publishInnerHeight) { + height = me.waitForOuterHeightInDom ? ownerContext.getDomProp('height') + : ownerContext.getProp('height'); + if (height === undefined) { + me.done = false; + } else { + me.publishInnerHeight(ownerContext, height); + } + } + + if (!measurement.gotAll) { + me.done = false; + } + }, + + calculateOwnerHeightFromContentHeight: function (ownerContext, contentHeight) { + return contentHeight + ownerContext.getFrameInfo().height; + }, + + calculateOwnerWidthFromContentWidth: function (ownerContext, contentWidth) { + return contentWidth + ownerContext.getFrameInfo().width; + }, + + publishOwnerHeight: function (ownerContext, contentHeight) { + var me = this, + owner = me.owner, + height = me.calculateOwnerHeightFromContentHeight(ownerContext, contentHeight), + constrainedHeight, dirty, heightModel; + + if (isNaN(height)) { + me.done = false; + } else { + constrainedHeight = Ext.Number.constrain(height, owner.minHeight, owner.maxHeight); + + if (constrainedHeight == height) { + dirty = me.setHeightInDom; + } else { + heightModel = me.sizeModels[ + (constrainedHeight < height) ? 'constrainedMax' : 'constrainedMin']; + height = constrainedHeight; + + if (ownerContext.heightModel.calculatedFromShrinkWrap) { + + + + ownerContext.heightModel = heightModel; + } else { + ownerContext.invalidate({ heightModel: heightModel }); + } + } + + ownerContext.setHeight(height, dirty); + } + }, + + publishOwnerWidth: function (ownerContext, contentWidth) { + var me = this, + owner = me.owner, + width = me.calculateOwnerWidthFromContentWidth(ownerContext, contentWidth), + constrainedWidth, dirty, widthModel; + + if (isNaN(width)) { + me.done = false; + } else { + constrainedWidth = Ext.Number.constrain(width, owner.minWidth, owner.maxWidth); + + if (constrainedWidth == width) { + dirty = me.setWidthInDom; + } else { + widthModel = me.sizeModels[ + (constrainedWidth < width) ? 'constrainedMax' : 'constrainedMin']; + width = constrainedWidth; + + if (ownerContext.widthModel.calculatedFromShrinkWrap) { + + + + ownerContext.widthModel = widthModel; + } else { + ownerContext.invalidate({ widthModel: widthModel }); + } + } + + ownerContext.setWidth(width, dirty); + } + } +}); + + +Ext.define('Ext.container.AbstractContainer', { + + + + extend: Ext.Component , + + + + + + + + mixins: { + queryable: Ext.Queryable + }, + + + + renderTpl: '{%this.renderContainer(out,values)%}', + + + + + + + + + + + suspendLayout : false, + + + autoDestroy : true, + + + defaultType: 'panel', + + + detachOnRemove: true, + + + isContainer : true, + + + layoutCounter : 0, + + baseCls: Ext.baseCSSPrefix + 'container', + + + + defaultLayoutType: 'auto', + + + initComponent : function(){ + var me = this; + me.addEvents( + + 'afterlayout', + + 'beforeadd', + + 'beforeremove', + + 'add', + + 'remove' + ); + + me.callParent(); + + me.getLayout(); + me.initItems(); + }, + + + initItems : function() { + var me = this, + items = me.items; + + + me.items = new Ext.util.AbstractMixedCollection(false, me.getComponentId); + me.floatingItems = new Ext.util.MixedCollection(false, me.getComponentId); + + if (items) { + if (!Ext.isArray(items)) { + items = [items]; + } + + me.add(items); + } + }, + + + getFocusEl: function() { + return this.getTargetEl(); + }, + + finishRenderChildren: function () { + this.callParent(); + + var layout = this.getLayout(); + + if (layout) { + layout.finishRender(); + } + }, + + beforeRender: function () { + var me = this, + layout = me.getLayout(), + targetCls; + + me.callParent(); + + if (!layout.initialized) { + layout.initLayout(); + } + + targetCls = layout.targetCls; + + if (targetCls) { + me.applyTargetCls(targetCls); + } + }, + + + + + + + applyTargetCls: function(targetCls) { + this.addCls(targetCls); + }, + + afterComponentLayout: function() { + var floaters = this.floatingItems.items, + floaterCount = floaters.length, + i, floater + + this.callParent(arguments); + + + for (i = 0; i < floaterCount; i++) { + floater = floaters[i]; + if (!floater.rendered && floater.autoShow) { + floater.show(); + } + } + }, + + onPosition: function() { + this.callParent(arguments); + this.repositionFloatingItems(); + }, + + onResize: function() { + this.callParent(arguments); + this.repositionFloatingItems(); + }, + + repositionFloatingItems: function() { + var floaters = this.floatingItems.items, + floaterCount = floaters.length, + i, floater; + + + for (i = 0; i < floaterCount; i++) { + floater = floaters[i]; + if (floater.el && !floater.hidden) { + floater.setPosition(floater.x, floater.y); + } + } + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + this.getLayout().setupRenderTpl(renderTpl); + }, + + + getDefaultContentTarget: function() { + return this.el; + }, + + + getContentTarget: function(){ + return this.getLayout().getContentTarget(); + }, + + + setLayout : function(layout) { + var currentLayout = this.layout; + + if (currentLayout && currentLayout.isLayout && currentLayout != layout) { + currentLayout.setOwner(null); + } + + this.layout = layout; + layout.setOwner(this); + }, + + + getLayout : function() { + var me = this; + if (!me.layout || !me.layout.isLayout) { + + me.setLayout(Ext.layout.Layout.create(me.layout, me.self.prototype.layout || me.defaultLayoutType)); + } + + return me.layout; + }, + + + doLayout : function() { + this.updateLayout(); + return this; + }, + + + afterLayout : function(layout) { + var me = this; + ++me.layoutCounter; + if (me.hasListeners.afterlayout) { + me.fireEvent('afterlayout', me, layout); + } + }, + + + prepareItems : function(items, applyDefaults) { + + + if (Ext.isArray(items)) { + items = items.slice(); + } else { + items = [items]; + } + + + var me = this, + i = 0, + len = items.length, + item; + + for (; i < len; i++) { + item = items[i]; + if (item == null) { + Ext.Array.erase(items, i, 1); + --i; + --len; + } else { + if (applyDefaults) { + item = this.applyDefaults(item); + } + + + item.isContained = me; + items[i] = me.lookupComponent(item); + + delete item.isContained; + delete items[i].isContained; + } + } + + return items; + }, + + + applyDefaults : function(config) { + var defaults = this.defaults; + + if (defaults) { + if (Ext.isFunction(defaults)) { + defaults = defaults.call(this, config); + } + + if (Ext.isString(config)) { + config = Ext.ComponentManager.get(config); + } + Ext.applyIf(config, defaults); + } + return config; + }, + + + lookupComponent : function(comp) { + return (typeof comp == 'string') ? Ext.ComponentManager.get(comp) + : Ext.ComponentManager.create(comp, this.defaultType); + }, + + + getComponentId : function(comp) { + return comp.getItemId && comp.getItemId(); + }, + + + add : function() { + var me = this, + args = Ext.Array.slice(arguments), + index = (typeof args[0] == 'number') ? args.shift() : -1, + layout = me.getLayout(), + addingArray, items, i, length, item, pos, ret; + + if (args.length == 1 && Ext.isArray(args[0])) { + items = args[0]; + addingArray = true; + } else { + items = args; + } + + if (me.rendered) { + Ext.suspendLayouts(); + } + + ret = items = me.prepareItems(items, true); + length = items.length; + + if (!addingArray && length == 1) { + ret = items[0]; + } + + + for (i = 0; i < length; i++) { + item = items[i]; + + pos = (index < 0) ? me.items.length : (index + i); + + + if (item.floating) { + me.floatingItems.add(item); + item.onAdded(me, pos); + + if (me.hasListeners.add) { + me.fireEvent('add', me, item, pos); + } + } else if ((!me.hasListeners.beforeadd || me.fireEvent('beforeadd', me, item, pos) !== false) && me.onBeforeAdd(item) !== false) { + me.items.insert(pos, item); + item.onAdded(me, pos); + me.onAdd(item, pos); + layout.onAdd(item, pos); + + if (me.hasListeners.add) { + me.fireEvent('add', me, item, pos); + } + } + } + + + me.updateLayout(); + if (me.rendered) { + Ext.resumeLayouts(true); + } + + return ret; + }, + + + onAdd : Ext.emptyFn, + + + onRemove : Ext.emptyFn, + + + insert : function(index, comp) { + var compIdx; + if (comp && comp.isComponent) { + compIdx = this.items.indexOf(comp); + if (compIdx !== -1) { + return this.move(compIdx, index); + } + } + return this.add(index, comp); + }, + + + move : function(fromIdx, toIdx) { + var items = this.items, + item; + + if (fromIdx.isComponent) { + fromIdx = items.indexOf(fromIdx); + } + item = items.removeAt(fromIdx); + if (item === false) { + return false; + } + items.insert(toIdx, item); + this.onMove(item, fromIdx, toIdx); + this.updateLayout(); + return item; + }, + + onMove: Ext.emptyFn, + + + onBeforeAdd : function(item) { + + if (item.ownerCt && item.ownerCt !== this) { + item.ownerCt.remove(item, false); + } + }, + + + remove : function(comp, autoDestroy) { + var me = this, + c = me.getComponent(comp); + + if (c && (!me.hasListeners.beforeremove || me.fireEvent('beforeremove', me, c) !== false)) { + me.doRemove(c, autoDestroy); + if (me.hasListeners.remove) { + me.fireEvent('remove', me, c); + } + + if (!me.destroying && !c.floating) { + me.updateLayout(); + } + } + + return c; + }, + + + doRemove : function(component, doDestroy) { + + doDestroy = doDestroy === true || (doDestroy !== false && this.autoDestroy); + + var me = this, + layout = me.layout, + hasLayout = layout && me.rendered, + + + isDestroying = component.destroying || doDestroy, + floating = component.floating; + + if (floating) { + me.floatingItems.remove(component); + } else { + me.items.remove(component); + } + + + if (hasLayout && !floating) { + + if (layout.running) { + Ext.AbstractComponent.cancelLayout(component, isDestroying); + } + layout.onRemove(component, isDestroying); + } + + component.onRemoved(isDestroying); + + me.onRemove(component, isDestroying); + + + if (doDestroy) { + component.destroy(); + } + + else { + if (hasLayout && !floating) { + layout.afterRemove(component); + } + if (me.detachOnRemove && component.rendered) { + me.detachComponent(component); + } + } + }, + + + detachComponent: function(component){ + Ext.getDetachedBody().appendChild(component.getEl()); + }, + + + removeAll : function(autoDestroy) { + var me = this, + removeItems = me.items.items.slice().concat(me.floatingItems.items), + items = [], + i = 0, + len = removeItems.length, + item; + + + me.suspendLayouts(); + for (; i < len; i++) { + item = removeItems[i]; + me.remove(item, autoDestroy); + + if (item.ownerCt !== me) { + items.push(item); + } + } + + + me.resumeLayouts(!!len); + return items; + }, + + + getRefItems : function(deep) { + var me = this, + items = me.items.items, + len = items.length, + i = 0, + item, + result = []; + + for (; i < len; i++) { + item = items[i]; + result[result.length] = item; + if (deep && item.getRefItems) { + result.push.apply(result, item.getRefItems(true)); + } + } + + + items = me.floatingItems.items; + len = items.length; + for (i = 0; i < len; i++) { + item = items[i]; + result[result.length] = item; + if (deep && item.getRefItems) { + result.push.apply(result, item.getRefItems(true)); + } + } + + return result; + }, + + + cascade : function(fn, scope, origArgs){ + var me = this, + cs = me.items ? me.items.items : [], + len = cs.length, + i = 0, + c, + args = origArgs ? origArgs.concat(me) : [me], + componentIndex = args.length - 1; + + if (fn.apply(scope || me, args) !== false) { + for (; i < len; i++){ + c = cs[i]; + if (c.cascade) { + c.cascade(fn, scope, origArgs); + } else { + args[componentIndex] = c; + fn.apply(scope || cs, args); + } + } + } + return this; + }, + + + isAncestor: function(possibleDescendant) { + while (possibleDescendant) { + if (possibleDescendant.ownerCt === this) { + return true; + } + possibleDescendant = possibleDescendant.ownerCt; + } + }, + + + getComponent : function(comp) { + if (Ext.isObject(comp)) { + comp = comp.getItemId(); + } + + var c = this.items.get(comp); + + + if (!c && typeof comp != 'number') { + c = this.floatingItems.get(comp); + } + + return c; + }, + + + contains: function(comp, deep) { + var result = false; + if (deep) { + this.cascade(function(c) { + + if (c.contains && c.contains(comp)) { + result = true; + return false; + } + }); + return result; + } else { + return this.items.contains(comp) || this.floatingItems.contains(comp); + } + }, + + nextChild: function(child, selector) { + var me = this, + result, + childIndex = me.items.indexOf(child); + + if (childIndex !== -1) { + result = selector ? Ext.ComponentQuery(selector, me.items.items.slice(childIndex + 1)) : me.items.getAt(childIndex + 1); + if (!result && me.ownerCt) { + result = me.ownerCt.nextChild(me, selector); + } + } + return result; + }, + + prevChild: function(child, selector) { + var me = this, + result, + childIndex = me.items.indexOf(child); + + if (childIndex !== -1) { + result = selector ? Ext.ComponentQuery(selector, me.items.items.slice(childIndex + 1)) : me.items.getAt(childIndex + 1); + if (!result && me.ownerCt) { + result = me.ownerCt.nextChild(me, selector); + } + } + return result; + }, + + + + + enable: function() { + this.callParent(arguments); + + var itemsToDisable = this.getChildItemsToDisable(), + length = itemsToDisable.length, + item, i; + + for (i = 0; i < length; i++) { + item = itemsToDisable[i]; + + if (item.resetDisable) { + item.enable(); + } + } + + return this; + }, + + + + + disable: function() { + this.callParent(arguments); + + var itemsToDisable = this.getChildItemsToDisable(), + length = itemsToDisable.length, + item, i; + + for (i = 0; i < length; i++) { + item = itemsToDisable[i]; + + if (item.resetDisable !== false && !item.disabled) { + item.disable(); + item.resetDisable = true; + } + } + + return this; + }, + + + getChildItemsToDisable: function(){ + return this.query('[isFormField],button'); + }, + + + + beforeDestroy : function() { + var me = this, + items = me.items, + floatingItems = me.floatingItems, + c; + + if (items) { + while ((c = items.first())) { + me.doRemove(c, true); + } + } + + if (floatingItems) { + while ((c = floatingItems.first())) { + me.doRemove(c, true); + } + } + + Ext.destroy( + me.layout + ); + me.callParent(); + } +}); + + +Ext.define('Ext.container.Container', { + extend: Ext.container.AbstractContainer , + alias: 'widget.container', + alternateClassName: 'Ext.Container', + + + getChildByElement: function(el, deep) { + var item, + itemEl, + i = 0, + it = this.getRefItems(), + ln = it.length; + + el = Ext.getDom(el); + for (; i < ln; i++) { + item = it[i]; + itemEl = item.getEl(); + if (itemEl && ((itemEl.dom === el) || itemEl.contains(el))) { + return (deep && item.getChildByElement) ? item.getChildByElement(el, deep) : item; + } + } + return null; + } +}); + + +Ext.define('Ext.layout.container.Editor', { + + + + alias: 'layout.editor', + + extend: Ext.layout.container.Container , + + + + autoSizeDefault: { + width: 'field', + height: 'field' + }, + + sizePolicies: { + + $: { + + $: { + readsWidth: 1, + readsHeight: 1, + setsWidth: 0, + setsHeight: 0 + }, + boundEl: { + readsWidth: 1, + readsHeight: 0, + setsWidth: 0, + setsHeight: 1 + } + }, + + boundEl: { + + $: { + readsWidth: 0, + readsHeight: 1, + setsWidth: 1, + setsHeight: 0 + }, + boundEl: { + readsWidth: 0, + readsHeight: 0, + setsWidth: 1, + setsHeight: 1 + } + } + }, + + getItemSizePolicy: function (item) { + var me = this, + autoSize = me.owner.autoSize, + key = autoSize && autoSize.width, + policy = me.sizePolicies; + + policy = policy[key] || policy.$; + + key = autoSize && autoSize.height; + policy = policy[key] || policy.$; + + return policy; + }, + + calculate: function(ownerContext) { + var me = this, + owner = me.owner, + autoSize = owner.autoSize, + fieldWidth, + fieldHeight; + + if (autoSize === true) { + autoSize = me.autoSizeDefault; + } + + + if (autoSize) { + fieldWidth = me.getDimension(owner, autoSize.width, 'getWidth', owner.width); + fieldHeight = me.getDimension(owner, autoSize.height, 'getHeight', owner.height); + } + + + ownerContext.childItems[0].setSize(fieldWidth, fieldHeight); + + + ownerContext.setWidth(fieldWidth); + ownerContext.setHeight(fieldHeight); + + + ownerContext.setContentSize(fieldWidth || owner.field.getWidth(), + fieldHeight || owner.field.getHeight()); + }, + + getDimension: function(owner, type, getMethod, ownerSize){ + switch (type) { + + case 'boundEl': + return owner.boundEl[getMethod](); + + + case 'field': + return undefined; + + + default: + return ownerSize; + } + } +}); + + +Ext.define('Ext.Editor', { + + + + extend: Ext.container.Container , + + alias: 'widget.editor', + + + + + + layout: 'editor', + + + + + allowBlur: true, + + + + + revertInvalid: true, + + + + + + + value : '', + + + alignment: 'c-c?', + + + offsets: [0, 0], + + + shadow : 'frame', + + + constrain : false, + + + swallowKeys : true, + + + completeOnEnter : true, + + + cancelOnEsc : true, + + + updateEl : false, + + + + + focusOnToFront: false, + + + + + hidden: true, + baseCls: Ext.baseCSSPrefix + 'editor', + + initComponent : function() { + var me = this, + field = me.field = Ext.ComponentManager.create(me.field, 'textfield'); + + Ext.apply(field, { + inEditor: true, + msgTarget: field.msgTarget == 'title' ? 'title' : 'qtip' + }); + me.mon(field, { + scope: me, + blur: me.onFieldBlur, + specialkey: me.onSpecialKey + }); + + if (field.grow) { + me.mon(field, 'autosize', me.onFieldAutosize, me, {delay: 1}); + } + me.floating = { + constrain: me.constrain + }; + me.items = field; + + me.callParent(arguments); + + me.addEvents( + + 'beforestartedit', + + + 'startedit', + + + 'beforecomplete', + + 'complete', + + 'canceledit', + + 'specialkey' + ); + }, + + + onFieldAutosize: function(){ + this.updateLayout(); + }, + + + afterRender : function(ct, position) { + var me = this, + field = me.field, + inputEl = field.inputEl; + + me.callParent(arguments); + + + if (inputEl) { + inputEl.dom.name = ''; + if (me.swallowKeys) { + inputEl.swallowEvent([ + 'keypress', + 'keydown' + ]); + } + } + }, + + + onSpecialKey : function(field, event) { + var me = this, + key = event.getKey(), + complete = me.completeOnEnter && key == event.ENTER, + cancel = me.cancelOnEsc && key == event.ESC; + + if (complete || cancel) { + event.stopEvent(); + + + Ext.defer(function() { + if (complete) { + me.completeEdit(); + } else { + me.cancelEdit(); + } + if (field.triggerBlur) { + field.triggerBlur(event); + } + }, 10); + } + + me.fireEvent('specialkey', me, field, event); + }, + + + startEdit : function(el, value) { + var me = this, + field = me.field; + + me.completeEdit(); + me.boundEl = Ext.get(el); + value = Ext.isDefined(value) ? value : Ext.String.trim(me.boundEl.dom.innerText || me.boundEl.dom.innerHTML); + + if (!me.rendered) { + + + + + if (me.ownerCt) { + me.parentEl = me.ownerCt.el; + me.parentEl.position(); + } + me.render(me.parentEl || document.body); + } + + if (me.fireEvent('beforestartedit', me, me.boundEl, value) !== false) { + me.startValue = value; + me.show(); + + field.suspendEvents(); + field.reset(); + field.setValue(value); + field.resumeEvents(); + me.realign(true); + field.focus(); + if (field.autoSize) { + field.autoSize(); + } + me.editing = true; + } + }, + + + realign : function(autoSize) { + var me = this; + if (autoSize === true) { + me.updateLayout(); + } + me.alignTo(me.boundEl, me.alignment, me.offsets); + }, + + + completeEdit : function(remainVisible) { + var me = this, + field = me.field, + value; + + if (!me.editing) { + return; + } + + + if (field.assertValue) { + field.assertValue(); + } + + value = me.getValue(); + if (!field.isValid()) { + if (me.revertInvalid !== false) { + me.cancelEdit(remainVisible); + } + return; + } + + if (String(value) === String(me.startValue) && me.ignoreNoChange) { + me.hideEdit(remainVisible); + return; + } + + if (me.fireEvent('beforecomplete', me, value, me.startValue) !== false) { + + value = me.getValue(); + if (me.updateEl && me.boundEl) { + me.boundEl.update(value); + } + me.hideEdit(remainVisible); + me.fireEvent('complete', me, value, me.startValue); + } + }, + + + onShow : function() { + var me = this; + + me.callParent(arguments); + if (me.hideEl !== false) { + me.boundEl.hide(); + } + me.fireEvent('startedit', me, me.boundEl, me.startValue); + }, + + + cancelEdit : function(remainVisible) { + var me = this, + startValue = me.startValue, + field = me.field, + value; + + if (me.editing) { + value = me.getValue(); + + field.suspendEvents(); + me.setValue(startValue); + field.resumeEvents(); + me.hideEdit(remainVisible); + me.fireEvent('canceledit', me, value, startValue); + } + }, + + + hideEdit: function(remainVisible) { + if (remainVisible !== true) { + this.editing = false; + this.hide(); + } + }, + + + onFieldBlur : function(field, e) { + var me = this, + target = Ext.Element.getActiveElement(); + + + if(me.allowBlur === true && me.editing && me.selectSameEditor !== true) { + me.completeEdit(); + } + + + if (Ext.fly(target).isFocusable() || target.getAttribute('tabIndex')) { + target.focus(); + } + }, + + + onHide : function() { + var me = this, + field = me.field; + + if (me.editing) { + me.completeEdit(); + return; + } + + + if (field.hasFocus && field.triggerBlur) { + field.triggerBlur(); + } + if (field.collapse) { + field.collapse(); + } + + + if (me.hideEl !== false) { + me.boundEl.show(); + } + me.callParent(arguments); + }, + + + setValue : function(value) { + this.field.setValue(value); + }, + + + getValue : function() { + return this.field.getValue(); + }, + + beforeDestroy : function() { + var me = this; + + Ext.destroy(me.field); + delete me.field; + delete me.parentEl; + delete me.boundEl; + + me.callParent(arguments); + } +}); + + +Ext.define('Ext.util.KeyMap', { + alternateClassName: 'Ext.KeyMap', + + + + + + + + + + + eventName: 'keydown', + + constructor: function(config) { + var me = this; + + + + if ((arguments.length !== 1) || (typeof config === 'string') || config.dom || config.tagName || config === document || config.isComponent) { + me.legacyConstructor.apply(me, arguments); + return; + } + + Ext.apply(me, config); + me.bindings = []; + + if (!me.target.isComponent) { + me.target = Ext.get(me.target); + } + + if (me.binding) { + me.addBinding(me.binding); + } else if (config.key) { + me.addBinding(config); + } + me.enable(); + }, + + + legacyConstructor: function(el, binding, eventName){ + var me = this; + + Ext.apply(me, { + target: Ext.get(el), + eventName: eventName || me.eventName, + bindings: [] + }); + if (binding) { + me.addBinding(binding); + } + me.enable(); + }, + + + addBinding : function(binding){ + var me = this, + keyCode = binding.key, + i, + len; + + if (me.processing) { + me.bindings = bindings.slice(0); + } + + if (Ext.isArray(binding)) { + for (i = 0, len = binding.length; i < len; i++) { + me.addBinding(binding[i]); + } + return; + } + + me.bindings.push(Ext.apply({ + keyCode: me.processKeys(keyCode) + }, binding)); + }, + + + removeBinding: function(binding){ + var me = this, + bindings = me.bindings, + len = bindings.length, + i, item, keys; + + if (me.processing) { + me.bindings = bindings.slice(0); + } + + keys = me.processKeys(binding.key); + for (i = 0; i < len; ++i) { + item = bindings[i]; + if (item.fn === binding.fn && item.scope === binding.scope) { + if (binding.alt == item.alt && binding.crtl == item.crtl && binding.shift == item.shift) { + if (Ext.Array.equals(item.keyCode, keys)) { + Ext.Array.erase(me.bindings, i, 1); + return; + } + } + } + } + }, + + processKeys: function(keyCode){ + var processed = false, + key, keys, keyString, len, i; + + if (Ext.isString(keyCode)) { + keys = []; + keyString = keyCode.toUpperCase(); + + for (i = 0, len = keyString.length; i < len; ++i){ + keys.push(keyString.charCodeAt(i)); + } + keyCode = keys; + processed = true; + } + + if (!Ext.isArray(keyCode)) { + keyCode = [keyCode]; + } + + if (!processed) { + for (i = 0, len = keyCode.length; i < len; ++i) { + key = keyCode[i]; + if (Ext.isString(key)) { + keyCode[i] = key.toUpperCase().charCodeAt(0); + } + } + } + return keyCode; + }, + + + handleTargetEvent: (function() { + var tagRe = /input|textarea/i; + + return function(event) { + var me = this, + bindings, i, len, + target, contentEditable; + + if (me.enabled) { + bindings = me.bindings; + i = 0; + len = bindings.length; + + + event = me.processEvent.apply(me||me.processEventScope, arguments); + + + if (me.ignoreInputFields) { + target = event.target; + contentEditable = target.contentEditable; + + + + if (tagRe.test(target.tagName) || (contentEditable === '' || contentEditable === 'true')) { + return; + } + } + + + + if (!event.getKey) { + return event; + } + me.processing = true; + for(; i < len; ++i){ + me.processBinding(bindings[i], event); + } + me.processing = false; + } + } + }()), + + + processEvent: Ext.identityFn, + + + processBinding: function(binding, event){ + if (this.checkModifiers(binding, event)) { + var key = event.getKey(), + handler = binding.fn || binding.handler, + scope = binding.scope || this, + keyCode = binding.keyCode, + defaultEventAction = binding.defaultEventAction, + i, + len, + keydownEvent = new Ext.EventObjectImpl(event); + + + for (i = 0, len = keyCode.length; i < len; ++i) { + if (key === keyCode[i]) { + if (handler.call(scope, key, event) !== true && defaultEventAction) { + keydownEvent[defaultEventAction](); + } + break; + } + } + } + }, + + + checkModifiers: function(binding, e) { + var keys = ['shift', 'ctrl', 'alt'], + i = 0, + len = keys.length, + val, key; + + for (; i < len; ++i){ + key = keys[i]; + val = binding[key]; + if (!(val === undefined || (val === e[key + 'Key']))) { + return false; + } + } + return true; + }, + + + on: function(key, fn, scope) { + var keyCode, shift, ctrl, alt; + if (Ext.isObject(key) && !Ext.isArray(key)) { + keyCode = key.key; + shift = key.shift; + ctrl = key.ctrl; + alt = key.alt; + } else { + keyCode = key; + } + this.addBinding({ + key: keyCode, + shift: shift, + ctrl: ctrl, + alt: alt, + fn: fn, + scope: scope + }); + }, + + + un: function(key, fn, scope) { + var keyCode, shift, ctrl, alt; + if (Ext.isObject(key) && !Ext.isArray(key)) { + keyCode = key.key; + shift = key.shift; + ctrl = key.ctrl; + alt = key.alt; + } else { + keyCode = key; + } + this.removeBinding({ + key: keyCode, + shift: shift, + ctrl: ctrl, + alt: alt, + fn: fn, + scope: scope + }); + }, + + + isEnabled : function() { + return this.enabled; + }, + + + enable: function() { + var me = this; + + if (!me.enabled) { + me.target.on(me.eventName, me.handleTargetEvent, me); + me.enabled = true; + } + }, + + + disable: function() { + var me = this; + + if (me.enabled) { + me.target.removeListener(me.eventName, me.handleTargetEvent, me); + me.enabled = false; + } + }, + + + setDisabled : function(disabled) { + if (disabled) { + this.disable(); + } else { + this.enable(); + } + }, + + + destroy: function(removeTarget) { + var me = this, + target = me.target; + + me.bindings = []; + me.disable(); + if (removeTarget === true) { + if (target.isComponent) { + target.destroy(); + } else { + target.remove(); + } + } + delete me.target; + } +}); + + +Ext.define('Ext.util.KeyNav', { + alternateClassName: 'Ext.KeyNav', + + + + statics: { + keyOptions: { + left: 37, + right: 39, + up: 38, + down: 40, + space: 32, + pageUp: 33, + pageDown: 34, + del: 46, + backspace: 8, + home: 36, + end: 35, + enter: 13, + esc: 27, + tab: 9 + } + }, + + constructor: function(config) { + var me = this; + if (arguments.length === 2) { + me.legacyConstructor.apply(me, arguments); + return; + } + me.setConfig(config); + }, + + + legacyConstructor: function(el, config) { + this.setConfig(Ext.apply({ + target: el + }, config)); + }, + + + setConfig: function(config) { + var me = this, + keymapCfg = { + target: config.target, + ignoreInputFields: config.ignoreInputFields, + eventName: me.getKeyEvent('forceKeyDown' in config ? config.forceKeyDown : me.forceKeyDown, config.eventName) + }, + map, keyCodes, defaultScope, keyName, binding; + + if (me.map) { + me.map.destroy(); + } + + if (config.processEvent) { + keymapCfg.processEvent = config.processEvent; + keymapCfg.processEventScope = config.processEventScope||me; + } + + + if (config.keyMap) { + map = me.map = config.keyMap; + } + + else { + map = me.map = new Ext.util.KeyMap(keymapCfg); + me.destroyKeyMap = true; + } + keyCodes = Ext.util.KeyNav.keyOptions; + defaultScope = config.scope || me; + + for (keyName in keyCodes) { + if (keyCodes.hasOwnProperty(keyName)) { + + + + if (binding = config[keyName]) { + if (typeof binding === 'function') { + binding = { + handler: binding, + defaultEventAction: (config.defaultEventAction !== undefined) ? config.defaultEventAction : me.defaultEventAction + }; + } + map.addBinding({ + key: keyCodes[keyName], + handler: Ext.Function.bind(me.handleEvent, binding.scope||defaultScope, binding.handler||binding.fn, true), + defaultEventAction: (binding.defaultEventAction !== undefined) ? binding.defaultEventAction : me.defaultEventAction + }); + } + } + } + + map.disable(); + if (!config.disabled) { + map.enable(); + } + }, + + + handleEvent: function(keyCode, event, handler){ + return handler.call(this, event); + }, + + + disabled: false, + + + defaultEventAction: "stopEvent", + + + forceKeyDown: false, + + + + + eventName: 'keypress', + + + + + + + + + + + destroy: function(removeEl) { + if (this.destroyKeyMap) { + this.map.destroy(removeEl); + } + delete this.map; + }, + + + enable: function() { + + if (this.map) { + this.map.enable(); + this.disabled = false; + } + }, + + + disable: function() { + + if (this.map) { + this.map.disable(); + } + this.disabled = true; + }, + + + setDisabled : function(disabled) { + this.map.setDisabled(disabled); + this.disabled = disabled; + }, + + + getKeyEvent: function(forceKeyDown, configuredEventName) { + if (forceKeyDown || (Ext.EventManager.useKeyDown && !configuredEventName)) { + return 'keydown'; + } else { + return configuredEventName||this.eventName; + } + } +}); + + +Ext.define('Ext.FocusManager', { + singleton: true, + alternateClassName: ['Ext.FocusMgr' ], + + mixins: { + observable: Ext.util.Observable + }, + + + + + + + + + + + + enabled: false, + + + + focusElementCls: Ext.baseCSSPrefix + 'focus-element', + + focusFrameCls: Ext.baseCSSPrefix + 'focus-frame', + + + whitelist: [ + 'textfield' + ], + + constructor: function(config) { + var me = this, + CQ = Ext.ComponentQuery; + + me.mixins.observable.constructor.call(me, config); + + me.addEvents( + + 'beforecomponentfocus', + + + 'componentfocus', + + + 'disable', + + + 'enable' + ); + + me.focusTask = new Ext.util.DelayedTask(me.handleComponentFocus, me); + + + Ext.override(Ext.AbstractComponent, { + onFocus: function() { + this.callParent(arguments); + if (me.enabled && this.hasFocus) { + Array.prototype.unshift.call(arguments, this); + me.onComponentFocus.apply(me, arguments); + } + }, + onBlur: function() { + this.callParent(arguments); + if (me.enabled && !this.hasFocus) { + Array.prototype.unshift.call(arguments, this); + me.onComponentBlur.apply(me, arguments); + } + }, + onDestroy: function() { + this.callParent(arguments); + if (me.enabled) { + Array.prototype.unshift.call(arguments, this); + me.onComponentDestroy.apply(me, arguments); + } + } + }); + Ext.override(Ext.Component, { + afterHide: function() { + this.callParent(arguments); + if (me.enabled) { + Array.prototype.unshift.call(arguments, this); + me.onComponentHide.apply(me, arguments); + } + } + }); + + + me.keyNav = new Ext.util.KeyNav(Ext.getDoc(), { + disabled: true, + scope: me, + + backspace: me.focusLast, + enter: me.navigateIn, + esc: me.navigateOut, + tab: me.navigateSiblings, + space: me.navigateIn, + del: me.focusLast, + left: me.navigateSiblings, + right: me.navigateSiblings, + down: me.navigateSiblings, + up: me.navigateSiblings + }); + + me.focusData = {}; + me.subscribers = new Ext.util.HashMap(); + me.focusChain = {}; + + + Ext.apply(CQ.pseudos, { + + nextFocus: function(cmps, idx, step) { + step = step || 1; + idx = parseInt(idx, 10); + + var len = cmps.length, + i = idx, c; + + for (;;) { + + if ((i += step) >= len) { + i = 0; + } else if (i < 0) { + i = len - 1; + } + + + if (i === idx) { + return []; + } + + + if ((c = cmps[i]).isFocusable()) { + return [c]; + } + } + + return []; + }, + + prevFocus: function(cmps, idx) { + return this.nextFocus(cmps, idx, -1); + }, + + root: function(cmps) { + var len = cmps.length, + results = [], + i = 0, + c; + + for (; i < len; i++) { + c = cmps[i]; + if (!c.ownerCt) { + results.push(c); + } + } + + return results; + } + }); + }, + + + addXTypeToWhitelist: function(xtype) { + var me = this; + + if (Ext.isArray(xtype)) { + Ext.Array.forEach(xtype, me.addXTypeToWhitelist, me); + return; + } + + if (!Ext.Array.contains(me.whitelist, xtype)) { + me.whitelist.push(xtype); + } + }, + + clearComponent: function(cmp) { + clearTimeout(this.cmpFocusDelay); + if (!cmp.isDestroyed) { + cmp.blur(); + } + }, + + + disable: function() { + var me = this; + + if (!me.enabled) { + return; + } + + delete me.options; + me.enabled = false; + + me.removeDOM(); + + + me.keyNav.disable(); + + me.fireEvent('disable', me); + }, + + + enable: function(options) { + var me = this; + + if (options === true) { + options = { focusFrame: true }; + } + me.options = options = options || {}; + + if (me.enabled) { + return; + } + + + me.enabled = true; + me.initDOM(options); + + + me.keyNav.enable(); + + + me.focusEl.focus(); + delete me.focusedCmp; + + me.fireEvent('enable', me); + }, + + focusLast: function(e) { + var me = this; + + if (me.isWhitelisted(me.focusedCmp)) { + return true; + } + + + if (me.previousFocusedCmp) { + me.previousFocusedCmp.focus(); + } + }, + + getRootComponents: function() { + var CQ = Ext.ComponentQuery, + inline = CQ.query(':focusable:root:not([floating])'), + floating = CQ.query(':focusable:root[floating]'); + + + + floating.sort(function(a, b) { + return a.el.getZIndex() > b.el.getZIndex(); + }); + + return floating.concat(inline); + }, + + initDOM: function(options) { + var me = this, + cls = me.focusFrameCls, + needListeners = Ext.ComponentQuery.query('{getFocusEl()}:not([focusListenerAdded])'), + i = 0, len = needListeners.length; + + if (!Ext.isReady) { + return Ext.onReady(me.initDOM, me); + } + + + + + for (; i < len; i++) { + needListeners[i].addFocusListener(); + } + + + if (!me.focusEl) { + me.focusEl = Ext.getBody(); + me.focusEl.dom.tabIndex = -1; + } + + + if (!me.focusFrame && options.focusFrame) { + me.focusFrame = Ext.getBody().createChild({ + cls: cls, + children: [ + { cls: cls + '-top' }, + { cls: cls + '-bottom' }, + { cls: cls + '-left' }, + { cls: cls + '-right' } + ], + style: 'top: -100px; left: -100px;' + }); + me.focusFrame.setVisibilityMode(Ext.Element.DISPLAY); + me.focusFrame.hide().setLocalXY(0, 0); + } + }, + + isWhitelisted: function(cmp) { + return cmp && Ext.Array.some(this.whitelist, function(x) { + return cmp.isXType(x); + }); + }, + + navigateIn: function(e) { + var me = this, + focusedCmp = me.focusedCmp, + defaultRoot, + firstChild; + + if (me.isWhitelisted(focusedCmp)) { + return true; + } + + if (!focusedCmp) { + + defaultRoot = me.getRootComponents()[0]; + if (defaultRoot) { + + + if (defaultRoot.getFocusEl() === me.focusEl) { + me.focusEl.blur(); + } + defaultRoot.focus(); + } + } else { + + + firstChild = focusedCmp.hasFocus ? Ext.ComponentQuery.query('>:focusable', focusedCmp)[0] : focusedCmp; + if (firstChild) { + firstChild.focus(); + } else { + + if (Ext.isFunction(focusedCmp.onClick)) { + e.button = 0; + focusedCmp.onClick(e); + if (focusedCmp.isVisible(true)) { + focusedCmp.focus(); + } else { + me.navigateOut(); + } + } + } + } + }, + + navigateOut: function(e) { + var me = this, + parent; + + if (!me.focusedCmp || !(parent = me.focusedCmp.up(':focusable'))) { + me.focusEl.focus(); + } else { + parent.focus(); + } + + + + + return true; + }, + + navigateSiblings: function(e, source, parent) { + var me = this, + src = source || me, + key = e.getKey(), + EO = Ext.EventObject, + goBack = e.shiftKey || key == EO.LEFT || key == EO.UP, + checkWhitelist = key == EO.LEFT || key == EO.RIGHT || key == EO.UP || key == EO.DOWN, + nextSelector = goBack ? 'prev' : 'next', + idx, next, focusedCmp, siblings; + + focusedCmp = (src.focusedCmp && src.focusedCmp.comp) || src.focusedCmp; + if (!focusedCmp && !parent) { + return true; + } + + if (checkWhitelist && me.isWhitelisted(focusedCmp)) { + return true; + } + + + if (!focusedCmp || focusedCmp.is(':root')) { + siblings = me.getRootComponents(); + } else { + + parent = parent || focusedCmp.up(); + if (parent) { + siblings = parent.getRefItems(); + } + } + + + + if (siblings) { + idx = focusedCmp ? Ext.Array.indexOf(siblings, focusedCmp) : -1; + next = Ext.ComponentQuery.query(':' + nextSelector + 'Focus(' + idx + ')', siblings)[0]; + if (next && focusedCmp !== next) { + next.focus(); + return next; + } + } + }, + + onComponentBlur: function(cmp, e) { + var me = this; + + if (me.focusedCmp === cmp) { + me.previousFocusedCmp = cmp; + delete me.focusedCmp; + } + + if (me.focusFrame) { + me.focusFrame.hide(); + } + }, + + onComponentFocus: function(cmp, e) { + var me = this, + chain = me.focusChain, + parent; + + if (!cmp.isFocusable()) { + me.clearComponent(cmp); + + + + + + if (chain[cmp.id]) { + return; + } + + + parent = cmp.up(); + if (parent) { + + + + chain[cmp.id] = true; + parent.focus(); + } + + return; + } + + me.focusChain = {}; + + + + + me.focusTask.delay(10, null, null, [cmp, cmp.getFocusEl()]); + }, + + handleComponentFocus: function(cmp, focusEl) { + var me = this, + cls, + ff, + box, + bt, + bl, + bw, + bh, + ft, + fb, + fl, + fr; + + if (me.fireEvent('beforecomponentfocus', me, cmp, me.previousFocusedCmp) === false) { + me.clearComponent(cmp); + return; + } + + me.focusedCmp = cmp; + + + if (me.shouldShowFocusFrame(cmp)) { + cls = '.' + me.focusFrameCls + '-'; + ff = me.focusFrame; + + + box = (focusEl.dom ? focusEl : focusEl.el).getBox(); + + + + + bt = box.top; + bl = box.left; + bw = box.width; + bh = box.height; + ft = ff.child(cls + 'top'); + fb = ff.child(cls + 'bottom'); + fl = ff.child(cls + 'left'); + fr = ff.child(cls + 'right'); + + ft.setWidth(bw).setLocalXY(bl, bt); + fb.setWidth(bw).setLocalXY(bl, bt + bh - 2); + fl.setHeight(bh - 2).setLocalXY(bl, bt + 2); + fr.setHeight(bh - 2).setLocalXY(bl + bw - 2, bt + 2); + + ff.show(); + } + + me.fireEvent('componentfocus', me, cmp, me.previousFocusedCmp); + }, + + onComponentHide: function(cmp) { + var me = this, + cmpHadFocus = false, + focusedCmp = me.focusedCmp, + parent; + + if (focusedCmp) { + + + cmpHadFocus = cmp.hasFocus || (cmp.isContainer && cmp.isAncestor(me.focusedCmp)); + } + + me.clearComponent(cmp); + + + if (cmpHadFocus && (parent = cmp.up(':focusable'))) { + parent.focus(); + } else { + me.focusEl.focus(); + } + }, + + onComponentDestroy: function() { + + }, + + removeDOM: function() { + var me = this; + + + + if (me.enabled || me.subscribers.length) { + return; + } + + Ext.destroy( + me.focusFrame + ); + delete me.focusEl; + delete me.focusFrame; + }, + + + removeXTypeFromWhitelist: function(xtype) { + var me = this; + + if (Ext.isArray(xtype)) { + Ext.Array.forEach(xtype, me.removeXTypeFromWhitelist, me); + return; + } + + Ext.Array.remove(me.whitelist, xtype); + }, + + setupSubscriberKeys: function(container, keys) { + var me = this, + el = container.getFocusEl(), + scope = keys.scope, + handlers = { + backspace: me.focusLast, + enter: me.navigateIn, + esc: me.navigateOut, + scope: me + }, + + navSiblings = function(e) { + if (me.focusedCmp === container) { + + + + return me.navigateSiblings(e, me, container); + } else { + return me.navigateSiblings(e); + } + }; + + Ext.iterate(keys, function(key, cb) { + handlers[key] = function(e) { + var ret = navSiblings(e); + + if (Ext.isFunction(cb) && cb.call(scope || container, e, ret) === true) { + return true; + } + + return ret; + }; + }, me); + + return new Ext.util.KeyNav(el, handlers); + }, + + shouldShowFocusFrame: function(cmp) { + var me = this, + opts = me.options || {}; + + + + + if (!me.focusFrame || !cmp) { + return false; + } + + + if (opts.focusFrame) { + return true; + } + + if (me.focusData[cmp.id].focusFrame) { + return true; + } + + return false; + } +}); + + +Ext.define('Ext.Img', { + extend: Ext.Component , + alias: ['widget.image', 'widget.imagecomponent'], + + autoEl: 'img', + + baseCls: Ext.baseCSSPrefix + 'img', + + + src: '', + + + alt: '', + + + title: '', + + + imgCls: '', + + + + initComponent: function() { + if (this.glyph) { + this.autoEl = 'div'; + } + this.callParent(); + }, + + getElConfig: function() { + var me = this, + config = me.callParent(), + glyphFontFamily = Ext._glyphFontFamily, + glyph = me.glyph, + img, glyphParts; + + + + if (me.autoEl == 'img') { + img = config; + } else if (me.glyph) { + if (typeof glyph === 'string') { + glyphParts = glyph.split('@'); + glyph = glyphParts[0]; + glyphFontFamily = glyphParts[1]; + } + config.html = '&#' + glyph + ';'; + if (glyphFontFamily) { + config.style = 'font-family:' + glyphFontFamily; + } + } else { + config.cn = [img = { + tag: 'img', + id: me.id + '-img' + }]; + } + + if (img) { + if (me.imgCls) { + img.cls = (img.cls ? img.cls + ' ' : '') + me.imgCls; + } + + img.src = me.src || Ext.BLANK_IMAGE_URL; + } + + if (me.alt) { + (img || config).alt = me.alt; + } + if (me.title) { + (img || config).title = me.title; + } + + return config; + }, + + onRender: function () { + var me = this, + el; + + me.callParent(arguments); + + el = me.el; + me.imgEl = (me.autoEl == 'img') ? el : el.getById(me.id + '-img'); + }, + + onDestroy: function () { + Ext.destroy(this.imgEl); + this.imgEl = null; + this.callParent(); + }, + + + setSrc: function(src) { + var me = this, + imgEl = me.imgEl; + + me.src = src; + + if (imgEl) { + imgEl.dom.src = src || Ext.BLANK_IMAGE_URL; + } + }, + + setGlyph: function(glyph) { + var me = this, + glyphFontFamily = Ext._glyphFontFamily, + glyphParts, dom; + + if (glyph != me.glyph) { + if (typeof glyph === 'string') { + glyphParts = glyph.split('@'); + glyph = glyphParts[0]; + glyphFontFamily = glyphParts[1]; + } + + dom = me.el.dom; + + dom.innerHTML = '&#' + glyph + ';'; + if (glyphFontFamily) { + dom.style = 'font-family:' + glyphFontFamily; + } + } + } +}); + + +Ext.define('Ext.util.Bindable', { + + + bindStore: function(store, initial, propertyName) { + + + + propertyName = propertyName || 'store'; + + var me = this, + oldStore = me[propertyName]; + + if (!initial && oldStore) { + + me.onUnbindStore(oldStore, initial, propertyName); + + if (store !== oldStore && oldStore.autoDestroy) { + oldStore.destroyStore(); + } else { + me.unbindStoreListeners(oldStore); + } + } + if (store) { + store = Ext.data.StoreManager.lookup(store); + me.bindStoreListeners(store); + me.onBindStore(store, initial, propertyName); + } + me[propertyName] = store || null; + return me; + }, + + + getStore: function(){ + return this.store; + }, + + + unbindStoreListeners: function(store) { + + var listeners = this.storeListeners; + if (listeners) { + store.un(listeners); + } + }, + + + bindStoreListeners: function(store) { + + var me = this, + listeners = Ext.apply({}, me.getStoreListeners(store)); + + if (!listeners.scope) { + listeners.scope = me; + } + me.storeListeners = listeners; + store.on(listeners); + }, + + + getStoreListeners: Ext.emptyFn, + + + onUnbindStore: Ext.emptyFn, + + + onBindStore: Ext.emptyFn +}); + + +Ext.define('Ext.LoadMask', { + + extend: Ext.Component , + + alias: 'widget.loadmask', + + + + mixins: { + floating: Ext.util.Floating , + bindable: Ext.util.Bindable + }, + + + + + + + + + + + + msg : 'Loading...', + + + + msgCls : Ext.baseCSSPrefix + 'mask-loading', + + + maskCls: Ext.baseCSSPrefix + 'mask', + + + useMsg: true, + + + useTargetEl: false, + + baseCls: Ext.baseCSSPrefix + 'mask-msg', + + childEls: [ + 'msgEl', + 'msgTextEl' + ], + + renderTpl: [ + '
', + '
', + '
' + ], + + + floating: { + shadow: 'frame' + }, + + + focusOnToFront: false, + + + + bringParentToFront: false, + + + constructor : function(config) { + var me = this, + comp; + + if (arguments.length === 2) { + comp = config; + config = arguments[1]; + } else { + comp = config.target; + } + + + if (!comp.isComponent) { + comp = Ext.get(comp); + this.isElement = true; + } + + me.ownerCt = comp; + if (!this.isElement) { + me.bindComponent(comp); + } + me.callParent([config]); + + if (me.store) { + me.bindStore(me.store, true); + } + }, + + bindComponent: function(comp) { + var me = this, + listeners = { + scope: this, + resize: me.sizeMask, + added: me.onComponentAdded, + removed: me.onComponentRemoved + }; + + if (comp.floating) { + listeners.move = me.sizeMask; + me.activeOwner = comp; + } else if (comp.ownerCt) { + me.onComponentAdded(comp.ownerCt); + } else { + + me.preventBringToFront = true; + } + + me.mon(comp, listeners); + + + me.mon(me.hierarchyEventSource, { + show: me.onContainerShow, + hide: me.onContainerHide, + expand: me.onContainerExpand, + collapse: me.onContainerCollapse, + scope: me + }); + }, + + onComponentAdded: function(owner) { + var me = this; + delete me.activeOwner; + me.floatParent = owner; + if (!owner.floating) { + owner = owner.up('[floating]'); + } + if (owner) { + me.activeOwner = owner; + me.mon(owner, 'move', me.sizeMask, me); + } else { + me.preventBringToFront = true; + } + owner = me.floatParent.ownerCt; + if (me.rendered && me.isVisible() && owner) { + me.floatOwner = owner; + me.mon(owner, 'afterlayout', me.sizeMask, me, {single: true}); + } + }, + + onComponentRemoved: function(owner) { + var me = this, + activeOwner = me.activeOwner, + floatOwner = me.floatOwner; + + if (activeOwner) { + me.mun(activeOwner, 'move', me.sizeMask, me); + } + if (floatOwner) { + me.mun(floatOwner, 'afterlayout', me.sizeMask, me); + } + delete me.activeOwner; + delete me.floatOwner; + }, + + afterRender: function() { + this.callParent(arguments); + this.container = this.floatParent.getContentTarget(); + }, + + onContainerShow: function(container) { + if (this.isActiveContainer(container)) { + this.onComponentShow(); + } + }, + + onContainerHide: function(container) { + if (this.isActiveContainer(container)) { + this.onComponentHide(); + } + }, + + onContainerExpand: function(container) { + if (this.isActiveContainer(container)) { + this.onComponentShow(); + } + }, + + onContainerCollapse: function(container) { + if (this.isActiveContainer(container)) { + this.onComponentHide(); + } + }, + + isActiveContainer: function(container) { + return this.isDescendantOf(container); + }, + + onComponentHide: function() { + var me = this; + + if (me.rendered && me.isVisible()) { + me.hide(); + me.showNext = true; + } + }, + + onComponentShow: function() { + if (this.showNext) { + this.show(); + } + delete this.showNext; + }, + + + sizeMask: function() { + var me = this, + target; + + if (me.rendered && me.isVisible()) { + me.center(); + + target = me.getMaskTarget(); + me.getMaskEl().show().setSize(target.getSize()).alignTo(target, 'tl-tl'); + + } + }, + + + bindStore : function(store, initial) { + var me = this; + me.mixins.bindable.bindStore.apply(me, arguments); + store = me.store; + if (store && store.isLoading()) { + me.onBeforeLoad(); + } + }, + + getStoreListeners: function(store) { + var load = this.onLoad, + beforeLoad = this.onBeforeLoad, + result = { + + cachemiss: beforeLoad, + + + cachefilled: load + }; + + + if (!store.proxy.isSynchronous) { + result.beforeLoad = beforeLoad; + result.load = load; + } + return result; + }, + + onDisable : function() { + this.callParent(arguments); + if (this.loading) { + this.onLoad(); + } + }, + + getOwner: function() { + return this.ownerCt || this.floatParent; + }, + + getMaskTarget: function() { + var owner = this.getOwner(); + return this.useTargetEl ? owner.getTargetEl() : owner.getEl(); + }, + + + onBeforeLoad : function() { + var me = this, + owner = me.getOwner(), + origin; + + if (!me.disabled) { + me.loading = true; + + + if (owner.componentLayoutCounter) { + me.maybeShow(); + } else { + + origin = owner.afterComponentLayout; + owner.afterComponentLayout = function() { + owner.afterComponentLayout = origin; + origin.apply(owner, arguments); + me.maybeShow(); + }; + } + } + }, + + maybeShow: function() { + var me = this, + owner = me.getOwner(); + + if (!owner.isVisible(true)) { + me.showNext = true; + } + else if (me.loading && owner.rendered) { + me.show(); + } + }, + + getMaskEl: function(){ + var me = this; + return me.maskEl || (me.maskEl = me.el.insertSibling({ + cls: me.maskCls, + style: { + zIndex: me.el.getStyle('zIndex') - 2 + } + }, 'before')); + }, + + onShow: function() { + var me = this, + msgEl = me.msgEl; + + me.callParent(arguments); + me.loading = true; + + if (me.useMsg) { + msgEl.show(); + me.msgTextEl.update(me.msg); + } else { + msgEl.parent().hide(); + } + }, + + hide: function() { + + if (this.isElement) { + this.ownerCt.unmask(); + this.fireEvent('hide', this); + return; + } + delete this.showNext; + return this.callParent(arguments); + }, + + onHide: function() { + this.callParent(); + this.getMaskEl().hide(); + }, + + show: function() { + + if (this.isElement) { + this.ownerCt.mask(this.useMsg ? this.msg : '', this.msgCls); + this.fireEvent('show', this); + return; + } + return this.callParent(arguments); + }, + + afterShow: function() { + this.callParent(arguments); + this.sizeMask(); + }, + + setZIndex: function(index) { + var me = this, + owner = me.activeOwner; + + if (owner) { + + + + index = parseInt(owner.el.getStyle('zIndex'), 10) + 1; + } + + me.getMaskEl().setStyle('zIndex', index - 1); + return me.mixins.floating.setZIndex.apply(me, arguments); + }, + + + onLoad : function() { + this.loading = false; + this.hide(); + }, + + onDestroy: function() { + var me = this; + + if (me.isElement) { + me.ownerCt.unmask(); + } + + Ext.destroy(me.maskEl); + me.callParent(); + } +}); + + +Ext.define('Ext.data.association.Association', { + alternateClassName: 'Ext.data.Association', + + + + + + + + primaryKey: 'id', + + + + + + associationKeyFunction : null, + + defaultReaderType: 'json', + + isAssociation: true, + + initialConfig: null, + + statics: { + AUTO_ID: 1000, + + create: function(association){ + if (Ext.isString(association)) { + association = { + type: association + }; + } + + switch (association.type) { + case 'belongsTo': + return new Ext.data.association.BelongsTo(association); + case 'hasMany': + return new Ext.data.association.HasMany(association); + case 'hasOne': + return new Ext.data.association.HasOne(association); + + + + default: + } + return association; + } + }, + + + constructor: function(config) { + Ext.apply(this, config); + + var me = this, + types = Ext.ModelManager.types, + ownerName = config.ownerModel, + associatedName = config.associatedModel, + ownerModel = types[ownerName], + associatedModel = types[associatedName], + associationKey = config.associationKey, + keyReIdx; + + if (associationKey) { + keyReIdx = String(associationKey).search(/[\[\.]/); + + if (keyReIdx >= 0) { + me.associationKeyFunction = Ext.functionFactory('obj', 'return obj' + (keyReIdx > 0 ? '.' : '') + associationKey); + } + } + + me.initialConfig = config; + + + me.ownerModel = ownerModel; + me.associatedModel = associatedModel; + + + + + + Ext.applyIf(me, { + ownerName : ownerName, + associatedName: associatedName + }); + + me.associationId = 'association' + (++me.statics().AUTO_ID); + }, + + + getReader: function(){ + var me = this, + reader = me.reader, + model = me.associatedModel; + + if (reader) { + if (Ext.isString(reader)) { + reader = { + type: reader + }; + } + if (reader.isReader) { + reader.setModel(model); + } else { + Ext.applyIf(reader, { + model: model, + type : me.defaultReaderType + }); + } + me.reader = Ext.createByAlias('reader.' + reader.type, reader); + } + return me.reader || null; + } +}); + + +Ext.define('Ext.ModelManager', { + extend: Ext.AbstractManager , + alternateClassName: 'Ext.ModelMgr', + + + singleton: true, + + typeName: 'mtype', + + + associationStack: [], + + + registerType: function(name, config) { + var proto = config.prototype, + model; + if (proto && proto.isModel) { + + model = config; + } else { + + if (!config.extend) { + config.extend = 'Ext.data.Model'; + } + model = Ext.define(name, config); + } + this.types[name] = model; + return model; + }, + + + unregisterType: function(name) { + delete this.types[name]; + }, + + + onModelDefined: function(model) { + var stack = this.associationStack, + length = stack.length, + create = [], + association, i, created; + + for (i = 0; i < length; i++) { + association = stack[i]; + + if (association.associatedModel == model.modelName) { + create.push(association); + } + } + + for (i = 0, length = create.length; i < length; i++) { + created = create[i]; + this.types[created.ownerModel].prototype.associations.add(Ext.data.association.Association.create(created)); + Ext.Array.remove(stack, created); + } + }, + + + registerDeferredAssociation: function(association){ + this.associationStack.push(association); + }, + + + getModel: function(id) { + var model = id; + if (typeof model == 'string') { + model = this.types[model]; + } + return model; + }, + + + create: function(config, name, id) { + var Con = typeof name == 'function' ? name : this.types[name || config.name]; + + return new Con(config, id); + } +}, function() { + + + Ext.regModel = function() { + return this.ModelManager.registerType.apply(this.ModelManager, arguments); + }; +}); + + +Ext.define('Ext.layout.component.ProgressBar', { + + + + alias: ['layout.progressbar'], + + extend: Ext.layout.component.Auto , + + + + type: 'progressbar', + + beginLayout: function (ownerContext) { + var me = this, + i, textEls; + + me.callParent(arguments); + + if (!ownerContext.textEls) { + textEls = me.owner.textEl; + + if (textEls.isComposite) { + ownerContext.textEls = []; + textEls = textEls.elements; + for (i = textEls.length; i--; ) { + ownerContext.textEls[i] = ownerContext.getEl(Ext.get(textEls[i])); + } + } else { + ownerContext.textEls = [ ownerContext.getEl('textEl') ]; + } + } + }, + + calculate: function(ownerContext) { + var me = this, + i, textEls, width; + + me.callParent(arguments); + + if (Ext.isNumber(width = ownerContext.getProp('width'))) { + width -= ownerContext.getBorderInfo().width; + textEls = ownerContext.textEls; + + for (i = textEls.length; i--; ) { + textEls[i].setWidth(width); + } + } else { + me.done = false; + } + } +}); + + +Ext.define('Ext.ProgressBar', { + extend: Ext.Component , + alias: 'widget.progressbar', + + + + + + + + + + + + + + + + + + baseCls: Ext.baseCSSPrefix + 'progress', + + + animate: false, + + + text: '', + + + waitTimer: null, + + childEls: [ + 'bar' + ], + + renderTpl: [ + '', + '
{text}
', + '
', + '
', + '', + '
', + '
{text}
', + '
', + '
', + '
' + ], + + componentLayout: 'progressbar', + + + initComponent: function() { + this.callParent(); + + this.addEvents( + + "update" + ); + }, + + initRenderData: function() { + var me = this; + return Ext.apply(me.callParent(), { + internalText : !me.hasOwnProperty('textEl'), + text : me.text || ' ', + percentage : me.value ? me.value * 100 : 0 + }); + }, + + onRender : function() { + var me = this; + + me.callParent(arguments); + + + if (me.textEl) { + me.textEl = Ext.get(me.textEl); + me.updateText(me.text); + } + + else { + + + me.textEl = me.el.select('.' + me.baseCls + '-text'); + } + }, + + + updateProgress: function(value, text, animate) { + var me = this, + oldValue = me.value; + + me.value = value || 0; + if (text) { + me.updateText(text); + } + if (me.rendered && !me.isDestroyed) { + if (animate === true || (animate !== false && me.animate)) { + me.bar.stopAnimation(); + me.bar.animate(Ext.apply({ + from: { + width: (oldValue * 100) + '%' + }, + to: { + width: (me.value * 100) + '%' + } + }, me.animate)); + } else { + me.bar.setStyle('width', (me.value * 100) + '%'); + } + } + me.fireEvent('update', me, me.value, text); + return me; + }, + + + updateText: function(text) { + var me = this; + + me.text = text; + if (me.rendered) { + me.textEl.update(me.text); + } + return me; + }, + + applyText : function(text) { + this.updateText(text); + }, + + getText: function(){ + return this.text; + }, + + + wait: function(o) { + var me = this, scope; + + if (!me.waitTimer) { + scope = me; + o = o || {}; + me.updateText(o.text); + me.waitTimer = Ext.TaskManager.start({ + run: function(i){ + var inc = o.increment || 10; + i -= 1; + me.updateProgress(((((i+inc)%inc)+1)*(100/inc))*0.01, null, o.animate); + }, + interval: o.interval || 1000, + duration: o.duration, + onStop: function(){ + if (o.fn) { + o.fn.apply(o.scope || me); + } + me.reset(); + }, + scope: scope + }); + } + return me; + }, + + + isWaiting: function(){ + return this.waitTimer !== null; + }, + + + reset: function(hide){ + var me = this; + + me.updateProgress(0); + me.clearTimer(); + if (hide === true) { + me.hide(); + } + return me; + }, + + + clearTimer: function(){ + var me = this; + + if (me.waitTimer) { + me.waitTimer.onStop = null; + Ext.TaskManager.stop(me.waitTimer); + me.waitTimer = null; + } + }, + + onDestroy: function(){ + var me = this, + bar = me.bar; + + me.clearTimer(); + if (me.rendered) { + if (me.textEl.isComposite) { + me.textEl.clear(); + } + Ext.destroyMembers(me, 'textEl', 'progressBar'); + if (bar && me.animate) { + bar.stopAnimation(); + } + } + me.callParent(); + } +}); + + +Ext.define('Ext.ShadowPool', { + singleton: true, + + + markup: (function() { + return Ext.String.format( + '', + Ext.baseCSSPrefix, + Ext.isIE && !Ext.supports.CSS3BoxShadow ? 'ie' : 'css' + ); + }()), + + shadows: [], + + pull: function() { + var sh = this.shadows.shift(); + if (!sh) { + sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, this.markup)); + sh.autoBoxAdjust = false; + } + return sh; + }, + + push: function(sh) { + this.shadows.push(sh); + }, + + reset: function() { + var shadows = [].concat(this.shadows), + s, + sLen = shadows.length; + + for (s = 0; s < sLen; s++) { + shadows[s].remove(); + } + + this.shadows = []; + } +}); + + +Ext.define('Ext.Shadow', { + + + localXYNames: { + get: 'getLocalXY', + set: 'setLocalXY' + }, + + + constructor: function(config) { + var me = this, + adjusts, + offset, + rad; + + Ext.apply(me, config); + if (!Ext.isString(me.mode)) { + me.mode = me.defaultMode; + } + offset = me.offset; + rad = Math.floor(offset / 2); + me.opacity = 50; + switch (me.mode.toLowerCase()) { + + case "drop": + if (Ext.supports.CSS3BoxShadow) { + adjusts = { + t: offset, + l: offset, + h: -offset, + w: -offset + }; + } + else { + adjusts = { + t: -rad, + l: -rad, + h: -rad, + w: -rad + }; + } + break; + case "sides": + if (Ext.supports.CSS3BoxShadow) { + adjusts = { + t: offset, + l: 0, + h: -offset, + w: 0 + }; + } + else { + adjusts = { + t: - (1 + rad), + l: 1 + rad - 2 * offset, + h: -1, + w: rad - 1 + }; + } + break; + case "frame": + if (Ext.supports.CSS3BoxShadow) { + adjusts = { + t: 0, + l: 0, + h: 0, + w: 0 + }; + } + else { + adjusts = { + t: 1 + rad - 2 * offset, + l: 1 + rad - 2 * offset, + h: offset - rad - 1, + w: offset - rad - 1 + }; + } + break; + case "bottom": + if (Ext.supports.CSS3BoxShadow) { + adjusts = { + t: offset, + l: 0, + h: -offset, + w: 0 + }; + } + else { + adjusts = { + t: offset, + l: 0, + h: 0, + w: 0 + }; + } + break; + } + me.adjusts = adjusts; + }, + + + getShadowSize: function() { + var me = this, + offset = me.el ? me.offset : 0, + result = [offset, offset, offset, offset], + mode = me.mode.toLowerCase(); + + + if (me.el && mode !== 'frame') { + result[0] = 0; + if (mode == 'drop') { + result[3] = 0; + } + } + return result; + }, + + + + + offset: 4, + + + defaultMode: "drop", + + + boxShadowProperty: (function() { + var property = 'boxShadow', + style = document.documentElement.style; + + if (!('boxShadow' in style)) { + if ('WebkitBoxShadow' in style) { + + property = 'WebkitBoxShadow'; + } + else if ('MozBoxShadow' in style) { + + property = 'MozBoxShadow'; + } + } + + return property; + }()), + + + show: function(target) { + var me = this, + index, xy; + + target = Ext.get(target); + + + index = (parseInt(target.getStyle("z-index"), 10) - 1) || 0; + xy = target[me.localXYNames.get](); + + + if (!me.el) { + me.el = Ext.ShadowPool.pull(); + + if (me.fixed) { + me.el.dom.style.position = 'fixed'; + } else { + me.el.dom.style.position = ''; + } + if (me.el.dom.nextSibling != target.dom) { + me.el.insertBefore(target); + } + } + me.el.setStyle("z-index", me.zIndex || index); + if (Ext.isIE && !Ext.supports.CSS3BoxShadow) { + me.el.dom.style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity=" + me.opacity + ") progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (me.offset) + ")"; + } + me.realign( + xy[0], + xy[1], + target.dom.offsetWidth, + target.dom.offsetHeight + ); + me.el.dom.style.display = "block"; + }, + + + isVisible: function() { + return this.el ? true: false; + }, + + + realign: function(l, t, targetWidth, targetHeight) { + if (!this.el) { + return; + } + var adjusts = this.adjusts, + el = this.el, + targetStyle = el.dom.style, + shadowWidth, + shadowHeight, + sws, + shs; + + el[this.localXYNames.set](l + adjusts.l, t + adjusts.t); + shadowWidth = Math.max(targetWidth + adjusts.w, 0); + shadowHeight = Math.max(targetHeight + adjusts.h, 0); + sws = shadowWidth + "px"; + shs = shadowHeight + "px"; + if (targetStyle.width != sws || targetStyle.height != shs) { + targetStyle.width = sws; + targetStyle.height = shs; + + if (Ext.supports.CSS3BoxShadow) { + targetStyle[this.boxShadowProperty] = '0 0 ' + (this.offset + 2) + 'px #888'; + } + } + }, + + + hide: function() { + var me = this; + + if (me.el) { + me.el.dom.style.display = "none"; + Ext.ShadowPool.push(me.el); + delete me.el; + } + }, + + + setZIndex: function(z) { + this.zIndex = z; + if (this.el) { + this.el.setStyle("z-index", z); + } + }, + + + setOpacity: function(opacity){ + if (this.el) { + if (Ext.isIE && !Ext.supports.CSS3BoxShadow) { + opacity = Math.floor(opacity * 100 / 2) / 100; + } + this.opacity = opacity; + this.el.setOpacity(opacity); + } + } +}); + + + +Ext.define('Ext.app.EventDomain', { + + + + + statics: { + + instances: {} + }, + + + + isEventDomain: true, + + constructor: function() { + var me = this; + + Ext.app.EventDomain.instances[me.type] = me; + + me.bus = {}; + me.monitoredClasses = []; + }, + + + dispatch: function(target, ev, args) { + var me = this, + bus = me.bus, + selectors = bus[ev], + selector, controllers, id, events, event, i, ln; + + if (!selectors) { + return true; + } + + + for (selector in selectors) { + + if (selectors.hasOwnProperty(selector) && me.match(target, selector)) { + + controllers = selectors[selector]; + + for (id in controllers) { + if (controllers.hasOwnProperty(id)) { + + events = controllers[id]; + + for (i = 0, ln = events.length; i < ln; i++) { + event = events[i]; + + + if (event.fire.apply(event, args) === false) { + return false; + } + } + } + } + } + } + + return true; + }, + + + listen: function(selectors, controller) { + var me = this, + bus = me.bus, + idProperty = me.idProperty, + monitoredClasses = me.monitoredClasses, + monitoredClassesCount = monitoredClasses.length, + i, tree, list, selector, options, listener, scope, event, listeners, ev; + + for (selector in selectors) { + if (selectors.hasOwnProperty(selector) && (listeners = selectors[selector])) { + if (idProperty) { + + selector = selector === '*' ? selector : selector.substring(1); + } + + for (ev in listeners) { + if (listeners.hasOwnProperty(ev)) { + options = null; + listener = listeners[ev]; + scope = controller; + event = new Ext.util.Event(controller, ev); + + + if (Ext.isObject(listener)) { + options = listener; + listener = options.fn; + scope = options.scope || controller; + + delete options.fn; + delete options.scope; + } + + if (typeof listener === 'string') { + listener = scope[listener]; + } + event.addListener(listener, scope, options); + + for (i = monitoredClassesCount; i-- > 0;) { + monitoredClasses[i].hasListeners._incr_(ev); + } + + + tree = bus[ev] || (bus[ev] = {}); + tree = tree[selector] || (tree[selector] = {}); + list = tree[controller.id] || (tree[controller.id] = []); + + + list.push(event); + } + } + } + } + }, + + + match: function(target, selector) { + var idProperty = this.idProperty; + + if (idProperty) { + return selector === '*' || target[idProperty] === selector; + } + + return false; + }, + + + monitor: function(observable) { + var domain = this, + prototype = observable.isInstance ? observable : observable.prototype, + fireEventArgs = prototype.fireEventArgs; + + domain.monitoredClasses.push(observable); + + prototype.fireEventArgs = function(ev, args) { + var ret = fireEventArgs.apply(this, arguments); + + if (ret !== false) { + ret = domain.dispatch(this, ev, args); + } + + return ret; + }; + }, + + + unlisten: function(controllerId) { + var bus = this.bus, + controllers, ev, selector, selectors; + + for (ev in bus) { + if (bus.hasOwnProperty(ev) && (selectors = bus[ev])) { + for (selector in selectors) { + controllers = selectors[selector]; + delete controllers[controllerId]; + } + } + } + } +}); + + +Ext.define('Ext.app.domain.Component', { + extend: Ext.app.EventDomain , + singleton: true, + + + + + + type: 'component', + + constructor: function() { + var me = this; + + me.callParent(); + me.monitor(Ext.Component); + }, + + match: function(target, selector) { + return target.is(selector); + } +}); + + +Ext.define('Ext.app.EventBus', { + singleton: true, + + + + + + constructor: function() { + var me = this, + domains = Ext.app.EventDomain.instances; + + me.callParent(); + + me.domains = domains; + me.bus = domains.component.bus; + }, + + + control: function(selectors, controller) { + return this.domains.component.listen(selectors, controller); + }, + + + listen: function(to, controller) { + var domains = this.domains, + domain; + + for (domain in to) { + if (to.hasOwnProperty(domain)) { + domains[domain].listen(to[domain], controller); + } + } + }, + + + unlisten: function(controllerId) { + var domains = Ext.app.EventDomain.instances, + domain; + + for (domain in domains) { + domains[domain].unlisten(controllerId); + } + } +}); + + +Ext.define('Ext.data.StoreManager', { + extend: Ext.util.MixedCollection , + alternateClassName: ['Ext.StoreMgr', 'Ext.data.StoreMgr', 'Ext.StoreManager'], + singleton: true, + + + + + + register : function() { + for (var i = 0, s; (s = arguments[i]); i++) { + this.add(s); + } + }, + + + unregister : function() { + for (var i = 0, s; (s = arguments[i]); i++) { + this.remove(this.lookup(s)); + } + }, + + + lookup : function(store) { + + if (Ext.isArray(store)) { + var fields = ['field1'], + expand = !Ext.isArray(store[0]), + data = store, + i, + len; + + if(expand){ + data = []; + for (i = 0, len = store.length; i < len; ++i) { + data.push([store[i]]); + } + } else { + for(i = 2, len = store[0].length; i <= len; ++i){ + fields.push('field' + i); + } + } + return new Ext.data.ArrayStore({ + data : data, + fields: fields, + autoDestroy: true, + autoCreated: true, + expanded: expand + }); + } + + if (Ext.isString(store)) { + + return this.get(store); + } else { + + return Ext.data.AbstractStore.create(store); + } + }, + + + getKey : function(o) { + return o.storeId; + } +}, function() { + + Ext.regStore = function(name, config) { + var store; + + if (Ext.isObject(name)) { + config = name; + } else { + config.storeId = name; + } + + if (config instanceof Ext.data.Store) { + store = config; + } else { + store = new Ext.data.Store(config); + } + + return Ext.data.StoreManager.register(store); + }; + + + Ext.getStore = function(name) { + return Ext.data.StoreManager.lookup(name); + }; +}); + + +Ext.define('Ext.app.domain.Global', { + extend: Ext.app.EventDomain , + singleton: true, + + type: 'global', + + constructor: function() { + var me = this; + + me.callParent(); + me.monitor(Ext.globalEvents); + }, + + + listen: function(listeners, controller) { + + + this.callParent([{ global: listeners }, controller]); + }, + + match: function() { + return true; + } +}); + + +Ext.define('Ext.data.ResultSet', { + + loaded: true, + + + count: 0, + + + total: 0, + + + success: false, + + + + + constructor: function(config) { + Ext.apply(this, config); + + + this.totalRecords = this.total; + + if (config.count === undefined) { + this.count = this.records.length; + } + } +}); + + +Ext.define('Ext.data.reader.Reader', { + + alternateClassName: ['Ext.data.Reader', 'Ext.data.DataReader'], + + mixins: { + observable: Ext.util.Observable + }, + + + + + totalProperty: 'total', + + + successProperty: 'success', + + + root: '', + + + + + implicitIncludes: true, + + + readRecordsOnFailure: true, + + + + + isReader: true, + + + + + applyDefaults: true, + + lastFieldGeneration: null, + + + constructor: function(config) { + var me = this; + + me.mixins.observable.constructor.call(me, config); + me.fieldCount = 0; + me.model = Ext.ModelManager.getModel(me.model); + + + + + + + if (me.model && me.model.prototype.fields) { + me.buildExtractors(); + } + + this.addEvents( + + 'exception' + ); + }, + + + setModel: function(model, setOnProxy) { + var me = this; + + me.model = Ext.ModelManager.getModel(model); + if (model) { + me.buildExtractors(true); + } + + if (setOnProxy && me.proxy) { + me.proxy.setModel(me.model, true); + } + }, + + + read: function(response) { + var data; + + if (response) { + data = response.responseText ? this.getResponseData(response) : this.readRecords(response); + } + + return data || this.nullResultSet; + }, + + + readRecords: function(data) { + var me = this, + success, + recordCount, + records, + root, + total, + value, + message; + + + if (me.lastFieldGeneration !== me.model.prototype.fields.generation) { + me.buildExtractors(true); + } + + + me.rawData = data; + + data = me.getData(data); + + success = true; + recordCount = 0; + records = []; + + if (me.successProperty) { + value = me.getSuccess(data); + if (value === false || value === 'false') { + success = false; + } + } + + if (me.messageProperty) { + message = me.getMessage(data); + } + + + + if (me.readRecordsOnFailure || success) { + + + root = Ext.isArray(data) ? data : me.getRoot(data); + + if (root) { + total = root.length; + } + + if (me.totalProperty) { + value = parseInt(me.getTotal(data), 10); + if (!isNaN(value)) { + total = value; + } + } + + if (root) { + records = me.extractData(root); + recordCount = records.length; + } + } + + return new Ext.data.ResultSet({ + total : total || recordCount, + count : recordCount, + records: records, + success: success, + message: message + }); + }, + + + extractData : function(root) { + var me = this, + Model = me.model, + length = root.length, + records = new Array(length), + convertedValues, node, record, i; + + if (!root.length && Ext.isObject(root)) { + root = [root]; + length = 1; + } + + for (i = 0; i < length; i++) { + node = root[i]; + if (node.isModel) { + + + records[i] = node; + } else { + + + + records[i] = record = new Model(undefined, me.getId(node), node, convertedValues = {}); + + + + record.phantom = false; + + + me.convertRecordData(convertedValues, node, record); + + if (me.implicitIncludes && record.associations.length) { + me.readAssociated(record, node); + } + } + } + + return records; + }, + + + readAssociated: function(record, data) { + var associations = record.associations.items, + i = 0, + length = associations.length, + association, associationData, proxy, reader; + + for (; i < length; i++) { + association = associations[i]; + associationData = this.getAssociatedDataRoot(data, association.associationKeyFunction || association.associationKey || association.name); + + if (associationData) { + reader = association.getReader(); + if (!reader) { + proxy = association.associatedModel.getProxy(); + + if (proxy) { + reader = proxy.getReader(); + } else { + reader = new this.constructor({ + model: association.associatedName + }); + } + } + association.read(record, reader, associationData); + } + } + }, + + + getAssociatedDataRoot: function(data, associationName) { + if (Ext.isFunction(associationName)) { + return associationName(data); + } + + return data[associationName]; + }, + + getFields: function() { + return this.model.prototype.fields.items; + }, + + + getData: Ext.identityFn, + + + getRoot: Ext.identityFn, + + + getResponseData: function(response) { + }, + + + onMetaChange : function(meta) { + var me = this, + fields = meta.fields || me.getFields(), + newModel, + clientIdProperty; + + + me.metaData = meta; + + + me.root = meta.root || me.root; + me.idProperty = meta.idProperty || me.idProperty; + me.totalProperty = meta.totalProperty || me.totalProperty; + me.successProperty = meta.successProperty || me.successProperty; + me.messageProperty = meta.messageProperty || me.messageProperty; + clientIdProperty = meta.clientIdProperty; + + if (me.model) { + me.model.setFields(fields, me.idProperty, clientIdProperty); + me.setModel(me.model, true); + } + else { + newModel = Ext.define("Ext.data.reader.Json-Model" + Ext.id(), { + extend: 'Ext.data.Model', + fields: fields, + clientIdProperty: clientIdProperty + }); + if (me.idProperty) { + + + + + newModel.idProperty = me.idProperty; + } + me.setModel(newModel, true); + } + }, + + + getIdProperty: function() { + var idField = this.model.prototype.idField, + idProperty = this.idProperty; + + if (!idProperty && idField && (idProperty = idField.mapping) == null) { + idProperty = idField.name; + } + return idProperty; + }, + + + buildExtractors: function(force) { + var me = this, + idProp = me.getIdProperty(), + totalProp = me.totalProperty, + successProp = me.successProperty, + messageProp = me.messageProperty, + accessor; + + if (force === true) { + delete me.convertRecordData; + } + + if (me.convertRecordData) { + return; + } + + + if (totalProp) { + me.getTotal = me.createAccessor(totalProp); + } + + if (successProp) { + me.getSuccess = me.createAccessor(successProp); + } + + if (messageProp) { + me.getMessage = me.createAccessor(messageProp); + } + + + if (idProp) { + accessor = me.createAccessor(idProp); + me.getId = function(record) { + var id = accessor.call(me, record); + return (id === undefined || id === '') ? null : id; + }; + } else { + me.getId = function() { + return null; + }; + } + me.convertRecordData = me.buildRecordDataExtractor(); + me.lastFieldGeneration = me.model.prototype.fields.generation; + }, + + recordDataExtractorTemplate : [ + 'var me = this\n', + ' ,fields = me.model.prototype.fields\n', + ' ,value\n', + ' ,internalId\n', + '', + ' ,__field{#} = fields.map["{name}"]\n', + '', ';\n', + + 'return function(dest, source, record) {\n', + '', + '{% var fieldAccessExpression = this.createFieldAccessExpression(values, "__field" + xindex, "source");', + ' if (fieldAccessExpression) { %}', + + ' value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n', + + + '', + ' dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n', + + + '', + ' if (value === undefined) {\n', + ' if (me.applyDefaults) {\n', + '', + ' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n', + '', + ' dest["{name}"] = __field{#}.defaultValue\n', + '', + ' };\n', + ' } else {\n', + '', + ' dest["{name}"] = __field{#}.convert(value, record);\n', + '', + ' dest["{name}"] = value;\n', + '', + ' };\n', + + + '', + ' if (value !== undefined) {\n', + '', + ' dest["{name}"] = __field{#}.convert(value, record);\n', + '', + ' dest["{name}"] = value;\n', + '', + ' }\n', + '', + + + + + '{% } else { %}', + '', + '', + ' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n', + '', + ' dest["{name}"] = __field{#}.defaultValue\n', + '', + '', + '{% } %}', + '', + + + + + '', + ' if (record && (internalId = {[ this.createFieldAccessExpression(\{mapping: values.clientIdProp\}, null, "source") ]})) {\n', + ' record.{["internalId"]} = internalId;\n', + ' }\n', + '', + + '};' + ], + + + buildRecordDataExtractor: function() { + var me = this, + modelProto = me.model.prototype, + templateData = { + clientIdProp: modelProto.clientIdProperty, + fields: modelProto.fields.items + }; + + me.recordDataExtractorTemplate.createFieldAccessExpression = function() { + return me.createFieldAccessExpression.apply(me,arguments); + }; + + + + + + return Ext.functionFactory(me.recordDataExtractorTemplate.apply(templateData)).call(me); + }, + + destroyReader: function() { + var me = this; + delete me.proxy; + delete me.model; + delete me.convertRecordData; + delete me.getId; + delete me.getTotal; + delete me.getSuccess; + delete me.getMessage; + } +}, function() { + var proto = this.prototype; + Ext.apply(proto, { + + nullResultSet: new Ext.data.ResultSet({ + total : 0, + count : 0, + records: [], + success: true, + message: '' + }), + recordDataExtractorTemplate: new Ext.XTemplate(proto.recordDataExtractorTemplate) + }); +}); + + +Ext.define('Ext.data.reader.Json', { + extend: Ext.data.reader.Reader , + alternateClassName: 'Ext.data.JsonReader', + alias : 'reader.json', + + root: '', + + + + + metaProperty: 'metaData', + + + useSimpleAccessors: false, + + + readRecords: function(data) { + var me = this, + meta; + + + if (me.getMeta) { + meta = me.getMeta(data); + if (meta) { + me.onMetaChange(meta); + } + } else if (data.metaData) { + me.onMetaChange(data.metaData); + } + + + me.jsonData = data; + return me.callParent([data]); + }, + + + getResponseData: function(response) { + var data, error; + + try { + data = Ext.decode(response.responseText); + return this.readRecords(data); + } catch (ex) { + error = new Ext.data.ResultSet({ + total : 0, + count : 0, + records: [], + success: false, + message: ex.message + }); + + this.fireEvent('exception', this, response, error); + + Ext.Logger.warn('Unable to parse the JSON returned by the server'); + + return error; + } + }, + + + buildExtractors : function() { + var me = this, + metaProp = me.metaProperty; + + me.callParent(arguments); + + if (me.root) { + me.getRoot = me.createAccessor(me.root); + } else { + me.getRoot = Ext.identityFn; + } + + if (metaProp) { + me.getMeta = me.createAccessor(metaProp); + } + }, + + + extractData: function(root) { + var recordName = this.record, + data = [], + length, i; + + if (recordName) { + length = root.length; + + if (!length && Ext.isObject(root)) { + length = 1; + root = [root]; + } + + for (i = 0; i < length; i++) { + data[i] = root[i][recordName]; + } + } else { + data = root; + } + return this.callParent([data]); + }, + + + createAccessor: (function() { + var re = /[\[\.]/; + + return function(expr) { + if (Ext.isEmpty(expr)) { + return Ext.emptyFn; + } + if (Ext.isFunction(expr)) { + return expr; + } + if (this.useSimpleAccessors !== true) { + var i = String(expr).search(re); + if (i >= 0) { + return Ext.functionFactory('obj', 'return obj' + (i > 0 ? '.' : '') + expr); + } + } + return function(obj) { + return obj[expr]; + }; + }; + }()), + + + createFieldAccessExpression: (function() { + var re = /[\[\.]/; + + return function(field, fieldVarName, dataName) { + var mapping = field.mapping, + hasMap = mapping || mapping === 0, + map = hasMap ? mapping : field.name, + result, + operatorIndex; + + + if (mapping === false) { + return; + } + + if (typeof map === 'function') { + result = fieldVarName + '.mapping(' + dataName + ', this)'; + } else if (this.useSimpleAccessors === true || ((operatorIndex = String(map).search(re)) < 0)) { + if (!hasMap || isNaN(map)) { + + map = '"' + map + '"'; + } + result = dataName + "[" + map + "]"; + } else if (operatorIndex === 0) { + + + result = dataName + map; + } else { + + + + + + + var parts = map.split('.'), + len = parts.length, + i = 1, + tempResult = dataName + '.' + parts[0], + buffer = [tempResult]; + + for (; i < len; i++) { + tempResult += '.' + parts[i]; + buffer.push(tempResult); + } + result = buffer.join(' && '); + } + return result; + }; + }()) +}); + + +Ext.define('Ext.data.writer.Writer', { + alias: 'writer.base', + alternateClassName: ['Ext.data.DataWriter', 'Ext.data.Writer'], + + + writeAllFields: true, + + + + + nameProperty: 'name', + + + writeRecordId: true, + + + isWriter: true, + + + constructor: function(config) { + Ext.apply(this, config); + }, + + + write: function(request) { + var operation = request.operation, + records = operation.records || [], + len = records.length, + i = 0, + data = []; + + for (; i < len; i++) { + data.push(this.getRecordData(records[i], operation)); + } + return this.writeRecords(request, data); + }, + + + getRecordData: function(record, operation) { + var isPhantom = record.phantom === true, + writeAll = this.writeAllFields || isPhantom, + fields = record.fields, + fieldItems = fields.items, + data = {}, + clientIdProperty = record.clientIdProperty, + changes, + field, + key, + mappedIdProperty, + f, fLen; + + if (writeAll) { + fLen = fieldItems.length; + + for (f = 0; f < fLen; f++) { + field = fieldItems[f]; + if (field.persist) { + this.writeValue(data, field, record); + } + } + } else { + + changes = record.getChanges(); + for (key in changes) { + if (changes.hasOwnProperty(key)) { + field = fields.get(key); + if (field.persist) { + this.writeValue(data, field, record); + } + } + } + } + if (isPhantom) { + if (clientIdProperty && operation && operation.records.length > 1) { + + + data[clientIdProperty] = record.internalId; + } + } else if (this.writeRecordId) { + + mappedIdProperty = fields.get(record.idProperty)[this.nameProperty] || record.idProperty; + data[mappedIdProperty] = record.getId(); + } + + return data; + }, + + writeValue: function(data, field, record){ + var name = field[this.nameProperty], + dateFormat = this.dateFormat || field.dateWriteFormat || field.dateFormat, + value = record.get(field.name); + + + + if (name == null) { + name = field.name; + } + + if (field.serialize) { + data[name] = field.serialize(value, record); + } else if (field.type === Ext.data.Types.DATE && dateFormat && Ext.isDate(value)) { + data[name] = Ext.Date.format(value, dateFormat); + } else { + data[name] = value; + } + } +}); + + +Ext.define('Ext.data.writer.Json', { + extend: Ext.data.writer.Writer , + alternateClassName: 'Ext.data.JsonWriter', + alias: 'writer.json', + + + root: undefined, + + + encode: false, + + + allowSingle: true, + + + expandData: false, + + + getExpandedData: function(data) { + var dataLength = data.length, + i = 0, + item, + prop, + nameParts, + j, + tempObj, + + toObject = function(name, value) { + var o = {}; + o[name] = value; + return o; + }; + + for (; i < dataLength; i++) { + item = data[i]; + + for (prop in item) { + if (item.hasOwnProperty(prop)) { + + nameParts = prop.split('.'); + j = nameParts.length - 1; + + if (j > 0) { + + + tempObj = item[prop]; + + for (; j > 0; j--) { + + + + tempObj = toObject(nameParts[j], tempObj); + } + + + + + item[nameParts[0]] = item[nameParts[0]] || {}; + + + Ext.Object.merge(item[nameParts[0]], tempObj); + + delete item[prop]; + } + } + } + } + return data; + }, + + + writeRecords: function(request, data) { + var root = this.root; + + if (this.expandData) { + data = this.getExpandedData(data); + } + + if (this.allowSingle && data.length === 1) { + + data = data[0]; + } + + if (this.encode) { + if (root) { + + request.params[root] = Ext.encode(data); + } else { + } + } else { + + request.jsonData = request.jsonData || {}; + if (root) { + request.jsonData[root] = data; + } else { + request.jsonData = data; + } + } + return request; + } +}); + + +Ext.define('Ext.data.proxy.Proxy', { + alias: 'proxy.proxy', + alternateClassName: ['Ext.data.DataProxy', 'Ext.data.Proxy'], + + + + + + + + + + + + + mixins: { + observable: Ext.util.Observable + }, + + + batchOrder: 'create,update,destroy', + + + batchActions: true, + + + defaultReaderType: 'json', + + + defaultWriterType: 'json', + + + + + + + + + isProxy: true, + + + isSynchronous: false, + + + constructor: function(config) { + var me = this; + + config = config || {}; + me.proxyConfig = config; + + me.mixins.observable.constructor.call(me, config); + + if (me.model !== undefined && !(me.model instanceof Ext.data.Model)) { + me.setModel(me.model); + } else { + if (me.reader) { + me.setReader(me.reader); + } + + if (me.writer) { + me.setWriter(me.writer); + } + } + + + }, + + + setModel: function(model, setOnStore) { + var me = this; + + me.model = Ext.ModelManager.getModel(model); + + me.setReader(this.reader); + me.setWriter(this.writer); + + if (setOnStore && me.store) { + me.store.setModel(me.model); + } + }, + + + getModel: function() { + return this.model; + }, + + + setReader: function(reader) { + var me = this, + needsCopy = true, + current = me.reader; + + if (reader === undefined || typeof reader == 'string') { + reader = { + type: reader + }; + needsCopy = false; + } + + if (reader.isReader) { + reader.setModel(me.model); + } else { + if (needsCopy) { + reader = Ext.apply({}, reader); + } + Ext.applyIf(reader, { + proxy: me, + model: me.model, + type : me.defaultReaderType + }); + + reader = Ext.createByAlias('reader.' + reader.type, reader); + } + + if (reader !== current && reader.onMetaChange) { + reader.onMetaChange = Ext.Function.createSequence(reader.onMetaChange, this.onMetaChange, this); + } + + me.reader = reader; + return me.reader; + }, + + + getReader: function() { + return this.reader; + }, + + + onMetaChange: function(meta) { + this.fireEvent('metachange', this, meta); + }, + + + setWriter: function(writer) { + var me = this, + needsCopy = true; + + if (writer === undefined || typeof writer == 'string') { + writer = { + type: writer + }; + needsCopy = false; + } + + if (!writer.isWriter) { + if (needsCopy) { + writer = Ext.apply({}, writer); + } + Ext.applyIf(writer, { + model: me.model, + type : me.defaultWriterType + }); + + writer = Ext.createByAlias('writer.' + writer.type, writer); + } + + me.writer = writer; + + return me.writer; + }, + + + getWriter: function() { + return this.writer; + }, + + + create: Ext.emptyFn, + + + read: Ext.emptyFn, + + + update: Ext.emptyFn, + + + destroy: Ext.emptyFn, + + + batch: function(options, listeners) { + var me = this, + useBatch = me.batchActions, + batch, + records, + actions, aLen, action, a, r, rLen, record; + + if (options.operations === undefined) { + + + options = { + operations: options, + listeners: listeners + }; + } + + if (options.batch) { + if (Ext.isDefined(options.batch.runOperation)) { + batch = Ext.applyIf(options.batch, { + proxy: me, + listeners: {} + }); + } + } else { + options.batch = { + proxy: me, + listeners: options.listeners || {} + }; + } + + if (!batch) { + batch = new Ext.data.Batch(options.batch); + } + + batch.on('complete', Ext.bind(me.onBatchComplete, me, [options], 0)); + + actions = me.batchOrder.split(','); + aLen = actions.length; + + for (a = 0; a < aLen; a++) { + action = actions[a]; + records = options.operations[action]; + + if (records) { + if (useBatch) { + batch.add(new Ext.data.Operation({ + action : action, + records : records + })); + } else { + rLen = records.length; + + for (r = 0; r < rLen; r++) { + record = records[r]; + + batch.add(new Ext.data.Operation({ + action : action, + records : [record] + })); + } + } + } + } + + batch.start(); + return batch; + }, + + + onBatchComplete: function(batchOptions, batch) { + var scope = batchOptions.scope || this; + + if (batch.hasException) { + if (Ext.isFunction(batchOptions.failure)) { + Ext.callback(batchOptions.failure, scope, [batch, batchOptions]); + } + } else if (Ext.isFunction(batchOptions.success)) { + Ext.callback(batchOptions.success, scope, [batch, batchOptions]); + } + + if (Ext.isFunction(batchOptions.callback)) { + Ext.callback(batchOptions.callback, scope, [batch, batchOptions]); + } + }, + + clone: function() { + return new this.self(this.proxyConfig); + } +}); + + +Ext.define('Ext.data.Operation', { + + synchronous: true, + + + action: undefined, + + + filters: undefined, + + + sorters: undefined, + + + groupers: undefined, + + + start: undefined, + + + limit: undefined, + + + batch: undefined, + + + + + callback: undefined, + + + scope: undefined, + + + started: false, + + + running: false, + + + complete: false, + + + success: undefined, + + + exception: false, + + + error: undefined, + + + actionCommitRecordsRe: /^(?:create|update)$/i, + + + actionSkipSyncRe: /^destroy$/i, + + + constructor: function(config) { + Ext.apply(this, config || {}); + }, + + + commitRecords: function(serverRecords) { + var me = this, + commitRecords = me.actionCommitRecordsRe.test(me.action), + mc, index, clientRecords, serverRec, clientRec, i, len, + modifiedFields, recordModifiedFields; + + if (!me.actionSkipSyncRe.test(me.action)) { + clientRecords = me.records; + + if (clientRecords && clientRecords.length) { + + + + + + if (commitRecords) { + recordModifiedFields = []; + } + if (clientRecords.length > 1) { + + + + + if (me.action == 'update' || clientRecords[0].clientIdProperty) { + mc = new Ext.util.MixedCollection(); + mc.addAll(serverRecords); + + for (index = clientRecords.length; index--; ) { + clientRec = clientRecords[index]; + serverRec = mc.findBy(me.matchClientRec, clientRec); + + + modifiedFields = clientRec.copyFrom(serverRec); + + + if (commitRecords) { + recordModifiedFields.push(modifiedFields); + } + } + } else { + for (i = 0, len = clientRecords.length; i < len; ++i) { + clientRec = clientRecords[i]; + serverRec = serverRecords[i]; + if (clientRec && serverRec) { + modifiedFields = me.updateRecord(clientRec, serverRec); + + + if (commitRecords) { + recordModifiedFields.push(modifiedFields); + } + } + } + } + } else { + + modifiedFields = me.updateRecord(clientRecords[0], serverRecords[0]); + + + if (commitRecords) { + recordModifiedFields[0] = modifiedFields; + } + } + + if (commitRecords) { + for (index = clientRecords.length; index--; ) { + + + + + clientRecords[index].commit(false, recordModifiedFields[index]); + } + } + } + } + }, + + updateRecord: function(clientRec, serverRec) { + + if (serverRec && (clientRec.phantom || clientRec.getId() === serverRec.getId())) { + return clientRec.copyFrom(serverRec); + } + + + return []; + }, + + + + + matchClientRec: function(record) { + var clientRec = this, + clientRecordId = clientRec.getId(); + + if(clientRecordId && record.getId() === clientRecordId) { + return true; + } + + + + return record.internalId === clientRec.internalId; + }, + + + setStarted: function() { + this.started = true; + this.running = true; + }, + + + setCompleted: function() { + this.complete = true; + this.running = false; + }, + + + setSuccessful: function() { + this.success = true; + }, + + + setException: function(error) { + this.exception = true; + this.success = false; + this.running = false; + this.error = error; + }, + + + hasException: function() { + return this.exception === true; + }, + + + getError: function() { + return this.error; + }, + + + getRecords: function() { + var resultSet = this.getResultSet(); + return this.records || (resultSet ? resultSet.records : null); + }, + + + getResultSet: function() { + return this.resultSet; + }, + + + isStarted: function() { + return this.started === true; + }, + + + isRunning: function() { + return this.running === true; + }, + + + isComplete: function() { + return this.complete === true; + }, + + + wasSuccessful: function() { + return this.isComplete() && this.success === true; + }, + + + setBatch: function(batch) { + this.batch = batch; + }, + + + allowWrite: function() { + return this.action != 'read'; + } +}); + + +Ext.define('Ext.data.AbstractStore', { + + + + + + + + mixins: { + observable: Ext.util.Observable , + sortable: Ext.util.Sortable + }, + + statics: { + + create: function(store) { + if (!store.isStore) { + if (!store.type) { + store.type = 'store'; + } + store = Ext.createByAlias('store.' + store.type, store); + } + return store; + } + }, + + onClassExtended: function(cls, data, hooks) { + var model = data.model, + onBeforeClassCreated; + + if (typeof model == 'string') { + onBeforeClassCreated = hooks.onBeforeCreated; + + hooks.onBeforeCreated = function() { + var me = this, + args = arguments; + + Ext.require(model, function() { + onBeforeClassCreated.apply(me, args); + }); + }; + } + }, + + + remoteSort : false, + + + remoteFilter: false, + + + + + autoLoad: undefined, + + + autoSync: false, + + + batchUpdateMode: 'operation', + + + filterOnLoad: true, + + + sortOnLoad: true, + + + implicitModel: false, + + + defaultProxyType: 'memory', + + + isDestroyed: false, + + + isStore: true, + + + + + + + + + + + + sortRoot: 'data', + + + constructor: function(config) { + var me = this, + filters; + + + + + + + + + + + + + + + + + + + + + + + + Ext.apply(me, config); + + + + me.removed = []; + + me.mixins.observable.constructor.apply(me, arguments); + + + me.model = Ext.ModelManager.getModel(me.model); + + + Ext.applyIf(me, { + modelDefaults: null + }); + + + if (!me.model && me.fields) { + me.model = Ext.define('Ext.data.Store.ImplicitModel-' + (me.storeId || Ext.id()), { + extend: 'Ext.data.Model', + fields: me.fields, + proxy: me.proxy || me.defaultProxyType + }); + + delete me.fields; + + me.implicitModel = true; + } + + + + me.setProxy(me.proxy || me.model.getProxy()); + + if (!me.disableMetaChangeEvent) { + me.proxy.on('metachange', me.onMetaChange, me); + } + + if (me.id && !me.storeId) { + me.storeId = me.id; + delete me.id; + } + + if (me.storeId) { + Ext.data.StoreManager.register(me); + } + + me.mixins.sortable.initSortable.call(me); + + + filters = me.decodeFilters(me.filters); + me.filters = new Ext.util.MixedCollection(); + me.filters.addAll(filters); + }, + + + setProxy: function(proxy) { + var me = this; + + if (proxy instanceof Ext.data.proxy.Proxy) { + proxy.setModel(me.model); + } else { + if (Ext.isString(proxy)) { + proxy = { + type: proxy + }; + } + Ext.applyIf(proxy, { + model: me.model + }); + + proxy = Ext.createByAlias('proxy.' + proxy.type, proxy); + } + + me.proxy = proxy; + + return me.proxy; + }, + + + getProxy: function() { + return this.proxy; + }, + + + onMetaChange: function(proxy, meta) { + this.fireEvent('metachange', this, meta); + }, + + + create: function(data, options) { + var me = this, + instance = Ext.ModelManager.create(Ext.applyIf(data, me.modelDefaults), me.model.modelName), + operation; + + options = options || {}; + + Ext.applyIf(options, { + action : 'create', + records: [instance] + }); + + operation = new Ext.data.Operation(options); + + me.proxy.create(operation, me.onProxyWrite, me); + + return instance; + }, + + read: function() { + return this.load.apply(this, arguments); + }, + + update: function(options) { + var me = this, + operation; + options = options || {}; + + Ext.applyIf(options, { + action : 'update', + records: me.getUpdatedRecords() + }); + + operation = new Ext.data.Operation(options); + + return me.proxy.update(operation, me.onProxyWrite, me); + }, + + + onProxyWrite: function(operation) { + var me = this, + success = operation.wasSuccessful(), + records = operation.getRecords(); + + switch (operation.action) { + case 'create': + me.onCreateRecords(records, operation, success); + break; + case 'update': + me.onUpdateRecords(records, operation, success); + break; + case 'destroy': + me.onDestroyRecords(records, operation, success); + break; + } + + if (success) { + me.fireEvent('write', me, operation); + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + + Ext.callback(operation.callback, operation.scope || me, [records, operation, success]); + }, + + + onCreateRecords: Ext.emptyFn, + + + onUpdateRecords: Ext.emptyFn, + + + onDestroyRecords: function(records, operation, success) { + if (success) { + this.removed = []; + } + }, + + + + destroy: function(options) { + var me = this, + operation; + + options = options || {}; + + Ext.applyIf(options, { + action : 'destroy', + records: me.getRemovedRecords() + }); + + operation = new Ext.data.Operation(options); + + return me.proxy.destroy(operation, me.onProxyWrite, me); + }, + + + onBatchOperationComplete: function(batch, operation) { + return this.onProxyWrite(operation); + }, + + + onBatchComplete: function(batch, operation) { + var me = this, + operations = batch.operations, + length = operations.length, + i; + + me.suspendEvents(); + + for (i = 0; i < length; i++) { + me.onProxyWrite(operations[i]); + } + + me.resumeEvents(); + + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + }, + + + onBatchException: function(batch, operation) { + + + + + + }, + + + filterNew: function(item) { + + return item.phantom === true && item.isValid(); + }, + + + getNewRecords: function() { + return []; + }, + + + getUpdatedRecords: function() { + return []; + }, + + + getModifiedRecords : function(){ + return [].concat(this.getNewRecords(), this.getUpdatedRecords()); + }, + + + filterUpdated: function(item) { + + return item.dirty === true && item.phantom !== true && item.isValid(); + }, + + + getRemovedRecords: function() { + return this.removed; + }, + + filter: function(filters, value) { + + }, + + + decodeFilters: function(filters) { + if (!Ext.isArray(filters)) { + if (filters === undefined) { + filters = []; + } else { + filters = [filters]; + } + } + + var length = filters.length, + Filter = Ext.util.Filter, + config, i; + + for (i = 0; i < length; i++) { + config = filters[i]; + + if (!(config instanceof Filter)) { + Ext.apply(config, { + root: 'data' + }); + + + if (config.fn) { + config.filterFn = config.fn; + } + + + if (typeof config == 'function') { + config = { + filterFn: config + }; + } + + filters[i] = new Filter(config); + } + } + + return filters; + }, + + clearFilter: function(supressEvent) { + + }, + + isFiltered: function() { + + }, + + filterBy: function(fn, scope) { + + }, + + + sync: function(options) { + var me = this, + operations = {}, + toCreate = me.getNewRecords(), + toUpdate = me.getUpdatedRecords(), + toDestroy = me.getRemovedRecords(), + needsSync = false; + + if (toCreate.length > 0) { + operations.create = toCreate; + needsSync = true; + } + + if (toUpdate.length > 0) { + operations.update = toUpdate; + needsSync = true; + } + + if (toDestroy.length > 0) { + operations.destroy = toDestroy; + needsSync = true; + } + + if (needsSync && me.fireEvent('beforesync', operations) !== false) { + options = options || {}; + + me.proxy.batch(Ext.apply(options, { + operations: operations, + listeners: me.getBatchListeners() + })); + } + + return me; + }, + + + getBatchListeners: function() { + var me = this, + listeners = { + scope: me, + exception: me.onBatchException + }; + + if (me.batchUpdateMode == 'operation') { + listeners.operationcomplete = me.onBatchOperationComplete; + } else { + listeners.complete = me.onBatchComplete; + } + + return listeners; + }, + + + save: function() { + return this.sync.apply(this, arguments); + }, + + + load: function(options) { + var me = this, + operation; + + options = Ext.apply({ + action: 'read', + filters: me.filters.items, + sorters: me.getSorters() + }, options); + me.lastOptions = options; + + operation = new Ext.data.Operation(options); + + if (me.fireEvent('beforeload', me, operation) !== false) { + me.loading = true; + me.proxy.read(operation, me.onProxyLoad, me); + } + + return me; + }, + + + reload: function(options) { + return this.load(Ext.apply(this.lastOptions, options)); + }, + + + afterEdit : function(record, modifiedFieldNames) { + var me = this, + i, shouldSync; + + if (me.autoSync && !me.autoSyncSuspended) { + for (i = modifiedFieldNames.length; i--;) { + + if (record.fields.get(modifiedFieldNames[i]).persist) { + shouldSync = true; + break; + } + } + if (shouldSync) { + me.sync(); + } + } + me.onUpdate(record, Ext.data.Model.EDIT, modifiedFieldNames); + me.fireEvent('update', me, record, Ext.data.Model.EDIT, modifiedFieldNames); + }, + + + afterReject : function(record) { + + + + + + this.onUpdate(record, Ext.data.Model.REJECT, null); + this.fireEvent('update', this, record, Ext.data.Model.REJECT, null); + }, + + + afterCommit : function(record, modifiedFieldNames) { + if (!modifiedFieldNames) { + modifiedFieldNames = null; + } + this.onUpdate(record, Ext.data.Model.COMMIT, modifiedFieldNames); + this.fireEvent('update', this, record, Ext.data.Model.COMMIT, modifiedFieldNames); + }, + + onUpdate: Ext.emptyFn, + + onIdChanged: function(model, oldId, newId, oldInternalId){ + this.fireEvent('idchanged', this, model, oldId, newId, oldInternalId); + }, + + + destroyStore: function() { + var implicitModelName, + me = this; + + if (!me.isDestroyed) { + me.clearListeners(); + if (me.storeId) { + Ext.data.StoreManager.unregister(me); + } + me.clearData(); + me.data = me.tree = me.sorters = me.filters = me.groupers = null; + if (me.reader) { + me.reader.destroyReader(); + } + me.proxy = me.reader = me.writer = null; + me.isDestroyed = true; + + if (me.implicitModel) { + implicitModelName = Ext.getClassName(me.model); + Ext.undefine(implicitModelName); + Ext.ModelManager.unregisterType(implicitModelName); + } else { + me.model = null; + } + } + }, + + + getState: function() { + var me = this, + hasState, + result, + hasGroupers = !!me.groupers, + groupers = [], + sorters = [], + filters = []; + + if (hasGroupers) { + me.groupers.each(function(g) { + groupers[groupers.length] = g.serialize(); + hasState = true; + }); + } + + if (me.sorters) { + + me.sorters.each(function(s) { + + if (hasGroupers && !me.groupers.contains(s)) { + sorters[sorters.length] = s.serialize(); + hasState = true; + } + }); + } + + + + if (me.filters && me.statefulFilters) { + me.filters.each(function(f) { + filters[filters.length] = f.serialize(); + hasState = true; + }); + } + + + if (hasState) { + result = {}; + if (groupers.length) { + result.groupers = groupers; + } + if (sorters.length) { + result.sorters = sorters; + } + if (filters.length) { + result.filters = filters; + } + return result; + } + }, + + + applyState: function(state) { + var me = this, + hasSorters = !!me.sorters, + hasGroupers = !!me.groupers, + hasFilters = !!me.filters, + locallySorted; + + if (hasGroupers && state.groupers) { + me.groupers.clear(); + me.groupers.addAll(me.decodeGroupers(state.groupers)); + } + + if (hasSorters && state.sorters) { + me.sorters.clear(); + me.sorters.addAll(me.decodeSorters(state.sorters)); + } + + if (hasFilters && state.filters) { + me.filters.clear(); + me.filters.addAll(me.decodeFilters(state.filters)); + } + + if (hasSorters && hasGroupers) { + + me.sorters.insert(0, me.groupers.getRange()); + } + + + if (me.autoLoad && (me.remoteSort || me.remoteGroup || me.remoteFilter)) { + if (me.autoLoad === true) { + me.reload(); + } else { + me.reload(me.autoLoad); + } + } + + + if (hasFilters && me.filters.length && !me.remoteFilter) { + me.filter(); + locallySorted = me.sortOnFilter; + } + + + if (hasSorters && me.sorters.length && !me.remoteSort && !locallySorted) { + me.sort(); + } + }, + + + doSort: function(sorterFn) { + var me = this; + if (me.remoteSort) { + + me.load(); + } else { + me.data.sortBy(sorterFn); + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + me.fireEvent('sort', me, me.sorters.getRange()); + }, + + + clearData: Ext.emptyFn, + + + getCount: Ext.emptyFn, + + + getById: Ext.emptyFn, + + + removeAll: Ext.emptyFn, + + + + + isLoading: function() { + return !!this.loading; + }, + + + suspendAutoSync: function() { + this.autoSyncSuspended = true; + }, + + + resumeAutoSync: function() { + this.autoSyncSuspended = false; + } + +}); + + + +Ext.define('Ext.app.domain.Store', { + extend: Ext.app.EventDomain , + singleton: true, + + + + + + type: 'store', + idProperty: 'storeId', + + constructor: function() { + var me = this; + + me.callParent(); + me.monitor(Ext.data.AbstractStore); + } +}); + + +Ext.define('Ext.app.Controller', { + + + + + + + + + + + + + + + mixins: { + observable: Ext.util.Observable + }, + + + + statics: { + strings: { + model: { + getter: 'getModel', + upper: 'Model' + }, + + view: { + getter: 'getView', + upper: 'View' + }, + + controller: { + getter: 'getController', + upper: 'Controller' + }, + + store: { + getter: 'getStore', + upper: 'Store' + } + }, + + controllerRegex: /^(.*)\.controller\./, + + createGetter: function(baseGetter, name) { + return function () { + return this[baseGetter](name); + }; + }, + + getGetterName: function(name, kindUpper) { + var fn = 'get', + parts = name.split('.'), + numParts = parts.length, + index; + + + for (index = 0; index < numParts; index++) { + fn += Ext.String.capitalize(parts[index]); + } + + fn += kindUpper; + + return fn; + }, + + + processDependencies: function(cls, requires, namespace, kind, names) { + if (!names || !names.length) { + return; + } + + var me = this, + strings = me.strings[kind], + o, absoluteName, shortName, name, j, subLn, getterName, getter; + + if (!Ext.isArray(names)) { + names = [names]; + } + + for (j = 0, subLn = names.length; j < subLn; j++) { + name = names[j]; + o = me.getFullName(name, kind, namespace); + absoluteName = o.absoluteName; + shortName = o.shortName; + + requires.push(absoluteName); + getterName = me.getGetterName(shortName, strings.upper); + cls[getterName] = getter = me.createGetter(strings.getter, name); + + + if (kind !== 'controller') { + + + + + getter['Ext.app.getter'] = true; + } + } + }, + + getFullName: function(name, kind, namespace) { + var shortName = name, + sep, absoluteName; + + if ((sep = name.indexOf('@')) > 0) { + + + + + shortName = name.substring(0, sep); + absoluteName = name.substring(sep + 1) + '.' + shortName; + } + + + + + + + + + + + + + + + + else if (name.indexOf('.') > 0 && (Ext.ClassManager.isCreated(name) || + Ext.Loader.isAClassNameWithAKnownPrefix(name))) { + absoluteName = name; + } + else { + + if (namespace) { + absoluteName = namespace + '.' + kind + '.' + name; + shortName = name; + } + else { + absoluteName = name; + } + } + + return { + absoluteName: absoluteName, + shortName: shortName + }; + } + }, + + + application: null, + + + + + + + + + + onClassExtended: function(cls, data, hooks) { + var onBeforeClassCreated = hooks.onBeforeCreated; + + hooks.onBeforeCreated = function(cls, data) { + var Controller = Ext.app.Controller, + ctrlRegex = Controller.controllerRegex, + requires = [], + className, namespace, requires, proto, match; + + proto = cls.prototype; + + + className = Ext.getClassName(cls); + namespace = data.$namespace || + Ext.app.getNamespace(className) || + ((match = ctrlRegex.exec(className)) && match[1]); + + if (namespace) { + proto.$namespace = namespace; + } + + Controller.processDependencies(proto, requires, namespace, 'model', data.models); + Controller.processDependencies(proto, requires, namespace, 'view', data.views); + Controller.processDependencies(proto, requires, namespace, 'store', data.stores); + Controller.processDependencies(proto, requires, namespace, 'controller', data.controllers); + + Ext.require(requires, Ext.Function.pass(onBeforeClassCreated, arguments, this)); + }; + }, + + + constructor: function (config) { + var me = this; + + me.mixins.observable.constructor.call(me, config); + + if (me.refs) { + me.ref(me.refs); + } + + me.eventbus = Ext.app.EventBus; + + me.initAutoGetters(); + }, + + initAutoGetters: function() { + var proto = this.self.prototype, + prop, fn; + + for (prop in proto) { + fn = proto[prop]; + + + + if (fn && fn['Ext.app.getter']) { + fn.call(this); + } + } + }, + + doInit: function(app) { + var me = this; + + if (!me._initialized) { + me.init(app); + me._initialized = true; + } + }, + + finishInit: function(app) { + var me = this, + controllers = me.controllers, + controller, i, l; + + if (me._initialized && controllers && controllers.length) { + for (i = 0, l = controllers.length; i < l; i++) { + controller = me.getController(controllers[i]); + controller.finishInit(app); + } + } + }, + + + init: Ext.emptyFn, + + + onLaunch: Ext.emptyFn, + + ref: function(refs) { + var me = this, + i = 0, + length = refs.length, + info, ref, fn; + + refs = Ext.Array.from(refs); + + me.references = me.references || []; + + for (; i < length; i++) { + info = refs[i]; + ref = info.ref; + fn = 'get' + Ext.String.capitalize(ref); + + if (!me[fn]) { + me[fn] = Ext.Function.pass(me.getRef, [ref, info], me); + } + me.references.push(ref.toLowerCase()); + } + }, + + + addRef: function(refs) { + this.ref(refs); + }, + + getRef: function(ref, info, config) { + var me = this, + refCache = me.refCache || (me.refCache = {}), + cached = refCache[ref]; + + info = info || {}; + config = config || {}; + + Ext.apply(info, config); + + if (info.forceCreate) { + return Ext.ComponentManager.create(info, 'component'); + } + + if (!cached) { + if (info.selector) { + refCache[ref] = cached = Ext.ComponentQuery.query(info.selector)[0]; + } + + if (!cached && info.autoCreate) { + refCache[ref] = cached = Ext.ComponentManager.create(info, 'component'); + } + + if (cached) { + cached.on('beforedestroy', function() { + refCache[ref] = null; + }); + } + } + + return cached; + }, + + + hasRef: function(ref) { + var references = this.references; + return references && Ext.Array.indexOf(references, ref.toLowerCase()) !== -1; + }, + + + control: function(selectors, listeners, controller) { + var me = this, + ctrl = controller, + obj; + + if (Ext.isString(selectors)) { + obj = {}; + obj[selectors] = listeners; + } + else { + obj = selectors; + ctrl = listeners; + } + + me.eventbus.control(obj, ctrl || me); + }, + + + listen: function (to, controller) { + this.eventbus.listen(to, controller || this); + }, + + + getController: function(id) { + var me = this, + app = me.application; + + if (id === me.id) { + return me; + } + + return app && app.getController(id); + }, + + + getStore: function(name) { + var storeId, store; + + storeId = (name.indexOf('@') == -1) ? name : name.split('@')[0]; + store = Ext.StoreManager.get(storeId); + + if (!store) { + name = Ext.app.Controller.getFullName(name, 'store', this.$namespace); + + if (name) { + store = Ext.create(name.absoluteName, { + storeId: storeId + }); + } + } + + return store; + }, + + + getModel: function(model) { + var name = Ext.app.Controller.getFullName(model, 'model', this.$namespace); + + return name && Ext.ModelManager.getModel(name.absoluteName); + }, + + + getView: function(view) { + var name = Ext.app.Controller.getFullName(view, 'view', this.$namespace); + + return name && Ext.ClassManager.get(name.absoluteName); + }, + + + getApplication: function() { + return this.application; + } +}); + + +Ext.define('Ext.container.DockingContainer', { + + + + + + + + isDockingContainer: true, + + + + + + + defaultDockWeights: { + top: { render: 1, visual: 1 }, + left: { render: 3, visual: 5 }, + right: { render: 5, visual: 7 }, + bottom: { render: 7, visual: 3 } + }, + + + + + + dockOrder: { + top: -1, + left: -1, + right: 1, + bottom: 1 + }, + + + horizontalDocks: 0, + + + addDocked : function(items, pos) { + var me = this, + i = 0, + item, length; + + items = me.prepareItems(items); + length = items.length; + + for (; i < length; i++) { + item = items[i]; + item.dock = item.dock || 'top'; + if (item.dock === 'left' || item.dock === 'right') { + me.horizontalDocks++; + } + + if (pos !== undefined) { + i += pos; + me.dockedItems.insert(i, item); + } else { + me.dockedItems.add(item); + } + + item.onAdded(me, i); + if (me.hasListeners.dockedadd) { + me.fireEvent('dockedadd', me, item, i); + } + if (me.onDockedAdd !== Ext.emptyFn) { + me.onDockedAdd(item); + } + } + + if (me.rendered && !me.suspendLayout) { + me.updateLayout(); + } + return items; + }, + + destroyDockedItems: function(){ + var dockedItems = this.dockedItems, + c; + + if (dockedItems) { + while ((c = dockedItems.first())) { + this.removeDocked(c, true); + } + } + }, + + doRenderDockedItems: function (out, renderData, after) { + + + + + + + + + var me = renderData.$comp, + layout = me.componentLayout, + items, + tree; + + if (layout.getDockedItems && !renderData.$skipDockedItems) { + items = layout.getDockedItems('render', !after); + tree = items && layout.getItemsRenderTree(items); + + if (tree) { + Ext.DomHelper.generateMarkup(tree, out); + } + } + }, + + + getDockedComponent: function(comp) { + if (Ext.isObject(comp)) { + comp = comp.getItemId(); + } + return this.dockedItems.get(comp); + }, + + + getDockedItems : function(selector, beforeBody) { + var dockedItems = this.getComponentLayout().getDockedItems('render', beforeBody); + + if (selector && dockedItems.length) { + dockedItems = Ext.ComponentQuery.query(selector, dockedItems); + } + + return dockedItems; + }, + + getDockingRefItems: function(deep, containerItems) { + + var selector = deep && '*,* *', + + dockedItems = this.getDockedItems(selector, true), + items; + + + dockedItems.push.apply(dockedItems, containerItems); + + + items = this.getDockedItems(selector, false); + dockedItems.push.apply(dockedItems, items); + + return dockedItems; + }, + + initDockingItems: function() { + var me = this, + items = me.dockedItems; + + me.dockedItems = new Ext.util.AbstractMixedCollection(false, me.getComponentId); + if (items) { + me.addDocked(items); + } + }, + + + insertDocked : function(pos, items) { + this.addDocked(items, pos); + }, + + + + onDockedAdd : Ext.emptyFn, + + onDockedRemove : Ext.emptyFn, + + + removeDocked : function(item, autoDestroy) { + var me = this, + layout, + hasLayout; + + autoDestroy = autoDestroy === true || (autoDestroy !== false && me.autoDestroy); + if (!me.dockedItems.contains(item)) { + return item; + } + if (item.dock === 'left' || item.dock === 'right') { + me.horizontalDocks--; + } + + layout = me.componentLayout; + hasLayout = layout && me.rendered; + + if (hasLayout) { + layout.onRemove(item); + } + + me.dockedItems.remove(item); + + item.onRemoved(item.destroying || autoDestroy); + me.onDockedRemove(item); + + if (autoDestroy) { + item.destroy(); + } else if (hasLayout) { + + layout.afterRemove(item); + } + + if (me.hasListeners.dockedremove) { + me.fireEvent('dockedremove', me, item); + } + + if (!me.destroying && !me.suspendLayout) { + me.updateLayout(); + } + + return item; + }, + + setupDockingRenderTpl: function (renderTpl) { + renderTpl.renderDockedItems = this.doRenderDockedItems; + } +}); + + +Ext.define('Ext.toolbar.Fill', { + extend: Ext.Component , + alias: 'widget.tbfill', + alternateClassName: 'Ext.Toolbar.Fill', + + isFill : true, + flex: 1 +}); + + +Ext.define('Ext.layout.container.boxOverflow.None', { + alternateClassName: 'Ext.layout.boxOverflow.None', + + constructor: function(layout, config) { + this.layout = layout; + Ext.apply(this, config); + }, + + handleOverflow: Ext.emptyFn, + + clearOverflow: Ext.emptyFn, + + beginLayout: Ext.emptyFn, + beginLayoutCycle: Ext.emptyFn, + + calculate: function(ownerContext) { + var me = this, + plan = ownerContext.state.boxPlan, + overflow; + + if (plan && plan.tooNarrow) { + overflow = me.handleOverflow(ownerContext); + + if (overflow) { + if (overflow.reservedSpace) { + me.layout.publishInnerCtSize(ownerContext, overflow.reservedSpace); + } + + + + + + + + + + + + } + } else { + me.clearOverflow(); + } + }, + + completeLayout: Ext.emptyFn, + + finishedLayout: function (ownerContext) { + var me = this, + owner = me.layout.owner, + hiddens, + hiddenCount; + + + if (owner.hasListeners.overflowchange) { + hiddens = owner.query('>[hidden]'); + hiddenCount = hiddens.length; + if (hiddenCount !== me.lastHiddenCount) { + owner.fireEvent('overflowchange', me.lastHiddenCount, hiddenCount, hiddens); + me.lastHiddenCount = hiddenCount; + } + } + }, + + onRemove: Ext.emptyFn, + + + getItem: function(item) { + return this.layout.owner.getComponent(item); + }, + + getOwnerType: function(owner){ + var type; + if (owner.isToolbar) { + type = 'toolbar'; + } else if (owner.isTabBar) { + type = 'tabbar'; + } else if (owner.isMenu) { + type = 'menu'; + } else { + type = owner.getXType(); + } + + return type; + }, + + getPrefixConfig: Ext.emptyFn, + getSuffixConfig: Ext.emptyFn, + getOverflowCls: function() { + return ''; + } +}); + + +Ext.define('Ext.toolbar.Item', { + extend: Ext.Component , + alias: 'widget.tbitem', + alternateClassName: 'Ext.Toolbar.Item', + enable:Ext.emptyFn, + disable:Ext.emptyFn, + focus:Ext.emptyFn + +}); + + +Ext.define('Ext.toolbar.Separator', { + extend: Ext.toolbar.Item , + alias: 'widget.tbseparator', + alternateClassName: 'Ext.Toolbar.Separator', + baseCls: Ext.baseCSSPrefix + 'toolbar-separator', + focusable: false +}); + + +Ext.define('Ext.button.Manager', { + singleton: true, + + alternateClassName: 'Ext.ButtonToggleManager', + + groups: {}, + + pressedButton: null, + + buttonSelector: '.' + Ext.baseCSSPrefix + 'btn', + + init: function() { + var me = this; + if (!me.initialized) { + Ext.getDoc().on({ + keydown: me.onDocumentKeyDown, + mouseup: me.onDocumentMouseUp, + scope: me + }); + me.initialized = true; + } + }, + + + + onDocumentKeyDown: function(e) { + var k = e.getKey(), + btn; + + + if (k === e.SPACE || k === e.ENTER) { + + + btn = e.getTarget(this.buttonSelector); + + + if (btn) { + Ext.getCmp(btn.id).onClick(e); + } + } + }, + + + + + onButtonMousedown: function(button, e) { + var pressed = this.pressedButton; + if (pressed) { + pressed.onMouseUp(e); + } + this.pressedButton = button; + }, + + onDocumentMouseUp: function(e) { + var pressed = this.pressedButton; + + if (pressed) { + pressed.onMouseUp(e); + this.pressedButton = null; + } + }, + + toggleGroup: function(btn, state) { + if (state) { + var g = this.groups[btn.toggleGroup], + length = g.length, + i; + + for (i = 0; i < length; i++) { + if (g[i] !== btn) { + g[i].toggle(false); + } + } + } + }, + + register: function(btn) { + var me = this, + groups = this.groups, + group = groups[btn.toggleGroup]; + + me.init(); + if (!btn.toggleGroup) { + return; + } + + if (!group) { + group = groups[btn.toggleGroup] = []; + } + group.push(btn); + btn.on('toggle', me.toggleGroup, me); + }, + + unregister: function(btn) { + if (!btn.toggleGroup) { + return; + } + var me = this, + group = me.groups[btn.toggleGroup]; + + if (group) { + Ext.Array.remove(group, btn); + btn.un('toggle', me.toggleGroup, me); + } + }, + + + + + getPressed: function(group) { + var g = this.groups[group], + i = 0, + len; + + if (g) { + for (len = g.length; i < len; i++) { + if (g[i].pressed === true) { + return g[i]; + } + } + } + return null; + } +}); + + +Ext.define('Ext.menu.Manager', { + singleton: true, + + + + + alternateClassName: 'Ext.menu.MenuMgr', + + + + menuSelector: '.' + Ext.baseCSSPrefix + 'menu', + + menus: {}, + groups: {}, + attached: false, + lastShow: new Date(), + + init: function() { + var me = this; + + me.active = new Ext.util.MixedCollection(); + Ext.getDoc().addKeyListener(27, function() { + if (me.active.length > 0) { + me.hideAll(); + } + }, me); + }, + + + hideAll: function() { + var active = this.active, + menus, m, mLen; + + if (active && active.length > 0) { + menus = Ext.Array.slice(active.items); + mLen = menus.length; + + for (m = 0; m < mLen; m++) { + menus[m].hide(); + } + + return true; + } + return false; + }, + + onHide: function(m) { + var me = this, + active = me.active; + active.remove(m); + if (active.length < 1) { + Ext.getDoc().un('mousedown', me.onMouseDown, me); + me.attached = false; + } + }, + + onShow: function(m) { + var me = this, + active = me.active, + attached = me.attached; + + me.lastShow = new Date(); + active.add(m); + if (!attached) { + Ext.getDoc().on('mousedown', me.onMouseDown, me, { + + + buffer: Ext.isIE9m ? 10 : undefined + }); + me.attached = true; + } + m.toFront(); + }, + + onBeforeHide: function(m) { + if (m.activeChild) { + m.activeChild.hide(); + } + if (m.autoHideTimer) { + clearTimeout(m.autoHideTimer); + delete m.autoHideTimer; + } + }, + + onBeforeShow: function(m) { + var active = this.active, + parentMenu = m.parentMenu; + + active.remove(m); + if (!parentMenu && !m.allowOtherMenus) { + this.hideAll(); + } + else if (parentMenu && parentMenu.activeChild && m != parentMenu.activeChild) { + parentMenu.activeChild.hide(); + } + }, + + + onMouseDown: function(e) { + var me = this, + active = me.active, + lastShow = me.lastShow, + doHide = true; + + if (Ext.Date.getElapsed(lastShow) > 50 && active.length > 0 && !e.getTarget(me.menuSelector)) { + + + + if (Ext.isIE9m && !Ext.getDoc().contains(e.target)) { + doHide = false; + } + if (doHide) { + me.hideAll(); + } + } + }, + + + register: function(menu) { + var me = this; + + if (!me.active) { + me.init(); + } + + if (menu.floating) { + me.menus[menu.id] = menu; + menu.on({ + beforehide: me.onBeforeHide, + hide: me.onHide, + beforeshow: me.onBeforeShow, + show: me.onShow, + scope: me + }); + } + }, + + + get: function(menu) { + var menus = this.menus; + + if (typeof menu == 'string') { + if (!menus) { + return null; + } + return menus[menu]; + } else if (menu.isMenu) { + return menu; + } else if (Ext.isArray(menu)) { + return new Ext.menu.Menu({items:menu}); + } else { + return Ext.ComponentManager.create(menu, 'menu'); + } + }, + + + unregister: function(menu) { + var me = this, + menus = me.menus, + active = me.active; + + delete menus[menu.id]; + active.remove(menu); + menu.un({ + beforehide: me.onBeforeHide, + hide: me.onHide, + beforeshow: me.onBeforeShow, + show: me.onShow, + scope: me + }); + }, + + + registerCheckable: function(menuItem) { + var groups = this.groups, + groupId = menuItem.group; + + if (groupId) { + if (!groups[groupId]) { + groups[groupId] = []; + } + + groups[groupId].push(menuItem); + } + }, + + + unregisterCheckable: function(menuItem) { + var groups = this.groups, + groupId = menuItem.group; + + if (groupId) { + Ext.Array.remove(groups[groupId], menuItem); + } + }, + + onCheckChange: function(menuItem, state) { + var groups = this.groups, + groupId = menuItem.group, + i = 0, + group, ln, curr; + + if (groupId && state) { + group = groups[groupId]; + ln = group.length; + for (; i < ln; i++) { + curr = group[i]; + if (curr != menuItem) { + curr.setChecked(false); + } + } + } + } +}); + + +Ext.define('Ext.util.ClickRepeater', { + extend: Ext.util.Observable , + + + constructor : function(el, config){ + var me = this; + + me.el = Ext.get(el); + me.el.unselectable(); + + Ext.apply(me, config); + + me.callParent(); + + me.addEvents( + + "mousedown", + + "click", + + "mouseup" + ); + + if(!me.disabled){ + me.disabled = true; + me.enable(); + } + + + if(me.handler){ + me.on("click", me.handler, me.scope || me); + } + }, + + + + + + + + + interval : 20, + + + delay: 250, + + + preventDefault : true, + + + stopDefault : false, + + timer : 0, + + + enable: function(){ + if(this.disabled){ + this.el.on('mousedown', this.handleMouseDown, this); + + + if (Ext.isIE && !(Ext.isIE10p || (Ext.isStrict && Ext.isIE9))){ + this.el.on('dblclick', this.handleDblClick, this); + } + if(this.preventDefault || this.stopDefault){ + this.el.on('click', this.eventOptions, this); + } + } + this.disabled = false; + }, + + + disable: function( force){ + if(force || !this.disabled){ + clearTimeout(this.timer); + if(this.pressedCls){ + this.el.removeCls(this.pressedCls); + } + Ext.getDoc().un('mouseup', this.handleMouseUp, this); + this.el.removeAllListeners(); + } + this.disabled = true; + }, + + + setDisabled: function(disabled){ + this[disabled ? 'disable' : 'enable'](); + }, + + eventOptions: function(e){ + if(this.preventDefault){ + e.preventDefault(); + } + if(this.stopDefault){ + e.stopEvent(); + } + }, + + + destroy : function() { + this.disable(true); + Ext.destroy(this.el); + this.clearListeners(); + }, + + handleDblClick : function(e){ + clearTimeout(this.timer); + this.el.blur(); + + this.fireEvent("mousedown", this, e); + this.fireEvent("click", this, e); + }, + + + handleMouseDown : function(e){ + clearTimeout(this.timer); + this.el.blur(); + if(this.pressedCls){ + this.el.addCls(this.pressedCls); + } + this.mousedownTime = new Date(); + + Ext.getDoc().on("mouseup", this.handleMouseUp, this); + this.el.on("mouseout", this.handleMouseOut, this); + + this.fireEvent("mousedown", this, e); + this.fireEvent("click", this, e); + + + if (this.accelerate) { + this.delay = 400; + } + + + + e = new Ext.EventObjectImpl(e); + + this.timer = Ext.defer(this.click, this.delay || this.interval, this, [e]); + }, + + + click : function(e){ + this.fireEvent("click", this, e); + this.timer = Ext.defer(this.click, this.accelerate ? + this.easeOutExpo(Ext.Date.getElapsed(this.mousedownTime), + 400, + -390, + 12000) : + this.interval, this, [e]); + }, + + easeOutExpo : function (t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + + + handleMouseOut : function(){ + clearTimeout(this.timer); + if(this.pressedCls){ + this.el.removeCls(this.pressedCls); + } + this.el.on("mouseover", this.handleMouseReturn, this); + }, + + + handleMouseReturn : function(){ + this.el.un("mouseover", this.handleMouseReturn, this); + if(this.pressedCls){ + this.el.addCls(this.pressedCls); + } + this.click(); + }, + + + handleMouseUp : function(e){ + clearTimeout(this.timer); + this.el.un("mouseover", this.handleMouseReturn, this); + this.el.un("mouseout", this.handleMouseOut, this); + Ext.getDoc().un("mouseup", this.handleMouseUp, this); + if(this.pressedCls){ + this.el.removeCls(this.pressedCls); + } + this.fireEvent("mouseup", this, e); + } +}); + + +Ext.define('Ext.layout.component.Button', { + + + + alias: ['layout.button'], + + extend: Ext.layout.component.Auto , + + + + type: 'button', + + htmlRE: /<.*>/, + + beginLayout: function(ownerContext) { + var me = this, + owner = me.owner, + text = owner.text; + + me.callParent(arguments); + ownerContext.btnWrapContext = ownerContext.getEl('btnWrap'); + ownerContext.btnElContext = ownerContext.getEl('btnEl'); + ownerContext.btnInnerElContext = ownerContext.getEl('btnInnerEl'); + ownerContext.btnIconElContext = ownerContext.getEl('btnIconEl'); + + if (text && me.htmlRE.test(text)) { + ownerContext.isHtmlText = true; + + + + + owner.btnInnerEl.setStyle('line-height', 'normal'); + owner.btnInnerEl.setStyle('padding-top', ''); + } + }, + + beginLayoutCycle: function(ownerContext) { + var owner = this.owner, + lastWidthModel = this.lastWidthModel; + + this.callParent(arguments); + + if (lastWidthModel && !this.lastWidthModel.shrinkWrap && + ownerContext.widthModel.shrinkWrap) { + + owner.btnWrap.setStyle('height', ''); + owner.btnEl.setStyle('height', ''); + owner.btnInnerEl.setStyle('line-height', ''); + } + }, + + calculate: function(ownerContext) { + var me = this, + owner = me.owner, + btnElContext = ownerContext.btnElContext, + btnInnerElContext = ownerContext.btnInnerElContext, + btnWrapContext = ownerContext.btnWrapContext, + mmax = Math.max, + ownerHeight, contentHeight, btnElHeight, innerElHeight; + + me.callParent(arguments); + + if (ownerContext.heightModel.shrinkWrap) { + + + + + + + + btnElHeight = owner.btnEl.getHeight(); + if (ownerContext.isHtmlText) { + me.centerInnerEl( + ownerContext, + btnElHeight + ); + me.ieCenterIcon(ownerContext, btnElHeight); + } + } else { + + + ownerHeight = ownerContext.getProp('height'); + + + if (ownerHeight) { + + + contentHeight = ownerHeight - ownerContext.getFrameInfo().height - ownerContext.getPaddingInfo().height; + + + + + btnElHeight = contentHeight; + if ((owner.menu || owner.split) && owner.arrowAlign === 'bottom') { + + + btnElHeight -= btnWrapContext.getPaddingInfo().bottom; + } + + + + + + innerElHeight = btnElHeight; + if ((owner.icon || owner.iconCls || owner.glyph) && + (owner.iconAlign === 'top' || owner.iconAlign === 'bottom')) { + innerElHeight -= btnInnerElContext.getPaddingInfo().height; + } + + btnWrapContext.setProp('height', mmax(0, contentHeight)); + btnElContext.setProp('height', mmax(0, btnElHeight)); + + if (ownerContext.isHtmlText) { + + + me.centerInnerEl(ownerContext, btnElHeight); + } else { + + + + btnInnerElContext.setProp('line-height', mmax(0, innerElHeight) + 'px'); + } + me.ieCenterIcon(ownerContext, btnElHeight); + } else if (ownerHeight !== 0) { + + me.done = false; + } + } + }, + + centerInnerEl: function(ownerContext, btnElHeight) { + var me = this, + btnInnerElContext = ownerContext.btnInnerElContext, + innerElHeight = me.owner.btnInnerEl.getHeight(); + + if (ownerContext.heightModel.shrinkWrap && (btnElHeight < innerElHeight)) { + + + + ownerContext.btnElContext.setHeight(innerElHeight); + } else if (btnElHeight > innerElHeight) { + + + + btnInnerElContext.setProp( + 'padding-top', + Math.round((btnElHeight - innerElHeight) / 2) + + + + + btnInnerElContext.getPaddingInfo().top + ); + } + }, + + ieCenterIcon: function(ownerContext, btnElHeight) { + var iconAlign = this.owner.iconAlign; + + if ((Ext.isIEQuirks || Ext.isIE6) && + (iconAlign === 'left' || iconAlign === 'right')) { + + + + + + + ownerContext.btnIconElContext.setHeight(btnElHeight); + } + }, + + publishInnerWidth: function(ownerContext, width) { + if (this.owner.getFrameInfo().table) { + + + + ownerContext.btnInnerElContext.setWidth( + width - + + ownerContext.getFrameInfo().width - ownerContext.getPaddingInfo().width - + + + ownerContext.btnWrapContext.getPaddingInfo().width + ); + } + } + +}); + + +Ext.define('Ext.util.TextMetrics', { + statics: { + shared: null, + + measure: function(el, text, fixedWidth){ + var me = this, + shared = me.shared; + + if(!shared){ + shared = me.shared = new me(el, fixedWidth); + } + shared.bind(el); + shared.setFixedWidth(fixedWidth || 'auto'); + return shared.getSize(text); + }, + + + destroy: function(){ + var me = this; + Ext.destroy(me.shared); + me.shared = null; + } + }, + + + constructor: function(bindTo, fixedWidth){ + var me = this, + measure = Ext.getBody().createChild({ + cls: Ext.baseCSSPrefix + 'textmetrics' + }); + + me.measure = measure; + if (bindTo) { + me.bind(bindTo); + } + + measure.position('absolute'); + measure.setLocalXY(-1000, -1000); + measure.hide(); + + if (fixedWidth) { + measure.setWidth(fixedWidth); + } + }, + + + getSize: function(text){ + var measure = this.measure, + size; + + measure.update(text); + size = measure.getSize(); + measure.update(''); + return size; + }, + + + bind: function(el){ + var me = this; + + me.el = Ext.get(el); + me.measure.setStyle( + me.el.getStyles('font-size','font-style', 'font-weight', 'font-family','line-height', 'text-transform', 'letter-spacing') + ); + }, + + + setFixedWidth : function(width){ + this.measure.setWidth(width); + }, + + + getWidth : function(text){ + this.measure.dom.style.width = 'auto'; + return this.getSize(text).width; + }, + + + getHeight : function(text){ + return this.getSize(text).height; + }, + + + destroy: function(){ + var me = this; + me.measure.remove(); + delete me.el; + delete me.measure; + } +}, function(){ + Ext.Element.addMethods({ + + getTextWidth : function(text, min, max){ + return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width, min || 0, max || 1000000); + } + }); +}); + + +Ext.define('Ext.button.Button', { + + + alias: 'widget.button', + extend: Ext.Component , + + + + + + + + + + + mixins: { + queryable: Ext.Queryable + }, + + alternateClassName: 'Ext.Button', + + + + isButton: true, + componentLayout: 'button', + + + hidden: false, + + + disabled: false, + + + pressed: false, + + + + + + + + + + + + + + + + + + + + + + + tabIndex: 0, + + + + + enableToggle: false, + + + + + + + menuAlign: 'tl-bl?', + + + showEmptyMenu: false, + + + textAlign: 'center', + + + + + + + + + clickEvent: 'click', + + + preventDefault: true, + + + handleMouseEvents: true, + + + tooltipType: 'qtip', + + + baseCls: Ext.baseCSSPrefix + 'btn', + + + pressedCls: 'pressed', + + + overCls: 'over', + + + focusCls: 'focus', + + + menuActiveCls: 'menu-active', + + + + + hrefTarget: '_blank', + + + + + + + + childEls: [ + 'btnEl', 'btnWrap', 'btnInnerEl', 'btnIconEl' + ], + + + + + renderTpl: [ + ' {splitCls}', + '{childElCls}" unselectable="on">', + '', + '', + '{text}', + '', + 'background-image:url({iconUrl});', + 'font-family:{glyphFontFamily};">', + '&#{glyph}; ', + '', + '', + '', + + '', + '', + '' + ], + + + scale: 'small', + + + allowedScales: ['small', 'medium', 'large'], + + + + + iconAlign: 'left', + + + arrowAlign: 'right', + + + arrowCls: 'arrow', + + + + + + + + maskOnDisable: false, + + shrinkWrap: 3, + + frame: true, + + + _triggerRegion: {}, + + + initComponent: function() { + var me = this; + + + + me.autoEl = { + tag: 'a', + role: 'button', + hidefocus: 'on', + unselectable: 'on' + }; + + + me.addCls('x-unselectable'); + + me.callParent(arguments); + + me.addEvents( + + 'click', + + + 'toggle', + + + 'mouseover', + + + 'mouseout', + + + 'menushow', + + + 'menuhide', + + + 'menutriggerover', + + + 'menutriggerout', + + + 'textchange', + + + 'iconchange', + + + 'glyphchange' + ); + + if (me.menu) { + + me.split = true; + + + me.menu = Ext.menu.Manager.get(me.menu); + + + + me.menu.ownerButton = me; + } + + + if (me.url) { + me.href = me.url; + } + + + if (me.href && !me.hasOwnProperty('preventDefault')) { + me.preventDefault = false; + } + + if (Ext.isString(me.toggleGroup) && me.toggleGroup !== '') { + me.enableToggle = true; + } + + if (me.html && !me.text) { + me.text = me.html; + delete me.html; + } + + me.glyphCls = me.baseCls + '-glyph'; + }, + + + getActionEl: function() { + return this.el; + }, + + + getFocusEl: function() { + return this.el; + }, + + + onDisable: function(){ + this.callParent(arguments); + }, + + + setComponentCls: function() { + var me = this, + cls = me.getComponentCls(); + + if (!Ext.isEmpty(me.oldCls)) { + me.removeClsWithUI(me.oldCls); + me.removeClsWithUI(me.pressedCls); + } + + me.oldCls = cls; + me.addClsWithUI(cls); + }, + + getComponentCls: function() { + var me = this, + cls; + + + if (me.iconCls || me.icon || me.glyph) { + cls = [me.text ? 'icon-text-' + me.iconAlign : 'icon']; + } else if (me.text) { + cls = ['noicon']; + } else { + cls = []; + } + + if (me.pressed) { + cls[cls.length] = me.pressedCls; + } + return cls; + }, + + beforeRender: function () { + var me = this, + autoEl = me.autoEl, + href = me.getHref(), + hrefTarget = me.hrefTarget; + + if (!me.disabled) { + autoEl.tabIndex = me.tabIndex; + } + + if (href) { + autoEl.href = href; + if (hrefTarget) { + autoEl.target = hrefTarget; + } + } + + me.callParent(); + + + me.oldCls = me.getComponentCls(); + me.addClsWithUI(me.oldCls); + + + Ext.applyIf(me.renderData, me.getTemplateArgs()); + }, + + + onRender: function() { + var me = this, + addOnclick, + btn, + btnListeners; + + me.doc = Ext.getDoc(); + me.callParent(arguments); + + + btn = me.el; + + if (me.tooltip) { + me.setTooltip(me.tooltip, true); + } + + + if (me.handleMouseEvents) { + btnListeners = { + scope: me, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + mousedown: me.onMouseDown + }; + if (me.split) { + btnListeners.mousemove = me.onMouseMove; + } + } else { + btnListeners = { + scope: me + }; + } + + + if (me.menu) { + me.mon(me.menu, { + scope: me, + show: me.onMenuShow, + hide: me.onMenuHide + }); + + me.keyMap = new Ext.util.KeyMap({ + target: me.el, + key: Ext.EventObject.DOWN, + handler: me.onDownKey, + scope: me + }); + } + + + if (me.repeat) { + me.mon(new Ext.util.ClickRepeater(btn, Ext.isObject(me.repeat) ? me.repeat: {}), 'click', me.onRepeatClick, me); + } else { + + + if (btnListeners[me.clickEvent]) { + addOnclick = true; + } else { + btnListeners[me.clickEvent] = me.onClick; + } + } + + + me.mon(btn, btnListeners); + + + if (addOnclick) { + me.mon(btn, me.clickEvent, me.onClick, me); + } + + Ext.button.Manager.register(me); + }, + + + getTemplateArgs: function() { + var me = this, + glyph = me.glyph, + glyphFontFamily = Ext._glyphFontFamily, + glyphParts; + + if (typeof glyph === 'string') { + glyphParts = glyph.split('@'); + glyph = glyphParts[0]; + glyphFontFamily = glyphParts[1]; + } + + return { + innerCls : me.getInnerCls(), + splitCls : me.getSplitCls(), + iconUrl : me.icon, + iconCls : me.iconCls, + glyph: glyph, + glyphCls: glyph ? me.glyphCls : '', + glyphFontFamily: glyphFontFamily, + text : me.text || ' ' + }; + }, + + + setHref: function(href) { + this.href = href; + this.el.dom.href = this.getHref(); + }, + + + getHref: function() { + var me = this, + href = me.href; + + return href ? Ext.urlAppend(href, Ext.Object.toQueryString(Ext.apply({}, me.params, me.baseParams))) : false; + }, + + + setParams: function(params) { + this.params = params; + this.el.dom.href = this.getHref(); + }, + + getSplitCls: function() { + var me = this; + return me.split ? (me.baseCls + '-' + me.arrowCls) + ' ' + (me.baseCls + '-' + me.arrowCls + '-' + me.arrowAlign) : ''; + }, + + getInnerCls: function() { + return this.textAlign ? this.baseCls + '-inner-' + this.textAlign : ''; + }, + + + setIcon: function(icon) { + icon = icon || ''; + var me = this, + btnIconEl = me.btnIconEl, + oldIcon = me.icon || ''; + + me.icon = icon; + if (icon != oldIcon) { + if (btnIconEl) { + btnIconEl.setStyle('background-image', icon ? 'url(' + icon + ')': ''); + me.setComponentCls(); + if (me.didIconStateChange(oldIcon, icon)) { + me.updateLayout(); + } + } + me.fireEvent('iconchange', me, oldIcon, icon); + } + return me; + }, + + + setIconCls: function(cls) { + cls = cls || ''; + var me = this, + btnIconEl = me.btnIconEl, + oldCls = me.iconCls || ''; + + me.iconCls = cls; + if (oldCls != cls) { + if (btnIconEl) { + + btnIconEl.removeCls(oldCls); + btnIconEl.addCls(cls); + me.setComponentCls(); + if (me.didIconStateChange(oldCls, cls)) { + me.updateLayout(); + } + } + me.fireEvent('iconchange', me, oldCls, cls); + } + return me; + }, + + + setGlyph: function(glyph) { + glyph = glyph || 0; + var me = this, + btnIconEl = me.btnIconEl, + oldGlyph = me.glyph, + fontFamily, glyphParts; + + me.glyph = glyph; + + if (btnIconEl) { + if (typeof glyph === 'string') { + glyphParts = glyph.split('@'); + glyph = glyphParts[0]; + fontFamily = glyphParts[1] || Ext._glyphFontFamily; + } + + if (!glyph) { + btnIconEl.dom.innerHTML = ''; + } else if (oldGlyph != glyph) { + btnIconEl.dom.innerHTML = '&#' + glyph + ';'; + } + + if (fontFamily) { + btnIconEl.setStyle('font-family', fontFamily); + } + } + + me.fireEvent('glyphchange', me, me.glyph, oldGlyph); + + return me; + }, + + + setTooltip: function(tooltip, initial) { + var me = this; + + if (me.rendered) { + if (!initial || !tooltip) { + me.clearTip(); + } + if (tooltip) { + if (Ext.quickTipsActive && Ext.isObject(tooltip)) { + Ext.tip.QuickTipManager.register(Ext.apply({ + target: me.el.id + }, + tooltip)); + me.tooltip = tooltip; + } else { + me.el.dom.setAttribute(me.getTipAttr(), tooltip); + } + } + } else { + me.tooltip = tooltip; + } + return me; + }, + + + setTextAlign: function(align) { + var me = this, + btnEl = me.btnEl; + + if (btnEl) { + btnEl.removeCls(me.baseCls + '-inner-' + me.textAlign); + btnEl.addCls(me.baseCls + '-inner-' + align); + } + me.textAlign = align; + return me; + }, + + getTipAttr: function(){ + return this.tooltipType == 'qtip' ? 'data-qtip' : 'title'; + }, + + + getRefItems: function(deep){ + var menu = this.menu, + items; + + if (menu) { + items = menu.getRefItems(deep); + items.unshift(menu); + } + return items || []; + }, + + + clearTip: function() { + var me = this, + el = me.el; + + if (Ext.quickTipsActive && Ext.isObject(me.tooltip)) { + Ext.tip.QuickTipManager.unregister(el); + } else { + el.dom.removeAttribute(me.getTipAttr()); + } + }, + + + beforeDestroy: function() { + var me = this; + if (me.rendered) { + me.clearTip(); + } + if (me.menu && me.destroyMenu !== false) { + Ext.destroy(me.menu); + } + Ext.destroy(me.btnInnerEl, me.repeater); + me.callParent(); + }, + + + onDestroy: function() { + var me = this; + if (me.rendered) { + me.doc.un('mouseover', me.monitorMouseOver, me); + delete me.doc; + + Ext.destroy(me.keyMap); + delete me.keyMap; + } + Ext.button.Manager.unregister(me); + me.callParent(); + }, + + + setHandler: function(handler, scope) { + this.handler = handler; + this.scope = scope; + return this; + }, + + + setText: function(text) { + text = text || ''; + var me = this, + oldText = me.text || ''; + + if (text != oldText) { + me.text = text; + if (me.rendered) { + me.btnInnerEl.update(text || ' '); + me.setComponentCls(); + if (Ext.isStrict && Ext.isIE8) { + + me.el.repaint(); + } + me.updateLayout(); + } + me.fireEvent('textchange', me, oldText, text); + } + return me; + }, + + + didIconStateChange: function(old, current) { + var currentEmpty = Ext.isEmpty(current); + return Ext.isEmpty(old) ? !currentEmpty : currentEmpty; + }, + + + getText: function() { + return this.text; + }, + + + toggle: function(state, suppressEvent) { + var me = this; + state = state === undefined ? !me.pressed: !!state; + if (state !== me.pressed) { + if (me.rendered) { + me[state ? 'addClsWithUI': 'removeClsWithUI'](me.pressedCls); + } + me.pressed = state; + if (!suppressEvent) { + me.fireEvent('toggle', me, state); + Ext.callback(me.toggleHandler, me.scope || me, [me, state]); + } + } + return me; + }, + + maybeShowMenu: function(){ + var me = this; + if (me.menu && !me.hasVisibleMenu() && !me.ignoreNextClick) { + me.showMenu(true); + } + }, + + + showMenu: function( fromEvent) { + var me = this, + menu = me.menu; + + if (me.rendered) { + if (me.tooltip && Ext.quickTipsActive && me.getTipAttr() != 'title') { + Ext.tip.QuickTipManager.getQuickTip().cancelShow(me.el); + } + if (menu.isVisible()) { + menu.hide(); + } + + if (!fromEvent || me.showEmptyMenu || menu.items.getCount() > 0) { + menu.showBy(me.el, me.menuAlign); + } + } + return me; + }, + + + hideMenu: function() { + if (this.hasVisibleMenu()) { + this.menu.hide(); + } + return this; + }, + + + hasVisibleMenu: function() { + var menu = this.menu; + return menu && menu.rendered && menu.isVisible(); + }, + + + onRepeatClick: function(repeat, e) { + this.onClick(e); + }, + + + onClick: function(e) { + var me = this; + if (me.preventDefault || (me.disabled && me.getHref()) && e) { + e.preventDefault(); + } + + + + if (e.type !== 'keydown' && e.button !== 0) { + return; + } + if (!me.disabled) { + me.doToggle(); + me.maybeShowMenu(); + me.fireHandler(e); + } + }, + + fireHandler: function(e) { + var me = this, + handler = me.handler; + + if (me.fireEvent('click', me, e) !== false) { + if (handler) { + handler.call(me.scope || me, me, e); + } + } + }, + + doToggle: function() { + var me = this; + if (me.enableToggle && (me.allowDepress !== false || !me.pressed)) { + me.toggle(); + } + }, + + + onMouseOver: function(e) { + var me = this; + if (!me.disabled && !e.within(me.el, true, true)) { + me.onMouseEnter(e); + } + }, + + + onMouseOut: function(e) { + var me = this; + if (!e.within(me.el, true, true)) { + if (me.overMenuTrigger) { + me.onMenuTriggerOut(e); + } + me.onMouseLeave(e); + } + }, + + + onMouseMove: function(e) { + var me = this, + el = me.el, + over = me.overMenuTrigger, + overPosition, triggerRegion; + + if (me.split) { + overPosition = (me.arrowAlign === 'right') ? + e.getX() - me.getX() : e.getY() - el.getY(); + triggerRegion = me.getTriggerRegion(); + + if (overPosition > triggerRegion.begin && overPosition < triggerRegion.end) { + if (!over) { + me.onMenuTriggerOver(e); + } + } else { + if (over) { + me.onMenuTriggerOut(e); + } + } + } + }, + + + getTriggerRegion: function() { + var me = this, + region = me._triggerRegion, + triggerSize = me.getTriggerSize(), + btnSize = me.arrowAlign === 'right' ? me.getWidth() : me.getHeight(); + + region.begin = btnSize - triggerSize; + region.end = btnSize; + return region; + }, + + + getTriggerSize: function() { + var me = this, + size = me.triggerSize, + side, sideFirstLetter; + + if (size == null) { + side = me.arrowAlign; + sideFirstLetter = side.charAt(0); + size = me.triggerSize = me.el.getFrameWidth(sideFirstLetter) + me.getBtnWrapFrameWidth(sideFirstLetter) + if (me.frameSize) { + size = me.triggerSize += me.frameSize[side]; + } + } + return size; + }, + + + getBtnWrapFrameWidth: function(side) { + return this.btnWrap.getFrameWidth(side); + }, + + addOverCls: function() { + if (!this.disabled) { + this.addClsWithUI(this.overCls); + } + }, + removeOverCls: function() { + this.removeClsWithUI(this.overCls); + }, + + + onMouseEnter: function(e) { + + this.fireEvent('mouseover', this, e); + }, + + + onMouseLeave: function(e) { + + this.fireEvent('mouseout', this, e); + }, + + + onMenuTriggerOver: function(e) { + var me = this, + arrowTip = me.arrowTooltip; + + me.overMenuTrigger = true; + + + if (me.split && arrowTip) { + me.btnWrap.dom.setAttribute(me.getTipAttr(), arrowTip); + } + me.fireEvent('menutriggerover', me, me.menu, e); + }, + + + onMenuTriggerOut: function(e) { + var me = this; + delete me.overMenuTrigger; + + if (me.split && me.arrowTooltip) { + me.btnWrap.dom.setAttribute(me.getTipAttr(), ''); + } + me.fireEvent('menutriggerout', me, me.menu, e); + }, + + + enable: function(silent) { + var me = this; + + me.callParent(arguments); + + me.removeClsWithUI('disabled'); + if (me.rendered) { + me.el.dom.setAttribute('tabIndex', me.tabIndex); + } + + return me; + }, + + + disable: function(silent) { + var me = this; + + me.callParent(arguments); + + me.addClsWithUI('disabled'); + me.removeClsWithUI(me.overCls); + if (me.rendered) { + me.el.dom.removeAttribute('tabIndex'); + } + + + + if (me.btnInnerEl && Ext.isIE7m) { + me.btnInnerEl.repaint(); + } + + return me; + }, + + + setScale: function(scale) { + var me = this, + ui = me.ui.replace('-' + me.scale, ''); + + + if (!Ext.Array.contains(me.allowedScales, scale)) { + throw('#setScale: scale must be an allowed scale (' + me.allowedScales.join(', ') + ')'); + } + + me.scale = scale; + me.setUI(ui); + }, + + + setUI: function(ui) { + var me = this; + + + if (me.scale && !ui.match(me.scale)) { + ui = ui + '-' + me.scale; + } + + me.callParent([ui]); + + + + }, + + + + onMouseDown: function(e) { + var me = this; + + if (Ext.isIE) { + + + me.getFocusEl().focus(); + } + + if (!me.disabled && e.button === 0) { + Ext.button.Manager.onButtonMousedown(me, e); + me.addClsWithUI(me.pressedCls); + } + }, + + onMouseUp: function(e) { + var me = this; + if (e.button === 0) { + if (!me.pressed) { + me.removeClsWithUI(me.pressedCls); + } + } + }, + + onMenuShow: function(e) { + var me = this; + me.ignoreNextClick = 0; + me.addClsWithUI(me.menuActiveCls); + me.fireEvent('menushow', me, me.menu); + }, + + + onMenuHide: function(e) { + var me = this; + me.removeClsWithUI(me.menuActiveCls); + me.ignoreNextClick = Ext.defer(me.restoreClick, 250, me); + me.fireEvent('menuhide', me, me.menu); + me.focus(); + }, + + + restoreClick: function() { + this.ignoreNextClick = 0; + }, + + + onDownKey: function(k, e) { + var me = this; + + if (me.menu && !me.disabled) { + me.showMenu(); + e.stopEvent(); + return false; + } + } +}); + + +Ext.define('Ext.layout.container.boxOverflow.Menu', { + + + + extend: Ext.layout.container.boxOverflow.None , + + alternateClassName: 'Ext.layout.boxOverflow.Menu', + + + + + + + noItemsMenuText : '
(None)
', + + constructor: function(layout) { + var me = this; + + me.callParent(arguments); + + me.triggerButtonCls = me.triggerButtonCls || Ext.baseCSSPrefix + 'box-menu-after'; + + me.menuItems = []; + }, + + beginLayout: function (ownerContext) { + this.callParent(arguments); + + + + this.clearOverflow(ownerContext); + }, + + beginLayoutCycle: function (ownerContext, firstCycle) { + this.callParent(arguments); + + if (!firstCycle) { + + + this.clearOverflow(ownerContext); + + this.layout.cacheChildItems(ownerContext); + } + }, + + onRemove: function(comp){ + Ext.Array.remove(this.menuItems, comp); + }, + + + getSuffixConfig: function() { + var me = this, + layout = me.layout, + owner = layout.owner, + oid = owner.id; + + + me.menu = new Ext.menu.Menu({ + listeners: { + scope: me, + beforeshow: me.beforeMenuShow + } + }); + + + me.menuTrigger = new Ext.button.Button({ + id: oid + '-menu-trigger', + cls: Ext.layout.container.Box.prototype.innerCls + ' ' + me.triggerButtonCls + ' ' + Ext.baseCSSPrefix + 'toolbar-item', + plain: owner.usePlainButtons, + ownerCt: owner, + ownerLayout: layout, + iconCls: Ext.baseCSSPrefix + me.getOwnerType(owner) + '-more-icon', + ui: owner instanceof Ext.toolbar.Toolbar ? 'default-toolbar' : 'default', + menu: me.menu, + + showEmptyMenu: true, + getSplitCls: function() { return '';} + }); + + return me.menuTrigger.getRenderTree(); + }, + + getOverflowCls: function() { + return Ext.baseCSSPrefix + this.layout.direction + '-box-overflow-body'; + }, + + handleOverflow: function(ownerContext) { + var me = this, + layout = me.layout, + names = layout.names, + plan = ownerContext.state.boxPlan, + posArgs = [null, null]; + + me.showTrigger(ownerContext); + + + + if (me.layout.direction !== 'vertical') { + posArgs[names.heightIndex] = (plan.maxSize - me.menuTrigger[names.getHeight]()) / 2; + me.menuTrigger.setPosition.apply(me.menuTrigger, posArgs); + } + + return { + reservedSpace: me.triggerTotalWidth + }; + }, + + + captureChildElements: function() { + var me = this, + menuTrigger = me.menuTrigger, + names = me.layout.names; + + + if (menuTrigger.rendering) { + menuTrigger.finishRender(); + me.triggerTotalWidth = menuTrigger[names.getWidth]() + menuTrigger.el.getMargin(names.parallelMargins); + } + }, + + _asLayoutRoot: { isRoot: true }, + + + clearOverflow: function(ownerContext) { + var me = this, + items = me.menuItems, + item, + i = 0, + length = items.length, + owner = me.layout.owner, + asLayoutRoot = me._asLayoutRoot; + + owner.suspendLayouts(); + me.captureChildElements(); + me.hideTrigger(); + owner.resumeLayouts(); + + for (; i < length; i++) { + item = items[i]; + + + + item.suspendLayouts(); + item.show(); + item.resumeLayouts(asLayoutRoot); + } + + items.length = 0; + }, + + + showTrigger: function(ownerContext) { + var me = this, + layout = me.layout, + owner = layout.owner, + names = layout.names, + startProp = names.x, + sizeProp = names.width, + plan = ownerContext.state.boxPlan, + available = plan.targetSize[sizeProp], + childItems = ownerContext.childItems, + len = childItems.length, + menuTrigger = me.menuTrigger, + childContext, + comp, i, props; + + + + menuTrigger.suspendLayouts(); + menuTrigger.show(); + menuTrigger.resumeLayouts(me._asLayoutRoot); + + available -= me.triggerTotalWidth; + + owner.suspendLayouts(); + + + + me.menuItems.length = 0; + for (i = 0; i < len; i++) { + childContext = childItems[i]; + props = childContext.props; + if (props[startProp] + props[sizeProp] > available) { + comp = childContext.target; + me.menuItems.push(comp); + comp.hide(); + } + } + + owner.resumeLayouts(); + }, + + + hideTrigger: function() { + var menuTrigger = this.menuTrigger; + if (menuTrigger) { + menuTrigger.hide(); + } + }, + + + beforeMenuShow: function(menu) { + var me = this, + items = me.menuItems, + i = 0, + len = items.length, + item, + prev, + needsSep = function(group, prev){ + return group.isXType('buttongroup') && !(prev instanceof Ext.toolbar.Separator); + }; + + menu.suspendLayouts(); + me.clearMenu(); + menu.removeAll(); + + for (; i < len; i++) { + item = items[i]; + + + if (!i && (item instanceof Ext.toolbar.Separator)) { + continue; + } + if (prev && (needsSep(item, prev) || needsSep(prev, item))) { + menu.add('-'); + } + + me.addComponentToMenu(menu, item); + prev = item; + } + + + if (menu.items.length < 1) { + menu.add(me.noItemsMenuText); + } + menu.resumeLayouts(); + }, + + + createMenuConfig : function(component, hideOnClick) { + var me = this, + config = Ext.apply({}, component.initialConfig), + group = component.toggleGroup; + + Ext.copyTo(config, component, [ + 'iconCls', 'icon', 'itemId', 'disabled', 'handler', 'scope', 'menu', 'tabIndex' + ]); + + Ext.apply(config, { + text : component.overflowText || component.text, + hideOnClick: hideOnClick, + destroyMenu: false, + listeners : {} + }); + + + if (component.isFormField) { + config.value = component.getValue(); + + + + + + + config.listeners.change = function(c, newVal, oldVal) { + component.setValue(newVal); + } + } + + + else if (group || component.enableToggle) { + Ext.apply(config, { + hideOnClick: false, + group : group, + checked: component.pressed, + handler: function(item, e) { + component.onClick(e); + } + }); + } + + + if (component.isButton && !component.changeListenersAdded) { + component.on({ + textchange: me.onButtonAttrChange, + iconchange: me.onButtonAttrChange, + toggle: me.onButtonToggle + }); + component.changeListenersAdded = true; + } + + + + + delete config.margin; + delete config.ownerCt; + delete config.xtype; + delete config.id; + delete config.itemId; + return config; + }, + + onButtonAttrChange: function(btn) { + var clone = btn.overflowClone; + clone.suspendLayouts(); + clone.setText(btn.text); + clone.setIcon(btn.icon); + clone.setIconCls(btn.iconCls); + clone.resumeLayouts(true); + }, + + onButtonToggle: function(btn, state) { + + if (btn.overflowClone.checked !== state) { + btn.overflowClone.setChecked(state); + } + }, + + + addComponentToMenu : function(menu, component) { + var me = this, + i, items, iLen; + + if (component instanceof Ext.toolbar.Separator) { + menu.add('-'); + } else if (component.isComponent) { + if (component.isXType('splitbutton')) { + component.overflowClone = menu.add(me.createMenuConfig(component, true)); + + } else if (component.isXType('button')) { + component.overflowClone = menu.add(me.createMenuConfig(component, !component.menu)); + + } else if (component.isXType('buttongroup')) { + items = component.items.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + me.addComponentToMenu(menu, items[i]); + } + } else { + component.overflowClone = menu.add(Ext.create(Ext.getClassName(component), me.createMenuConfig(component))); + } + } + }, + + + clearMenu : function() { + var menu = this.menu, + items, i, iLen, item; + + if (menu && menu.items) { + items = menu.items.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + item = items[i]; + if (item.setMenu) { + item.setMenu(null); + } + } + } + }, + + + destroy: function() { + var trigger = this.menuTrigger; + + if (trigger && !this.layout.owner.items.contains(trigger)) { + + + delete trigger.ownerCt; + } + Ext.destroy(this.menu, trigger); + } +}); + + +Ext.define('Ext.layout.container.boxOverflow.Scroller', { + + + + extend: Ext.layout.container.boxOverflow.None , + + alternateClassName: 'Ext.layout.boxOverflow.Scroller', + mixins: { + observable: Ext.util.Observable + }, + + + + + animateScroll: false, + + + scrollIncrement: 20, + + + wheelIncrement: 10, + + + scrollRepeatInterval: 60, + + + scrollDuration: 400, + + + + + + + scrollerCls: Ext.baseCSSPrefix + 'box-scroller', + + + + + + constructor: function(layout, config) { + var me = this; + + me.layout = layout; + Ext.apply(me, config || {}); + + + me.mixins.observable.constructor.call(me); + + me.addEvents( + + 'scroll' + ); + me.scrollPosition = 0; + me.scrollSize = 0; + }, + + getPrefixConfig: function() { + var me = this, + layout = me.layout, + owner = layout.owner, + cls; + + me.initCSSClasses(); + cls = Ext.layout.container.Box.prototype.innerCls + ' ' + me.beforeCtCls; + if (owner.plain) { + + cls += ' ' + me.scrollerCls + '-plain'; + } + return { + cls: cls, + cn : { + id : owner.id + layout.names.beforeScrollerSuffix, + cls: me.scrollerCls + ' ' + me.beforeScrollerCls, + style: 'display:none' + } + }; + }, + + getSuffixConfig: function() { + var me = this, + layout = me.layout, + owner = layout.owner, + cls = Ext.layout.container.Box.prototype.innerCls + ' ' + me.afterCtCls; + + if (owner.plain) { + + cls += ' ' + me.scrollerCls + '-plain'; + } + return { + cls: cls, + cn : { + id : owner.id + layout.names.afterScrollerSuffix, + cls: me.scrollerCls + ' ' + me.afterScrollerCls, + style: 'display:none' + } + }; + }, + + getOverflowCls: function() { + return Ext.baseCSSPrefix + this.layout.direction + '-box-overflow-body'; + }, + + initCSSClasses: function() { + var me = this, + prefix = Ext.baseCSSPrefix, + layout = me.layout, + names = layout.names, + beforeXName = names.beforeX, + afterXName = names.afterX, + type = me.getOwnerType(layout.owner); + + me.beforeCtCls = me.beforeCtCls || prefix + 'box-scroller-' + beforeXName; + me.afterCtCls = me.afterCtCls || prefix + 'box-scroller-' + afterXName; + + me.beforeScrollerCls = me.beforeScrollerCls || prefix + type + '-scroll-' + beforeXName; + me.afterScrollerCls = me.afterScrollerCls || prefix + type + '-scroll-' + afterXName; + }, + + beginLayout: function (ownerContext) { + var layout = this.layout; + + ownerContext.innerCtScrollPos = this.getScrollPosition(); + + this.callParent(arguments); + }, + + completeLayout: function(ownerContext) { + var me = this, + plan = ownerContext.state.boxPlan, + names = me.layout.names, + last; + + + if (plan && plan.tooNarrow) { + last = ownerContext.childItems[ownerContext.childItems.length - 1]; + + + me.scrollSize = last.props[names.x] + last.props[names.width]; + me.updateScrollButtons(); + } + this.callParent(arguments); + }, + + finishedLayout: function(ownerContext) { + var me = this, + layout = me.layout, + scrollPos = Math.min(me.getMaxScrollPosition(), ownerContext.innerCtScrollPos); + + layout.innerCt[layout.names.setScrollLeft](scrollPos); + }, + + handleOverflow: function(ownerContext) { + var me = this, + methodName = me.layout.names.getWidth; + + me.showScrollers(); + return { + reservedSpace: me.beforeCt[methodName]() + me.afterCt[methodName]() + }; + }, + + + captureChildElements: function() { + var me = this, + el = me.layout.owner.el, + before, after, hoverCls, pressedSuffix, pressedCls, hoverSuffix; + + + if (!me.beforeCt) { + hoverSuffix = '-hover'; + pressedSuffix = '-pressed'; + hoverCls = me.scrollerCls + hoverSuffix; + pressedCls = me.scrollerCls + pressedSuffix; + before = me.beforeScroller = el.getById(me.layout.owner.id + '-before-scroller'); + after = me.afterScroller = el.getById(me.layout.owner.id + '-after-scroller'); + me.beforeCt = before.up(''); + me.afterCt = after.up(''); + me.createWheelListener(); + + before.addClsOnOver(hoverCls); + before.addClsOnOver(me.beforeScrollerCls + hoverSuffix); + before.addClsOnClick(pressedCls); + before.addClsOnClick(me.beforeScrollerCls + pressedSuffix); + after.addClsOnOver(hoverCls); + after.addClsOnOver(me.afterScrollerCls + hoverSuffix); + after.addClsOnClick(pressedCls); + after.addClsOnClick(me.afterScrollerCls + pressedSuffix); + + before.setVisibilityMode(Ext.Element.DISPLAY); + after.setVisibilityMode(Ext.Element.DISPLAY); + + me.beforeRepeater = new Ext.util.ClickRepeater(before, { + interval: me.scrollRepeatInterval, + handler : me.scrollLeft, + scope : me + }); + + me.afterRepeater = new Ext.util.ClickRepeater(after, { + interval: me.scrollRepeatInterval, + handler : me.scrollRight, + scope : me + }); + } + }, + + + createWheelListener: function() { + var me = this; + me.layout.innerCt.on({ + mousewheel: function(e) { + me.scrollBy(me.getWheelDelta(e) * me.wheelIncrement * -1, false); + }, + stopEvent: true + }); + }, + + getWheelDelta: function (e) { + return e.getWheelDelta(); + }, + + + clearOverflow: function () { + this.hideScrollers(); + }, + + + showScrollers: function() { + var me = this; + + me.captureChildElements(); + me.beforeScroller.show(); + me.afterScroller.show(); + me.layout.owner.addClsWithUI(me.layout.direction === 'vertical' ? 'vertical-scroller' : 'scroller'); + + }, + + + hideScrollers: function() { + var me = this; + + if (me.beforeScroller !== undefined) { + me.beforeScroller.hide(); + me.afterScroller.hide(); + me.layout.owner.removeClsWithUI(me.layout.direction === 'vertical' ? 'vertical-scroller' : 'scroller'); + + } + }, + + + destroy: function() { + var me = this; + + Ext.destroy(me.beforeRepeater, me.afterRepeater, me.beforeScroller, me.afterScroller, me.beforeCt, me.afterCt); + }, + + + scrollBy: function(delta, animate) { + this.scrollTo(this.getScrollPosition() + delta, animate); + }, + + + getScrollAnim: function() { + return { + duration: this.scrollDuration, + callback: this.updateScrollButtons, + scope : this + }; + }, + + + updateScrollButtons: function() { + var me = this, + beforeMeth, + afterMeth, + beforeCls, + afterCls, + disabledCls, + suffix = '-disabled'; + + if (me.beforeScroller == null || me.afterScroller == null) { + return; + } + + beforeMeth = me.atExtremeBefore() ? 'addCls' : 'removeCls'; + afterMeth = me.atExtremeAfter() ? 'addCls' : 'removeCls'; + disabledCls = me.scrollerCls + suffix; + beforeCls = [disabledCls, me.beforeScrollerCls + suffix]; + afterCls = [disabledCls, me.afterScrollerCls + suffix]; + + me.beforeScroller[beforeMeth](beforeCls); + me.afterScroller[afterMeth](afterCls); + me.scrolling = false; + }, + + + scrollLeft: function() { + this.scrollBy(-this.scrollIncrement, false); + }, + + + scrollRight: function() { + this.scrollBy(this.scrollIncrement, false); + }, + + + getScrollPosition: function(){ + var me = this, + layout = me.layout, + result; + + + + if (isNaN(me.scrollPosition)) { + result = layout.innerCt[layout.names.getScrollLeft](); + } else { + result = me.scrollPosition; + } + return result; + }, + + + getMaxScrollPosition: function() { + var me = this, + layout = me.layout, + maxScrollPos = me.scrollSize - layout.innerCt[layout.names.getWidth](); + + return (maxScrollPos < 0) ? 0 : maxScrollPos; + }, + + + atExtremeBefore: function() { + return !this.getScrollPosition(); + }, + + + atExtremeAfter: function() { + return this.getScrollPosition() >= this.getMaxScrollPosition(); + }, + + + scrollTo: function(position, animate) { + var me = this, + layout = me.layout, + names = layout.names, + oldPosition = me.getScrollPosition(), + newPosition = Ext.Number.constrain(position, 0, me.getMaxScrollPosition()); + + if (newPosition != oldPosition && !me.scrolling) { + me.scrollPosition = NaN; + if (animate === undefined) { + animate = me.animateScroll; + } + + layout.innerCt[names.scrollTo](names.beforeScrollX, newPosition, animate ? me.getScrollAnim() : false); + if (animate) { + me.scrolling = true; + } else { + me.updateScrollButtons(); + } + me.fireEvent('scroll', me, newPosition, animate ? me.getScrollAnim() : false); + } + }, + + + scrollToItem: function(item, animate) { + var me = this, + layout = me.layout, + owner = layout.owner, + names = layout.names, + visibility, + box, + newPos; + + item = me.getItem(item); + if (item !== undefined) { + if (item == owner.items.first()) { + newPos = 0 + } else if (item === owner.items.last()) { + newPos = me.getMaxScrollPosition(); + } else { + visibility = me.getItemVisibility(item); + if (!visibility.fullyVisible) { + box = item.getBox(false, true); + newPos = box[names.x]; + if (visibility.hiddenEnd) { + newPos -= (me.layout.innerCt[names.getWidth]() - box[names.width]); + } + } + } + if (newPos !== undefined) { + me.scrollTo(newPos, animate); + } + } + }, + + + getItemVisibility: function(item) { + var me = this, + box = me.getItem(item).getBox(true, true), + layout = me.layout, + names = layout.names, + itemStart = box[names.x], + itemEnd = itemStart + box[names.width], + scrollStart = me.getScrollPosition(), + scrollEnd = scrollStart + layout.innerCt[names.getWidth](); + + return { + hiddenStart : itemStart < scrollStart, + hiddenEnd : itemEnd > scrollEnd, + fullyVisible: itemStart > scrollStart && itemEnd < scrollEnd + }; + } +}); + + + +Ext.define('Ext.util.Offset', { + + + + statics: { + fromObject: function(obj) { + return new this(obj.x, obj.y); + } + }, + + + + constructor: function(x, y) { + this.x = (x != null && !isNaN(x)) ? x : 0; + this.y = (y != null && !isNaN(y)) ? y : 0; + + return this; + }, + + copy: function() { + return new Ext.util.Offset(this.x, this.y); + }, + + copyFrom: function(p) { + this.x = p.x; + this.y = p.y; + }, + + toString: function() { + return "Offset[" + this.x + "," + this.y + "]"; + }, + + equals: function(offset) { + + return (this.x == offset.x && this.y == offset.y); + }, + + round: function(to) { + if (!isNaN(to)) { + var factor = Math.pow(10, to); + this.x = Math.round(this.x * factor) / factor; + this.y = Math.round(this.y * factor) / factor; + } else { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + } + }, + + isZero: function() { + return this.x == 0 && this.y == 0; + } +}); + + +Ext.define('Ext.util.Region', { + + + + + + statics: { + + getRegion: function(el) { + return Ext.fly(el).getRegion(); + }, + + + from: function(o) { + return new this(o.top, o.right, o.bottom, o.left); + } + }, + + + + + constructor : function(t, r, b, l) { + var me = this; + me.y = me.top = me[1] = t; + me.right = r; + me.bottom = b; + me.x = me.left = me[0] = l; + }, + + + contains : function(region) { + var me = this; + return (region.x >= me.x && + region.right <= me.right && + region.y >= me.y && + region.bottom <= me.bottom); + + }, + + + intersect : function(region) { + var me = this, + t = Math.max(me.y, region.y), + r = Math.min(me.right, region.right), + b = Math.min(me.bottom, region.bottom), + l = Math.max(me.x, region.x); + + if (b > t && r > l) { + return new this.self(t, r, b, l); + } + else { + return false; + } + }, + + + union : function(region) { + var me = this, + t = Math.min(me.y, region.y), + r = Math.max(me.right, region.right), + b = Math.max(me.bottom, region.bottom), + l = Math.min(me.x, region.x); + + return new this.self(t, r, b, l); + }, + + + constrainTo : function(r) { + var me = this, + constrain = Ext.Number.constrain; + me.top = me.y = constrain(me.top, r.y, r.bottom); + me.bottom = constrain(me.bottom, r.y, r.bottom); + me.left = me.x = constrain(me.left, r.x, r.right); + me.right = constrain(me.right, r.x, r.right); + return me; + }, + + + adjust : function(t, r, b, l) { + var me = this; + me.top = me.y += t; + me.left = me.x += l; + me.right += r; + me.bottom += b; + return me; + }, + + + getOutOfBoundOffset: function(axis, p) { + if (!Ext.isObject(axis)) { + if (axis == 'x') { + return this.getOutOfBoundOffsetX(p); + } else { + return this.getOutOfBoundOffsetY(p); + } + } else { + p = axis; + var d = new Ext.util.Offset(); + d.x = this.getOutOfBoundOffsetX(p.x); + d.y = this.getOutOfBoundOffsetY(p.y); + return d; + } + + }, + + + getOutOfBoundOffsetX: function(p) { + if (p <= this.x) { + return this.x - p; + } else if (p >= this.right) { + return this.right - p; + } + + return 0; + }, + + + getOutOfBoundOffsetY: function(p) { + if (p <= this.y) { + return this.y - p; + } else if (p >= this.bottom) { + return this.bottom - p; + } + + return 0; + }, + + + isOutOfBound: function(axis, p) { + if (!Ext.isObject(axis)) { + if (axis == 'x') { + return this.isOutOfBoundX(p); + } else { + return this.isOutOfBoundY(p); + } + } else { + p = axis; + return (this.isOutOfBoundX(p.x) || this.isOutOfBoundY(p.y)); + } + }, + + + isOutOfBoundX: function(p) { + return (p < this.x || p > this.right); + }, + + + isOutOfBoundY: function(p) { + return (p < this.y || p > this.bottom); + }, + + + restrict: function(axis, p, factor) { + if (Ext.isObject(axis)) { + var newP; + + factor = p; + p = axis; + + if (p.copy) { + newP = p.copy(); + } + else { + newP = { + x: p.x, + y: p.y + }; + } + + newP.x = this.restrictX(p.x, factor); + newP.y = this.restrictY(p.y, factor); + return newP; + } else { + if (axis == 'x') { + return this.restrictX(p, factor); + } else { + return this.restrictY(p, factor); + } + } + }, + + + restrictX : function(p, factor) { + if (!factor) { + factor = 1; + } + + if (p <= this.x) { + p -= (p - this.x) * factor; + } + else if (p >= this.right) { + p -= (p - this.right) * factor; + } + return p; + }, + + + restrictY : function(p, factor) { + if (!factor) { + factor = 1; + } + + if (p <= this.y) { + p -= (p - this.y) * factor; + } + else if (p >= this.bottom) { + p -= (p - this.bottom) * factor; + } + return p; + }, + + + getSize: function() { + return { + width: this.right - this.x, + height: this.bottom - this.y + }; + }, + + + copy: function() { + return new this.self(this.y, this.right, this.bottom, this.x); + }, + + + copyFrom: function(p) { + var me = this; + me.top = me.y = me[1] = p.y; + me.right = p.right; + me.bottom = p.bottom; + me.left = me.x = me[0] = p.x; + + return this; + }, + + + toString: function() { + return "Region[" + this.top + "," + this.right + "," + this.bottom + "," + this.left + "]"; + }, + + + translateBy: function(x, y) { + if (arguments.length == 1) { + y = x.y; + x = x.x; + } + var me = this; + me.top = me.y += y; + me.right += x; + me.bottom += y; + me.left = me.x += x; + + return me; + }, + + + round: function() { + var me = this; + me.top = me.y = Math.round(me.y); + me.right = Math.round(me.right); + me.bottom = Math.round(me.bottom); + me.left = me.x = Math.round(me.x); + + return me; + }, + + + equals: function(region) { + return (this.top == region.top && this.right == region.right && this.bottom == region.bottom && this.left == region.left); + } +}); + + + + + +Ext.define('Ext.dd.DragDropManager', { + singleton: true, + + + + + + + alternateClassName: ['Ext.dd.DragDropMgr', 'Ext.dd.DDM'], + + + 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, + + + notifyOccluded: false, + + + dragCls: Ext.baseCSSPrefix + 'dd-drag-current', + + + _execOnAll: function(sMethod, args) { + var i, j, oDD; + for (i in this.ids) { + for (j in this.ids[i]) { + oDD = this.ids[i][j]; + if (! this.isTypeOfDD(oDD)) { + continue; + } + oDD[sMethod].apply(oDD, args); + } + } + }, + + + _onLoad: function() { + + this.init(); + + var Event = Ext.EventManager; + Event.on(document, "mouseup", this.handleMouseUp, this, true); + Event.on(document, "mousemove", this.handleMouseMove, this, true); + Event.on(window, "unload", this._onUnload, this, true); + Event.on(window, "resize", this._onResize, this, true); + + + }, + + + _onResize: function(e) { + 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(oDD, sGroup) { + if (!this.initialized) { this.init(); } + + if (!this.ids[sGroup]) { + this.ids[sGroup] = {}; + } + this.ids[sGroup][oDD.id] = oDD; + }, + + + removeDDFromGroup: function(oDD, sGroup) { + if (!this.ids[sGroup]) { + this.ids[sGroup] = {}; + } + + var obj = this.ids[sGroup]; + if (obj && obj[oDD.id]) { + delete obj[oDD.id]; + } + }, + + + _remove: function(oDD) { + for (var g in oDD.groups) { + if (g && this.ids[g] && this.ids[g][oDD.id]) { + delete this.ids[g][oDD.id]; + } + } + delete this.handleIds[oDD.id]; + }, + + + regHandle: function(sDDId, sHandleId) { + if (!this.handleIds[sDDId]) { + this.handleIds[sDDId] = {}; + } + this.handleIds[sDDId][sHandleId] = sHandleId; + }, + + + isDragDrop: function(id) { + return ( this.getDDById(id) ) ? true : false; + }, + + + getRelated: function(p_oDD, bTargetsOnly) { + var oDDs = [], + i, j, dd; + for (i in p_oDD.groups) { + for (j in this.ids[i]) { + dd = this.ids[i][j]; + if (! this.isTypeOfDD(dd)) { + continue; + } + if (!bTargetsOnly || dd.isTarget) { + oDDs[oDDs.length] = dd; + } + } + } + + return oDDs; + }, + + + isLegalTarget: function (oDD, oTargetDD) { + var targets = this.getRelated(oDD, true), + i, len; + for (i=0, len=targets.length;i me.clickPixelThresh || diffY > me.clickPixelThresh) { + me.startDrag(me.startX, me.startY); + } + } + + if (me.dragThreshMet) { + current.b4Drag(e); + current.onDrag(e); + if (!current.moveOnly) { + me.fireEvents(e, false); + } + } + + me.stopEvent(e); + + return true; + }, + + + fireEvents: function(e, isDrop) { + var me = this, + dragCurrent = me.dragCurrent, + dragEl, + oldDragElTop, + mousePoint = e.getPoint(), + overTarget, + overTargetEl, + allTargets = [], + oldOvers = [], + outEvts = [], + overEvts = [], + dropEvts = [], + enterEvts = [], + xy, + needsSort, + i, + len, + sGroup; + + + + if (!dragCurrent || dragCurrent.isLocked()) { + return; + } + + + + + + + + if (!me.notifyOccluded && (!Ext.supports.PointerEvents || Ext.isIE10m || Ext.isOpera) && !(dragCurrent.deltaX < 0 || dragCurrent.deltaY < 0)) { + dragEl = dragCurrent.getDragEl(); + oldDragElTop = dragEl.style.top; + dragEl.style.top = '-10000px'; + xy = e.getXY(); + e.target = document.elementFromPoint(xy[0], xy[1]); + dragEl.style.top = oldDragElTop; + } + + + + for (i in me.dragOvers) { + + overTarget = me.dragOvers[i]; + + if (!me.isTypeOfDD(overTarget)) { + continue; + } + + + if (me.notifyOccluded) { + if (!this.isOverTarget(mousePoint, overTarget, me.mode)) { + outEvts.push(overTarget); + } + } + + else { + if (!e.within(overTarget.getEl())) { + outEvts.push(overTarget); + } + } + + oldOvers[i] = true; + delete me.dragOvers[i]; + } + + + + + for (sGroup in dragCurrent.groups) { + + if ("string" != typeof sGroup) { + continue; + } + + + for (i in me.ids[sGroup]) { + overTarget = me.ids[sGroup][i]; + + + + + + + + if (me.isTypeOfDD(overTarget) && + (overTargetEl = overTarget.getEl()) && + (overTarget.isTarget) && + (!overTarget.isLocked()) && + (Ext.fly(overTargetEl).isVisible(true)) && + ((overTarget != dragCurrent) || (dragCurrent.ignoreSelf === false))) { + + + if (me.notifyOccluded) { + + + if ((overTarget.zIndex = me.getZIndex(overTargetEl)) !== -1) { + needsSort = true; + } + allTargets.push(overTarget); + } + + else { + if (e.within(overTarget.getEl())) { + allTargets.push(overTarget); + break; + } + } + } + } + } + + + if (needsSort) { + Ext.Array.sort(allTargets, me.byZIndex); + } + + + + for (i = 0, len = allTargets.length; i < len; i++) { + overTarget = allTargets[i]; + + + if (me.isOverTarget(mousePoint, overTarget, me.mode)) { + + if (isDrop) { + dropEvts.push( overTarget ); + + } else { + + + if (!oldOvers[overTarget.id]) { + enterEvts.push( overTarget ); + + } else { + overEvts.push( overTarget ); + } + me.dragOvers[overTarget.id] = overTarget; + } + + + if (!me.notifyOccluded) { + break; + } + } + } + + if (me.mode) { + if (outEvts.length) { + dragCurrent.b4DragOut(e, outEvts); + dragCurrent.onDragOut(e, outEvts); + } + + if (enterEvts.length) { + dragCurrent.onDragEnter(e, enterEvts); + } + + if (overEvts.length) { + dragCurrent.b4DragOver(e, overEvts); + dragCurrent.onDragOver(e, overEvts); + } + + if (dropEvts.length) { + dragCurrent.b4DragDrop(e, dropEvts); + dragCurrent.onDragDrop(e, dropEvts); + } + + } else { + + for (i=0, len=outEvts.length; i', + '
', + '{%this.renderBody(out, values)%}', + '
', + '', + '{%if (oh.getSuffixConfig!==Ext.emptyFn) {', + 'if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)', + '}%}', + { + disableFormats: true, + definitions: 'var dh=Ext.DomHelper;' + } + ], + + constructor: function(config) { + var me = this, + type; + + me.callParent(arguments); + + + me.flexSortFn = Ext.Function.bind(me.flexSort, me); + + me.initOverflowHandler(); + + type = typeof me.padding; + if (type == 'string' || type == 'number') { + me.padding = Ext.util.Format.parseBox(me.padding); + me.padding.height = me.padding.top + me.padding.bottom; + me.padding.width = me.padding.left + me.padding.right; + } + }, + + + + _percentageRe: /^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/, + + getItemSizePolicy: function (item, ownerSizeModel) { + var me = this, + policy = me.sizePolicy, + align = me.align, + flex = item.flex, + key = align, + names = me.names, + width = item[names.width], + height = item[names.height], + percentageRe = me._percentageRe, + percentageWidth = percentageRe.test(width), + isStretch = (align == 'stretch'), + isStretchMax = (align == 'stretchmax'), + constrain = me.constrainAlign; + + + if (!ownerSizeModel && (isStretch || flex || percentageWidth || (constrain && !isStretchMax))) { + ownerSizeModel = me.owner.getSizeModel(); + } + + if (isStretch) { + + + if (!percentageRe.test(height) && ownerSizeModel[names.height].shrinkWrap) { + key = 'stretchmax'; + + + + } + } else if (!isStretchMax) { + if (percentageRe.test(height)) { + + + key = 'stretch'; + } else if (constrain && !ownerSizeModel[names.height].shrinkWrap) { + + + key = 'stretchmax'; + } else { + key = ''; + } + } + + if (flex || percentageWidth) { + + + if (!ownerSizeModel[names.width].shrinkWrap) { + policy = policy.flex; + } + } + + return policy[key]; + }, + + flexSort: function (a, b) { + + + + + + var maxWidthName = this.names.maxWidth, + minWidthName = this.names.minWidth, + infiniteValue = Infinity, + aTarget = a.target, + bTarget = b.target, + result = 0, + aMin, bMin, aMax, bMax, + hasMin, hasMax; + + aMax = aTarget[maxWidthName] || infiniteValue; + bMax = bTarget[maxWidthName] || infiniteValue; + aMin = aTarget[minWidthName] || 0; + bMin = bTarget[minWidthName] || 0; + + hasMin = isFinite(aMin) || isFinite(bMin); + hasMax = isFinite(aMax) || isFinite(bMax); + + if (hasMin || hasMax) { + if (hasMax) { + result = aMax - bMax; + } + + + + + if (result === 0 && hasMin) { + result = bMin - aMin; + } + } + return result; + }, + + isItemBoxParent: function (itemContext) { + return true; + }, + + isItemShrinkWrap: function (item) { + return true; + }, + + roundFlex: function(width) { + return Math.ceil(width); + }, + + + beginCollapse: function(child) { + var me = this; + + if (me.direction === 'vertical' && child.collapsedVertical()) { + child.collapseMemento.capture(['flex']); + delete child.flex; + } else if (me.direction === 'horizontal' && child.collapsedHorizontal()) { + child.collapseMemento.capture(['flex']); + delete child.flex; + } + }, + + + beginExpand: function(child) { + + + child.collapseMemento.restore(['flex']); + }, + + beginLayout: function (ownerContext) { + var me = this, + owner = me.owner, + smp = owner.stretchMaxPartner, + style = me.innerCt.dom.style, + names = me.names; + + ownerContext.boxNames = names; + + + + me.overflowHandler.beginLayout(ownerContext); + + + if (typeof smp === 'string') { + smp = Ext.getCmp(smp) || owner.query(smp)[0]; + } + + ownerContext.stretchMaxPartner = smp && ownerContext.context.getCmp(smp); + + me.callParent(arguments); + + ownerContext.innerCtContext = ownerContext.getEl('innerCt', me); + + + me.scrollParallel = owner.scrollFlags[names.x]; + + + me.scrollPerpendicular = owner.scrollFlags[names.y]; + + + if (me.scrollParallel) { + me.scrollPos = owner.getTargetEl().dom[names.scrollLeft]; + } + + + style.width = ''; + style.height = ''; + }, + + beginLayoutCycle: function (ownerContext, firstCycle) { + var me = this, + align = me.align, + names = ownerContext.boxNames, + pack = me.pack, + heightModelName = names.heightModel; + + + + me.overflowHandler.beginLayoutCycle(ownerContext, firstCycle); + + me.callParent(arguments); + + + + + ownerContext.parallelSizeModel = ownerContext[names.widthModel]; + ownerContext.perpendicularSizeModel = ownerContext[heightModelName]; + + ownerContext.boxOptions = { + align: align = { + stretch: align == 'stretch', + stretchmax: align == 'stretchmax', + center: align == names.center, + bottom: align == names.afterY + }, + pack: pack = { + center: pack == 'center', + end: pack == 'end' + } + }; + + + + + + + + if (align.stretch && ownerContext.perpendicularSizeModel.shrinkWrap) { + align.stretchmax = true; + align.stretch = false; + } + + + align.nostretch = !(align.stretch || align.stretchmax); + + + + + + if (ownerContext.parallelSizeModel.shrinkWrap) { + pack.center = pack.end = false; + } + + me.cacheFlexes(ownerContext); + + + + + + + + me.targetEl.setWidth(20000); + }, + + + cacheFlexes: function (ownerContext) { + var me = this, + names = ownerContext.boxNames, + widthModelName = names.widthModel, + heightModelName = names.heightModel, + nostretch = ownerContext.boxOptions.align.nostretch, + totalFlex = 0, + childItems = ownerContext.childItems, + i = childItems.length, + flexedItems = [], + minWidth = 0, + minWidthName = names.minWidth, + percentageRe = me._percentageRe, + percentageWidths = 0, + percentageHeights = 0, + child, childContext, flex, match; + + while (i--) { + childContext = childItems[i]; + child = childContext.target; + + + + + if (childContext[widthModelName].calculated) { + childContext.flex = flex = child.flex; + if (flex) { + totalFlex += flex; + flexedItems.push(childContext); + minWidth += child[minWidthName] || 0; + } else { + match = percentageRe.exec(child[names.width]); + childContext.percentageParallel = parseFloat(match[1]) / 100; + ++percentageWidths; + } + } + + + + if (nostretch && childContext[heightModelName].calculated) { + + + match = percentageRe.exec(child[names.height]); + childContext.percentagePerpendicular = parseFloat(match[1]) / 100; + ++percentageHeights; + } + } + + ownerContext.flexedItems = flexedItems; + ownerContext.flexedMinSize = minWidth; + ownerContext.totalFlex = totalFlex; + ownerContext.percentageWidths = percentageWidths; + ownerContext.percentageHeights = percentageHeights; + + + + + Ext.Array.sort(flexedItems, me.flexSortFn); + }, + + calculate: function(ownerContext) { + var me = this, + targetSize = me.getContainerSize(ownerContext), + names = ownerContext.boxNames, + state = ownerContext.state, + plan = state.boxPlan || (state.boxPlan = {}), + targetContext = ownerContext.targetContext; + + plan.targetSize = targetSize; + + + if (!ownerContext.parallelSizeModel.shrinkWrap && !targetSize[names.gotWidth]) { + me.done = false; + return; + } + + if (!state.parallelDone) { + state.parallelDone = me.calculateParallel(ownerContext, names, plan); + } + + if (!state.perpendicularDone) { + state.perpendicularDone = me.calculatePerpendicular(ownerContext, names, plan); + } + + if (state.parallelDone && state.perpendicularDone) { + + + + + if (me.owner.dock && (Ext.isIE7m || Ext.isIEQuirks) && !me.owner.width && !me.horizontal) { + plan.isIEVerticalDock = true; + plan.calculatedWidth = plan.maxSize + ownerContext.getPaddingInfo().width + ownerContext.getFrameInfo().width; + if (targetContext !== ownerContext) { + + + + plan.calculatedWidth += targetContext.getPaddingInfo().width; + } + } + + me.publishInnerCtSize(ownerContext, me.reserveOffset ? me.availableSpaceOffset : 0); + + + if (me.done && (ownerContext.childItems.length > 1 || ownerContext.stretchMaxPartner) && ownerContext.boxOptions.align.stretchmax && !state.stretchMaxDone) { + me.calculateStretchMax(ownerContext, names, plan); + state.stretchMaxDone = true; + } + me.overflowHandler.calculate(ownerContext); + } else { + me.done = false; + } + }, + + calculateParallel: function(ownerContext, names, plan) { + var me = this, + widthName = names.width, + childItems = ownerContext.childItems, + beforeXName = names.beforeX, + afterXName = names.afterX, + setWidthName = names.setWidth, + childItemsLength = childItems.length, + flexedItems = ownerContext.flexedItems, + flexedItemsLength = flexedItems.length, + pack = ownerContext.boxOptions.pack, + padding = me.padding, + containerWidth = plan.targetSize[widthName], + totalMargin = 0, + left = padding[beforeXName], + nonFlexWidth = left + padding[afterXName] + me.scrollOffset + + (me.reserveOffset ? me.availableSpaceOffset : 0), + scrollbarWidth = Ext.getScrollbarSize()[names.width], + i, childMargins, remainingWidth, remainingFlex, childContext, flex, flexedWidth, + contentWidth, mayNeedScrollbarAdjust, childWidth, percentageSpace; + + + + + + + + if (scrollbarWidth && + me.scrollPerpendicular && + ownerContext.parallelSizeModel.shrinkWrap && + !ownerContext.boxOptions.align.stretch && + !ownerContext.perpendicularSizeModel.shrinkWrap) { + + + + + if (!ownerContext.state.perpendicularDone) { + return false; + } + mayNeedScrollbarAdjust = true; + } + + + for (i = 0; i < childItemsLength; ++i) { + childContext = childItems[i]; + childMargins = childContext.marginInfo || childContext.getMarginInfo(); + + totalMargin += childMargins[widthName]; + + if (!childContext[names.widthModel].calculated) { + childWidth = childContext.getProp(widthName); + nonFlexWidth += childWidth; + if (isNaN(nonFlexWidth)) { + return false; + } + } + } + + nonFlexWidth += totalMargin; + if (ownerContext.percentageWidths) { + percentageSpace = containerWidth - totalMargin; + if (isNaN(percentageSpace)) { + return false; + } + + for (i = 0; i < childItemsLength; ++i) { + childContext = childItems[i]; + if (childContext.percentageParallel) { + childWidth = Math.ceil(percentageSpace * childContext.percentageParallel); + childWidth = childContext.setWidth(childWidth); + nonFlexWidth += childWidth; + } + } + } + + + + if (ownerContext.parallelSizeModel.shrinkWrap) { + plan.availableSpace = 0; + plan.tooNarrow = false; + } else { + plan.availableSpace = containerWidth - nonFlexWidth; + + + plan.tooNarrow = plan.availableSpace < ownerContext.flexedMinSize; + if (plan.tooNarrow && Ext.getScrollbarSize()[names.height] && me.scrollParallel && ownerContext.state.perpendicularDone) { + ownerContext.state.perpendicularDone = false; + for (i = 0; i < childItemsLength; ++i) { + childItems[i].invalidate(); + } + } + } + + contentWidth = nonFlexWidth; + remainingWidth = plan.availableSpace; + remainingFlex = ownerContext.totalFlex; + + + for (i = 0; i < flexedItemsLength; i++) { + childContext = flexedItems[i]; + flex = childContext.flex; + flexedWidth = me.roundFlex((flex / remainingFlex) * remainingWidth); + flexedWidth = childContext[setWidthName](flexedWidth); + + + + contentWidth += flexedWidth; + + remainingWidth = Math.max(0, remainingWidth - flexedWidth); + remainingFlex -= flex; + } + + if (pack.center) { + left += remainingWidth / 2; + + + if (left < 0) { + left = 0; + } + } else if (pack.end) { + left += remainingWidth; + } + + + for (i = 0; i < childItemsLength; ++i) { + childContext = childItems[i]; + childMargins = childContext.marginInfo; + + left += childMargins[beforeXName]; + + childContext.setProp(names.x, left); + + + + + + left += childMargins[afterXName] + childContext.props[widthName]; + } + + contentWidth += ownerContext.targetContext.getPaddingInfo()[widthName]; + + + ownerContext.state.contentWidth = contentWidth; + + + + if (mayNeedScrollbarAdjust && + (ownerContext.peek(names.contentHeight) > plan.targetSize[names.height])) { + contentWidth += scrollbarWidth; + ownerContext[names.hasOverflowY] = true; + + + ownerContext.target.componentLayout[names.setWidthInDom] = true; + + + + + + ownerContext[names.invalidateScrollY] = Ext.isStrict && Ext.isIE8; + } + ownerContext[names.setContentWidth](contentWidth); + + return true; + }, + + calculatePerpendicular: function(ownerContext, names, plan) { + var me = this, + heightShrinkWrap = ownerContext.perpendicularSizeModel.shrinkWrap, + targetSize = plan.targetSize, + childItems = ownerContext.childItems, + childItemsLength = childItems.length, + mmax = Math.max, + heightName = names.height, + setHeightName = names.setHeight, + beforeYName = names.beforeY, + topPositionName = names.y, + padding = me.padding, + top = padding[beforeYName], + availHeight = targetSize[heightName] - top - padding[names.afterY], + align = ownerContext.boxOptions.align, + isStretch = align.stretch, + isStretchMax = align.stretchmax, + isCenter = align.center, + isBottom = align.bottom, + constrain = me.constrainAlign, + maxHeight = 0, + hasPercentageSizes = 0, + onBeforeInvalidateChild = me.onBeforeConstrainInvalidateChild, + onAfterInvalidateChild = me.onAfterConstrainInvalidateChild, + scrollbarHeight = Ext.getScrollbarSize().height, + childTop, i, childHeight, childMargins, diff, height, childContext, + stretchMaxPartner, stretchMaxChildren, shrinkWrapParallelOverflow, + percentagePerpendicular; + + if (isStretch || ((isCenter || isBottom) && !heightShrinkWrap)) { + if (isNaN(availHeight)) { + return false; + } + } + + + + + + + + if (me.scrollParallel && plan.tooNarrow) { + if (heightShrinkWrap) { + shrinkWrapParallelOverflow = true; + } else { + availHeight -= scrollbarHeight; + plan.targetSize[heightName] -= scrollbarHeight; + } + } + + if (isStretch) { + height = availHeight; + } else { + for (i = 0; i < childItemsLength; i++) { + childContext = childItems[i]; + childMargins = (childContext.marginInfo || childContext.getMarginInfo())[heightName]; + + if (!(percentagePerpendicular = childContext.percentagePerpendicular)) { + childHeight = childContext.getProp(heightName); + } else { + ++hasPercentageSizes; + if (heightShrinkWrap) { + + + continue; + } else { + childHeight = percentagePerpendicular * availHeight - childMargins; + childHeight = childContext[names.setHeight](childHeight); + } + } + + + + + + + if (!heightShrinkWrap && constrain && childContext[names.heightModel].shrinkWrap && childHeight > availHeight) { + childContext.invalidate({ + before: onBeforeInvalidateChild, + after: onAfterInvalidateChild, + layout: me, + childHeight: availHeight, + names: names + }); + + + + ownerContext.state.parallelDone = false; + } + + + if (isNaN(maxHeight = mmax(maxHeight, childHeight + childMargins, + childContext.target[names.minHeight] || 0))) { + return false; + } + } + + + + if (shrinkWrapParallelOverflow) { + maxHeight += scrollbarHeight; + ownerContext[names.hasOverflowX] = true; + + + ownerContext.target.componentLayout[names.setHeightInDom] = true; + + + + + + ownerContext[names.invalidateScrollX] = Ext.isStrict && Ext.isIE8; + } + + + + stretchMaxPartner = ownerContext.stretchMaxPartner; + if (stretchMaxPartner) { + + ownerContext.setProp('maxChildHeight', maxHeight); + stretchMaxChildren = stretchMaxPartner.childItems; + + if (stretchMaxChildren && stretchMaxChildren.length) { + maxHeight = mmax(maxHeight, stretchMaxPartner.getProp('maxChildHeight')); + if (isNaN(maxHeight)) { + return false; + } + } + } + + ownerContext[names.setContentHeight](maxHeight + me.padding[heightName] + + ownerContext.targetContext.getPaddingInfo()[heightName]); + + + + + if (shrinkWrapParallelOverflow) { + maxHeight -= scrollbarHeight; + } + plan.maxSize = maxHeight; + + if (isStretchMax) { + height = maxHeight; + } else if (isCenter || isBottom || hasPercentageSizes) { + if (constrain) { + height = heightShrinkWrap ? maxHeight : availHeight; + } else { + height = heightShrinkWrap ? maxHeight : mmax(availHeight, maxHeight); + } + + + + + + height -= ownerContext.innerCtContext.getBorderInfo()[heightName]; + } + } + + for (i = 0; i < childItemsLength; i++) { + childContext = childItems[i]; + childMargins = childContext.marginInfo || childContext.getMarginInfo(); + + childTop = top + childMargins[beforeYName]; + + if (isStretch) { + childContext[setHeightName](height - childMargins[heightName]); + } else { + percentagePerpendicular = childContext.percentagePerpendicular; + if (heightShrinkWrap && percentagePerpendicular) { + childMargins = childContext.marginInfo || childContext.getMarginInfo(); + childHeight = percentagePerpendicular * height - childMargins[heightName]; + childHeight = childContext.setHeight(childHeight); + } + + if (isCenter) { + diff = height - childContext.props[heightName]; + if (diff > 0) { + childTop = top + Math[me.alignRoundingMethod](diff / 2); + } + } else if (isBottom) { + childTop = mmax(0, height - childTop - childContext.props[heightName]); + } + } + + childContext.setProp(topPositionName, childTop); + } + + return true; + }, + + onBeforeConstrainInvalidateChild: function(childContext, options){ + + var heightModelName = options.names.heightModel; + if (!childContext[heightModelName].constrainedMin) { + + + childContext[heightModelName] = Ext.layout.SizeModel.calculated; + } + }, + + onAfterConstrainInvalidateChild: function(childContext, options){ + + var names = options.names; + + + + + + + childContext.setProp(names.beforeY, 0); + if (childContext[names.heightModel].calculated) { + childContext[names.setHeight](options.childHeight); + } + }, + + calculateStretchMax: function (ownerContext, names, plan) { + var me = this, + heightName = names.height, + widthName = names.width, + childItems = ownerContext.childItems, + length = childItems.length, + height = plan.maxSize, + onBeforeStretchMaxInvalidateChild = me.onBeforeStretchMaxInvalidateChild, + onAfterStretchMaxInvalidateChild = me.onAfterStretchMaxInvalidateChild, + childContext, props, i, childHeight; + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + + props = childContext.props; + childHeight = height - childContext.getMarginInfo()[heightName]; + + if (childHeight != props[heightName] || + childContext[names.heightModel].constrained) { + + + + + + + + childContext.invalidate({ + before: onBeforeStretchMaxInvalidateChild, + after: onAfterStretchMaxInvalidateChild, + layout: me, + + childWidth: props[widthName], + + childHeight: childHeight, + childX: props.x, + childY: props.y, + names: names + }); + } + } + }, + + onBeforeStretchMaxInvalidateChild: function (childContext, options) { + + var heightModelName = options.names.heightModel; + + + + + + if (!childContext[heightModelName].constrainedMax) { + + + childContext[heightModelName] = Ext.layout.SizeModel.calculated; + } + }, + + onAfterStretchMaxInvalidateChild: function (childContext, options) { + + var names = options.names, + childHeight = options.childHeight, + childWidth = options.childWidth; + + childContext.setProp('x', options.childX); + childContext.setProp('y', options.childY); + + if (childContext[names.heightModel].calculated) { + + + childContext[names.setHeight](childHeight); + } + + if (childContext[names.widthModel].calculated) { + childContext[names.setWidth](childWidth); + } + }, + + completeLayout: function(ownerContext) { + var me = this, + names = ownerContext.boxNames, + invalidateScrollX = ownerContext.invalidateScrollX, + invalidateScrollY = ownerContext.invalidateScrollY, + dom, el, overflowX, overflowY, styles; + + me.overflowHandler.completeLayout(ownerContext); + + if (invalidateScrollX || invalidateScrollY) { + el = me.getTarget(); + dom = el.dom; + styles = dom.style; + + if (invalidateScrollX) { + + overflowX = el.getStyle('overflowX'); + if (overflowX == 'auto') { + + overflowX = styles.overflowX; + styles.overflowX = 'scroll'; + } else { + invalidateScrollX = false; + } + } + + if (invalidateScrollY) { + + overflowY = el.getStyle('overflowY'); + if (overflowY == 'auto') { + + overflowY = styles.overflowY; + styles.overflowY = 'scroll'; + } else { + invalidateScrollY = false; + } + } + + if (invalidateScrollX || invalidateScrollY) { + + dom.scrollWidth; + + if (invalidateScrollX) { + styles.overflowX = overflowX; + } + if (invalidateScrollY) { + styles.overflowY = overflowY; + } + } + } + + + if (me.scrollParallel) { + me.owner.getTargetEl().dom[names.scrollLeft] = me.scrollPos; + } + }, + + finishedLayout: function(ownerContext) { + this.overflowHandler.finishedLayout(ownerContext); + this.callParent(arguments); + + + + + + + + + + + this.targetEl.setWidth(ownerContext.innerCtContext.props.width); + }, + + publishInnerCtSize: function(ownerContext, reservedSpace) { + var me = this, + names = ownerContext.boxNames, + heightName = names.height, + widthName = names.width, + align = ownerContext.boxOptions.align, + dock = me.owner.dock, + padding = me.padding, + plan = ownerContext.state.boxPlan, + targetSize = plan.targetSize, + height = targetSize[heightName], + innerCtContext = ownerContext.innerCtContext, + innerCtWidth = (ownerContext.parallelSizeModel.shrinkWrap || (plan.tooNarrow && me.scrollParallel) + ? ownerContext.state.contentWidth - ownerContext.targetContext.getPaddingInfo()[widthName] + : targetSize[widthName]) - (reservedSpace || 0), + innerCtHeight; + + if (align.stretch) { + innerCtHeight = height; + } else { + innerCtHeight = plan.maxSize + padding[names.beforeY] + padding[names.afterY] + innerCtContext.getBorderInfo()[heightName]; + + if (!ownerContext.perpendicularSizeModel.shrinkWrap && (align.center || align.bottom)) { + innerCtHeight = Math.max(height, innerCtHeight); + } + } + + innerCtContext[names.setWidth](innerCtWidth); + innerCtContext[names.setHeight](innerCtHeight); + + + if (isNaN(innerCtWidth + innerCtHeight)) { + me.done = false; + } + + + + + + + + if (plan.calculatedWidth && (dock == 'left' || dock == 'right')) { + + ownerContext.setWidth(plan.calculatedWidth, true, true); + } + }, + + onRemove: function(comp){ + var me = this; + me.callParent(arguments); + if (me.overflowHandler) { + me.overflowHandler.onRemove(comp); + } + if (comp.layoutMarginCap == me.id) { + delete comp.layoutMarginCap; + } + }, + + + initOverflowHandler: function() { + var me = this, + handler = me.overflowHandler, + handlerType, + constructor; + + if (typeof handler == 'string') { + handler = { + type: handler + }; + } + + handlerType = 'None'; + if (handler && handler.type !== undefined) { + handlerType = handler.type; + } + + constructor = Ext.layout.container.boxOverflow[handlerType]; + if (constructor[me.type]) { + constructor = constructor[me.type]; + } + + me.overflowHandler = Ext.create('Ext.layout.container.boxOverflow.' + handlerType, me, handler); + }, + + + + getRenderTarget: function() { + return this.targetEl; + }, + + + + getElementTarget: function() { + return this.innerCt; + }, + + + + destroy: function() { + Ext.destroy(this.innerCt, this.overflowHandler); + this.callParent(arguments); + }, + + getRenderData: function() { + var data = this.callParent(); + + data.targetElCls = this.targetElCls; + + return data; + } +}); + + +Ext.define('Ext.layout.container.HBox', { + + + + alias: ['layout.hbox'], + extend: Ext.layout.container.Box , + alternateClassName: 'Ext.layout.HBoxLayout', + + + + + align: 'top', + + + + + constrainAlign: false, + + type : 'hbox', + + direction: 'horizontal', + + horizontal: true, + + names: { + + beforeX: 'left', + beforeScrollX: 'left', + beforeScrollerSuffix: '-before-scroller', + afterScrollerSuffix: '-after-scroller', + leftCap: 'Left', + afterX: 'right', + width: 'width', + contentWidth: 'contentWidth', + minWidth: 'minWidth', + maxWidth: 'maxWidth', + widthCap: 'Width', + widthModel: 'widthModel', + widthIndex: 0, + x: 'x', + scrollLeft: 'scrollLeft', + overflowX: 'overflowX', + hasOverflowX: 'hasOverflowX', + invalidateScrollX: 'invalidateScrollX', + parallelMargins: 'lr', + + + center: 'middle', + beforeY: 'top', + afterY: 'bottom', + height: 'height', + contentHeight: 'contentHeight', + minHeight: 'minHeight', + maxHeight: 'maxHeight', + heightCap: 'Height', + heightModel: 'heightModel', + heightIndex: 1, + y: 'y', + overflowY: 'overflowY', + hasOverflowY: 'hasOverflowY', + invalidateScrollY: 'invalidateScrollY', + perpendicularMargins: 'tb', + + + getWidth: 'getWidth', + getHeight: 'getHeight', + setWidth: 'setWidth', + setHeight: 'setHeight', + gotWidth: 'gotWidth', + gotHeight: 'gotHeight', + setContentWidth: 'setContentWidth', + setContentHeight: 'setContentHeight', + setWidthInDom: 'setWidthInDom', + setHeightInDom: 'setHeightInDom', + getScrollLeft: 'getScrollLeft', + setScrollLeft: 'setScrollLeft', + scrollTo: 'scrollTo' + }, + + sizePolicy: { + flex: { + '': { + readsWidth : 0, + readsHeight: 1, + setsWidth : 1, + setsHeight : 0 + }, + stretch: { + readsWidth : 0, + readsHeight: 0, + setsWidth : 1, + setsHeight : 1 + }, + stretchmax: { + readsWidth : 0, + readsHeight: 1, + setsWidth : 1, + setsHeight : 1 + } + }, + '': { + readsWidth : 1, + readsHeight: 1, + setsWidth : 0, + setsHeight : 0 + }, + stretch: { + readsWidth : 1, + readsHeight: 0, + setsWidth : 0, + setsHeight : 1 + }, + stretchmax: { + readsWidth : 1, + readsHeight: 1, + setsWidth : 0, + setsHeight : 1 + } + } +}); + + +Ext.define('Ext.layout.container.VBox', { + + + + alias: ['layout.vbox'], + extend: Ext.layout.container.Box , + alternateClassName: 'Ext.layout.VBoxLayout', + + + + + align : 'left', + + + + + constrainAlign: false, + + type: 'vbox', + + direction: 'vertical', + + horizontal: false, + + names: { + + beforeX: 'top', + beforeScrollX: 'top', + beforeScrollerSuffix: '-before-scroller', + afterScrollerSuffix: '-after-scroller', + leftCap: 'Top', + afterX: 'bottom', + width: 'height', + contentWidth: 'contentHeight', + minWidth: 'minHeight', + maxWidth: 'maxHeight', + widthCap: 'Height', + widthModel: 'heightModel', + widthIndex: 1, + x: 'y', + scrollLeft: 'scrollTop', + overflowX: 'overflowY', + hasOverflowX: 'hasOverflowY', + invalidateScrollX: 'invalidateScrollY', + parallelMargins: 'tb', + + + center: 'center', + beforeY: 'left', + afterY: 'right', + height: 'width', + contentHeight: 'contentWidth', + minHeight: 'minWidth', + maxHeight: 'maxWidth', + heightCap: 'Width', + heightModel: 'widthModel', + heightIndex: 0, + y: 'x', + overflowY: 'overflowX', + hasOverflowY: 'hasOverflowX', + invalidateScrollY: 'invalidateScrollX', + perpendicularMargins: 'lr', + + + getWidth: 'getHeight', + getHeight: 'getWidth', + setWidth: 'setHeight', + setHeight: 'setWidth', + gotWidth: 'gotHeight', + gotHeight: 'gotWidth', + setContentWidth: 'setContentHeight', + setContentHeight: 'setContentWidth', + setWidthInDom: 'setHeightInDom', + setHeightInDom: 'setWidthInDom', + getScrollLeft: 'getScrollTop', + setScrollLeft: 'setScrollTop', + scrollTo: 'scrollTo' + }, + + sizePolicy: { + flex: { + '': { + readsWidth : 1, + readsHeight: 0, + setsWidth : 0, + setsHeight : 1 + }, + stretch: { + readsWidth : 0, + readsHeight: 0, + setsWidth : 1, + setsHeight : 1 + }, + stretchmax: { + readsWidth : 1, + readsHeight: 0, + setsWidth : 1, + setsHeight : 1 + } + }, + '': { + readsWidth : 1, + readsHeight: 1, + setsWidth : 0, + setsHeight : 0 + }, + stretch: { + readsWidth : 0, + readsHeight: 1, + setsWidth : 1, + setsHeight : 0 + }, + stretchmax: { + readsWidth : 1, + readsHeight: 1, + setsWidth : 1, + setsHeight : 0 + } + } +}); + + +Ext.define('Ext.toolbar.Toolbar', { + extend: Ext.container.Container , + + + + + + + + + alias: 'widget.toolbar', + alternateClassName: 'Ext.Toolbar', + + + isToolbar: true, + baseCls : Ext.baseCSSPrefix + 'toolbar', + ariaRole : 'toolbar', + + defaultType: 'button', + + + vertical: false, + + + + + enableOverflow: false, + + + menuTriggerCls: Ext.baseCSSPrefix + 'toolbar-more-icon', + + + + + trackMenus: true, + + itemCls: Ext.baseCSSPrefix + 'toolbar-item', + + statics: { + shortcuts: { + '-' : 'tbseparator', + ' ' : 'tbspacer' + }, + + shortcutsHV: { + + 0: { + '->': { xtype: 'tbfill', height: 0 } + }, + + 1: { + '->': { xtype: 'tbfill', width: 0 } + } + } + }, + + initComponent: function() { + var me = this; + + + if (!me.layout && me.enableOverflow) { + me.layout = { overflowHandler: 'Menu' }; + } + + if (me.dock === 'right' || me.dock === 'left') { + me.vertical = true; + } + + me.layout = Ext.applyIf(Ext.isString(me.layout) ? { + type: me.layout + } : me.layout || {}, { + type: me.vertical ? 'vbox' : 'hbox', + align: me.vertical ? 'stretchmax' : 'middle' + }); + + if (me.vertical) { + me.addClsWithUI('vertical'); + } + + + if (me.ui === 'footer') { + me.ignoreBorderManagement = true; + } + + me.callParent(); + + + me.addEvents('overflowchange'); + }, + + getRefItems: function(deep) { + var me = this, + items = me.callParent(arguments), + layout = me.layout, + handler; + + if (deep && me.enableOverflow) { + handler = layout.overflowHandler; + if (handler && handler.menu) { + items = items.concat(handler.menu.getRefItems(deep)); + } + } + return items; + }, + + + + + + + lookupComponent: function(c) { + var args = arguments; + if (typeof c == 'string') { + var T = Ext.toolbar.Toolbar, + shortcut = T.shortcutsHV[this.vertical ? 1 : 0][c] || T.shortcuts[c]; + + if (typeof shortcut == 'string') { + c = { + xtype: shortcut + }; + } else if (shortcut) { + c = Ext.apply({}, shortcut); + } else { + c = { + xtype: 'tbtext', + text: c + }; + } + + this.applyDefaults(c); + + + args = [c]; + } + + return this.callParent(args); + }, + + + applyDefaults: function(c) { + if (!Ext.isString(c)) { + c = this.callParent(arguments); + } + return c; + }, + + + trackMenu: function(item, remove) { + if (this.trackMenus && item.menu) { + var method = remove ? 'mun' : 'mon', + me = this; + + me[method](item, 'mouseover', me.onButtonOver, me); + me[method](item, 'menushow', me.onButtonMenuShow, me); + me[method](item, 'menuhide', me.onButtonMenuHide, me); + } + }, + + + onBeforeAdd: function(component) { + var me = this, + isButton = component.isButton; + + if (isButton && me.defaultButtonUI && component.ui === 'default' && + !component.hasOwnProperty('ui')) { + component.ui = me.defaultButtonUI; + } else if ((isButton || component.isFormField) && me.ui !== 'footer') { + component.ui = component.ui + '-toolbar'; + component.addCls(component.baseCls + '-toolbar'); + } + + + if (component instanceof Ext.toolbar.Separator) { + component.setUI((me.vertical) ? 'vertical' : 'horizontal'); + } + + me.callParent(arguments); + }, + + + onAdd: function(component) { + this.callParent(arguments); + this.trackMenu(component); + }, + + + onRemove: function(c) { + this.callParent(arguments); + this.trackMenu(c, true); + }, + + getChildItemsToDisable: function() { + return this.items.getRange(); + }, + + + onButtonOver: function(btn){ + if (this.activeMenuBtn && this.activeMenuBtn != btn) { + this.activeMenuBtn.hideMenu(); + btn.showMenu(); + this.activeMenuBtn = btn; + } + }, + + + onButtonMenuShow: function(btn) { + this.activeMenuBtn = btn; + }, + + + onButtonMenuHide: function(btn) { + delete this.activeMenuBtn; + } +}); + + +Ext.define('Ext.layout.component.Dock', { + + + + extend: Ext.layout.component.Component , + + alias: 'layout.dock', + + alternateClassName: 'Ext.layout.component.AbstractDock', + + + + type: 'dock', + + horzAxisProps: { + name: 'horz', + oppositeName: 'vert', + dockBegin: 'left', + dockEnd: 'right', + horizontal: true, + marginBegin: 'margin-left', + maxSize: 'maxWidth', + minSize: 'minWidth', + pos: 'x', + setSize: 'setWidth', + shrinkWrapDock: 'shrinkWrapDockWidth', + size: 'width', + sizeModel: 'widthModel' + }, + + vertAxisProps: { + name: 'vert', + oppositeName: 'horz', + dockBegin: 'top', + dockEnd: 'bottom', + horizontal: false, + marginBegin: 'margin-top', + maxSize: 'maxHeight', + minSize: 'minHeight', + pos: 'y', + setSize: 'setHeight', + shrinkWrapDock: 'shrinkWrapDockHeight', + size: 'height', + sizeModel: 'heightModel' + }, + + initializedBorders: -1, + + horizontalCollapsePolicy: { width: true, x: true }, + + verticalCollapsePolicy: { height: true, y: true }, + + finishRender: function () { + var me = this, + target, items; + + me.callParent(); + + target = me.getRenderTarget(); + items = me.getDockedItems(); + + me.finishRenderItems(target, items); + }, + + isItemBoxParent: function (itemContext) { + return true; + }, + + isItemShrinkWrap: function (item) { + return true; + }, + + noBorderClasses: [ + Ext.baseCSSPrefix + 'docked-noborder-top', + Ext.baseCSSPrefix + 'docked-noborder-right', + Ext.baseCSSPrefix + 'docked-noborder-bottom', + Ext.baseCSSPrefix + 'docked-noborder-left' + ], + + noBorderClassesSides: { + top: Ext.baseCSSPrefix + 'docked-noborder-top', + right: Ext.baseCSSPrefix + 'docked-noborder-right', + bottom: Ext.baseCSSPrefix + 'docked-noborder-bottom', + left: Ext.baseCSSPrefix + 'docked-noborder-left' + }, + + borderWidthProps: { + top: 'border-top-width', + right: 'border-right-width', + bottom: 'border-bottom-width', + left: 'border-left-width' + }, + + handleItemBorders: function() { + var me = this, + owner = me.owner, + borders, docked, + lastItems = me.lastDockedItems, + oldBorders = me.borders, + currentGeneration = owner.dockedItems.generation, + noBorderClassesSides = me.noBorderClassesSides, + borderWidthProps = me.borderWidthProps, + i, ln, item, dock, side, + collapsed = me.collapsed; + + if (me.initializedBorders == currentGeneration || (owner.border && !owner.manageBodyBorders)) { + return; + } + + me.initializedBorders = currentGeneration; + + + me.collapsed = false; + me.lastDockedItems = docked = me.getLayoutItems(); + me.collapsed = collapsed; + + borders = { top: [], right: [], bottom: [], left: [] }; + + for (i = 0, ln = docked.length; i < ln; i++) { + item = docked[i]; + dock = item.dock; + + if (item.ignoreBorderManagement) { + continue; + } + + if (!borders[dock].satisfied) { + borders[dock].push(item); + borders[dock].satisfied = true; + } + + if (!borders.top.satisfied && dock !== 'bottom') { + borders.top.push(item); + } + if (!borders.right.satisfied && dock !== 'left') { + borders.right.push(item); + } + if (!borders.bottom.satisfied && dock !== 'top') { + borders.bottom.push(item); + } + if (!borders.left.satisfied && dock !== 'right') { + borders.left.push(item); + } + } + + if (lastItems) { + for (i = 0, ln = lastItems.length; i < ln; i++) { + item = lastItems[i]; + if (!item.isDestroyed && !item.ignoreBorderManagement && !owner.manageBodyBorders) { + item.removeCls(me.noBorderClasses); + } + } + } + + if (oldBorders) { + for (side in oldBorders) { + if (owner.manageBodyBorders && oldBorders[side].satisfied) { + owner.setBodyStyle(borderWidthProps[side], ''); + } + } + } + + for (side in borders) { + ln = borders[side].length; + if (!owner.manageBodyBorders) { + for (i = 0; i < ln; i++) { + borders[side][i].addCls(noBorderClassesSides[side]); + } + if ((!borders[side].satisfied && !owner.bodyBorder) || owner.bodyBorder === false) { + owner.addBodyCls(noBorderClassesSides[side]); + } + } + else if (borders[side].satisfied) { + owner.setBodyStyle(borderWidthProps[side], '1px'); + } + } + + me.borders = borders; + }, + + beforeLayoutCycle: function (ownerContext) { + var me = this, + owner = me.owner, + shrinkWrap = me.sizeModels.shrinkWrap, + shrinkWrapDock = owner.shrinkWrapDock, + collapsedHorz, collapsedVert; + + if (owner.collapsed) { + if (owner.collapsedVertical()) { + collapsedVert = true; + ownerContext.measureDimensions = 1; + } else { + collapsedHorz = true; + ownerContext.measureDimensions = 2; + } + } + + ownerContext.collapsedVert = collapsedVert; + ownerContext.collapsedHorz = collapsedHorz; + + + + + + if (collapsedVert) { + ownerContext.heightModel = shrinkWrap; + } else if (collapsedHorz) { + ownerContext.widthModel = shrinkWrap; + } + + shrinkWrapDock = shrinkWrapDock === true ? 3 : (shrinkWrapDock || 0); + ownerContext.shrinkWrapDockHeight = (shrinkWrapDock & 1) && ownerContext.heightModel.shrinkWrap; + ownerContext.shrinkWrapDockWidth = (shrinkWrapDock & 2) && ownerContext.widthModel.shrinkWrap; + }, + + beginLayout: function(ownerContext) { + var me = this, + owner = me.owner, + docked = me.getLayoutItems(), + layoutContext = ownerContext.context, + dockedItemCount = docked.length, + dockedItems, i, item, itemContext, offsets, + collapsed, dock; + + me.callParent(arguments); + + + + collapsed = owner.getCollapsed(); + if (collapsed !== me.lastCollapsedState && Ext.isDefined(me.lastCollapsedState)) { + + if (me.owner.collapsed) { + ownerContext.isCollapsingOrExpanding = 1; + + owner.addClsWithUI(owner.collapsedCls); + } else { + ownerContext.isCollapsingOrExpanding = 2; + + owner.removeClsWithUI(owner.collapsedCls); + ownerContext.lastCollapsedState = me.lastCollapsedState; + } + } + me.lastCollapsedState = collapsed; + + ownerContext.dockedItems = dockedItems = []; + + for (i = 0; i < dockedItemCount; i++) { + item = docked[i]; + if (item.rendered) { + dock = item.dock; + itemContext = layoutContext.getCmp(item); + itemContext.dockedAt = { x: 0, y: 0 }; + itemContext.offsets = offsets = Ext.Element.parseBox(item.offsets || 0); + itemContext.horizontal = dock == 'top' || dock == 'bottom'; + offsets.width = offsets.left + offsets.right; + offsets.height = offsets.top + offsets.bottom; + dockedItems.push(itemContext); + } + } + + ownerContext.bodyContext = ownerContext.getEl('body'); + }, + + beginLayoutCycle: function(ownerContext) { + var me = this, + docked = ownerContext.dockedItems, + len = docked.length, + owner = me.owner, + frameBody = owner.frameBody, + lastHeightModel = me.lastHeightModel, + i, item, dock; + + me.callParent(arguments); + + if (me.owner.manageHeight) { + + + if (me.lastBodyDisplay) { + owner.body.dom.style.display = me.lastBodyDisplay = ''; + } + } else { + + + + if (me.lastBodyDisplay !== 'inline-block') { + owner.body.dom.style.display = me.lastBodyDisplay = 'inline-block'; + } + + if (lastHeightModel && lastHeightModel.shrinkWrap && + !ownerContext.heightModel.shrinkWrap) { + owner.body.dom.style.marginBottom = ''; + } + } + + if (ownerContext.widthModel.auto) { + if (ownerContext.widthModel.shrinkWrap) { + owner.el.setWidth(null); + } + owner.body.setWidth(null); + if (frameBody) { + frameBody.setWidth(null); + } + } + if (ownerContext.heightModel.auto) { + owner.body.setHeight(null); + + if (frameBody) { + frameBody.setHeight(null); + } + } + + + + if (ownerContext.collapsedVert) { + ownerContext.setContentHeight(0); + } else if (ownerContext.collapsedHorz) { + ownerContext.setContentWidth(0); + } + + + + for (i = 0; i < len; i++) { + item = docked[i].target; + dock = item.dock; + + if (dock == 'right') { + item.setLocalX(0); + } else if (dock != 'left') { + continue; + } + + + } + }, + + calculate: function (ownerContext) { + var me = this, + measure = me.measureAutoDimensions(ownerContext, ownerContext.measureDimensions), + state = ownerContext.state, + horzDone = state.horzDone, + vertDone = state.vertDone, + bodyContext = ownerContext.bodyContext, + framing, horz, vert, forward, backward; + + + ownerContext.borderInfo || ownerContext.getBorderInfo(); + ownerContext.paddingInfo || ownerContext.getPaddingInfo(); + ownerContext.frameInfo || ownerContext.getFrameInfo(); + bodyContext.borderInfo || bodyContext.getBorderInfo(); + bodyContext.paddingInfo || bodyContext.getPaddingInfo(); + + + + + + + + + + + + + + + + + + + + + if (!ownerContext.frameBorder) { + if (!(framing = ownerContext.framing)) { + ownerContext.frameBorder = ownerContext.borderInfo; + ownerContext.framePadding = ownerContext.paddingInfo; + } else { + + ownerContext.frameBorder = framing.border; + ownerContext.framePadding = framing.padding; + } + } + + + + horz = !horzDone && + me.createAxis(ownerContext, measure.contentWidth, ownerContext.widthModel, + me.horzAxisProps, ownerContext.collapsedHorz); + vert = !vertDone && + me.createAxis(ownerContext, measure.contentHeight, ownerContext.heightModel, + me.vertAxisProps, ownerContext.collapsedVert); + + + + + + + + + + for (forward = 0, backward = ownerContext.dockedItems.length; backward--; ++forward) { + if (horz) { + me.dockChild(ownerContext, horz, backward, forward); + } + if (vert) { + me.dockChild(ownerContext, vert, backward, forward); + } + } + + if (horz && me.finishAxis(ownerContext, horz)) { + state.horzDone = horzDone = horz; + } + + if (vert && me.finishAxis(ownerContext, vert)) { + state.vertDone = vertDone = vert; + } + + + + if (horzDone && vertDone && me.finishConstraints(ownerContext, horzDone, vertDone)) { + + + + me.finishPositions(ownerContext, horzDone, vertDone); + } else { + me.done = false; + } + }, + + + createAxis: function (ownerContext, contentSize, sizeModel, axisProps, collapsedAxis) { + var me = this, + begin = 0, + owner = me.owner, + maxSize = owner[axisProps.maxSize], + minSize = owner[axisProps.minSize] || 0, + dockBegin = axisProps.dockBegin, + dockEnd = axisProps.dockEnd, + posProp = axisProps.pos, + sizeProp = axisProps.size, + hasMaxSize = maxSize != null, + shrinkWrap = sizeModel.shrinkWrap, + bodyContext, framing, padding, end; + + if (shrinkWrap) { + + + if (collapsedAxis) { + end = 0; + } else { + bodyContext = ownerContext.bodyContext; + end = contentSize + bodyContext.borderInfo[sizeProp]; + } + } else { + framing = ownerContext.frameBorder; + padding = ownerContext.framePadding; + + begin = framing[dockBegin] + padding[dockBegin]; + end = ownerContext.getProp(sizeProp) - (framing[dockEnd] + padding[dockEnd]); + } + + return { + shrinkWrap: sizeModel.shrinkWrap, + sizeModel: sizeModel, + + initialBegin: begin, + begin: begin, + end: end, + collapsed: collapsedAxis, + horizontal: axisProps.horizontal, + ignoreFrameBegin: null, + ignoreFrameEnd: null, + initialSize: end - begin, + maxChildSize: 0, + hasMinMaxConstraints: (minSize || hasMaxSize) && sizeModel.shrinkWrap, + minSize: minSize, + maxSize: hasMaxSize ? maxSize : 1e9, + bodyPosProp: me.owner.manageHeight ? posProp : axisProps.marginBegin, + dockBegin: dockBegin, + dockEnd: dockEnd, + posProp: posProp, + sizeProp: sizeProp, + setSize: axisProps.setSize, + shrinkWrapDock: ownerContext[axisProps.shrinkWrapDock], + sizeModelName: axisProps.sizeModel, + dockedPixelsEnd: 0 + }; + }, + + + dockChild: function (ownerContext, axis, backward, forward) { + var me = this, + itemContext = ownerContext.dockedItems[axis.shrinkWrap ? backward : forward], + item = itemContext.target, + dock = item.dock, + sizeProp = axis.sizeProp, + pos, size; + + if (item.ignoreParentFrame && ownerContext.isCollapsingOrExpanding) { + + + itemContext.clearMarginCache(); + } + + itemContext.marginInfo || itemContext.getMarginInfo(); + + if (dock == axis.dockBegin) { + if (axis.shrinkWrap) { + pos = me.dockOutwardBegin(ownerContext, itemContext, item, axis); + } else { + pos = me.dockInwardBegin(ownerContext, itemContext, item, axis); + } + } else if (dock == axis.dockEnd) { + if (axis.shrinkWrap) { + pos = me.dockOutwardEnd(ownerContext, itemContext, item, axis); + } else { + pos = me.dockInwardEnd(ownerContext, itemContext, item, axis); + } + } else { + if (axis.shrinkWrapDock) { + + + size = itemContext.getProp(sizeProp) + itemContext.marginInfo[sizeProp]; + axis.maxChildSize = Math.max(axis.maxChildSize, size); + pos = 0; + } else { + pos = me.dockStretch(ownerContext, itemContext, item, axis); + } + } + + itemContext.dockedAt[axis.posProp] = pos; + }, + + + dockInwardBegin: function (ownerContext, itemContext, item, axis) { + var pos = axis.begin, + sizeProp = axis.sizeProp, + ignoreParentFrame = item.ignoreParentFrame, + delta, + size, + dock; + + if (ignoreParentFrame) { + axis.ignoreFrameBegin = itemContext; + dock = item.dock; + + + delta = ownerContext.frameBorder[dock]; + + + pos -= delta + ownerContext.framePadding[dock]; + } + + if (!item.overlay) { + size = itemContext.getProp(sizeProp) + itemContext.marginInfo[sizeProp]; + axis.begin += size; + if (ignoreParentFrame) { + axis.begin -= delta; + } + } + + return pos; + }, + + + dockInwardEnd: function (ownerContext, itemContext, item, axis) { + var sizeProp = axis.sizeProp, + size = itemContext.getProp(sizeProp) + itemContext.marginInfo[sizeProp], + pos = axis.end - size, + frameEnd; + + if (!item.overlay) { + axis.end = pos; + } + + if (item.ignoreParentFrame) { + axis.ignoreFrameEnd = itemContext; + frameEnd = ownerContext.frameBorder[item.dock]; + pos += frameEnd + ownerContext.framePadding[item.dock]; + axis.end += frameEnd; + } + + return pos; + }, + + + dockOutwardBegin: function (ownerContext, itemContext, item, axis) { + var pos = axis.begin, + sizeProp = axis.sizeProp, + size; + + if (axis.collapsed) { + axis.ignoreFrameBegin = axis.ignoreFrameEnd = itemContext; + } else if (item.ignoreParentFrame) { + axis.ignoreFrameBegin = itemContext; + } + + + + if (!item.overlay) { + size = itemContext.getProp(sizeProp) + itemContext.marginInfo[sizeProp]; + pos -= size; + axis.begin = pos; + } + + return pos; + }, + + + dockOutwardEnd: function (ownerContext, itemContext, item, axis) { + var pos = axis.end, + sizeProp = axis.sizeProp, + size; + + size = itemContext.getProp(sizeProp) + itemContext.marginInfo[sizeProp]; + + if (axis.collapsed) { + axis.ignoreFrameBegin = axis.ignoreFrameEnd = itemContext; + } else if (item.ignoreParentFrame) { + axis.ignoreFrameEnd = itemContext; + } + + + + if (!item.overlay) { + axis.end = pos + size; + axis.dockedPixelsEnd += size; + } + + return pos; + }, + + + dockStretch: function (ownerContext, itemContext, item, axis) { + var dock = item.dock, + sizeProp = axis.sizeProp, + horizontal = dock == 'top' || dock == 'bottom', + border = ownerContext.frameBorder, + offsets = itemContext.offsets, + padding = ownerContext.framePadding, + endProp = horizontal ? 'right' : 'bottom', + startProp = horizontal ? 'left' : 'top', + pos = axis.begin + offsets[startProp], + margin, size; + + if (item.stretch !== false) { + size = axis.end - pos - offsets[endProp]; + + if (item.ignoreParentFrame) { + + + + + pos -= padding[startProp] + border[startProp]; + size += padding[sizeProp] + border[sizeProp]; + } + + margin = itemContext.marginInfo; + size -= margin[sizeProp]; + + itemContext[axis.setSize](size); + } + + return pos; + }, + + + finishAxis: function (ownerContext, axis) { + + + + if (isNaN(axis.maxChildSize)) { + return false; + } + + var axisBegin = axis.begin, + size = axis.end - axisBegin, + collapsed = axis.collapsed, + setSizeMethod = axis.setSize, + beginName = axis.dockBegin, + endName = axis.dockEnd, + padding = ownerContext.framePadding, + border = ownerContext.frameBorder, + borderBegin = border[beginName], + framing = ownerContext.framing, + framingBegin = framing && framing[beginName], + + paddingBegin = collapsed ? 0 : padding[beginName], + sizeProp = axis.sizeProp, + ignoreFrameBegin = axis.ignoreFrameBegin, + ignoreFrameEnd = axis.ignoreFrameEnd, + bodyContext = ownerContext.bodyContext, + extraPaddingBegin = Math.max(borderBegin + paddingBegin - framingBegin, 0), + bodyPos, bodySize, delta, dirty; + + if (axis.shrinkWrap) { + + + + + bodySize = axis.initialSize; + + if (framing) { + + + + + + + + + delta = -axisBegin + borderBegin + paddingBegin; + bodyPos = delta - framingBegin - extraPaddingBegin; + } else { + bodyPos = -axisBegin; + delta = bodyPos + paddingBegin; + } + + if (!collapsed) { + size += padding[sizeProp]; + } + + if (ignoreFrameBegin) { + + + + delta -= borderBegin; + bodyPos -= borderBegin; + + + + + + + + ignoreFrameBegin.dockedAt[axis.posProp] -= paddingBegin; + } else { + size += borderBegin; + } + + if (collapsed) { + + + } else if (ignoreFrameEnd) { + + + + ignoreFrameEnd.dockedAt[axis.posProp] += padding[endName]; + } else { + size += border[endName]; + } + + axis.size = size; + + if (!axis.horizontal && !this.owner.manageHeight) { + + + dirty = false; + } + } else { + + + if (framing) { + + + delta = 0; + bodyPos = axisBegin - framingBegin - extraPaddingBegin; + } else { + delta = -borderBegin; + bodyPos = axisBegin - paddingBegin - borderBegin; + } + + + bodySize = size; + } + + axis.delta = delta; + bodyContext[setSizeMethod](bodySize, dirty); + bodyContext.setProp(axis.bodyPosProp, bodyPos); + + return !isNaN(size); + }, + + beforeInvalidateShrinkWrapDock: function(itemContext, options){ + var sizeModelName = options.axis.sizeModelName; + if (!itemContext[sizeModelName].constrainedMin) { + + + itemContext[sizeModelName] = Ext.layout.SizeModel.calculated; + } + }, + + afterInvalidateShrinkWrapDock: function(itemContext, options){ + var axis = options.axis, + me = options.layout, + pos; + + if (itemContext[axis.sizeModelName].calculated) { + pos = me.dockStretch(options.ownerContext, itemContext, itemContext.target, axis); + itemContext.setProp(axis.posProp, axis.delta + pos); + } + }, + + + finishConstraints: function (ownerContext, horz, vert) { + var me = this, + sizeModels = me.sizeModels, + publishWidth = horz.shrinkWrap, + publishHeight = vert.shrinkWrap, + owner = me.owner, + dirty, height, width, heightModel, widthModel, size, + minSize, maxSize, maxChildSize, desiredSize; + + + + + + + if (publishWidth) { + size = horz.size; + minSize = horz.collapsed ? 0 : horz.minSize; + maxSize = horz.maxSize; + maxChildSize = horz.maxChildSize; + desiredSize = Math.max(size, maxChildSize); + + if (desiredSize > maxSize) { + widthModel = sizeModels.constrainedMax; + width = maxSize; + } else if (desiredSize < minSize) { + widthModel = sizeModels.constrainedMin; + width = minSize; + } else if (size < maxChildSize) { + widthModel = sizeModels.constrainedDock; + owner.dockConstrainedWidth = width = maxChildSize; + } else { + width = size; + } + } + + if (publishHeight) { + size = vert.size; + minSize = vert.collapsed ? 0 : vert.minSize; + maxSize = vert.maxSize; + maxChildSize = vert.maxChildSize; + + + desiredSize = Math.max(size, maxChildSize + size - vert.initialSize); + + if (desiredSize > maxSize) { + heightModel = sizeModels.constrainedMax; + height = maxSize; + } else if (desiredSize < minSize) { + heightModel = sizeModels.constrainedMin; + height = minSize; + } else if (size < maxChildSize) { + heightModel = sizeModels.constrainedDock; + owner.dockConstrainedHeight = height = maxChildSize; + } else { + if (!ownerContext.collapsedVert && !owner.manageHeight) { + + + dirty = false; + + + ownerContext.bodyContext.setProp('margin-bottom', vert.dockedPixelsEnd); + } + + height = size; + } + } + + + + if (widthModel || heightModel) { + + + if (widthModel && heightModel && + widthModel.constrainedMax && heightModel.constrainedByMin) { + ownerContext.invalidate({ widthModel: widthModel }); + return false; + } + + + + + if (!ownerContext.widthModel.calculatedFromShrinkWrap && + !ownerContext.heightModel.calculatedFromShrinkWrap) { + + ownerContext.invalidate({ widthModel: widthModel, heightModel: heightModel }); + return false; + } + + + + + } else { + + + me.invalidateAxes(ownerContext, horz, vert); + + } + + + + if (publishWidth) { + ownerContext.setWidth(width); + if (widthModel) { + ownerContext.widthModel = widthModel; + } + } + if (publishHeight) { + ownerContext.setHeight(height, dirty); + if (heightModel) { + ownerContext.heightModel = heightModel; + } + } + + return true; + }, + + + invalidateAxes: function(ownerContext, horz, vert){ + var before = this.beforeInvalidateShrinkWrapDock, + after = this.afterInvalidateShrinkWrapDock, + horzSize = horz.end - horz.begin, + vertSize = vert.initialSize, + invalidateHorz = horz.shrinkWrapDock && horz.maxChildSize < horzSize, + invalidateVert = vert.shrinkWrapDock && vert.maxChildSize < vertSize, + dockedItems, len, i, itemContext, itemSize, isHorz, axis, sizeProp; + + if (invalidateHorz || invalidateVert) { + if (invalidateVert) { + + + vert.begin = vert.initialBegin; + vert.end = vert.begin + vert.initialSize; + } + dockedItems = ownerContext.dockedItems; + for (i = 0, len = dockedItems.length; i < len; ++i) { + itemContext = dockedItems[i]; + isHorz = itemContext.horizontal; + axis = null; + if (invalidateHorz && isHorz) { + sizeProp = horz.sizeProp; + itemSize = horzSize; + axis = horz; + } else if (invalidateVert && !isHorz) { + sizeProp = vert.sizeProp; + itemSize = vertSize; + axis = vert; + } + + if (axis) { + + itemSize -= itemContext.getMarginInfo()[sizeProp]; + if (itemSize !== itemContext.props[sizeProp]) { + itemContext.invalidate({ + before: before, + after: after, + axis: axis, + ownerContext: ownerContext, + layout: this + }); + } + } + } + } + }, + + + finishPositions: function (ownerContext, horz, vert) { + var dockedItems = ownerContext.dockedItems, + length = dockedItems.length, + deltaX = horz.delta, + deltaY = vert.delta, + index, itemContext; + + for (index = 0; index < length; ++index) { + itemContext = dockedItems[index]; + + itemContext.setProp('x', deltaX + itemContext.dockedAt.x); + itemContext.setProp('y', deltaY + itemContext.dockedAt.y); + } + }, + + finishedLayout: function(ownerContext) { + var me = this, + target = ownerContext.target; + + me.callParent(arguments); + + if (!ownerContext.animatePolicy) { + if (ownerContext.isCollapsingOrExpanding === 1) { + target.afterCollapse(false); + } else if (ownerContext.isCollapsingOrExpanding === 2) { + target.afterExpand(false); + } + } + }, + + getAnimatePolicy: function(ownerContext) { + var me = this, + lastCollapsedState, policy; + + if (ownerContext.isCollapsingOrExpanding == 1) { + lastCollapsedState = me.lastCollapsedState; + } else if (ownerContext.isCollapsingOrExpanding == 2) { + lastCollapsedState = ownerContext.lastCollapsedState; + } + + if (lastCollapsedState == 'left' || lastCollapsedState == 'right') { + policy = me.horizontalCollapsePolicy; + } else if (lastCollapsedState == 'top' || lastCollapsedState == 'bottom') { + policy = me.verticalCollapsePolicy; + } + + return policy; + }, + + + getDockedItems: function(order, beforeBody) { + var me = this, + renderedOnly = (order === 'visual'), + all = renderedOnly ? Ext.ComponentQuery.query('[rendered]', me.owner.dockedItems.items) : me.owner.dockedItems.items, + sort = all && all.length && order !== false, + renderOrder, + dock, dockedItems, i, isBefore, length; + + if (beforeBody == null) { + dockedItems = sort && !renderedOnly ? all.slice() : all; + } else { + dockedItems = []; + + for (i = 0, length = all.length; i < length; ++i) { + dock = all[i].dock; + isBefore = (dock == 'top' || dock == 'left'); + if (beforeBody ? isBefore : !isBefore) { + dockedItems.push(all[i]); + } + } + + sort = sort && dockedItems.length; + } + + if (sort) { + renderOrder = (order = order || 'render') == 'render'; + Ext.Array.sort(dockedItems, function(a, b) { + var aw, + bw; + + + + if (renderOrder && ((aw = me.owner.dockOrder[a.dock]) !== (bw = me.owner.dockOrder[b.dock]))) { + + + if (!(aw + bw)) { + return aw - bw; + } + } + + aw = me.getItemWeight(a, order); + bw = me.getItemWeight(b, order); + if ((aw !== undefined) && (bw !== undefined)) { + return aw - bw; + } + return 0; + }); + } + + return dockedItems || []; + }, + + getItemWeight: function (item, order) { + var weight = item.weight || this.owner.defaultDockWeights[item.dock]; + return weight[order] || weight; + }, + + + getLayoutItems : function() { + var me = this, + items, + itemCount, + item, + i, + result; + + if (me.owner.collapsed) { + result = me.owner.getCollapsedDockedItems(); + } else { + items = me.getDockedItems('visual'); + itemCount = items.length; + result = []; + for (i = 0; i < itemCount; i++) { + item = items[i]; + if (!item.hidden) { + result.push(item); + } + } + } + return result; + }, + + + measureContentWidth: function (ownerContext) { + var bodyContext = ownerContext.bodyContext; + return bodyContext.el.getWidth() - bodyContext.getBorderInfo().width; + }, + + measureContentHeight: function (ownerContext) { + var bodyContext = ownerContext.bodyContext; + return bodyContext.el.getHeight() - bodyContext.getBorderInfo().height; + }, + + redoLayout: function(ownerContext) { + var me = this, + owner = me.owner; + + + if (ownerContext.isCollapsingOrExpanding == 1) { + if (owner.reExpander) { + owner.reExpander.el.show(); + } + + owner.addClsWithUI(owner.collapsedCls); + ownerContext.redo(true); + } else if (ownerContext.isCollapsingOrExpanding == 2) { + + owner.removeClsWithUI(owner.collapsedCls); + ownerContext.bodyContext.redo(); + } + }, + + + + renderChildren: function() { + var me = this, + items = me.getDockedItems(), + target = me.getRenderTarget(); + + me.handleItemBorders(); + + me.renderItems(items, target); + }, + + + renderItems: function(items, target) { + var me = this, + dockedItemCount = items.length, + itemIndex = 0, + correctPosition = 0, + staticNodeCount = 0, + targetNodes = me.getRenderTarget().dom.childNodes, + targetChildCount = targetNodes.length, + i, j, targetChildNode, item; + + + for (i = 0, j = 0; i < targetChildCount; i++) { + targetChildNode = targetNodes[i]; + if (Ext.fly(targetChildNode).hasCls(Ext.baseCSSPrefix + 'resizable-handle')) { + break; + } + for (j = 0; j < dockedItemCount; j++) { + item = items[j]; + if (item.rendered && item.el.dom === targetChildNode) { + break; + } + } + + + if (j === dockedItemCount) { + staticNodeCount++; + } + } + + + for (; itemIndex < dockedItemCount; itemIndex++, correctPosition++) { + item = items[itemIndex]; + + + + + + + + + if (itemIndex === correctPosition && (item.dock === 'right' || item.dock === 'bottom')) { + correctPosition += staticNodeCount; + } + + + if (item && !item.rendered) { + me.renderItem(item, target, correctPosition); + } + else if (!me.isValidParent(item, target, correctPosition)) { + me.moveItem(item, target, correctPosition); + } + } + }, + + undoLayout: function(ownerContext) { + var me = this, + owner = me.owner; + + + if (ownerContext.isCollapsingOrExpanding == 1) { + + + if (owner.reExpander) { + owner.reExpander.el.hide(); + } + + owner.removeClsWithUI(owner.collapsedCls); + ownerContext.undo(true); + } else if (ownerContext.isCollapsingOrExpanding == 2) { + + owner.addClsWithUI(owner.collapsedCls); + ownerContext.bodyContext.undo(); + } + }, + + sizePolicy: { + nostretch: { + setsWidth: 0, + setsHeight: 0 + }, + + horz: { + shrinkWrap: { + + + setsWidth: 1, + setsHeight: 0, + readsWidth: 1 + }, + stretch: { + setsWidth: 1, + setsHeight: 0 + } + }, + + vert: { + shrinkWrap: { + setsWidth: 0, + setsHeight: 1, + readsHeight: 1 + }, + stretch: { + setsWidth: 0, + setsHeight: 1 + } + }, + + stretchV: { + setsWidth: 0, + setsHeight: 1 + }, + + + + + + + + + + + + + + + + + + + + + + + autoStretchH: { + readsWidth: 1, + setsWidth: 1, + setsHeight: 0 + }, + autoStretchV: { + readsHeight: 1, + setsWidth: 0, + setsHeight: 1 + } + }, + + getItemSizePolicy: function (item, ownerSizeModel) { + var me = this, + policy = me.sizePolicy, + shrinkWrapDock = me.owner.shrinkWrapDock, + dock, vertical; + + if (item.stretch === false) { + return policy.nostretch; + } + + dock = item.dock; + vertical = (dock == 'left' || dock == 'right'); + + shrinkWrapDock = shrinkWrapDock === true ? 3 : (shrinkWrapDock || 0); + if (vertical) { + policy = policy.vert; + shrinkWrapDock = shrinkWrapDock & 1; + } else { + policy = policy.horz; + shrinkWrapDock = shrinkWrapDock & 2; + } + + if (shrinkWrapDock) { + + if (!ownerSizeModel) { + ownerSizeModel = me.owner.getSizeModel(); + } + if (ownerSizeModel[vertical ? 'height' : 'width'].shrinkWrap) { + return policy.shrinkWrap; + } + } + + return policy.stretch; + }, + + + configureItem : function(item, pos) { + this.callParent(arguments); + + item.addCls(Ext.baseCSSPrefix + 'docked'); + item.addClsWithUI(this.getDockCls(item.dock)); + }, + + + getDockCls: function(dock) { + return 'docked-' + dock; + }, + + afterRemove : function(item) { + this.callParent(arguments); + if (this.itemCls) { + item.el.removeCls(this.itemCls + '-' + item.dock); + } + var dom = item.el.dom; + + if (!item.destroying && dom) { + dom.parentNode.removeChild(dom); + } + this.childrenChanged = true; + }, + + + borderCollapseMap: { + + }, + + + getBorderCollapseTable: function () { + var me = this, + map = me.borderCollapseMap, + owner = me.owner, + baseCls = owner.baseCls, + ui = owner.ui, + table; + + map = map[baseCls] || (map[baseCls] = {}); + table = map[ui]; + + if (!table) { + baseCls += '-' + ui + '-outer-border-'; + map[ui] = table = [ + 0, + baseCls + 'l', + baseCls + 'b', + baseCls + 'bl', + baseCls + 'r', + baseCls + 'rl', + baseCls + 'rb', + baseCls + 'rbl', + baseCls + 't', + baseCls + 'tl', + baseCls + 'tb', + baseCls + 'tbl', + baseCls + 'tr', + baseCls + 'trl', + baseCls + 'trb', + baseCls + 'trbl' + ]; + } + + return table; + } +}); + + +Ext.define('Ext.panel.AbstractPanel', { + + + + extend: Ext.container.Container , + + mixins: { + docking: Ext.container.DockingContainer + }, + + + + + + + baseCls : Ext.baseCSSPrefix + 'panel', + + + + + + + + + + + isPanel: true, + + + + + contentPaddingProperty: 'bodyPadding', + + + shrinkWrapDock: false, + + componentLayout: 'dock', + + childEls: [ + 'body' + ], + + renderTpl: [ + + '{% this.renderDockedItems(out,values,0); %}', + + + + + + + + + + (Ext.isIE7m || Ext.isIEQuirks) ? '
' : '', + '
{bodyCls}', + ' {baseCls}-body-{ui}', + ' {parent.baseCls}-body-{parent.ui}-{.}', + '{childElCls}"', + ' style="{bodyStyle}">', + '{%this.renderContainer(out,values);%}', + '
', + '{% this.renderDockedItems(out,values,1); %}' + ], + + bodyPosProps: { + x: 'x', + y: 'y' + }, + + + + + + border: true, + + + emptyArray: [], + + initComponent : function() { + this.initBorderProps(); + this.callParent(); + }, + + initBorderProps: function() { + var me = this; + + if (me.frame && me.border && me.bodyBorder === undefined) { + me.bodyBorder = false; + } + if (me.frame && me.border && (me.bodyBorder === false || me.bodyBorder === 0)) { + me.manageBodyBorders = true; + } + }, + + beforeDestroy: function(){ + this.destroyDockedItems(); + this.callParent(); + }, + + + initItems : function() { + this.callParent(); + this.initDockingItems(); + }, + + + initRenderData: function() { + var me = this, + data = me.callParent(); + + me.initBodyStyles(); + me.protoBody.writeTo(data); + delete me.protoBody; + + return data; + }, + + + getComponent: function(comp) { + var component = this.callParent(arguments); + if (component === undefined && !Ext.isNumber(comp)) { + + component = this.getDockedComponent(comp); + } + return component; + }, + + getProtoBody: function () { + var me = this, + body = me.protoBody; + + if (!body) { + me.protoBody = body = new Ext.util.ProtoElement({ + cls: me.bodyCls, + style: me.bodyStyle, + clsProp: 'bodyCls', + styleProp: 'bodyStyle', + styleIsText: true + }); + } + + return body; + }, + + + initBodyStyles: function() { + var me = this, + body = me.getProtoBody(); + + if (me.bodyPadding !== undefined) { + if (me.layout.managePadding) { + + + + + + body.setStyle('padding', 0); + } else { + body.setStyle('padding', this.unitizeBox((me.bodyPadding === true) ? 5 : me.bodyPadding)); + } + } + me.initBodyBorder(); + }, + + initBodyBorder: function() { + var me = this; + + if (me.frame && me.bodyBorder) { + if (!Ext.isNumber(me.bodyBorder)) { + me.bodyBorder = 1; + } + me.getProtoBody().setStyle('border-width', this.unitizeBox(me.bodyBorder)); + } + }, + + getCollapsedDockedItems: function () { + var me = this; + return me.header === false || me.collapseMode == 'placeholder' ? me.emptyArray : [ me.getReExpander() ]; + }, + + + setBodyStyle: function(style, value) { + var me = this, + body = me.rendered ? me.body : me.getProtoBody(); + + if (Ext.isFunction(style)) { + style = style(); + } + if (arguments.length == 1) { + if (Ext.isString(style)) { + style = Ext.Element.parseStyles(style); + } + body.setStyle(style); + } else { + body.setStyle(style, value); + } + return me; + }, + + + addBodyCls: function(cls) { + var me = this, + body = me.rendered ? me.body : me.getProtoBody(); + + body.addCls(cls); + return me; + }, + + + removeBodyCls: function(cls) { + var me = this, + body = me.rendered ? me.body : me.getProtoBody(); + + body.removeCls(cls); + return me; + }, + + + addUIClsToElement: function(cls) { + var me = this, + result = me.callParent(arguments); + + me.addBodyCls([Ext.baseCSSPrefix + cls, me.baseCls + '-body-' + cls, me.baseCls + '-body-' + me.ui + '-' + cls]); + return result; + }, + + + removeUIClsFromElement: function(cls) { + var me = this, + result = me.callParent(arguments); + + me.removeBodyCls([Ext.baseCSSPrefix + cls, me.baseCls + '-body-' + cls, me.baseCls + '-body-' + me.ui + '-' + cls]); + return result; + }, + + + addUIToElement: function() { + var me = this; + + me.callParent(arguments); + me.addBodyCls(me.baseCls + '-body-' + me.ui); + }, + + + removeUIFromElement: function() { + var me = this; + + me.callParent(arguments); + me.removeBodyCls(me.baseCls + '-body-' + me.ui); + }, + + + getTargetEl : function() { + return this.body; + }, + + applyTargetCls: function(targetCls) { + this.getProtoBody().addCls(targetCls); + }, + + getRefItems: function(deep) { + var items = this.callParent(arguments); + + return this.getDockingRefItems(deep, items); + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + this.setupDockingRenderTpl(renderTpl); + } +}); + + +Ext.define('Ext.panel.Header', { + extend: Ext.container.Container , + + alias: 'widget.header', + + + isHeader : true, + defaultType : 'tool', + indicateDrag : false, + weight : -1, + componentLayout: 'body', + + + + childEls: [ + 'body' + ], + + renderTpl: [ + '
{parent.baseCls}-body-{parent.ui}-{.}"', + ' style="{bodyStyle}">', + '{%this.renderContainer(out,values)%}', + '
' + ], + + headingTpl: [ + + '{title}' + ], + + shrinkWrap: 3, + + + + + titlePosition: 0, + + + + + + + + + headerCls: Ext.baseCSSPrefix + 'header', + + initComponent: function() { + var me = this, + hasPosition = me.hasOwnProperty('titlePosition'), + items = me.items, + titlePosition = hasPosition ? me.titlePosition : (items ? items.length : 0), + uiClasses = [me.orientation, me.getDockName()], + ownerCt = me.ownerCt; + + me.addEvents( + + 'click', + + + 'dblclick' + ); + + me.indicateDragCls = me.headerCls + '-draggable'; + me.title = me.title || ' '; + me.tools = me.tools || []; + items = me.items = (items ? Ext.Array.slice(items) : []); + me.orientation = me.orientation || 'horizontal'; + me.dock = (me.dock) ? me.dock : (me.orientation == 'horizontal') ? 'top' : 'left'; + + if (ownerCt ? (!ownerCt.border && !ownerCt.frame) : !me.border) { + uiClasses.push(me.orientation + '-noborder'); + } + me.addClsWithUI(uiClasses); + me.addCls([me.headerCls, me.headerCls + '-' + me.orientation]); + + if (me.indicateDrag) { + me.addCls(me.indicateDragCls); + } + + + if (me.iconCls || me.icon || me.glyph) { + me.initIconCmp(); + + + if (!hasPosition && !items.length) { + ++titlePosition; + } + items.push(me.iconCmp); + } + + + me.titleCmp = new Ext.Component({ + ariaRole : 'heading', + focusable : false, + noWrap : true, + flex : 1, + rtl : me.rtl, + id : me.id + '_hd', + style : me.titleAlign ? ('text-align:' + me.titleAlign) : '', + cls : me.headerCls + '-text-container ' + + me.baseCls + '-text-container ' + + me.baseCls + '-text-container-' + me.ui, + renderTpl : me.getTpl('headingTpl'), + renderData: { + title: me.title, + cls : me.baseCls, + headerCls: me.headerCls, + ui : me.ui + }, + childEls : ['textEl'], + autoEl: { + + unselectable: 'on' + }, + listeners: { + render: me.onTitleRender, + scope: me + } + }); + me.layout = (me.orientation == 'vertical') ? { + type : 'vbox', + align: 'center', + alignRoundingMethod: 'ceil' + } : { + type : 'hbox', + align: 'middle', + alignRoundingMethod: 'floor' + }; + + + Ext.Array.push(items, me.tools); + + + me.tools.length = 0; + me.callParent(); + + if (items.length < titlePosition) { + titlePosition = items.length; + } + me.titlePosition = titlePosition; + + + me.insert(titlePosition, me.titleCmp); + + me.on({ + dblclick: me.onDblClick, + click: me.onClick, + element: 'el', + scope: me + }); + }, + + initIconCmp: function() { + var me = this, + cls = [me.headerCls + '-icon', me.baseCls + '-icon', me.iconCls], + cfg; + + if (me.glyph) { + cls.push(me.baseCls + '-glyph'); + } + + cfg = { + focusable: false, + src: Ext.BLANK_IMAGE_URL, + cls: cls, + baseCls: me.baseCls + '-icon', + id: me.id + '-iconEl', + iconCls: me.iconCls, + glyph: me.glyph + }; + + if (!Ext.isEmpty(me.icon)) { + delete cfg.iconCls; + cfg.src = me.icon; + } + + me.iconCmp = new Ext.Img(cfg); + }, + + beforeRender: function() { + this.protoEl.unselectable(); + this.callParent(); + }, + + afterLayout: function() { + var me = this, + frameBR, frameTR, frameTL, xPos; + + if (me.orientation === 'vertical') { + me.adjustTitlePosition(); + frameTR = me.frameTR; + if (frameTR) { + + + + frameBR = me.frameBR; + frameTL = me.frameTL; + xPos = (me.getWidth() - frameTR.getPadding('r') - + ((frameTL) ? frameTL.getPadding('l') : me.el.getBorderWidth('l'))) + 'px'; + frameBR.setStyle('background-position-x', xPos); + frameTR.setStyle('background-position-x', xPos); + } + if (Ext.isIE7 && Ext.isStrict && me.frame) { + + + me.el.repaint(); + } + } + }, + + beforeLayout: function () { + this.callParent(); + this.syncBeforeAfterTitleClasses(); + }, + + adjustTitlePosition: function() { + var titleCmp = this.titleCmp, + titleEl; + + if (!Ext.isIE9m && titleCmp) { + + + + + + + + + + + + + + + + titleEl = titleCmp.el; + titleEl.setStyle('left', titleEl.getWidth() + 'px'); + } + }, + + onTitleRender: function() { + if (this.orientation === 'vertical') { + this.titleCmp.el.setVertical(90); + } + }, + + + addUIClsToElement: function(cls) { + var me = this, + result = me.callParent(arguments), + classes = [me.baseCls + '-body-' + cls, me.baseCls + '-body-' + me.ui + '-' + cls], + array, i; + + if (me.bodyCls) { + array = me.bodyCls.split(' '); + + for (i = 0; i < classes.length; i++) { + if (!Ext.Array.contains(array, classes[i])) { + array.push(classes[i]); + } + } + + me.bodyCls = array.join(' '); + } else { + me.bodyCls = classes.join(' '); + } + + return result; + }, + + + removeUIClsFromElement: function(cls) { + var me = this, + result = me.callParent(arguments), + classes = [me.baseCls + '-body-' + cls, me.baseCls + '-body-' + me.ui + '-' + cls], + array, i; + + if (me.bodyCls) { + array = me.bodyCls.split(' '); + + for (i = 0; i < classes.length; i++) { + Ext.Array.remove(array, classes[i]); + } + + me.bodyCls = array.join(' '); + } + + return result; + }, + + + addUIToElement: function() { + var me = this, + array, cls; + + me.callParent(arguments); + + cls = me.baseCls + '-body-' + me.ui; + if (me.rendered) { + if (me.bodyCls) { + me.body.addCls(me.bodyCls); + } else { + me.body.addCls(cls); + } + } else { + if (me.bodyCls) { + array = me.bodyCls.split(' '); + + if (!Ext.Array.contains(array, cls)) { + array.push(cls); + } + + me.bodyCls = array.join(' '); + } else { + me.bodyCls = cls; + } + } + + if (me.titleCmp && me.titleCmp.rendered) { + me.titleCmp.addCls(me.baseCls + '-text-container-' + me.ui); + } + }, + + + removeUIFromElement: function() { + var me = this, + array, cls; + + me.callParent(arguments); + + cls = me.baseCls + '-body-' + me.ui; + if (me.rendered) { + if (me.bodyCls) { + me.body.removeCls(me.bodyCls); + } else { + me.body.removeCls(cls); + } + } else { + if (me.bodyCls) { + array = me.bodyCls.split(' '); + Ext.Array.remove(array, cls); + me.bodyCls = array.join(' '); + } else { + me.bodyCls = cls; + } + } + + if (me.titleCmp && me.titleCmp.rendered) { + me.titleCmp.removeCls(me.baseCls + '-text-container-' + me.ui); + } + }, + + onClick: function(e) { + this.fireClickEvent('click', e); + }, + + onDblClick: function(e){ + this.fireClickEvent('dblclick', e); + }, + + fireClickEvent: function(type, e){ + var toolCls = '.' + Ext.panel.Tool.prototype.baseCls; + if (!e.getTarget(toolCls)) { + this.fireEvent(type, this, e); + } + }, + + getFocusEl: function() { + return this.el; + }, + + getTargetEl: function() { + return this.body || this.frameBody || this.el; + }, + + applyTargetCls: function(targetCls) { + this.bodyTargetCls = targetCls; + }, + + + setTitle: function(title) { + var me = this, + titleCmp = me.titleCmp; + + me.title = title; + if (titleCmp.rendered) { + titleCmp.textEl.update(me.title || ' '); + titleCmp.updateLayout(); + } else { + me.titleCmp.on({ + render: function() { + me.setTitle(title); + }, + single: true + }); + } + }, + + + getMinWidth: function() { + var me = this, + textEl = me.titleCmp.textEl.dom, + result, + tools = me.tools, + l, i; + + + textEl.style.display = 'inline'; + result = textEl.offsetWidth; + textEl.style.display = ''; + + + if (tools && (l = tools.length)) { + for (i = 0; i < l; i++) { + if (tools[i].el) { + result += tools[i].el.dom.offsetWidth; + } + } + } + + + if (me.iconCmp) { + result += me.iconCmp.el.dom.offsetWidth; + } + + + return result + 10; + }, + + + setIconCls: function(cls) { + var me = this, + isEmpty = !cls || !cls.length, + iconCmp = me.iconCmp; + + me.iconCls = cls; + if (!me.iconCmp && !isEmpty) { + me.initIconCmp(); + me.insert(0, me.iconCmp); + } else if (iconCmp) { + if (isEmpty) { + me.iconCmp.destroy(); + delete me.iconCmp; + } else { + iconCmp.removeCls(iconCmp.iconCls); + iconCmp.addCls(cls); + iconCmp.iconCls = cls; + } + } + }, + + + setIcon: function(icon) { + var me = this, + isEmpty = !icon || !icon.length, + iconCmp = me.iconCmp; + + me.icon = icon; + if (!me.iconCmp && !isEmpty) { + me.initIconCmp(); + me.insert(0, me.iconCmp); + } else if (iconCmp) { + if (isEmpty) { + me.iconCmp.destroy(); + delete me.iconCmp; + } else { + iconCmp.setSrc(me.icon); + } + } + }, + + + setGlyph: function(glyph) { + var me = this, + iconCmp = me.iconCmp; + + if (!me.iconCmp) { + me.initIconCmp(); + me.insert(0, me.iconCmp); + } else if (iconCmp) { + if (glyph) { + me.iconCmp.setGlyph(glyph); + } else { + me.iconCmp.destroy(); + delete me.iconCmp; + } + } + }, + + + getTools: function(){ + return this.tools.slice(); + }, + + + addTool: function(tool) { + + + this.add(Ext.ComponentManager.create(tool, 'tool')); + }, + + syncBeforeAfterTitleClasses: function() { + var me = this, + items = me.items, + childItems = items.items, + titlePosition = me.titlePosition, + itemCount = childItems.length, + itemGeneration = items.generation, + syncGen = me.syncBeforeAfterGen, + afterCls, beforeCls, i, item; + + if (syncGen === itemGeneration) { + return; + } + me.syncBeforeAfterGen = itemGeneration; + + for (i = 0; i < itemCount; ++i) { + item = childItems[i]; + + afterCls = item.afterTitleCls || (item.afterTitleCls = item.baseCls + '-after-title') + beforeCls = item.beforeTitleCls || (item.beforeTitleCls = item.baseCls + '-before-title') + + if (!me.title || i < titlePosition) { + if (syncGen) { + item.removeCls(afterCls); + } + item.addCls(beforeCls); + } else if (i > titlePosition) { + if (syncGen) { + item.removeCls(beforeCls); + } + item.addCls(afterCls); + } + } + }, + + + onAdd: function(component, index) { + var tools = this.tools; + this.callParent(arguments); + if (component.isTool) { + tools.push(component); + tools[component.type] = component; + } + }, + + + initRenderData: function() { + return Ext.applyIf(this.callParent(), { + bodyCls: this.bodyCls, + bodyTargetCls: this.bodyTargetCls, + headerCls: this.headerCls + }); + }, + + getDockName: function() { + return this.dock; + }, + + getFramingInfoCls: function(){ + var me = this, + cls = me.callParent(), + owner = me.ownerCt; + + if (!me.expanding && (owner && owner.collapsed) || me.isCollapsedExpander) { + cls += '-' + owner.collapsedCls; + } + return cls + '-' + me.dock; + } +}); + + + + + +Ext.define('Ext.dd.DragDrop', { + + + + constructor: function(id, sGroup, config) { + if(id) { + this.init(id, sGroup, config); + } + }, + + + + + 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(x, y) { }, + + + startDrag: function(x, y) { }, + + + b4Drag: function(e) { }, + + + onDrag: function(e) { }, + + + onDragEnter: function(e, id) { }, + + + b4DragOver: function(e) { }, + + + onDragOver: function(e, id) { }, + + + b4DragOut: function(e) { }, + + + onDragOut: function(e, id) { }, + + + b4DragDrop: function(e) { }, + + + onDragDrop: function(e, id) { }, + + + onInvalidDrop: function(e) { }, + + + b4EndDrag: function(e) { }, + + + endDrag: function(e) { }, + + + b4MouseDown: function(e) { }, + + + onMouseDown: function(e) { }, + + + onMouseUp: function(e) { }, + + + onAvailable: function () { + }, + + + defaultPadding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, + + + constrainTo : function(constrainTo, pad, inContent){ + if(Ext.isNumber(pad)){ + pad = {left: pad, right:pad, top:pad, bottom:pad}; + } + pad = pad || this.defaultPadding; + var b = Ext.get(this.getEl()).getBox(), + ce = Ext.get(constrainTo), + s = ce.getScroll(), + c, + cd = ce.dom, + xy, + topSpace, + leftSpace; + if(cd == document.body){ + c = { x: s.left, y: s.top, width: Ext.Element.getViewWidth(), height: Ext.Element.getViewHeight()}; + }else{ + xy = ce.getXY(); + c = {x : xy[0], y: xy[1], width: cd.clientWidth, height: cd.clientHeight}; + } + + topSpace = b.y - c.y; + leftSpace = b.x - c.x; + + this.resetConstraints(); + this.setXConstraint(leftSpace - (pad.left||0), + c.width - leftSpace - b.width - (pad.right||0), + this.xTickSize + ); + this.setYConstraint(topSpace - (pad.top||0), + c.height - topSpace - b.height - (pad.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(id, sGroup, config) { + this.initTarget(id, sGroup, config); + Ext.EventManager.on(this.id, "mousedown", this.handleMouseDown, this); + + }, + + + initTarget: function(id, sGroup, config) { + + this.config = config || {}; + + + this.DDMInstance = Ext.dd.DragDropManager; + + this.groups = {}; + + + + if (typeof id !== "string") { + id = Ext.id(id); + } + + + this.id = id; + + + this.addToGroup((sGroup) ? sGroup : "default"); + + + + this.handleElId = id; + + + this.setDragElId(id); + + + 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(iTop, iRight, iBot, iLeft) { + + if (!iRight && 0 !== iRight) { + this.padding = [iTop, iTop, iTop, iTop]; + } else if (!iBot && 0 !== iBot) { + this.padding = [iTop, iRight, iTop, iRight]; + } else { + this.padding = [iTop, iRight, iBot, iLeft]; + } + }, + + + setInitPosition: function(diffX, diffY) { + var el = this.getEl(), + dx, dy, p; + + if (!this.DDMInstance.verifyEl(el)) { + return; + } + + dx = diffX || 0; + dy = diffY || 0; + + p = Ext.Element.getXY( el ); + + this.initPageX = p[0] - dx; + this.initPageY = p[1] - dy; + + this.lastPageX = p[0]; + this.lastPageY = p[1]; + + this.setStartPosition(p); + }, + + + setStartPosition: function(pos) { + var p = pos || Ext.Element.getXY( this.getEl() ); + this.deltaSetXY = null; + + this.startPageX = p[0]; + this.startPageY = p[1]; + }, + + + addToGroup: function(sGroup) { + this.groups[sGroup] = true; + this.DDMInstance.regDragDrop(this, sGroup); + }, + + + removeFromGroup: function(sGroup) { + if (this.groups[sGroup]) { + delete this.groups[sGroup]; + } + + this.DDMInstance.removeDDFromGroup(this, sGroup); + }, + + + setDragElId: function(id) { + this.dragElId = id; + }, + + + setHandleElId: function(id) { + if (typeof id !== "string") { + id = Ext.id(id); + } + this.handleElId = id; + this.DDMInstance.regHandle(this.id, id); + }, + + + setOuterHandleElId: function(id) { + if (typeof id !== "string") { + id = Ext.id(id); + } + Ext.EventManager.on(id, "mousedown", this.handleMouseDown, this); + this.setHandleElId(id); + + this.hasOuterHandles = true; + }, + + + unreg: function() { + Ext.EventManager.un(this.id, "mousedown", this.handleMouseDown, this); + this._domRef = null; + this.DDMInstance._remove(this); + }, + + + destroy : function(){ + this.unreg(); + }, + + + isLocked: function() { + return (this.DDMInstance.isLocked() || this.locked); + }, + + + handleMouseDown: function(e, oDD){ + var me = this; + + if ((me.primaryButtonOnly && e.button != 0) || me.isLocked()) { + return; + } + + me.DDMInstance.refreshCache(me.groups); + + if (me.hasOuterHandles || me.DDMInstance.isOverTarget(e.getPoint(), me)) { + if (me.clickValidator(e)) { + + me.setStartPosition(); + me.b4MouseDown(e); + me.onMouseDown(e); + + me.DDMInstance.handleMouseDown(e, me); + + me.DDMInstance.stopEvent(e); + } + } + }, + + clickValidator: function(e) { + var target = e.getTarget(); + return ( this.isValidHandleChild(target) && + (this.id == this.handleElId || + this.DDMInstance.handleWasClicked(target, this.id)) ); + }, + + + addInvalidHandleType: function(tagName) { + var type = tagName.toUpperCase(); + this.invalidHandleTypes[type] = type; + }, + + + addInvalidHandleId: function(id) { + if (typeof id !== "string") { + id = Ext.id(id); + } + this.invalidHandleIds[id] = id; + }, + + + addInvalidHandleClass: function(cssClass) { + this.invalidHandleClasses.push(cssClass); + }, + + + removeInvalidHandleType: function(tagName) { + var type = tagName.toUpperCase(); + + delete this.invalidHandleTypes[type]; + }, + + + removeInvalidHandleId: function(id) { + if (typeof id !== "string") { + id = Ext.id(id); + } + delete this.invalidHandleIds[id]; + }, + + + removeInvalidHandleClass: function(cssClass) { + for (var i=0, len=this.invalidHandleClasses.length; i= this.minX; i = i - iTickSize) { + if (!tickMap[i]) { + this.xTicks[this.xTicks.length] = i; + tickMap[i] = true; + } + } + + for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) { + if (!tickMap[i]) { + this.xTicks[this.xTicks.length] = i; + tickMap[i] = true; + } + } + + Ext.Array.sort(this.xTicks, this.DDMInstance.numericSort); + }, + + + setYTicks: function(iStartY, iTickSize) { + this.yTicks = []; + this.yTickSize = iTickSize; + + var tickMap = {}, + i; + + for (i = this.initPageY; i >= this.minY; i = i - iTickSize) { + if (!tickMap[i]) { + this.yTicks[this.yTicks.length] = i; + tickMap[i] = true; + } + } + + for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) { + if (!tickMap[i]) { + this.yTicks[this.yTicks.length] = i; + tickMap[i] = true; + } + } + + Ext.Array.sort(this.yTicks, this.DDMInstance.numericSort); + }, + + + setXConstraint: function(iLeft, iRight, iTickSize) { + this.leftConstraint = iLeft; + this.rightConstraint = iRight; + + this.minX = this.initPageX - iLeft; + this.maxX = this.initPageX + iRight; + if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); } + + 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(iUp, iDown, iTickSize) { + this.topConstraint = iUp; + this.bottomConstraint = iDown; + + this.minY = this.initPageY - iUp; + this.maxY = this.initPageY + iDown; + if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); } + + this.constrainY = true; + + }, + + + resetConstraints: function() { + + if (this.initPageX || this.initPageX === 0) { + + var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0, + dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0; + + this.setInitPosition(dx, dy); + + + } 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(val, tickArray) { + if (!tickArray) { + + + return val; + } else if (tickArray[0] >= val) { + + + return tickArray[0]; + } else { + var i, len, next, diff1, diff2; + for (i=0, len=tickArray.length; i= val) { + diff1 = val - tickArray[i]; + diff2 = tickArray[next] - val; + return (diff2 > diff1) ? tickArray[i] : tickArray[next]; + } + } + + + + return tickArray[tickArray.length - 1]; + } + }, + + + toString: function() { + return ("DragDrop " + this.id); + } + +}); + + + + + +Ext.define('Ext.dd.DD', { + extend: Ext.dd.DragDrop , + + + + constructor: function(id, sGroup, config) { + if (id) { + this.init(id, sGroup, config); + } + }, + + + scroll: true, + + + autoOffset: function(iPageX, iPageY) { + var x = iPageX - this.startPageX, + y = iPageY - this.startPageY; + this.setDelta(x, y); + }, + + + setDelta: function(iDeltaX, iDeltaY) { + this.deltaX = iDeltaX; + this.deltaY = iDeltaY; + }, + + + setDragElPos: function(iPageX, iPageY) { + + + + var el = this.getDragEl(); + this.alignElWithMouse(el, iPageX, iPageY); + }, + + + alignElWithMouse: function(el, iPageX, iPageY) { + var oCoord = this.getTargetCoord(iPageX, iPageY), + fly = el.dom ? el : Ext.fly(el, '_dd'), + elSize = fly.getSize(), + EL = Ext.Element, + vpSize, + aCoord, + newLeft, + newTop; + + if (!this.deltaSetXY) { + vpSize = this.cachedViewportSize = { width: EL.getDocumentWidth(), height: EL.getDocumentHeight() }; + aCoord = [ + Math.max(0, Math.min(oCoord.x, vpSize.width - elSize.width)), + Math.max(0, Math.min(oCoord.y, vpSize.height - elSize.height)) + ]; + fly.setXY(aCoord); + newLeft = this.getLocalX(fly); + newTop = fly.getLocalY(); + this.deltaSetXY = [newLeft - oCoord.x, newTop - oCoord.y]; + } else { + vpSize = this.cachedViewportSize; + this.setLocalXY( + fly, + Math.max(0, Math.min(oCoord.x + this.deltaSetXY[0], vpSize.width - elSize.width)), + Math.max(0, Math.min(oCoord.y + this.deltaSetXY[1], vpSize.height - elSize.height)) + ); + } + + this.cachePosition(oCoord.x, oCoord.y); + this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth); + return oCoord; + }, + + + cachePosition: function(iPageX, iPageY) { + if (iPageX) { + this.lastPageX = iPageX; + this.lastPageY = iPageY; + } else { + var aCoord = Ext.Element.getXY(this.getEl()); + this.lastPageX = aCoord[0]; + this.lastPageY = aCoord[1]; + } + }, + + + autoScroll: function(x, y, h, w) { + + if (this.scroll) { + + var clientH = Ext.Element.getViewHeight(), + + clientW = Ext.Element.getViewWidth(), + + st = this.DDMInstance.getScrollTop(), + + sl = this.DDMInstance.getScrollLeft(), + + bot = h + y, + + right = w + x, + + + + toBot = (clientH + st - y - this.deltaY), + + toRight = (clientW + sl - x - this.deltaX), + + + thresh = 40, + + + + scrAmt = (document.all) ? 80 : 30; + + + + if ( bot > clientH && toBot < thresh ) { + window.scrollTo(sl, st + scrAmt); + } + + + + if ( y < st && st > 0 && y - st < thresh ) { + window.scrollTo(sl, st - scrAmt); + } + + + + if ( right > clientW && toRight < thresh ) { + window.scrollTo(sl + scrAmt, st); + } + + + + if ( x < sl && sl > 0 && x - sl < thresh ) { + window.scrollTo(sl - scrAmt, st); + } + } + }, + + + getTargetCoord: function(iPageX, iPageY) { + var x = iPageX - this.deltaX, + y = iPageY - this.deltaY; + + if (this.constrainX) { + if (x < this.minX) { + x = this.minX; + } + if (x > this.maxX) { + x = this.maxX; + } + } + + if (this.constrainY) { + if (y < this.minY) { + y = this.minY; + } + if (y > this.maxY) { + y = this.maxY; + } + } + + x = this.getTick(x, this.xTicks); + y = this.getTick(y, this.yTicks); + + + return {x: x, y: y}; + }, + + + applyConfig: function() { + this.callParent(); + this.scroll = (this.config.scroll !== false); + }, + + + b4MouseDown: function(e) { + + this.autoOffset(e.getPageX(), e.getPageY()); + }, + + + b4Drag: function(e) { + this.setDragElPos(e.getPageX(), e.getPageY()); + }, + + toString: function() { + return ("DD " + this.id); + }, + + getLocalX: function(el) { + return el.getLocalX(); + }, + + setLocalXY: function(el, x, y) { + el.setLocalXY(x, y); + } + + + + + + +}); + + + + +Ext.define('Ext.dd.DDProxy', { + extend: Ext.dd.DD , + + statics: { + + dragElId: "ygddfdiv" + }, + + + constructor: function(id, sGroup, config) { + if (id) { + this.init(id, sGroup, config); + this.initFrame(); + } + }, + + + resizeFrame: true, + + + centerFrame: false, + + + createFrame: function() { + var self = this, + body = document.body, + div, + s; + + if (!body || !body.firstChild) { + setTimeout( function() { self.createFrame(); }, 50 ); + return; + } + + div = this.getDragEl(); + + if (!div) { + div = document.createElement("div"); + div.id = this.dragElId; + s = div.style; + + s.position = "absolute"; + s.visibility = "hidden"; + s.cursor = "move"; + s.border = "2px solid #aaa"; + s.zIndex = 999; + + + + + body.insertBefore(div, body.firstChild); + } + }, + + + initFrame: function() { + this.createFrame(); + }, + + applyConfig: function() { + this.callParent(); + + this.resizeFrame = (this.config.resizeFrame !== false); + this.centerFrame = (this.config.centerFrame); + this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId); + }, + + + showFrame: function(iPageX, iPageY) { + var el = this.getEl(), + dragEl = this.getDragEl(), + s = dragEl.style; + + this._resizeProxy(); + + if (this.centerFrame) { + this.setDelta( Math.round(parseInt(s.width, 10)/2), + Math.round(parseInt(s.height, 10)/2) ); + } + + this.setDragElPos(iPageX, iPageY); + + Ext.fly(dragEl).show(); + }, + + + _resizeProxy: function() { + if (this.resizeFrame) { + var el = this.getEl(); + Ext.fly(this.getDragEl()).setSize(el.offsetWidth, el.offsetHeight); + } + }, + + + b4MouseDown: function(e) { + var x = e.getPageX(), + y = e.getPageY(); + this.autoOffset(x, y); + this.setDragElPos(x, y); + }, + + + b4StartDrag: function(x, y) { + + this.showFrame(x, y); + }, + + + b4EndDrag: function(e) { + Ext.fly(this.getDragEl()).hide(); + }, + + + + + endDrag: function(e) { + + var lel = this.getEl(), + del = this.getDragEl(); + + + del.style.visibility = ""; + + this.beforeMove(); + + + lel.style.visibility = "hidden"; + Ext.dd.DDM.moveToEl(lel, del); + del.style.visibility = "hidden"; + lel.style.visibility = ""; + + this.afterDrag(); + }, + + beforeMove : function(){ + + }, + + afterDrag : function(){ + + }, + + toString: function() { + return ("DDProxy " + this.id); + } + +}); + + +Ext.define('Ext.dd.StatusProxy', { + extend: Ext.Component , + animRepair: false, + + childEls: [ + 'ghost' + ], + + renderTpl: [ + '
' + + '
' + ], + + repairCls: Ext.baseCSSPrefix + 'dd-drag-repair', + + + constructor: function(config) { + var me = this; + + config = config || {}; + + Ext.apply(me, { + hideMode: 'visibility', + hidden: true, + floating: true, + id: me.id || Ext.id(), + cls: Ext.baseCSSPrefix + 'dd-drag-proxy ' + this.dropNotAllowed, + shadow: config.shadow || false, + renderTo: Ext.getDetachedBody() + }); + me.callParent(arguments); + this.dropStatus = this.dropNotAllowed; + }, + + + dropAllowed : Ext.baseCSSPrefix + 'dd-drop-ok', + + + dropNotAllowed : Ext.baseCSSPrefix + 'dd-drop-nodrop', + + + setStatus : function(cssClass){ + cssClass = cssClass || this.dropNotAllowed; + if (this.dropStatus != cssClass) { + this.el.replaceCls(this.dropStatus, cssClass); + this.dropStatus = cssClass; + } + }, + + + reset : function(clearGhost){ + var me = this, + clsPrefix = Ext.baseCSSPrefix + 'dd-drag-proxy '; + + me.el.replaceCls(clsPrefix + me.dropAllowed, clsPrefix + me.dropNotAllowed); + me.dropStatus = me.dropNotAllowed; + if (clearGhost) { + me.ghost.update(''); + } + }, + + + update : function(html){ + if (typeof html == "string") { + this.ghost.update(html); + } else { + this.ghost.update(""); + html.style.margin = "0"; + this.ghost.dom.appendChild(html); + } + var el = this.ghost.dom.firstChild; + if (el) { + Ext.fly(el).setStyle('float', 'none'); + } + }, + + + getGhost : function(){ + return this.ghost; + }, + + + hide : function(clear) { + this.callParent(); + if (clear) { + this.reset(true); + } + }, + + + stop : function(){ + if (this.anim && this.anim.isAnimated && this.anim.isAnimated()) { + this.anim.stop(); + } + }, + + + sync : function(){ + this.el.sync(); + }, + + + repair : function(xy, callback, scope) { + var me = this; + + me.callback = callback; + me.scope = scope; + if (xy && me.animRepair !== false) { + me.el.addCls(me.repairCls); + me.el.hideUnders(true); + me.anim = me.el.animate({ + duration: me.repairDuration || 500, + easing: 'ease-out', + to: { + x: xy[0], + y: xy[1] + }, + stopAnimation: true, + callback: me.afterRepair, + scope: me + }); + } else { + me.afterRepair(); + } + }, + + + afterRepair : function() { + var me = this; + + me.hide(true); + me.el.removeCls(me.repairCls); + if (typeof me.callback == "function") { + me.callback.call(me.scope || me); + } + delete me.callback; + delete me.scope; + } +}); + + +Ext.define('Ext.dd.DragSource', { + extend: Ext.dd.DDProxy , + + + + + + + + + + + dropAllowed : Ext.baseCSSPrefix + 'dd-drop-ok', + + dropNotAllowed : Ext.baseCSSPrefix + 'dd-drop-nodrop', + + + animRepair: true, + + + repairHighlightColor: 'c3daf9', + + + constructor: function(el, config) { + this.el = Ext.get(el); + if(!this.dragData){ + this.dragData = {}; + } + + Ext.apply(this, config); + + if(!this.proxy){ + this.proxy = new Ext.dd.StatusProxy({ + id: this.el.id + '-drag-status-proxy', + animRepair: this.animRepair + }); + } + this.callParent([this.el.dom, this.ddGroup || this.group, + {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true}]); + + this.dragging = false; + }, + + + getDragData : function(e){ + return this.dragData; + }, + + + onDragEnter : function(e, id){ + var target = Ext.dd.DragDropManager.getDDById(id), + status; + this.cachedTarget = target; + if (this.beforeDragEnter(target, e, id) !== false) { + if (target.isNotifyTarget) { + status = target.notifyEnter(this, e, this.dragData); + this.proxy.setStatus(status); + } else { + this.proxy.setStatus(this.dropAllowed); + } + + if (this.afterDragEnter) { + + this.afterDragEnter(target, e, id); + } + } + }, + + + beforeDragEnter: function(target, e, id) { + return true; + }, + + + onDragOver: function(e, id) { + var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id), + status; + if (this.beforeDragOver(target, e, id) !== false) { + if(target.isNotifyTarget){ + status = target.notifyOver(this, e, this.dragData); + this.proxy.setStatus(status); + } + + if (this.afterDragOver) { + + this.afterDragOver(target, e, id); + } + } + }, + + + beforeDragOver: function(target, e, id) { + return true; + }, + + + onDragOut: function(e, id) { + var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id); + if (this.beforeDragOut(target, e, id) !== false) { + if (target.isNotifyTarget) { + target.notifyOut(this, e, this.dragData); + } + this.proxy.reset(); + if (this.afterDragOut) { + + this.afterDragOut(target, e, id); + } + } + this.cachedTarget = null; + }, + + + beforeDragOut: function(target, e, id){ + return true; + }, + + + onDragDrop: function(e, id){ + var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id); + if (this.beforeDragDrop(target, e, id) !== false) { + if (target.isNotifyTarget) { + if (target.notifyDrop(this, e, this.dragData) !== false) { + this.onValidDrop(target, e, id); + } else { + this.onInvalidDrop(target, e, id); + } + } else { + this.onValidDrop(target, e, id); + } + + if (this.afterDragDrop) { + + this.afterDragDrop(target, e, id); + } + } + delete this.cachedTarget; + }, + + + beforeDragDrop: function(target, e, id){ + return true; + }, + + + onValidDrop: function(target, e, id){ + this.hideProxy(); + if(this.afterValidDrop){ + + this.afterValidDrop(target, e, id); + } + }, + + + getRepairXY: function(e, data){ + return this.el.getXY(); + }, + + + onInvalidDrop: function(target, e, id) { + + + + var me = this; + + if (!e) { + e = target; + target = null; + id = e.getTarget().id; + } + if (me.beforeInvalidDrop(target, e, id) !== false) { + if (me.cachedTarget) { + if(me.cachedTarget.isNotifyTarget){ + me.cachedTarget.notifyOut(me, e, me.dragData); + } + me.cacheTarget = null; + } + me.proxy.repair(me.getRepairXY(e, me.dragData), me.afterRepair, me); + + if (me.afterInvalidDrop) { + + me.afterInvalidDrop(e, id); + } + } + }, + + + afterRepair: function() { + var me = this; + if (Ext.enableFx) { + me.el.highlight(me.repairHighlightColor); + } + me.dragging = false; + }, + + + beforeInvalidDrop: function(target, e, id) { + return true; + }, + + + handleMouseDown: function(e) { + if (this.dragging) { + return; + } + var data = this.getDragData(e); + if (data && this.onBeforeDrag(data, e) !== false) { + this.dragData = data; + this.proxy.stop(); + this.callParent(arguments); + } + }, + + + onBeforeDrag: function(data, e){ + return true; + }, + + + onStartDrag: Ext.emptyFn, + + alignElWithMouse: function() { + this.proxy.ensureAttachedToBody(true); + return this.callParent(arguments); + }, + + + startDrag: function(x, y) { + this.proxy.reset(); + this.proxy.hidden = false; + this.dragging = true; + this.proxy.update(""); + this.onInitDrag(x, y); + this.proxy.show(); + }, + + + onInitDrag: function(x, y) { + var clone = this.el.dom.cloneNode(true); + clone.id = Ext.id(); + this.proxy.update(clone); + this.onStartDrag(x, y); + return true; + }, + + + getProxy: function() { + return this.proxy; + }, + + + hideProxy: function() { + this.proxy.hide(); + this.proxy.reset(true); + this.dragging = false; + }, + + + triggerCacheRefresh: function() { + Ext.dd.DDM.refreshCache(this.groups); + }, + + + b4EndDrag: function(e) { + }, + + + endDrag : function(e){ + this.onEndDrag(this.dragData, e); + }, + + + onEndDrag : function(data, e){ + }, + + + autoOffset : function(x, y) { + this.setDelta(-12, -20); + }, + + destroy: function(){ + this.callParent(); + Ext.destroy(this.proxy); + } +}); + + +Ext.define('Ext.panel.Proxy', { + + alternateClassName: 'Ext.dd.PanelProxy', + + + moveOnDrag: true, + + + constructor: function(panel, config){ + var me = this; + + + me.panel = panel; + me.id = me.panel.id +'-ddproxy'; + Ext.apply(me, config); + }, + + + insertProxy: true, + + + setStatus: Ext.emptyFn, + reset: Ext.emptyFn, + update: Ext.emptyFn, + stop: Ext.emptyFn, + sync: Ext.emptyFn, + + + getEl: function(){ + return this.ghost.el; + }, + + + getGhost: function(){ + return this.ghost; + }, + + + getProxy: function(){ + return this.proxy; + }, + + + hide : function(){ + var me = this; + + if (me.ghost) { + if (me.proxy) { + me.proxy.remove(); + delete me.proxy; + } + + + me.panel.unghost(null, me.moveOnDrag); + delete me.ghost; + } + }, + + + show: function(){ + var me = this, + panelSize; + + if (!me.ghost) { + panelSize = me.panel.getSize(); + me.panel.el.setVisibilityMode(Ext.Element.DISPLAY); + me.ghost = me.panel.ghost(); + if (me.insertProxy) { + + + me.proxy = me.panel.el.insertSibling({cls: Ext.baseCSSPrefix + 'panel-dd-spacer'}); + me.proxy.setSize(panelSize); + } + } + }, + + + repair: function(xy, callback, scope) { + this.hide(); + Ext.callback(callback, scope || this); + }, + + + moveProxy : function(parentNode, before){ + if (this.proxy) { + parentNode.insertBefore(this.proxy.dom, before); + } + } +}); + + +Ext.define('Ext.panel.DD', { + extend: Ext.dd.DragSource , + + + constructor : function(panel, cfg){ + var me = this; + + me.panel = panel; + me.dragData = {panel: panel}; + me.panelProxy = new Ext.panel.Proxy(panel, cfg); + me.proxy = me.panelProxy.proxy; + + me.callParent([panel.el, cfg]); + me.setupEl(panel); + }, + + setupEl: function(panel){ + var me = this, + header = panel.header, + el = panel.body; + + if (header) { + me.setHandleElId(header.id); + el = header.el; + } + if (el) { + el.setStyle('cursor', 'move'); + me.scroll = false; + } else { + + panel.on('boxready', me.setupEl, me, {single: true}); + } + }, + + showFrame: Ext.emptyFn, + startDrag: Ext.emptyFn, + + b4StartDrag: function(x, y) { + this.panelProxy.show(); + }, + + b4MouseDown: function(e) { + var x = e.getPageX(), + y = e.getPageY(); + + this.autoOffset(x, y); + }, + + onInitDrag : function(x, y){ + this.onStartDrag(x, y); + return true; + }, + + createFrame : Ext.emptyFn, + + getDragEl : function(e){ + var ghost = this.panelProxy.ghost; + if (ghost) { + return ghost.el.dom; + } + }, + + endDrag : function(e){ + this.panelProxy.hide(); + this.panel.saveState(); + }, + + autoOffset : function(x, y) { + x -= this.startPageX; + y -= this.startPageY; + this.setDelta(x, y); + }, + + + + onInvalidDrop: function(target, e, id) { + var me = this; + + if (me.beforeInvalidDrop(target, e, id) !== false) { + if (me.cachedTarget) { + if(me.cachedTarget.isNotifyTarget){ + me.cachedTarget.notifyOut(me, e, me.dragData); + } + me.cacheTarget = null; + } + + if (me.afterInvalidDrop) { + + me.afterInvalidDrop(e, id); + } + } + } +}); + + +Ext.define('Ext.util.Memento', (function () { + + function captureOne (src, target, prop, prefix) { + src[prefix ? prefix + prop : prop] = target[prop]; + } + + function removeOne (src, target, prop) { + delete src[prop]; + } + + function restoreOne (src, target, prop, prefix) { + var name = prefix ? prefix + prop : prop, + value = src[name]; + + if (value || src.hasOwnProperty(name)) { + restoreValue(target, prop, value); + } + } + + function restoreValue (target, prop, value) { + if (Ext.isDefined(value)) { + target[prop] = value; + } else { + delete target[prop]; + } + } + + function doMany (doOne, src, target, props, prefix) { + if (src) { + if (Ext.isArray(props)) { + var p, pLen = props.length; + for (p = 0; p < pLen; p++) { + doOne(src, target, props[p], prefix); + } + } else { + doOne(src, target, props, prefix); + } + } + } + + return { + + data: null, + + + target: null, + + + constructor: function (target, props) { + if (target) { + this.target = target; + if (props) { + this.capture(props); + } + } + }, + + + capture: function (props, target, prefix) { + var me = this; + doMany(captureOne, me.data || (me.data = {}), target || me.target, props, prefix); + }, + + + remove: function (props) { + doMany(removeOne, this.data, null, props); + }, + + + restore: function (props, clear, target, prefix) { + doMany(restoreOne, this.data, target || this.target, props, prefix); + if (clear !== false) { + this.remove(props); + } + }, + + + restoreAll: function (clear, target) { + var me = this, + t = target || this.target, + data = me.data, + prop; + + for (prop in data) { + if (data.hasOwnProperty(prop)) { + restoreValue(t, prop, data[prop]); + } + } + + if (clear !== false) { + delete me.data; + } + } + }; +}())); + + +Ext.define('Ext.panel.Panel', { + extend: Ext.panel.AbstractPanel , + + + + + + + + + + alias: 'widget.panel', + alternateClassName: 'Ext.Panel', + + + collapsedCls: 'collapsed', + + + animCollapse: Ext.enableFx, + + + minButtonWidth: 75, + + + collapsed: false, + + + collapseFirst: true, + + + hideCollapseTool: false, + + + titleCollapse: undefined, + + + + + + + floatable: true, + + + + + collapsible: undefined, + + + + + closable: false, + + + closeAction: 'destroy', + + + + + placeholderCollapseHideMode: Ext.Element.VISIBILITY, + + + preventHeader: false, + + + header: undefined, + + + headerPosition: 'top', + + + frame: false, + + + frameHeader: true, + + + + + + + + + manageHeight: true, + + + + + + + + + + + constrain: false, + + + constrainHeader: false, + + + + initComponent: function() { + var me = this; + + me.addEvents( + + + 'beforeclose', + + + 'close', + + + "beforeexpand", + + + "beforecollapse", + + + "expand", + + + "collapse", + + + 'titlechange', + + + 'iconchange', + + + 'iconclschange', + + + 'glyphchange', + + + 'float', + + + 'unfloat' + ); + + if (me.collapsible) { + + this.addStateEvents(['expand', 'collapse']); + } + if (me.unstyled) { + me.setUI('plain'); + } + + if (me.frame) { + me.setUI(me.ui + '-framed'); + } + + + me.bridgeToolbars(); + + me.callParent(); + me.collapseDirection = me.collapseDirection || me.headerPosition || Ext.Component.DIRECTION_TOP; + + + me.hiddenOnCollapse = new Ext.dom.CompositeElement(); + + }, + + beforeDestroy: function() { + var me = this; + Ext.destroy( + me.placeholder, + me.ghostPanel, + me.dd + ); + me.callParent(); + }, + + initAria: function() { + this.callParent(); + this.initHeaderAria(); + }, + + getFocusEl: function() { + return this.el; + }, + + initHeaderAria: function() { + var me = this, + el = me.el, + header = me.header; + if (el && header) { + el.dom.setAttribute('aria-labelledby', header.titleCmp.id); + } + }, + + + getHeader: function() { + return this.header; + }, + + + setTitle: function(newTitle) { + var me = this, + oldTitle = me.title, + header = me.header, + reExpander = me.reExpander, + placeholder = me.placeholder; + + me.title = newTitle; + + if (header) { + if (header.isHeader) { + header.setTitle(newTitle); + } else { + header.title = newTitle; + } + } else if (me.rendered) { + me.updateHeader(); + } + + if (reExpander) { + reExpander.setTitle(newTitle); + } + + if (placeholder && placeholder.setTitle) { + placeholder.setTitle(newTitle); + } + + me.fireEvent('titlechange', me, newTitle, oldTitle); + }, + + + setIconCls: function(newIconCls) { + var me = this, + oldIconCls = me.iconCls, + header = me.header, + placeholder = me.placeholder; + + me.iconCls = newIconCls; + + if (header) { + if (header.isHeader) { + header.setIconCls(newIconCls); + } else { + header.iconCls = newIconCls; + } + } else { + me.updateHeader(); + } + + if (placeholder && placeholder.setIconCls) { + placeholder.setIconCls(newIconCls); + } + + me.fireEvent('iconclschange', me, newIconCls, oldIconCls); + }, + + + setIcon: function(newIcon) { + var me = this, + oldIcon = me.icon, + header = me.header, + placeholder = me.placeholder; + + me.icon = newIcon; + + if (header) { + if (header.isHeader) { + header.setIcon(newIcon); + } else { + header.icon = newIcon; + } + } else { + me.updateHeader(); + } + + if (placeholder && placeholder.setIcon) { + placeholder.setIcon(newIcon); + } + + me.fireEvent('iconchange', me, newIcon, oldIcon); + }, + + + setGlyph: function(newGlyph) { + var me = this, + oldGlyph = me.glyph, + header = me.header, + placeholder = me.placeholder; + + me.glyph = newGlyph; + + if (header) { + if (header.isHeader) { + header.setGlyph(newGlyph); + } else { + header.glyph = newGlyph; + } + } else { + me.updateHeader(); + } + + if (placeholder && placeholder.setGlyph) { + placeholder.setIcon(newGlyph); + } + + me.fireEvent('glyphchange', me, newGlyph, oldGlyph); + }, + + bridgeToolbars: function() { + var me = this, + docked = [], + fbar, + fbarDefaults, + minButtonWidth = me.minButtonWidth; + + function initToolbar (toolbar, pos, useButtonAlign) { + if (Ext.isArray(toolbar)) { + toolbar = { + xtype: 'toolbar', + items: toolbar + }; + } + else if (!toolbar.xtype) { + toolbar.xtype = 'toolbar'; + } + toolbar.dock = pos; + if (pos == 'left' || pos == 'right') { + toolbar.vertical = true; + } + + + if (useButtonAlign) { + toolbar.layout = Ext.applyIf(toolbar.layout || {}, { + + pack: { left:'start', center:'center' }[me.buttonAlign] || 'end' + }); + } + return toolbar; + } + + + + + + + if (me.tbar) { + docked.push(initToolbar(me.tbar, 'top')); + me.tbar = null; + } + + + if (me.bbar) { + docked.push(initToolbar(me.bbar, 'bottom')); + me.bbar = null; + } + + + if (me.buttons) { + me.fbar = me.buttons; + me.buttons = null; + } + + + if (me.fbar) { + fbar = initToolbar(me.fbar, 'bottom', true); + fbar.ui = 'footer'; + + + if (minButtonWidth) { + fbarDefaults = fbar.defaults; + fbar.defaults = function(config) { + var defaults = fbarDefaults || {}; + if ((!config.xtype || config.xtype === 'button' || (config.isComponent && config.isXType('button'))) && + !('minWidth' in defaults)) { + defaults = Ext.apply({minWidth: minButtonWidth}, defaults); + } + return defaults; + }; + } + + docked.push(fbar); + me.fbar = null; + } + + + if (me.lbar) { + docked.push(initToolbar(me.lbar, 'left')); + me.lbar = null; + } + + + if (me.rbar) { + docked.push(initToolbar(me.rbar, 'right')); + me.rbar = null; + } + + if (me.dockedItems) { + if (!Ext.isArray(me.dockedItems)) { + me.dockedItems = [me.dockedItems]; + } + me.dockedItems = me.dockedItems.concat(docked); + } else { + me.dockedItems = docked; + } + }, + + isPlaceHolderCollapse: function(){ + return this.collapseMode == 'placeholder'; + }, + + onBoxReady: function(){ + this.callParent(); + if (this.collapsed) { + this.setHiddenDocked(); + } + }, + + beforeRender: function() { + var me = this, + wasCollapsed; + + me.callParent(); + + + + me.initTools(); + + + if (!(me.preventHeader || (me.header === false))) { + me.updateHeader(); + } + + + if (me.collapsed) { + if (me.isPlaceHolderCollapse()) { + if (!me.hidden) { + me.setHiddenState(true); + + + + + + me.preventCollapseFire = true; + me.placeholderCollapse(); + delete me.preventCollapseFire; + wasCollapsed = me.collapsed; + + + + + me.collapsed = false; + } + } else { + me.beginCollapse(); + me.addClsWithUI(me.collapsedCls); + } + } + + + if (wasCollapsed) { + me.collapsed = wasCollapsed; + } + }, + + + initTools: function() { + var me = this, + tools = me.tools, + i, tool; + + me.tools = []; + for (i = tools && tools.length; i; ) { + --i; + me.tools[i] = tool = tools[i]; + tool.toolOwner = me; + } + + + + if (me.collapsible && !(me.hideCollapseTool || me.header === false || me.preventHeader)) { + me.collapseDirection = me.collapseDirection || me.headerPosition || 'top'; + me.collapseTool = me.expandTool = Ext.widget({ + xtype: 'tool', + handler: me.toggleCollapse, + scope: me + }); + + me.updateCollapseTool(); + + if (me.collapseFirst) { + me.tools.unshift(me.collapseTool); + } + } + + + me.addTools(); + + + if (me.closable) { + me.addClsWithUI('closable'); + me.addTool(Ext.widget({ + xtype : 'tool', + type: 'close', + handler: Ext.Function.bind(me.close, me, []) + })); + } + + + if (me.collapseTool && !me.collapseFirst) { + me.addTool(me.collapseTool); + } + }, + + + addTools: Ext.emptyFn, + + updateCollapseTool: function () { + var me = this, + collapseTool = me.collapseTool; + + if (collapseTool) { + if (me.collapsed && !me.isPlaceHolderCollapse()) { + collapseTool.setType('expand-' + me.getOppositeDirection(me.collapseDirection)); + } else { + collapseTool.setType('collapse-' + me.collapseDirection); + } + } + }, + + + close: function() { + if (this.fireEvent('beforeclose', this) !== false) { + this.doClose(); + } + }, + + + doClose: function() { + this.fireEvent('close', this); + this[this.closeAction](); + }, + + + updateHeader: function(force) { + var me = this, + header = me.header, + title = me.title, + tools = me.tools, + icon = me.icon || me.iconCls, + vertical = me.headerPosition === 'left' || me.headerPosition === 'right'; + + if (Ext.isObject(header) || (header !== false && (force || (title || icon) || (tools && tools.length) || (me.collapsible && !me.titleCollapse)))) { + if (header && header.isHeader) { + header.show(); + } else { + + header = me.header = Ext.widget(Ext.apply({ + xtype : 'header', + title : title, + titleAlign : me.titleAlign, + orientation : vertical ? 'vertical' : 'horizontal', + dock : me.headerPosition || 'top', + textCls : me.headerTextCls, + iconCls : me.iconCls, + icon : me.icon, + glyph : me.glyph, + baseCls : me.baseCls + '-header', + tools : tools, + ui : me.ui, + id : me.id + '_header', + overCls: me.headerOverCls, + indicateDrag: me.draggable, + frame : (me.frame || me.alwaysFramed) && me.frameHeader, + ignoreParentFrame : me.frame || me.overlapHeader, + ignoreBorderManagement: me.frame || me.ignoreHeaderBorderManagement, + ownerCt : me, + listeners : me.collapsible && me.titleCollapse ? { + click: me.toggleCollapse, + scope: me + } : null + }, me.header)); + + + + me.addDocked(header, 0); + } + me.initHeaderAria(); + } else if (header) { + header.hide(); + } + }, + + + setUI: function(ui) { + var me = this; + + me.callParent(arguments); + + if (me.header && me.header.rendered) { + me.header.setUI(ui); + } + }, + + + getDefaultContentTarget: function() { + return this.body; + }, + + getTargetEl: function() { + var me = this; + return me.body || me.protoBody || me.frameBody || me.el; + }, + + + + + isVisible: function(deep){ + var me = this; + if (me.collapsed && me.placeholder) { + return me.placeholder.isVisible(deep); + } + return me.callParent(arguments); + }, + + + onHide: function() { + var me = this; + if (me.collapsed && me.placeholder) { + me.placeholder.hide(); + } else { + me.callParent(arguments); + } + }, + + + onShow: function() { + var me = this; + if (me.collapsed && me.isPlaceHolderCollapse()) { + + me.setHiddenState(true); + me.placeholderCollapse(); + } else { + me.callParent(arguments); + } + }, + + onRemoved: function(destroying) { + var me = this; + + + + + if (me.placeholder && !destroying) { + me.ownerCt.remove(me.placeholder, false); + } + + me.callParent(arguments); + }, + + + addTool: function(tools) { + if (!Ext.isArray(tools)) { + tools = [tools]; + } + + var me = this, + header = me.header, + t, + tLen = tools.length, + tool; + + for (t = 0; t < tLen; t++) { + tool = tools[t]; + tool.toolOwner = me; + + if (header && header.isHeader) { + header.addTool(tool); + } else { + + + me.tools.push(tool); + } + } + + me.updateHeader(); + }, + + getOppositeDirection: function(d) { + var c = Ext.Component; + switch (d) { + case c.DIRECTION_TOP: + return c.DIRECTION_BOTTOM; + case c.DIRECTION_RIGHT: + return c.DIRECTION_LEFT; + case c.DIRECTION_BOTTOM: + return c.DIRECTION_TOP; + case c.DIRECTION_LEFT: + return c.DIRECTION_RIGHT; + } + }, + + getWidthAuthority: function() { + if (this.collapsed && this.collapsedHorizontal()) { + return 1; + } + + return this.callParent(); + }, + + getHeightAuthority: function() { + if (this.collapsed && this.collapsedVertical()) { + return 1; + } + + return this.callParent(); + }, + + collapsedHorizontal: function () { + var dir = this.getCollapsed(); + return dir === 'left' || dir === 'right'; + }, + + collapsedVertical: function () { + var dir = this.getCollapsed(); + return dir === 'top' || dir === 'bottom'; + }, + + restoreDimension: function(){ + var dir = this.collapseDirection; + + + return (dir === 'top' || dir === 'bottom') ? 'height' : 'width'; + }, + + + getCollapsed: function() { + var me = this; + + + if (me.collapsed === true) { + return me.collapseDirection; + } + return me.collapsed; + }, + + getState: function() { + var me = this, + state = me.callParent(), + memento; + + state = me.addPropertyToState(state, 'collapsed'); + + + if (me.collapsed) { + memento = me.collapseMemento; + memento = memento && memento.data; + + if (me.collapsedVertical()) { + if (state) { + delete state.height; + } + if (memento) { + state = me.addPropertyToState(state, 'height', memento.height); + } + } else { + if (state) { + delete state.width; + } + if (memento) { + state = me.addPropertyToState(state, 'width', memento.width); + } + } + } + + return state; + }, + + findReExpander: function (direction) { + var me = this, + c = Ext.Component, + dockedItems = me.dockedItems.items, + dockedItemCount = dockedItems.length, + comp, i; + + + if (me.collapseMode === 'mini') { + return; + } + + switch (direction) { + case c.DIRECTION_TOP: + case c.DIRECTION_BOTTOM: + + + + for (i = 0; i < dockedItemCount; i++) { + comp = dockedItems[i]; + if (!comp.hidden) { + if (comp.isHeader && (!comp.dock || comp.dock === 'top' || comp.dock === 'bottom')) { + return comp; + } + } + } + break; + + case c.DIRECTION_LEFT: + case c.DIRECTION_RIGHT: + + + + for (i = 0; i < dockedItemCount; i++) { + comp = dockedItems[i]; + if (!comp.hidden) { + if (comp.isHeader && (comp.dock === 'left' || comp.dock === 'right')) { + return comp; + } + } + } + break; + + default: + throw('Panel#findReExpander must be passed a valid collapseDirection'); + } + }, + + getReExpander: function (direction) { + var me = this, + collapseDir = direction || me.collapseDirection, + reExpander = me.reExpander || me.findReExpander(collapseDir); + + me.expandDirection = me.getOppositeDirection(collapseDir); + + if (!reExpander) { + + me.reExpander = reExpander = me.createReExpander(collapseDir, { + dock: collapseDir, + cls: Ext.baseCSSPrefix + 'docked ' + me.baseCls + '-' + me.ui + '-collapsed', + isCollapsedExpander: true + }); + + me.dockedItems.insert(0, reExpander); + } + return reExpander; + }, + + createReExpander: function(direction, defaults) { + var me = this, + isLeft = direction === 'left', + isRight = direction === 'right', + isVertical = isLeft || isRight, + result = Ext.apply({ + hideMode: 'offsets', + title: me.title || ' ', + titleAlign: me.titleAlign, + orientation: isVertical ? 'vertical' : 'horizontal', + textCls: me.headerTextCls, + icon: me.icon, + iconCls: me.iconCls, + glyph: me.glyph, + baseCls: me.self.prototype.baseCls + '-header', + ui: me.ui, + frame: me.frame && me.frameHeader, + ignoreParentFrame: me.frame || me.overlapHeader, + indicateDrag: me.draggable, + collapseImmune: true, + ownerCt: me.ownerCt, + ownerLayout: me.componentLayout, + margin: me.margin + }, defaults); + + + + if (me.collapseMode === 'mini') { + if (isVertical) { + result.width = 1; + } else { + result.height = 1; + } + } + + + + + if (!me.hideCollapseTool) { + if (isLeft || (isRight && me.isPlaceHolderCollapse())) { + + + result.titlePosition = 1; + } + result.tools = [{ + xtype: 'tool', + type: 'expand-' + me.getOppositeDirection(direction), + uiCls: ['top'], + handler: me.toggleCollapse, + scope: me + }]; + } + result = new Ext.panel.Header(result); + result.addClsWithUI(me.getHeaderCollapsedClasses(result)); + return result; + }, + + + + getHeaderCollapsedClasses: function(header) { + var me = this, + collapsedCls = me.collapsedCls, + collapsedClasses; + + collapsedClasses = [ collapsedCls, collapsedCls + '-' + header.getDockName()]; + if (me.border && (!me.frame || (me.frame && Ext.supports.CSS3BorderRadius))) { + collapsedClasses.push(collapsedCls + '-border-' + header.getDockName()); + } + return collapsedClasses; + }, + + + beginCollapse: function() { + var me = this, + lastBox = me.lastBox, + rendered = me.rendered, + collapseMemento = me.collapseMemento || (me.collapseMemento = new Ext.util.Memento(me)), + sizeModel = me.getSizeModel(), + header = me.header, + reExpander; + + + + + + + + + + + + + collapseMemento.capture(['height', 'minHeight', 'width', 'minWidth']); + if (lastBox) { + collapseMemento.capture(me.restoreDimension(), lastBox, 'last.'); + } + + + + + + if (me.collapsedVertical()) { + if (sizeModel.width.shrinkWrap) { + me.width = rendered ? me.getWidth() : me.width || me.minWidth || 100; + } + delete me.height; + me.minHeight = 0; + } else if (me.collapsedHorizontal()) { + if (sizeModel.height.shrinkWrap) { + me.height = rendered ? me.getHeight() : me.height || me.minHeight || 100; + } + delete me.width; + me.minWidth = 0; + } + + if (me.ownerCt) { + me.ownerCt.getLayout().beginCollapse(me); + } + + + + if (!me.isPlaceHolderCollapse() && header !== false) { + if (header === (reExpander = me.getReExpander())) { + header.collapseImmune = true; + header.getHierarchyState().collapseImmune = true; + header.addClsWithUI(me.getHeaderCollapsedClasses(header)); + + + if (header.rendered) { + header.updateFrame(); + } + } else if (reExpander.el) { + + reExpander.el.show(); + reExpander.hidden = false; + } + } + if (me.resizer) { + me.resizer.disable(); + } + }, + + beginExpand: function() { + var me = this, + lastBox = me.lastBox, + collapseMemento = me.collapseMemento, + restoreDimension = this.restoreDimension(), + header = me.header, + reExpander; + + if (collapseMemento) { + collapseMemento.restore(['minHeight', 'minWidth', restoreDimension]); + if (lastBox) { + collapseMemento.restore(restoreDimension, true, lastBox, 'last.'); + } + } + + if (me.ownerCt) { + me.ownerCt.getLayout().beginExpand(me); + } + + if (!me.isPlaceHolderCollapse() && header !== false) { + + if (header === (reExpander = me.getReExpander())) { + delete header.collapseImmune; + delete header.getHierarchyState().collapseImmune; + header.removeClsWithUI(me.getHeaderCollapsedClasses(header)); + + + if (header.rendered) { + header.expanding = true; + header.updateFrame(); + delete header.expanding; + } + } else { + + reExpander.hidden = true; + reExpander.el.hide(); + } + } + if (me.resizer) { + me.resizer.enable(); + } + }, + + + collapse: function(direction, animate) { + var me = this, + collapseDir = direction || me.collapseDirection, + ownerCt = me.ownerCt; + + if (me.isCollapsingOrExpanding) { + return me; + } + + if (arguments.length < 2) { + animate = me.animCollapse; + } + + if (me.collapsed || me.fireEvent('beforecollapse', me, direction, animate) === false) { + return me; + } + + if (ownerCt && me.isPlaceHolderCollapse()) { + return me.placeholderCollapse(direction, animate); + } + + me.collapsed = collapseDir; + me.beginCollapse(); + + me.getHierarchyState().collapsed = true; + me.fireHierarchyEvent('collapse'); + + return me.doCollapseExpand(1, animate); + }, + + doCollapseExpand: function (flags, animate) { + var me = this, + originalAnimCollapse = me.animCollapse, + ownerLayout = me.ownerLayout; + + + + me.animCollapse = animate; + + + + me.isCollapsingOrExpanding = flags; + + + + if (animate) { + me.addCls(Ext.baseCSSPrefix + 'animating-size'); + } + + if (ownerLayout && !animate) { + ownerLayout.onContentChange(me); + } else { + me.updateLayout({ isRoot: true }); + } + + + me.animCollapse = originalAnimCollapse; + + return me; + }, + + + afterCollapse: function(animated) { + var me = this, + ownerLayout = me.ownerLayout; + + me.isCollapsingOrExpanding = 0; + me.updateCollapseTool(); + + + + if (animated) { + me.removeCls(Ext.baseCSSPrefix + 'animating-size'); + } + + if (ownerLayout && animated) { + ownerLayout.onContentChange(me); + } + + me.setHiddenDocked(); + me.fireEvent('collapse', me); + }, + + setHiddenDocked: function(){ + + + var me = this, + toHide = me.hiddenOnCollapse, + items = me.getDockedItems(), + len = items.length, + i = 0, + item, reExpander; + + if (me.header !== false) { + reExpander = me.getReExpander(); + } + + toHide.add(me.body); + for (; i < len; i++) { + item = items[i]; + if (item && item !== reExpander && item.el) { + toHide.add(item.el); + } + } + toHide.setStyle('visibility', 'hidden'); + }, + + restoreHiddenDocked: function(){ + var toShow = this.hiddenOnCollapse; + + toShow.setStyle('visibility', ''); + toShow.clear(); + }, + + getPlaceholder: function(direction) { + var me = this, + collapseDir = direction || me.collapseDirection, + listeners = null, + placeholder = me.placeholder, + floatable = me.floatable, + titleCollapse = me.titleCollapse; + + if (!placeholder) { + if (floatable || (me.collapsible && titleCollapse)) { + listeners = { + click: { + + fn: (!titleCollapse && floatable) ? me.floatCollapsedPanel : me.toggleCollapse, + element: 'el', + scope: me + } + }; + } + + me.placeholder = placeholder = Ext.widget(me.createReExpander(collapseDir, { + id: me.id + '-placeholder', + listeners: listeners + })); + } + + + if (!placeholder.placeholderFor) { + + if (!placeholder.isComponent) { + me.placeholder = placeholder = me.lookupComponent(placeholder); + } + Ext.applyIf(placeholder, { + margins: me.margins, + placeholderFor: me + }); + + placeholder.addCls([Ext.baseCSSPrefix + 'region-collapsed-placeholder', Ext.baseCSSPrefix + 'region-collapsed-' + collapseDir + '-placeholder', me.collapsedCls]); + } + + return placeholder; + }, + + placeholderCollapse: function(direction, animate) { + var me = this, + ownerCt = me.ownerCt, + collapseDir = direction || me.collapseDirection, + floatCls = Ext.baseCSSPrefix + 'border-region-slide-in', + placeholder = me.getPlaceholder(collapseDir), + slideInDirection; + + me.isCollapsingOrExpanding = 1; + + + me.setHiddenState(true); + me.collapsed = collapseDir; + + if (placeholder.rendered) { + + if (placeholder.el.dom.parentNode !== me.el.dom.parentNode) { + me.el.dom.parentNode.insertBefore(placeholder.el.dom, me.el.dom); + } + + placeholder.hidden = false; + placeholder.el.show(); + ownerCt.updateLayout(); + } else { + ownerCt.insert(ownerCt.items.indexOf(me), placeholder); + } + + if (me.rendered) { + + me.el.setVisibilityMode(me.placeholderCollapseHideMode); + if (animate) { + me.el.addCls(floatCls); + placeholder.el.hide(); + slideInDirection = me.convertCollapseDir(collapseDir); + + me.el.slideOut(slideInDirection, { + preserveScroll: true, + duration: Ext.Number.from(animate, Ext.fx.Anim.prototype.duration), + listeners: { + afteranimate: function() { + me.el.removeCls(floatCls); + + placeholder.el.show().setStyle('display', 'none').slideIn(slideInDirection, { + easing: 'linear', + duration: 100, + listeners: { + afteranimate: function() { + placeholder.focus(); + me.isCollapsingOrExpanding = 0; + me.fireEvent('collapse', me); + } + } + }); + } + } + }); + } else { + me.el.hide(); + me.isCollapsingOrExpanding = 0; + me.fireEvent('collapse', me); + } + } else { + me.isCollapsingOrExpanding = 0; + if (!me.preventCollapseFire) { + me.fireEvent('collapse', me); + } + } + + return me; + }, + + floatCollapsedPanel: function() { + var me = this, + placeholder = me.placeholder, + ps = placeholder.getSize(), + myBox, + floatCls = Ext.baseCSSPrefix + 'border-region-slide-in', + collapsed = me.collapsed, + layoutOwner = me.ownerCt || me, + slideDirection; + + if (me.isSliding) { + return; + } + + + if (me.el.hasCls(floatCls)) { + me.slideOutFloatedPanel(); + return; + } + me.isSliding = true; + + + placeholder.el.hide(); + placeholder.hidden = true; + me.el.show(); + me.setHiddenState(false); + me.collapsed = false; + layoutOwner.updateLayout(); + myBox = me.getBox(false, true); + + + placeholder.el.show(); + placeholder.hidden = false; + me.el.hide(); + me.setHiddenState(true); + me.collapsed = collapsed; + layoutOwner.updateLayout(); + + me.slideOutTask = me.slideOutTask || new Ext.util.DelayedTask(me.slideOutFloatedPanel, me); + placeholder.el.on('mouseleave', me.onMouseLeaveFloated, me); + me.el.on('mouseleave', me.onMouseLeaveFloated, me); + placeholder.el.on('mouseenter', me.onMouseEnterFloated, me); + me.el.on('mouseenter', me.onMouseEnterFloated, me); + + me.el.addCls(floatCls); + me.floated = true; + + + if (me.collapseTool) { + me.collapseTool.el.hide(); + } + + switch (me.collapsed) { + case 'top': + me.setLocalXY(myBox.x, myBox.y + ps.height - 1); + break; + case 'right': + me.setLocalXY(myBox.x - ps.width + 1, myBox.y); + break; + case 'bottom': + me.setLocalXY(myBox.x, myBox.y - ps.height + 1); + break; + case 'left': + me.setLocalXY(myBox.x + ps.width - 1, myBox.y); + break; + } + slideDirection = me.convertCollapseDir(me.collapsed); + + + + me.floatedFromCollapse = me.collapsed; + me.collapsed = false; + me.setHiddenState(false); + + me.el.slideIn(slideDirection, { + preserveScroll: true, + duration: Ext.Number.from(me.animCollapse, Ext.fx.Anim.prototype.duration), + listeners: { + afteranimate: function() { + me.isSliding = false; + me.fireEvent('float', me); + } + } + }); + }, + + onMouseLeaveFloated: function(e) { + this.slideOutTask.delay(500); + }, + + onMouseEnterFloated: function(e) { + this.slideOutTask.cancel(); + }, + + isLayoutRoot: function() { + if (this.floatedFromCollapse) { + return true; + } + return this.callParent(); + }, + + slideOutFloatedPanel: function() { + var me = this, + compEl = this.el, + collapseDirection; + + if (me.isSliding || me.isDestroyed) { + return; + } + + me.isSliding = true; + me.floated = false; + + me.slideOutFloatedPanelBegin(); + + if (typeof me.collapsed == 'string') { + collapseDirection = me.convertCollapseDir(me.collapsed); + } + + compEl.slideOut(collapseDirection, { + preserveScroll: true, + duration: Ext.Number.from(me.animCollapse, Ext.fx.Anim.prototype.duration), + listeners: { + afteranimate: function() { + me.slideOutFloatedPanelEnd(); + + + me.el.removeCls(Ext.baseCSSPrefix + 'border-region-slide-in'); + } + } + }); + }, + + + slideOutFloatedPanelBegin: function() { + var me = this, + placeholderEl = me.placeholder.el, + el = me.el; + + me.collapsed = me.floatedFromCollapse; + me.setHiddenState(true); + me.floatedFromCollapse = null; + + + placeholderEl.un('mouseleave', me.onMouseLeaveFloated, me); + el.un('mouseleave', me.onMouseLeaveFloated, me); + placeholderEl.un('mouseenter', me.onMouseEnterFloated, me); + el.un('mouseenter', me.onMouseEnterFloated, me); + }, + + + slideOutFloatedPanelEnd: function() { + var me = this; + + if (me.collapseTool) { + me.collapseTool.el.show(); + } + me.slideOutTask.cancel(); + me.isSliding = false; + me.fireEvent('unfloat', me); + }, + + + expand: function(animate) { + var me = this; + + if (me.isCollapsingOrExpanding) { + return me; + } + + if (!arguments.length) { + animate = me.animCollapse; + } + + if (!me.collapsed && !me.floatedFromCollapse) { + return me; + } + + if (me.fireEvent('beforeexpand', me, animate) === false) { + return me; + } + + delete this.getHierarchyState().collapsed; + + if (me.isPlaceHolderCollapse()) { + return me.placeholderExpand(animate); + } + + me.restoreHiddenDocked(); + me.beginExpand(); + me.collapsed = false; + + return me.doCollapseExpand(2, animate); + }, + + placeholderExpand: function(animate) { + var me = this, + collapseDir = me.collapsed, + floatCls = Ext.baseCSSPrefix + 'border-region-slide-in', + finalPos, + floatedPos, + center = me.ownerLayout ? me.ownerLayout.centerRegion: null; + + + if (Ext.AbstractComponent.layoutSuspendCount) { + animate = false; + } + + if (me.floatedFromCollapse) { + floatedPos = me.getPosition(true); + + me.slideOutFloatedPanelBegin(); + me.slideOutFloatedPanelEnd(); + me.floated = false; + } + + if (animate) { + + + Ext.suspendLayouts(); + me.placeholder.hide(); + me.el.show(); + me.collapsed = false; + me.setHiddenState(false); + + + + if (center && !floatedPos) { + center.hidden = true; + } + + Ext.resumeLayouts(true); + center.hidden = false; + me.el.addCls(floatCls); + + + + + + + + + + + + + me.isCollapsingOrExpanding = 2; + + + if (floatedPos) { + finalPos = me.getXY(); + me.setLocalXY(floatedPos[0], floatedPos[1]); + me.setXY([finalPos[0], finalPos[1]], { + duration: Ext.Number.from(animate, Ext.fx.Anim.prototype.duration), + listeners: { + afteranimate: function() { + me.el.removeCls(floatCls); + me.isCollapsingOrExpanding = 0; + me.fireEvent('expand', me); + } + } + }); + } + + else { + me.el.hide(); + me.placeholder.el.show(); + me.placeholder.hidden = false; + + + me.setHiddenState(false); + me.el.slideIn(me.convertCollapseDir(collapseDir), { + preserveScroll: true, + duration: Ext.Number.from(animate, Ext.fx.Anim.prototype.duration), + listeners: { + afteranimate: function() { + + + + + + me.el.removeCls(floatCls); + me.placeholder.hide(); + + + me.updateLayout(); + + me.isCollapsingOrExpanding = 0; + me.fireEvent('expand', me); + } + } + }); + } + + } else { + me.floated = me.collapsed = false; + me.el.removeCls(floatCls); + Ext.suspendLayouts(); + me.placeholder.hide(); + me.show(); + Ext.resumeLayouts(true); + me.fireEvent('expand', me); + } + + return me; + }, + + + afterExpand: function(animated) { + var me = this, + ownerLayout = me.ownerLayout; + + me.isCollapsingOrExpanding = 0; + me.updateCollapseTool(); + + + + if (animated) { + me.removeCls(Ext.baseCSSPrefix + 'animating-size'); + } + + if (ownerLayout && animated) { + ownerLayout.onContentChange(me); + } + + me.fireEvent('expand', me); + me.fireHierarchyEvent('expand'); + }, + + + setBorder: function(border, targetEl) { + if (targetEl) { + + return; + } + + var me = this, + header = me.header; + + if (!border) { + border = 0; + } else if (border === true) { + border = '1px'; + } else { + border = me.unitizeBox(border); + } + + if (header) { + if (header.isHeader) { + header.setBorder(border); + } else { + header.border = border; + } + } + + if (me.rendered && me.bodyBorder !== false) { + me.body.setStyle('border-width', border); + } + me.updateLayout(); + + me.border = border; + }, + + + toggleCollapse: function() { + return (this.collapsed || this.floatedFromCollapse) ? this.expand() : this.collapse(); + }, + + + getKeyMap : function() { + return this.keyMap || (this.keyMap = new Ext.util.KeyMap(Ext.apply({ + target: this.el + }, this.keys))); + }, + + + initDraggable : function() { + + + if (this.simpleDrag) { + this.initSimpleDraggable(); + } + + else { + + this.dd = new Ext.panel.DD(this, Ext.isBoolean(this.draggable) ? null : this.draggable); + } + }, + + + initSimpleDraggable: function() { + var me = this, + ddConfig, dd; + + if (!me.header) { + me.updateHeader(true); + } + + + if (me.header) { + ddConfig = Ext.applyIf({ + el: me.el, + delegate: '#' + Ext.escapeId(me.header.id) + }, me.draggable); + + + if (me.constrain || me.constrainHeader) { + ddConfig.constrain = me.constrain; + ddConfig.constrainDelegate = me.constrainHeader; + ddConfig.constrainTo = me.constrainTo || me.container; + } + + dd = me.dd = new Ext.util.ComponentDragger(this, ddConfig); + me.relayEvents(dd, ['dragstart', 'drag', 'dragend']); + if (me.maximized) { + dd.disable(); + } + } + }, + + + + ghostTools : function() { + var tools = [], + header = this.header, + headerTools = header ? header.query('tool[hidden=false]') : [], + t, tLen, tool; + + if (headerTools.length) { + t = 0; + tLen = headerTools.length; + + for (; t < tLen; t++) { + tool = headerTools[t]; + + + + + + tools.push({ + type: tool.type + }); + } + } else { + tools = [{ + type: 'placeholder' + }]; + } + return tools; + }, + + + + ghost: function(cls) { + var me = this, + ghostPanel = me.ghostPanel, + box = me.getBox(), + header; + + if (!ghostPanel) { + ghostPanel = new Ext.panel.Panel({ + renderTo: Ext.getBody(), + floating: { + shadow: false + }, + frame: me.frame && !me.alwaysFramed, + alwaysFramed: me.alwaysFramed, + overlapHeader: me.overlapHeader, + headerPosition: me.headerPosition, + baseCls: me.baseCls, + cls: me.baseCls + '-ghost ' + (cls ||'') + }); + me.ghostPanel = ghostPanel; + } else { + ghostPanel.el.show(); + } + me.ghostPanel.hidden = false; + ghostPanel.floatParent = me.floatParent; + if (me.floating) { + ghostPanel.zIndexManager.assignZIndices(); + } else { + ghostPanel.toFront(); + } + if (!(me.preventHeader || (me.header === false))) { + header = ghostPanel.header; + + if (header) { + header.suspendLayouts(); + Ext.Array.forEach(header.query('tool'), header.remove, header); + header.resumeLayouts(); + } + ghostPanel.addTool(me.ghostTools()); + ghostPanel.setTitle(me.title); + + if (me.iconCls) { + ghostPanel.setIconCls(me.iconCls); + } else if (me.icon) { + ghostPanel.setIcon(me.icon); + } else if (me.glyph) { + ghostPanel.setGlyph(me.glyph); + } + + ghostPanel.header.addCls(Ext.baseCSSPrefix + 'header-ghost'); + } + + ghostPanel.setPagePosition(box.x, box.y); + ghostPanel.setSize(box.width, box.height); + me.el.hide(); + return ghostPanel; + }, + + + unghost: function(show, matchPosition) { + var me = this; + if (!me.ghostPanel) { + return; + } + if (show !== false) { + + + me.el.show(); + if (matchPosition !== false) { + me.setPagePosition(me.ghostPanel.getXY()); + if (me.hideMode == 'offsets') { + + delete me.el.hideModeStyles; + } + } + Ext.defer(me.focus, 10, me); + } + me.ghostPanel.el.hide(); + me.ghostPanel.hidden = true; + }, + + beginDrag: function() { + if (this.floatingDescendants) { + this.floatingDescendants.hide(); + } + }, + + endDrag: function() { + if (this.floatingDescendants) { + this.floatingDescendants.show(); + } + }, + + initResizable: function() { + this.callParent(arguments); + if (this.collapsed) { + this.resizer.disable(); + } + }, + + + convertCollapseDir: function(collapseDir) { + return collapseDir.substr(0, 1); + } +}, function() { + this.prototype.animCollapse = Ext.enableFx; +}); + + +Ext.define('Ext.tip.Tip', { + extend: Ext.panel.Panel , + + alternateClassName: 'Ext.Tip', + + + + + + + minWidth : 40, + + maxWidth : 500, + + shadow : "sides", + + + defaultAlign : "tl-bl?", + + constrainPosition : true, + + + autoRender: true, + hidden: true, + baseCls: Ext.baseCSSPrefix + 'tip', + floating: { + shadow: true, + shim: true + }, + focusOnToFront: false, + + + closeAction: 'hide', + + ariaRole: 'tooltip', + + + alwaysFramed: true, + + frameHeader: false, + + initComponent: function() { + var me = this; + + me.floating = Ext.apply( {}, { + shadow: me.shadow, + constrain: me.constrainPosition + }, me.self.prototype.floating); + me.callParent(arguments); + + + me.constrain = me.constrain || me.constrainPosition; + }, + + + showAt : function(xy){ + var me = this; + this.callParent(arguments); + + if (me.isVisible()) { + me.setPagePosition(xy[0], xy[1]); + if (me.constrainPosition || me.constrain) { + me.doConstrain(); + } + me.toFront(true); + } + }, + + + initDraggable : function(){ + var me = this; + me.draggable = { + el: me.getDragEl(), + delegate: me.header.el, + constrain: me, + constrainTo: me.el.dom.parentNode + }; + + Ext.Component.prototype.initDraggable.call(me); + }, + + + ghost: undefined, + unghost: undefined +}); + + +Ext.define('Ext.tip.ToolTip', { + extend: Ext.tip.Tip , + alias: 'widget.tooltip', + alternateClassName: 'Ext.ToolTip', + + + + autoHide: true, + + + showDelay: 500, + + hideDelay: 200, + + dismissDelay: 5000, + + + trackMouse: false, + + + anchorToTarget: true, + + anchorOffset: 0, + + + + targetCounter: 0, + quickShowInterval: 250, + + + initComponent: function() { + var me = this; + me.callParent(arguments); + me.lastActive = new Date(); + me.setTarget(me.target); + me.origAnchor = me.anchor; + }, + + + onRender: function(ct, position) { + var me = this; + me.callParent(arguments); + me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition(); + me.anchorEl = me.el.createChild({ + cls: Ext.baseCSSPrefix + 'tip-anchor ' + me.anchorCls + }); + }, + + + setTarget: function(target) { + var me = this, + t = Ext.get(target), + tg; + + if (me.target) { + tg = Ext.get(me.target); + me.mun(tg, 'mouseover', me.onTargetOver, me); + me.mun(tg, 'mouseout', me.onTargetOut, me); + me.mun(tg, 'mousemove', me.onMouseMove, me); + } + + me.target = t; + if (t) { + + me.mon(t, { + + + freezeEvent: true, + + mouseover: me.onTargetOver, + mouseout: me.onTargetOut, + mousemove: me.onMouseMove, + scope: me + }); + } + if (me.anchor) { + me.anchorTarget = me.target; + } + }, + + + onMouseMove: function(e) { + var me = this, + t = me.delegate ? e.getTarget(me.delegate) : me.triggerElement = true, + xy; + if (t) { + me.targetXY = e.getXY(); + if (t === me.triggerElement) { + if (!me.hidden && me.trackMouse) { + xy = me.getTargetXY(); + if (me.constrainPosition) { + xy = me.el.adjustForConstraints(xy, me.el.parent()); + } + me.setPagePosition(xy); + } + } else { + me.hide(); + me.lastActive = new Date(0); + me.onTargetOver(e); + } + } else if ((!me.closable && me.isVisible()) && me.autoHide !== false) { + me.hide(); + } + }, + + + getTargetXY: function() { + var me = this, + mouseOffset, + offsets, xy, dw, dh, de, bd, scrollX, scrollY, axy, sz, constrainPosition; + if (me.delegate) { + me.anchorTarget = me.triggerElement; + } + if (me.anchor) { + me.targetCounter++; + offsets = me.getOffsets(); + xy = (me.anchorToTarget && !me.trackMouse) ? me.getAlignToXY(me.anchorTarget, me.getAnchorAlign()) : me.targetXY; + dw = Ext.Element.getViewWidth() - 5; + dh = Ext.Element.getViewHeight() - 5; + de = document.documentElement; + bd = document.body; + scrollX = (de.scrollLeft || bd.scrollLeft || 0) + 5; + scrollY = (de.scrollTop || bd.scrollTop || 0) + 5; + axy = [xy[0] + offsets[0], xy[1] + offsets[1]]; + sz = me.getSize(); + constrainPosition = me.constrainPosition; + + me.anchorEl.removeCls(me.anchorCls); + + if (me.targetCounter < 2 && constrainPosition) { + if (axy[0] < scrollX) { + if (me.anchorToTarget) { + me.defaultAlign = 'l-r'; + if (me.mouseOffset) { + me.mouseOffset[0] *= -1; + } + } + me.anchor = 'left'; + return me.getTargetXY(); + } + if (axy[0] + sz.width > dw) { + if (me.anchorToTarget) { + me.defaultAlign = 'r-l'; + if (me.mouseOffset) { + me.mouseOffset[0] *= -1; + } + } + me.anchor = 'right'; + return me.getTargetXY(); + } + if (axy[1] < scrollY) { + if (me.anchorToTarget) { + me.defaultAlign = 't-b'; + if (me.mouseOffset) { + me.mouseOffset[1] *= -1; + } + } + me.anchor = 'top'; + return me.getTargetXY(); + } + if (axy[1] + sz.height > dh) { + if (me.anchorToTarget) { + me.defaultAlign = 'b-t'; + if (me.mouseOffset) { + me.mouseOffset[1] *= -1; + } + } + me.anchor = 'bottom'; + return me.getTargetXY(); + } + } + + me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition(); + me.anchorEl.addCls(me.anchorCls); + me.targetCounter = 0; + return axy; + } else { + mouseOffset = me.getMouseOffset(); + return (me.targetXY) ? [me.targetXY[0] + mouseOffset[0], me.targetXY[1] + mouseOffset[1]] : mouseOffset; + } + }, + + getMouseOffset: function() { + var me = this, + offset = me.anchor ? [0, 0] : [15, 18]; + if (me.mouseOffset) { + offset[0] += me.mouseOffset[0]; + offset[1] += me.mouseOffset[1]; + } + return offset; + }, + + + getAnchorPosition: function() { + var me = this, + m; + if (me.anchor) { + me.tipAnchor = me.anchor.charAt(0); + } else { + m = me.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/); + me.tipAnchor = m[1].charAt(0); + } + + switch (me.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 me = this, + mouseOffset, + offsets, + ap = me.getAnchorPosition().charAt(0); + if (me.anchorToTarget && !me.trackMouse) { + switch (ap) { + case 't': + offsets = [0, 9]; + break; + case 'b': + offsets = [0, -13]; + break; + case 'r': + offsets = [ - 13, 0]; + break; + default: + offsets = [9, 0]; + break; + } + } else { + switch (ap) { + case 't': + offsets = [ - 15 - me.anchorOffset, 30]; + break; + case 'b': + offsets = [ - 19 - me.anchorOffset, -13 - me.el.dom.offsetHeight]; + break; + case 'r': + offsets = [ - 15 - me.el.dom.offsetWidth, -13 - me.anchorOffset]; + break; + default: + offsets = [25, -13 - me.anchorOffset]; + break; + } + } + mouseOffset = me.getMouseOffset(); + offsets[0] += mouseOffset[0]; + offsets[1] += mouseOffset[1]; + + return offsets; + }, + + + onTargetOver: function(e) { + var me = this, + delegate = me.delegate, + t; + + if (me.disabled || e.within(me.target.dom, true)) { + return; + } + t = delegate ? e.getTarget(delegate) : true; + if (t) { + me.triggerElement = t; + me.triggerEvent = e; + me.clearTimer('hide'); + me.targetXY = e.getXY(); + me.delayShow(); + } + }, + + + delayShow: function() { + var me = this; + if (me.hidden && !me.showTimer) { + if (Ext.Date.getElapsed(me.lastActive) < me.quickShowInterval) { + me.show(); + } else { + me.showTimer = Ext.defer(me.showFromDelay, me.showDelay, me); + } + } + else if (!me.hidden && me.autoHide !== false) { + me.show(); + } + }, + + showFromDelay: function(){ + this.fromDelayShow = true; + this.show(); + delete this.fromDelayShow; + }, + + onShowVeto: function(){ + this.callParent(); + delete this.triggerElement; + this.clearTimer('show'); + }, + + + onTargetOut: function(e) { + var me = this, + triggerEl = me.triggerElement, + + + target = triggerEl === true ? me.target : triggerEl; + + + + if (me.disabled || !triggerEl || e.within(target, true)) { + return; + } + if (me.showTimer) { + me.clearTimer('show'); + me.triggerElement = null; + } + if (me.autoHide !== false) { + me.delayHide(); + } + }, + + + delayHide: function() { + var me = this; + if (!me.hidden && !me.hideTimer) { + me.hideTimer = Ext.defer(me.hide, me.hideDelay, me); + } + }, + + + hide: function() { + var me = this; + me.clearTimer('dismiss'); + me.lastActive = new Date(); + if (me.anchorEl) { + me.anchorEl.hide(); + } + me.callParent(arguments); + delete me.triggerElement; + }, + + + show: function() { + var me = this; + + + + this.callParent(); + if (this.hidden === false) { + me.setPagePosition(-10000, -10000); + + if (me.anchor) { + me.anchor = me.origAnchor; + } + + if (!me.calledFromShowAt) { + me.showAt(me.getTargetXY()); + } + + if (me.anchor) { + me.syncAnchor(); + me.anchorEl.show(); + } else { + me.anchorEl.hide(); + } + } + }, + + + showAt: function(xy) { + var me = this; + me.lastActive = new Date(); + me.clearTimers(); + me.calledFromShowAt = true; + + + if (!me.isVisible()) { + this.callParent(arguments); + } + + + if (me.isVisible()) { + me.setPagePosition(xy[0], xy[1]); + if (me.constrainPosition || me.constrain) { + me.doConstrain(); + } + me.toFront(true); + me.el.sync(true); + if (me.dismissDelay && me.autoHide !== false) { + me.dismissTimer = Ext.defer(me.hide, me.dismissDelay, me); + } + if (me.anchor) { + me.syncAnchor(); + if (!me.anchorEl.isVisible()) { + me.anchorEl.show(); + } + } else { + me.anchorEl.hide(); + } + } + delete me.calledFromShowAt; + }, + + + syncAnchor: function() { + var me = this, + anchorPos, + targetPos, + offset; + switch (me.tipAnchor.charAt(0)) { + case 't': + anchorPos = 'b'; + targetPos = 'tl'; + offset = [20 + me.anchorOffset, 1]; + break; + case 'r': + anchorPos = 'l'; + targetPos = 'tr'; + offset = [ - 1, 12 + me.anchorOffset]; + break; + case 'b': + anchorPos = 't'; + targetPos = 'bl'; + offset = [20 + me.anchorOffset, -1]; + break; + default: + anchorPos = 'r'; + targetPos = 'tl'; + offset = [1, 12 + me.anchorOffset]; + break; + } + me.anchorEl.alignTo(me.el, anchorPos + '-' + targetPos, offset); + me.anchorEl.setStyle('z-index', parseInt(me.el.getZIndex(), 10) || 0 + 1).setVisibilityMode(Ext.Element.DISPLAY); + }, + + + setPagePosition: function(x, y) { + var me = this; + me.callParent(arguments); + if (me.anchor) { + me.syncAnchor(); + } + }, + + _timerNames: {}, + + clearTimer: function (name) { + var me = this, + names = me._timerNames, + propName = names[name] || (names[name] = name + 'Timer'), + timer = me[propName]; + + if (timer) { + clearTimeout(timer); + me[propName] = null; + } + }, + + + clearTimers: function() { + var me = this; + me.clearTimer('show'); + me.clearTimer('dismiss'); + me.clearTimer('hide'); + }, + + + onShow: function() { + var me = this; + me.callParent(); + me.mon(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me); + }, + + + onHide: function() { + var me = this; + me.callParent(); + me.mun(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me); + }, + + + onDocMouseDown: function(e) { + var me = this; + if (!me.closable && !e.within(me.el.dom)) { + me.disable(); + Ext.defer(me.doEnable, 100, me); + } + }, + + + doEnable: function() { + if (!this.isDestroyed) { + this.enable(); + } + }, + + + onDisable: function() { + this.callParent(); + this.clearTimers(); + this.hide(); + }, + + beforeDestroy: function() { + var me = this; + me.clearTimers(); + Ext.destroy(me.anchorEl); + delete me.anchorEl; + delete me.target; + delete me.anchorTarget; + delete me.triggerElement; + me.callParent(); + }, + + + onDestroy: function() { + Ext.getDoc().un('mousedown', this.onDocMouseDown, this); + this.callParent(); + } +}); + + +Ext.define('Ext.tip.QuickTip', { + extend: Ext.tip.ToolTip , + alias: 'widget.quicktip', + alternateClassName: 'Ext.QuickTip', + + + + + interceptTitles : false, + + + title: ' ', + + + tagConfig : { + namespace : 'data-', + attribute : 'qtip', + width : 'qwidth', + target : 'target', + title : 'qtitle', + hide : 'hide', + cls : 'qclass', + align : 'qalign', + anchor : 'anchor', + showDelay: 'qshowDelay' + }, + + + initComponent : function(){ + var me = this; + + me.target = me.target || Ext.getDoc(); + me.targets = me.targets || {}; + me.callParent(); + }, + + + register : function(config){ + var configs = Ext.isArray(config) ? config : arguments, + i = 0, + len = configs.length, + target, j, targetLen; + + for (; i < len; i++) { + config = configs[i]; + target = config.target; + if (target) { + if (Ext.isArray(target)) { + for (j = 0, targetLen = target.length; j < targetLen; j++) { + this.targets[Ext.id(target[j])] = config; + } + } else{ + this.targets[Ext.id(target)] = config; + } + } + } + }, + + + unregister : function(el){ + delete this.targets[Ext.id(el)]; + }, + + + cancelShow: function(el){ + var me = this, + activeTarget = me.activeTarget; + + el = Ext.get(el).dom; + if (me.isVisible()) { + if (activeTarget && activeTarget.el == el) { + me.hide(); + } + } else if (activeTarget && activeTarget.el == el) { + me.clearTimer('show'); + } + }, + + + getTipCfg: function(e) { + var t = e.getTarget(), + titleText = t.title, + cfg; + + if (this.interceptTitles && titleText && Ext.isString(titleText)) { + t.qtip = titleText; + t.removeAttribute("title"); + e.preventDefault(); + return { + text: titleText + }; + } + else { + cfg = this.tagConfig; + t = e.getTarget('[' + cfg.namespace + cfg.attribute + ']'); + if (t) { + return { + target: t, + text: t.getAttribute(cfg.namespace + cfg.attribute) + }; + } + } + }, + + + onTargetOver : function(e){ + var me = this, + target = e.getTarget(me.delegate), + hasShowDelay, + delay, + elTarget, + cfg, + ns, + tipConfig, + autoHide, + targets, targetEl, value, key; + + if (me.disabled) { + return; + } + + + + + me.targetXY = e.getXY(); + + + if(!target || target.nodeType !== 1 || target == document.documentElement || target == document.body){ + return; + } + + if (me.activeTarget && ((target == me.activeTarget.el) || Ext.fly(me.activeTarget.el).contains(target))) { + + + + + if (me.targetTextEmpty()) { + me.onShowVeto(); + delete me.activeTarget; + } else { + me.clearTimer('hide'); + me.show(); + } + return; + } + + if (target) { + targets = me.targets; + + for (key in targets) { + if (targets.hasOwnProperty(key)) { + value = targets[key]; + + targetEl = Ext.fly(value.target); + if (targetEl && (targetEl.dom === target || targetEl.contains(target))) { + elTarget = targetEl.dom; + break; + } + } + } + + if (elTarget) { + me.activeTarget = me.targets[elTarget.id]; + me.activeTarget.el = target; + me.anchor = me.activeTarget.anchor; + if (me.anchor) { + me.anchorTarget = target; + } + hasShowDelay = parseInt(me.activeTarget.showDelay, 10); + if (hasShowDelay) { + delay = me.showDelay; + me.showDelay = hasShowDelay; + } + me.delayShow(); + if (hasShowDelay) { + me.showDelay = delay; + } + return; + } + } + + + elTarget = Ext.fly(target, '_quicktip-target'); + cfg = me.tagConfig; + ns = cfg.namespace; + tipConfig = me.getTipCfg(e); + + if (tipConfig) { + + + + if (tipConfig.target) { + target = tipConfig.target; + elTarget = Ext.fly(target, '_quicktip-target'); + } + autoHide = elTarget.getAttribute(ns + cfg.hide); + + me.activeTarget = { + el: target, + text: tipConfig.text, + width: +elTarget.getAttribute(ns + cfg.width) || null, + autoHide: autoHide != "user" && autoHide !== 'false', + title: elTarget.getAttribute(ns + cfg.title), + cls: elTarget.getAttribute(ns + cfg.cls), + align: elTarget.getAttribute(ns + cfg.align), + showDelay: parseInt(elTarget.getAttribute(ns + cfg.showDelay), 10) + }; + me.anchor = elTarget.getAttribute(ns + cfg.anchor); + if (me.anchor) { + me.anchorTarget = target; + } + hasShowDelay = parseInt(me.activeTarget.showDelay, 10); + if (hasShowDelay) { + delay = me.showDelay; + me.showDelay = hasShowDelay; + } + me.delayShow(); + if (hasShowDelay) { + me.showDelay = delay; + } + } + }, + + + onTargetOut : function(e){ + var me = this, + active = me.activeTarget, + hasHideDelay, + delay; + + + + if (active && e.within(me.activeTarget.el) && !me.getTipCfg(e)) { + return; + } + + me.clearTimer('show'); + delete me.activeTarget; + if (me.autoHide !== false) { + hasHideDelay = active && parseInt(active.hideDelay, 10); + if (hasHideDelay) { + delay = me.hideDelay; + me.hideDelay = hasHideDelay; + } + me.delayHide(); + if (hasHideDelay) { + me.hideDelay = delay; + } + } + }, + + targetTextEmpty: function(){ + var me = this, + target = me.activeTarget, + cfg = me.tagConfig, + el, text; + + if (target) { + el = target.el; + if (el) { + text = el.getAttribute(cfg.namespace + cfg.attribute); + + + + if (!text && !me.targets[target.target]) { + return true; + } + } + } + return false; + }, + + show: function(){ + var me = this, + fromDelay = me.fromDelayShow; + + + + if (fromDelay && me.targetTextEmpty()) { + me.onShowVeto(); + delete me.activeTarget; + return; + } + me.callParent(arguments); + }, + + + showAt : function(xy){ + var me = this, + target = me.activeTarget, + header = me.header, + cls; + + if (target) { + if (!me.rendered) { + me.render(Ext.getBody()); + me.activeTarget = target; + } + me.suspendLayouts(); + if (target.title) { + me.setTitle(target.title); + header.show(); + } else if (header) { + header.hide(); + } + me.update(target.text); + me.autoHide = target.autoHide; + me.dismissDelay = target.dismissDelay || me.dismissDelay; + if (target.mouseOffset) { + xy[0] += target.mouseOffset[0]; + xy[1] += target.mouseOffset[1]; + } + + cls = me.lastCls; + if (cls) { + me.removeCls(cls); + delete me.lastCls; + } + + cls = target.cls; + if (cls) { + me.addCls(cls); + me.lastCls = cls; + } + + me.setWidth(target.width); + + if (me.anchor) { + me.constrainPosition = false; + } else if (target.align) { + xy = me.getAlignToXY(target.el, target.align); + me.constrainPosition = false; + }else{ + me.constrainPosition = true; + } + me.resumeLayouts(true); + } + me.callParent([xy]); + }, + + + hide: function(){ + delete this.activeTarget; + this.callParent(); + } +}); + + +Ext.define('Ext.tip.QuickTipManager', { + + singleton: true, + alternateClassName: 'Ext.QuickTips', + disabled: false, + + + init : function (autoRender, config) { + var me = this; + + if (!me.tip) { + if (!Ext.isReady) { + Ext.onReady(function(){ + Ext.tip.QuickTipManager.init(autoRender, config); + }); + return; + } + + var tipConfig = Ext.apply({ disabled: me.disabled, id: 'ext-quicktips-tip' }, config), + className = tipConfig.className, + xtype = tipConfig.xtype; + + if (className) { + delete tipConfig.className; + } else if (xtype) { + className = 'widget.' + xtype; + delete tipConfig.xtype; + } + + if (autoRender !== false) { + tipConfig.renderTo = document.body; + + } + + me.tip = Ext.create(className || 'Ext.tip.QuickTip', tipConfig); + + + + Ext.quickTipsActive = true; + } + }, + + + destroy: function() { + Ext.destroy(this.tip); + this.tip = undefined; + }, + + + ddDisable : function() { + var me = this, + tip = me.tip; + + + if (tip && !me.disabled) { + tip.disable(); + } + }, + + + ddEnable : function() { + var me = this, + tip = me.tip; + + + if (tip && !me.disabled) { + tip.enable(); + } + }, + + + enable : function(){ + var me = this, + tip = me.tip; + + if (tip) { + tip.enable(); + } + me.disabled = false; + }, + + + disable : function(){ + var me = this, + tip = me.tip; + + if(tip){ + tip.disable(); + } + me.disabled = true; + }, + + + isEnabled : function(){ + var tip = this.tip; + + return tip !== undefined && !tip.disabled; + }, + + + getQuickTip : function(){ + return this.tip; + }, + + + register : function(){ + var tip = this.tip; + + tip.register.apply(tip, arguments); + }, + + + unregister : function(){ + var tip = this.tip; + + tip.unregister.apply(tip, arguments); + }, + + + tips : function(){ + var tip = this.tip; + + tip.register.apply(tip, arguments); + } +}); + + +Ext.define('Ext.app.Application', { + extend: Ext.app.Controller , + + + + + + + + + + + scope: undefined, + + + enableQuickTips: true, + + + appFolder: 'app', + + + + appProperty: 'app', + + + namespaces: [], + + + autoCreateViewport: false, + + + paths: null, + + onClassExtended: function(cls, data, hooks) { + var Controller = Ext.app.Controller, + proto = cls.prototype, + requires = [], + onBeforeClassCreated, paths, namespace, ns, appFolder; + + + + namespace = data.name || cls.superclass.name; + appFolder = data.appFolder || cls.superclass.appFolder; + + if (namespace) { + data.$namespace = namespace; + Ext.app.addNamespaces(namespace); + } + + if (data.namespaces) { + Ext.app.addNamespaces(data.namespaces); + } + + if (!data['paths processed']) { + if (namespace && appFolder) { + Ext.Loader.setPath(namespace, appFolder); + } + + paths = data.paths; + + if (paths) { + for (ns in paths) { + if (paths.hasOwnProperty(ns)) { + Ext.Loader.setPath(ns, paths[ns]); + } + } + } + } + else { + delete data['paths processed']; + } + + if (data.autoCreateViewport) { + + Controller.processDependencies(proto, requires, namespace, 'view', ['Viewport']); + } + + + if (requires.length) { + onBeforeClassCreated = hooks.onBeforeCreated; + + hooks.onBeforeCreated = function(cls, data) { + var args = Ext.Array.clone(arguments); + + Ext.require(requires, function () { + return onBeforeClassCreated.apply(this, args); + }); + }; + } + }, + + + constructor: function(config) { + var me = this; + + + me.callParent(arguments); + + me.doInit(me); + + me.initNamespace(); + me.initControllers(); + me.onBeforeLaunch(); + + me.finishInitControllers(); + }, + + initNamespace: function() { + var me = this, + appProperty = me.appProperty, + ns; + + ns = Ext.namespace(me.name); + + if (ns) { + ns.getApplication = function() { + return me; + }; + + if (appProperty) { + if (!ns[appProperty]) { + ns[appProperty] = me; + } + } + } + }, + + initControllers: function() { + var me = this, + controllers = Ext.Array.from(me.controllers); + + me.controllers = new Ext.util.MixedCollection(); + + for (var i = 0, ln = controllers.length; i < ln; i++) { + me.getController(controllers[i]); + } + }, + + finishInitControllers: function() { + var me = this, + controllers, i, l; + + controllers = me.controllers.getRange(); + + for (i = 0, l = controllers.length; i < l; i++) { + controllers[i].finishInit(me); + } + }, + + + launch: Ext.emptyFn, + + + onBeforeLaunch: function() { + var me = this, + controllers, c, cLen, controller; + + if (me.enableQuickTips) { + me.initQuickTips(); + } + + if (me.autoCreateViewport) { + me.initViewport(); + } + + me.launch.call(me.scope || me); + me.launched = true; + me.fireEvent('launch', me); + + controllers = me.controllers.items; + cLen = controllers.length; + + for (c = 0; c < cLen; c++) { + controller = controllers[c]; + controller.onLaunch(me); + } + }, + + getModuleClassName: function(name, kind) { + return Ext.app.Controller.getFullName(name, kind, this.name).absoluteName; + }, + + initQuickTips: function() { + Ext.tip.QuickTipManager.init(); + }, + + initViewport: function() { + var viewport = this.getView('Viewport'); + + if (viewport) { + viewport.create(); + } + }, + + getController: function(name) { + var me = this, + controllers = me.controllers, + className, controller; + + controller = controllers.get(name); + + if (!controller) { + className = me.getModuleClassName(name, 'controller'); + + controller = Ext.create(className, { + application: me, + id: name + }); + + controllers.add(controller); + + if (me._initialized) { + controller.doInit(me); + } + } + + return controller; + }, + + getApplication: function() { + return this; + } +}); + + +Ext.define('Ext.app.domain.Controller', { + extend: Ext.app.EventDomain , + singleton: true, + + + + + + type: 'controller', + idProperty: 'id', + + constructor: function() { + var me = this; + + me.callParent(); + me.monitor(Ext.app.Controller); + } +}); + + +Ext.define('Ext.direct.Provider', { + alias: 'direct.provider', + + mixins: { + observable: Ext.util.Observable + }, + + isProvider: true, + + + + + + constructor: function(config) { + var me = this; + + Ext.apply(me, config); + + Ext.applyIf(me, { + id: Ext.id(null, 'provider-') + }); + + me.addEvents( + + 'connect', + + + 'disconnect', + + + 'data', + + + 'exception' + ); + + me.mixins.observable.constructor.call(me, config); + }, + + + isConnected: function() { + return false; + }, + + + connect: Ext.emptyFn, + + + disconnect: Ext.emptyFn +}); + + + +Ext.define('Ext.app.domain.Direct', { + extend: Ext.app.EventDomain , + singleton: true, + + + + + + type: 'direct', + idProperty: 'id', + + constructor: function() { + var me = this; + + me.callParent(); + me.monitor(Ext.direct.Provider); + } +}); + + +Ext.define('Ext.button.Split', { + + + alias: 'widget.splitbutton', + + extend: Ext.button.Button , + alternateClassName: 'Ext.SplitButton', + + + + + + + arrowCls : 'split', + split : true, + + + initComponent : function(){ + this.callParent(); + + this.addEvents("arrowclick"); + }, + + + setArrowHandler : function(handler, scope){ + this.arrowHandler = handler; + this.scope = scope; + }, + + + onClick : function(e, t) { + var me = this; + + e.preventDefault(); + if (!me.disabled) { + if (me.overMenuTrigger) { + me.maybeShowMenu(); + me.fireEvent("arrowclick", me, e); + if (me.arrowHandler) { + me.arrowHandler.call(me.scope || me, me, e); + } + } else { + me.doToggle(); + me.fireHandler(e); + } + } + } +}); + + +Ext.define('Ext.button.Cycle', { + + + + alias: 'widget.cycle', + + extend: Ext.button.Split , + alternateClassName: 'Ext.CycleButton', + + + + + + + + + + + + + + getButtonText: function(item) { + var me = this, + text = ''; + + if (item && me.showText === true) { + if (me.prependText) { + text += me.prependText; + } + text += item.text; + return text; + } + return me.text; + }, + + + setActiveItem: function(item, suppressEvent) { + var me = this; + + if (!Ext.isObject(item)) { + item = me.menu.getComponent(item); + } + if (item) { + if (!me.rendered) { + me.text = me.getButtonText(item); + me.iconCls = item.iconCls; + me.glyph = item.glyph; + } else { + me.setText(me.getButtonText(item)); + me.setIconCls(item.iconCls); + me.setGlyph(item.glyph); + } + me.activeItem = item; + if (!item.checked) { + item.setChecked(true, false); + } + if (me.forceIcon) { + me.setIconCls(me.forceIcon); + } + if (me.forceGlyph) { + me.setGlyph(me.forceGlyph); + } + if (!suppressEvent) { + me.fireEvent('change', me, item); + } + } + }, + + + getActiveItem: function() { + return this.activeItem; + }, + + + initComponent: function() { + var me = this, + checked = 0, + items, + i, iLen, item; + + me.addEvents( + + "change" + ); + + if (me.changeHandler) { + me.on('change', me.changeHandler, me.scope || me); + delete me.changeHandler; + } + + + + items = (me.menu.items || []).concat(me.items || []); + me.menu = Ext.applyIf({ + cls: Ext.baseCSSPrefix + 'cycle-menu', + items: [] + }, me.menu); + + iLen = items.length; + + + for (i = 0; i < iLen; i++) { + item = items[i]; + + item = Ext.applyIf({ + group : me.id, + itemIndex : i, + checkHandler : me.checkHandler, + scope : me, + checked : item.checked || false + }, item); + + me.menu.items.push(item); + + if (item.checked) { + checked = i; + } + } + + me.itemCount = me.menu.items.length; + me.callParent(arguments); + me.on('click', me.toggleSelected, me); + me.setActiveItem(checked, me); + + + if (me.width && me.showText) { + me.addCls(Ext.baseCSSPrefix + 'cycle-fixed-width'); + } + }, + + + checkHandler: function(item, pressed) { + if (pressed) { + this.setActiveItem(item); + } + }, + + + toggleSelected: function() { + var me = this, + m = me.menu, + checkItem; + + checkItem = me.activeItem.next(':not([disabled])') || m.items.getAt(0); + checkItem.setChecked(true); + } +}); + + +Ext.define('Ext.chart.Callout', { + + + + + + constructor: function(config) { + if (config.callouts) { + config.callouts.styles = Ext.applyIf(config.callouts.styles || {}, { + color: "#000", + font: "11px Helvetica, sans-serif" + }); + this.callouts = Ext.apply(this.callouts || {}, config.callouts); + this.calloutsArray = []; + } + }, + + renderCallouts: function() { + if (!this.callouts) { + return; + } + + var me = this, + items = me.items, + animate = me.chart.animate, + config = me.callouts, + styles = config.styles, + group = me.calloutsArray, + store = me.chart.getChartStore(), + len = store.getCount(), + ratio = items.length / len, + previouslyPlacedCallouts = [], + i, + count, + j, + p, + item, + label, + storeItem, + display; + + for (i = 0, count = 0; i < len; i++) { + for (j = 0; j < ratio; j++) { + item = items[count]; + label = group[count]; + storeItem = store.getAt(i); + + display = (!config.filter || config.filter(storeItem)); + + if (!display && !label) { + count++; + continue; + } + + if (!label) { + group[count] = label = me.onCreateCallout(storeItem, item, i, display, j, count); + } + for (p in label) { + if (label[p] && label[p].setAttributes) { + label[p].setAttributes(styles, true); + } + } + if (!display) { + for (p in label) { + if (label[p]) { + if (label[p].setAttributes) { + label[p].setAttributes({ + hidden: true + }, true); + } else if(label[p].setVisible) { + label[p].setVisible(false); + } + } + } + } + if (config && config.renderer) { + config.renderer(label, storeItem); + } + me.onPlaceCallout(label, storeItem, item, i, display, animate, + j, count, previouslyPlacedCallouts); + previouslyPlacedCallouts.push(label); + count++; + } + } + this.hideCallouts(count); + }, + + onCreateCallout: function(storeItem, item, i, display) { + var me = this, + group = me.calloutsGroup, + config = me.callouts, + styles = (config ? config.styles : undefined), + width = (styles ? styles.width : 0), + height = (styles ? styles.height : 0), + chart = me.chart, + surface = chart.surface, + calloutObj = { + + + lines: false + }; + + calloutObj.lines = surface.add(Ext.apply({}, + { + type: 'path', + path: 'M0,0', + stroke: me.getLegendColor() || '#555' + }, + styles)); + + if (config.items) { + calloutObj.panel = new Ext.Panel({ + style: "position: absolute;", + width: width, + height: height, + items: config.items, + renderTo: chart.el + }); + } + + return calloutObj; + }, + + hideCallouts: function(index) { + var calloutsArray = this.calloutsArray, + len = calloutsArray.length, + co, + p; + while (len-->index) { + co = calloutsArray[len]; + for (p in co) { + if (co[p]) { + co[p].hide(true); + } + } + } + } +}); + + +Ext.define('Ext.draw.CompositeSprite', { + + + + extend: Ext.util.MixedCollection , + mixins: { + animate: Ext.util.Animate + }, + autoDestroy: false, + + + isCompositeSprite: true, + constructor: function(config) { + var me = this; + + config = config || {}; + Ext.apply(me, config); + + me.addEvents( + + 'mousedown', + + 'mouseup', + + 'mouseover', + + 'mouseout', + + 'click' + ); + me.id = Ext.id(null, 'ext-sprite-group-'); + me.callParent(); + }, + + + onClick: function(e) { + this.fireEvent('click', e); + }, + + + onMouseUp: function(e) { + this.fireEvent('mouseup', e); + }, + + + onMouseDown: function(e) { + this.fireEvent('mousedown', e); + }, + + + onMouseOver: function(e) { + this.fireEvent('mouseover', e); + }, + + + onMouseOut: function(e) { + this.fireEvent('mouseout', e); + }, + + attachEvents: function(o) { + var me = this; + + o.on({ + scope: me, + mousedown: me.onMouseDown, + mouseup: me.onMouseUp, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + click: me.onClick + }); + }, + + + add: function(key, o) { + var result = this.callParent(arguments); + this.attachEvents(result); + return result; + }, + + insert: function(index, key, o) { + return this.callParent(arguments); + }, + + + remove: function(o) { + var me = this; + + o.un({ + scope: me, + mousedown: me.onMouseDown, + mouseup: me.onMouseUp, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + click: me.onClick + }); + return me.callParent(arguments); + }, + + + getBBox: function() { + var i = 0, + sprite, + bb, + items = this.items, + len = this.length, + infinity = Infinity, + minX = infinity, + maxHeight = -infinity, + minY = infinity, + maxWidth = -infinity, + maxWidthBBox, maxHeightBBox; + + for (; i < len; i++) { + sprite = items[i]; + if (sprite.el && ! sprite.bboxExcluded) { + bb = sprite.getBBox(); + minX = Math.min(minX, bb.x); + minY = Math.min(minY, bb.y); + maxHeight = Math.max(maxHeight, bb.height + bb.y); + maxWidth = Math.max(maxWidth, bb.width + bb.x); + } + } + + return { + x: minX, + y: minY, + height: maxHeight - minY, + width: maxWidth - minX + }; + }, + + + setAttributes: function(attrs, redraw) { + var i = 0, + items = this.items, + len = this.length; + + for (; i < len; i++) { + items[i].setAttributes(attrs, redraw); + } + return this; + }, + + + hide: function(redraw) { + var i = 0, + items = this.items, + len = this.length; + + for (; i < len; i++) { + items[i].hide(redraw); + } + return this; + }, + + + show: function(redraw) { + var i = 0, + items = this.items, + len = this.length; + + for (; i < len; i++) { + items[i].show(redraw); + } + return this; + }, + + + redraw: function() { + var me = this, + i = 0, + items = me.items, + surface = me.getSurface(), + len = me.length; + + if (surface) { + for (; i < len; i++) { + surface.renderItem(items[i]); + } + } + return me; + }, + + + setStyle: function(obj) { + var i = 0, + items = this.items, + len = this.length, + item, el; + + for (; i < len; i++) { + item = items[i]; + el = item.el; + if (el) { + el.setStyle(obj); + } + } + }, + + + addCls: function(obj) { + var i = 0, + items = this.items, + surface = this.getSurface(), + len = this.length; + + if (surface) { + for (; i < len; i++) { + surface.addCls(items[i], obj); + } + } + }, + + + removeCls: function(obj) { + var i = 0, + items = this.items, + surface = this.getSurface(), + len = this.length; + + if (surface) { + for (; i < len; i++) { + surface.removeCls(items[i], obj); + } + } + }, + + + getSurface: function(){ + var first = this.first(); + if (first) { + return first.surface; + } + return null; + }, + + + destroy: function(){ + var me = this, + surface = me.getSurface(), + destroySprites = me.autoDestroy, + item; + + if (surface) { + while (me.getCount() > 0) { + item = me.first(); + me.remove(item); + surface.remove(item, destroySprites); + } + } + me.clearListeners(); + } +}); + + +Ext.define('Ext.draw.Surface', { + + + + mixins: { + observable: Ext.util.Observable + }, + + + + + separatorRe: /[, ]+/, + + enginePriority: ['Svg', 'Vml'], + + statics: { + + create: function(config, enginePriority) { + enginePriority = enginePriority || this.prototype.enginePriority; + + var i = 0, + len = enginePriority.length; + + for (; i < len; i++) { + if (Ext.supports[enginePriority[i]]) { + return Ext.create('Ext.draw.engine.' + enginePriority[i], config); + } + } + return false; + }, + + + save: function(surface, config) { + config = config || {}; + var exportTypes = { + 'image/png': 'Image', + 'image/jpeg': 'Image', + 'image/svg+xml': 'Svg' + }, + prefix = exportTypes[config.type] || 'Svg', + exporter = Ext.draw.engine[prefix + 'Exporter']; + + return exporter.generate(surface, config); + + } + }, + + + + + availableAttrs: { + blur: 0, + "clip-rect": "0 0 1e9 1e9", + cursor: "default", + cx: 0, + cy: 0, + 'dominant-baseline': 'auto', + fill: "none", + "fill-opacity": 1, + font: '10px "Arial"', + "font-family": '"Arial"', + "font-size": "10", + "font-style": "normal", + "font-weight": 400, + gradient: "", + height: 0, + hidden: false, + href: "http://sencha.com/", + opacity: 1, + path: "M0,0", + radius: 0, + rx: 0, + ry: 0, + scale: "1 1", + src: "", + stroke: "none", + "stroke-dasharray": "", + "stroke-linecap": "butt", + "stroke-linejoin": "butt", + "stroke-miterlimit": 0, + "stroke-opacity": 1, + "stroke-width": 1, + target: "_blank", + text: "", + "text-anchor": "middle", + title: "Ext Draw", + width: 0, + x: 0, + y: 0, + zIndex: 0 + }, + + + + + container: undefined, + height: 352, + width: 512, + x: 0, + y: 0, + + + + + orderSpritesByZIndex: true, + + + + constructor: function(config) { + var me = this; + config = config || {}; + Ext.apply(me, config); + + me.domRef = Ext.getDoc().dom; + + me.customAttributes = {}; + + me.addEvents( + + 'mousedown', + + 'mouseup', + + 'mouseover', + + 'mouseout', + + 'mousemove', + + 'mouseenter', + + 'mouseleave', + + 'click', + + 'dblclick' + ); + + me.mixins.observable.constructor.call(me); + + me.getId(); + me.initGradients(); + me.initItems(); + if (me.renderTo) { + me.render(me.renderTo); + delete me.renderTo; + } + me.initBackground(config.background); + }, + + + + initSurface: Ext.emptyFn, + + + + renderItem: Ext.emptyFn, + + + renderItems: Ext.emptyFn, + + + setViewBox: function (x, y, width, height) { + if (isFinite(x) && isFinite(y) && isFinite(width) && isFinite(height)) { + this.viewBox = {x: x, y: y, width: width, height: height}; + this.applyViewBox(); + } + }, + + + addCls: Ext.emptyFn, + + + removeCls: Ext.emptyFn, + + + setStyle: Ext.emptyFn, + + + initGradients: function() { + if (this.hasOwnProperty('gradients')) { + var gradients = this.gradients, + fn = this.addGradient, + g, gLen; + + if (gradients) { + for (g = 0, gLen = gradients.length; g < gLen; g++) { + if (fn.call(this, gradients[g], g, gLen) === false) { + break; + } + } + } + } + }, + + + initItems: function() { + var items = this.items; + this.items = new Ext.draw.CompositeSprite(); + this.items.autoDestroy = true; + this.groups = new Ext.draw.CompositeSprite(); + if (items) { + this.add(items); + } + }, + + + initBackground: function(config) { + var me = this, + width = me.width, + height = me.height, + gradientId, gradient; + if (Ext.isString(config)) { + config = { + fill : config + }; + } + if (config) { + if (config.gradient) { + gradient = config.gradient; + gradientId = gradient.id; + me.addGradient(gradient); + me.background = me.add({ + type: 'rect', + x: 0, + y: 0, + width: width, + height: height, + fill: 'url(#' + gradientId + ')', + zIndex: -1 + }); + } else if (config.fill) { + me.background = me.add({ + type: 'rect', + x: 0, + y: 0, + width: width, + height: height, + fill: config.fill, + zIndex: -1 + }); + } else if (config.image) { + me.background = me.add({ + type: 'image', + x: 0, + y: 0, + width: width, + height: height, + src: config.image, + zIndex: -1 + }); + } + + me.background.bboxExcluded = true; + } + }, + + + setSize: function(w, h) { + this.applyViewBox(); + }, + + + scrubAttrs: function(sprite) { + var i, + attrs = {}, + exclude = {}, + sattr = sprite.attr; + for (i in sattr) { + + if (this.translateAttrs.hasOwnProperty(i)) { + + attrs[this.translateAttrs[i]] = sattr[i]; + exclude[this.translateAttrs[i]] = true; + } + else if (this.availableAttrs.hasOwnProperty(i) && !exclude[i]) { + + attrs[i] = sattr[i]; + } + } + return attrs; + }, + + + onClick: function(e) { + this.processEvent('click', e); + }, + + + onDblClick: function(e) { + this.processEvent('dblclick', e); + }, + + + onMouseUp: function(e) { + this.processEvent('mouseup', e); + }, + + + onMouseDown: function(e) { + this.processEvent('mousedown', e); + }, + + + onMouseOver: function(e) { + this.processEvent('mouseover', e); + }, + + + onMouseOut: function(e) { + this.processEvent('mouseout', e); + }, + + + onMouseMove: function(e) { + this.fireEvent('mousemove', e); + }, + + + onMouseEnter: Ext.emptyFn, + + + onMouseLeave: Ext.emptyFn, + + + addGradient: Ext.emptyFn, + + + add: function() { + var args = Array.prototype.slice.call(arguments), + sprite, + hasMultipleArgs = args.length > 1, + items, + results, + i, + ln, + item; + + if (hasMultipleArgs || Ext.isArray(args[0])) { + items = hasMultipleArgs ? args : args[0]; + results = []; + + for (i = 0, ln = items.length; i < ln; i++) { + item = items[i]; + item = this.add(item); + results.push(item); + } + + return results; + } + sprite = this.prepareItems(args[0], true)[0]; + this.insertByZIndex(sprite); + this.onAdd(sprite); + return sprite; + }, + + + insertByZIndex: function(sprite) { + var me = this, + sprites = me.items.items, + len = sprites.length, + ceil = Math.ceil, + zIndex = sprite.attr.zIndex, + idx = len, + high = idx - 1, + low = 0, + otherZIndex; + + if (me.orderSpritesByZIndex && len && zIndex < sprites[high].attr.zIndex) { + + while (low <= high) { + idx = ceil((low + high) / 2); + otherZIndex = sprites[idx].attr.zIndex; + if (otherZIndex > zIndex) { + high = idx - 1; + } + else if (otherZIndex < zIndex) { + low = idx + 1; + } + else { + break; + } + } + + while (idx < len && sprites[idx].attr.zIndex <= zIndex) { + idx++; + } + } + + me.items.insert(idx, sprite); + return idx; + }, + + onAdd: function(sprite) { + var group = sprite.group, + draggable = sprite.draggable, + groups, ln, i; + if (group) { + groups = [].concat(group); + ln = groups.length; + for (i = 0; i < ln; i++) { + group = groups[i]; + this.getGroup(group).add(sprite); + } + delete sprite.group; + } + if (draggable) { + sprite.initDraggable(); + } + }, + + + remove: function(sprite, destroySprite) { + if (sprite) { + this.items.remove(sprite); + + var groups = [].concat(this.groups.items), + gLen = groups.length, + g; + + for (g = 0; g < gLen; g++) { + groups[g].remove(sprite); + } + + sprite.onRemove(); + if (destroySprite === true) { + sprite.destroy(); + } + } + }, + + + removeAll: function(destroySprites) { + var items = this.items.items, + ln = items.length, + i; + for (i = ln - 1; i > -1; i--) { + this.remove(items[i], destroySprites); + } + }, + + onRemove: Ext.emptyFn, + + onDestroy: Ext.emptyFn, + + + applyViewBox: function() { + var me = this, + viewBox = me.viewBox, + width = me.width || 1, + height = me.height || 1, + viewBoxX, viewBoxY, viewBoxWidth, viewBoxHeight, + relativeHeight, relativeWidth, size; + + if (viewBox && (width || height)) { + viewBoxX = viewBox.x; + viewBoxY = viewBox.y; + viewBoxWidth = viewBox.width; + viewBoxHeight = viewBox.height; + relativeHeight = height / viewBoxHeight; + relativeWidth = width / viewBoxWidth; + size = Math.min(relativeWidth, relativeHeight); + + if (viewBoxWidth * size < width) { + viewBoxX -= (width - viewBoxWidth * size) / 2 / size; + } + if (viewBoxHeight * size < height) { + viewBoxY -= (height - viewBoxHeight * size) / 2 / size; + } + + me.viewBoxShift = { + dx: -viewBoxX, + dy: -viewBoxY, + scale: size + }; + + if (me.background) { + me.background.setAttributes(Ext.apply({}, { + x: viewBoxX, + y: viewBoxY, + width: width / size, + height: height / size + }, { hidden: false }), true); + } + } else { + if (me.background && width && height) { + me.background.setAttributes(Ext.apply({x: 0, y: 0, width: width, height: height}, { hidden: false }), true); + } + } + }, + + + getBBox: function (sprite, isWithoutTransform) { + var realPath = this["getPath" + sprite.type](sprite); + if (isWithoutTransform) { + sprite.bbox.plain = sprite.bbox.plain || Ext.draw.Draw.pathDimensions(realPath); + return sprite.bbox.plain; + } + if (sprite.dirtyTransform) { + this.applyTransformations(sprite, true); + } + sprite.bbox.transform = sprite.bbox.transform || Ext.draw.Draw.pathDimensions(Ext.draw.Draw.mapPath(realPath, sprite.matrix)); + return sprite.bbox.transform; + }, + + transformToViewBox: function (x, y) { + if (this.viewBoxShift) { + var me = this, shift = me.viewBoxShift; + return [x / shift.scale - shift.dx, y / shift.scale - shift.dy]; + } else { + return [x, y]; + } + }, + + + applyTransformations: function(sprite, onlyMatrix) { + if (sprite.type == 'text') { + + sprite.bbox.transform = 0; + this.transform(sprite, false); + } + + + sprite.dirtyTransform = false; + + var me = this, + attr = sprite.attr; + + if (attr.translation.x != null || attr.translation.y != null) { + me.translate(sprite); + } + if (attr.scaling.x != null || attr.scaling.y != null) { + me.scale(sprite); + } + if (attr.rotation.degrees != null) { + me.rotate(sprite); + } + + sprite.bbox.transform = 0; + this.transform(sprite, onlyMatrix); + sprite.transformations = []; + }, + + + rotate: function (sprite) { + var bbox, + deg = sprite.attr.rotation.degrees, + centerX = sprite.attr.rotation.x, + centerY = sprite.attr.rotation.y; + if (!Ext.isNumber(centerX) || !Ext.isNumber(centerY)) { + bbox = this.getBBox(sprite, true); + centerX = !Ext.isNumber(centerX) ? bbox.x + bbox.width / 2 : centerX; + centerY = !Ext.isNumber(centerY) ? bbox.y + bbox.height / 2 : centerY; + } + sprite.transformations.push({ + type: "rotate", + degrees: deg, + x: centerX, + y: centerY + }); + }, + + + translate: function(sprite) { + var x = sprite.attr.translation.x || 0, + y = sprite.attr.translation.y || 0; + sprite.transformations.push({ + type: "translate", + x: x, + y: y + }); + }, + + + scale: function(sprite) { + var bbox, + x = sprite.attr.scaling.x || 1, + y = sprite.attr.scaling.y || 1, + centerX = sprite.attr.scaling.centerX, + centerY = sprite.attr.scaling.centerY; + + if (!Ext.isNumber(centerX) || !Ext.isNumber(centerY)) { + bbox = this.getBBox(sprite, true); + centerX = !Ext.isNumber(centerX) ? bbox.x + bbox.width / 2 : centerX; + centerY = !Ext.isNumber(centerY) ? bbox.y + bbox.height / 2 : centerY; + } + sprite.transformations.push({ + type: "scale", + x: x, + y: y, + centerX: centerX, + centerY: centerY + }); + }, + + + rectPath: function (x, y, w, h, r) { + if (r) { + return [["M", x + r, y], ["l", w - r * 2, 0], ["a", r, r, 0, 0, 1, r, r], ["l", 0, h - r * 2], ["a", r, r, 0, 0, 1, -r, r], ["l", r * 2 - w, 0], ["a", r, r, 0, 0, 1, -r, -r], ["l", 0, r * 2 - h], ["a", r, r, 0, 0, 1, r, -r], ["z"]]; + } + return [["M", x, y], ["l", w, 0], ["l", 0, h], ["l", -w, 0], ["z"]]; + }, + + + ellipsePath: function (x, y, rx, ry) { + if (ry == null) { + ry = rx; + } + return [["M", x, y], ["m", 0, -ry], ["a", rx, ry, 0, 1, 1, 0, 2 * ry], ["a", rx, ry, 0, 1, 1, 0, -2 * ry], ["z"]]; + }, + + + getPathpath: function (el) { + return el.attr.path; + }, + + + getPathcircle: function (el) { + var a = el.attr; + return this.ellipsePath(a.x, a.y, a.radius, a.radius); + }, + + + getPathellipse: function (el) { + var a = el.attr; + return this.ellipsePath(a.x, a.y, + a.radiusX || (a.width / 2) || 0, + a.radiusY || (a.height / 2) || 0); + }, + + + getPathrect: function (el) { + var a = el.attr; + return this.rectPath(a.x || 0, a.y || 0, a.width || 0, a.height || 0, a.r || 0); + }, + + + getPathimage: function (el) { + var a = el.attr; + return this.rectPath(a.x || 0, a.y || 0, a.width, a.height); + }, + + + getPathtext: function (el) { + var bbox = this.getBBoxText(el); + return this.rectPath(bbox.x, bbox.y, bbox.width, bbox.height); + }, + + createGroup: function(id) { + var group = this.groups.get(id); + if (!group) { + group = new Ext.draw.CompositeSprite({ + surface: this + }); + group.id = id || Ext.id(null, 'ext-surface-group-'); + this.groups.add(group); + } + return group; + }, + + + getGroup: function(id) { + var group; + if (typeof id == "string") { + group = this.groups.get(id); + if (!group) { + group = this.createGroup(id); + } + } else { + group = id; + } + return group; + }, + + + prepareItems: function(items, applyDefaults) { + items = [].concat(items); + + var item, i, ln; + for (i = 0, ln = items.length; i < ln; i++) { + item = items[i]; + if (!(item instanceof Ext.draw.Sprite)) { + + item.surface = this; + items[i] = this.createItem(item); + } else { + item.surface = this; + } + } + return items; + }, + + + setText: Ext.emptyFn, + + + + createItem: Ext.emptyFn, + + + getId: function() { + return this.id || (this.id = Ext.id(null, 'ext-surface-')); + }, + + + destroy: function() { + var me = this; + delete me.domRef; + if (me.background) { + me.background.destroy(); + } + me.removeAll(true); + Ext.destroy(me.groups.items); + } +}); + + + +Ext.define('Ext.layout.component.Draw', { + + + + alias: 'layout.draw', + + extend: Ext.layout.component.Auto , + + setHeightInDom: true, + + setWidthInDom: true, + + + + type: 'draw', + + measureContentWidth : function (ownerContext) { + var target = ownerContext.target, + paddingInfo = ownerContext.getPaddingInfo(), + bbox = this.getBBox(ownerContext); + + if (!target.viewBox) { + if (target.autoSize) { + return bbox.width + paddingInfo.width; + } else { + return bbox.x + bbox.width + paddingInfo.width; + } + } else { + if (ownerContext.heightModel.shrinkWrap) { + return paddingInfo.width; + } else { + return bbox.width / bbox.height * (ownerContext.getProp('contentHeight') - paddingInfo.height) + paddingInfo.width; + } + } + }, + + measureContentHeight : function (ownerContext) { + var target = ownerContext.target, + paddingInfo = ownerContext.getPaddingInfo(), + bbox = this.getBBox(ownerContext); + + if (!ownerContext.target.viewBox) { + if (target.autoSize) { + return bbox.height + paddingInfo.height; + } else { + return bbox.y + bbox.height + paddingInfo.height; + } + } else { + if (ownerContext.widthModel.shrinkWrap) { + return paddingInfo.height; + } else { + return bbox.height / bbox.width * (ownerContext.getProp('contentWidth') - paddingInfo.width) + paddingInfo.height; + } + } + }, + + getBBox: function(ownerContext) { + var bbox = ownerContext.surfaceBBox; + if (!bbox) { + bbox = ownerContext.target.surface.items.getBBox(); + + if (bbox.width === -Infinity && bbox.height === -Infinity) { + bbox.width = bbox.height = bbox.x = bbox.y = 0; + } + ownerContext.surfaceBBox = bbox; + } + return bbox; + }, + + publishInnerWidth: function (ownerContext, width) { + ownerContext.setContentWidth(width - ownerContext.getFrameInfo().width, true); + }, + + publishInnerHeight: function (ownerContext, height) { + ownerContext.setContentHeight(height - ownerContext.getFrameInfo().height, true); + }, + + finishedLayout: function (ownerContext) { + + var props = ownerContext.props, + paddingInfo = ownerContext.getPaddingInfo(); + + + + this.owner.setSurfaceSize(props.contentWidth - paddingInfo.width, props.contentHeight - paddingInfo.height); + + + this.callParent(arguments); + } +}); + + +Ext.define('Ext.draw.Component', { + + + + alias: 'widget.draw', + + extend: Ext.Component , + + + + + + + + + + enginePriority: ['Svg', 'Vml'], + + baseCls: Ext.baseCSSPrefix + 'surface', + + componentLayout: 'draw', + + + viewBox: true, + + shrinkWrap: 3, + + + autoSize: false, + + + + + + + + initComponent: function() { + this.callParent(arguments); + + this.addEvents( + + 'mousedown', + + 'mouseup', + + 'mousemove', + + 'mouseenter', + + 'mouseleave', + + 'click', + + 'dblclick' + ); + }, + + + onRender: function() { + var me = this, + viewBox = me.viewBox, + autoSize = me.autoSize, + bbox, items, width, height, x, y; + me.callParent(arguments); + + if (me.createSurface() !== false) { + items = me.surface.items; + + if (viewBox || autoSize) { + bbox = items.getBBox(); + width = bbox.width; + height = bbox.height; + x = bbox.x; + y = bbox.y; + if (me.viewBox) { + me.surface.setViewBox(x, y, width, height); + } else { + me.autoSizeSurface(); + } + } + } + }, + + + autoSizeSurface: function() { + var bbox = this.surface.items.getBBox(); + this.setSurfaceSize(bbox.width, bbox.height); + }, + + setSurfaceSize: function (width, height) { + this.surface.setSize(width, height); + if (this.autoSize) { + var bbox = this.surface.items.getBBox(); + this.surface.setViewBox(bbox.x, bbox.y - (+Ext.isOpera), width, height); + } + }, + + + createSurface: function() { + var me = this, + cfg = Ext.applyIf({ + renderTo: me.el, + height: me.height, + width: me.width, + items: me.items + }, me.initialConfig), surface; + + + delete cfg.listeners; + if (!cfg.gradients) { + cfg.gradients = me.gradients; + } + surface = Ext.draw.Surface.create(cfg, me.enginePriority); + if (!surface) { + + return false; + } + me.surface = surface; + + + function refire(eventName) { + return function(e) { + me.fireEvent(eventName, e); + }; + } + + surface.on({ + scope: me, + mouseup: refire('mouseup'), + mousedown: refire('mousedown'), + mousemove: refire('mousemove'), + mouseenter: refire('mouseenter'), + mouseleave: refire('mouseleave'), + click: refire('click'), + dblclick: refire('dblclick') + }); + }, + + + + onDestroy: function() { + Ext.destroy(this.surface); + this.callParent(arguments); + } + +}); + + +Ext.chart = Ext.chart || {}; + +Ext.define('Ext.chart.theme.Theme', ( + + +function() { + + +(function() { + Ext.chart.theme = function(config, base) { + config = config || {}; + var i = 0, d = Ext.Date.now(), l, colors, color, + seriesThemes, markerThemes, + seriesTheme, markerTheme, + key, gradients = [], + midColor, midL; + + if (config.baseColor) { + midColor = Ext.draw.Color.fromString(config.baseColor); + midL = midColor.getHSL()[2]; + if (midL < 0.15) { + midColor = midColor.getLighter(0.3); + } else if (midL < 0.3) { + midColor = midColor.getLighter(0.15); + } else if (midL > 0.85) { + midColor = midColor.getDarker(0.3); + } else if (midL > 0.7) { + midColor = midColor.getDarker(0.15); + } + config.colors = [ midColor.getDarker(0.3).toString(), + midColor.getDarker(0.15).toString(), + midColor.toString(), + midColor.getLighter(0.15).toString(), + midColor.getLighter(0.3).toString()]; + + delete config.baseColor; + } + if (config.colors) { + colors = config.colors.slice(); + markerThemes = base.markerThemes; + seriesThemes = base.seriesThemes; + l = colors.length; + base.colors = colors; + for (; i < l; i++) { + color = colors[i]; + markerTheme = markerThemes[i] || {}; + seriesTheme = seriesThemes[i] || {}; + markerTheme.fill = seriesTheme.fill = markerTheme.stroke = seriesTheme.stroke = color; + markerThemes[i] = markerTheme; + seriesThemes[i] = seriesTheme; + } + base.markerThemes = markerThemes.slice(0, l); + base.seriesThemes = seriesThemes.slice(0, l); + + } + for (key in base) { + if (key in config) { + if (Ext.isObject(config[key]) && Ext.isObject(base[key])) { + Ext.apply(base[key], config[key]); + } else { + base[key] = config[key]; + } + } + } + if (config.useGradients) { + colors = base.colors || (function () { + var ans = []; + for (i = 0, seriesThemes = base.seriesThemes, l = seriesThemes.length; i < l; i++) { + ans.push(seriesThemes[i].fill || seriesThemes[i].stroke); + } + return ans; + }()); + for (i = 0, l = colors.length; i < l; i++) { + midColor = Ext.draw.Color.fromString(colors[i]); + if (midColor) { + color = midColor.getDarker(0.1).toString(); + midColor = midColor.toString(); + key = 'theme-' + midColor.substr(1) + '-' + color.substr(1) + '-' + d; + gradients.push({ + id: key, + angle: 45, + stops: { + 0: { + color: midColor.toString() + }, + 100: { + color: color.toString() + } + } + }); + colors[i] = 'url(#' + key + ')'; + } + } + base.gradients = gradients; + base.colors = colors; + } + + Ext.apply(this, base); + }; +}()); + +return { + + + + + + + + theme: 'Base', + themeAttrs: false, + + initTheme: function(theme) { + var me = this, + themes = Ext.chart.theme, + key, gradients; + if (theme) { + theme = theme.split(':'); + for (key in themes) { + if (key == theme[0]) { + gradients = theme[1] == 'gradients'; + me.themeAttrs = new themes[key]({ + useGradients: gradients + }); + if (gradients) { + me.gradients = me.themeAttrs.gradients; + } + if (me.themeAttrs.background) { + me.background = me.themeAttrs.background; + } + return; + } + } + } + } +}; + +})()); + + +Ext.define('Ext.chart.MaskLayer', { + extend: Ext.Component , + + constructor: function(config) { + config = Ext.apply(config || {}, { + style: 'position:absolute;background-color:#ff9;cursor:crosshair;opacity:0.5;border:1px solid #00f;' + }); + this.callParent([config]); + }, + + initComponent: function() { + var me = this; + me.callParent(arguments); + me.addEvents( + 'mousedown', + 'mouseup', + 'mousemove', + 'mouseenter', + 'mouseleave' + ); + }, + + initDraggable: function() { + this.callParent(arguments); + this.dd.onStart = function (e) { + var me = this, + comp = me.comp; + + + this.startPosition = comp.getPosition(true); + + + + if (comp.ghost && !comp.liveDrag) { + me.proxy = comp.ghost(); + me.dragTarget = me.proxy.header.el; + } + + + if (me.constrain || me.constrainDelegate) { + me.constrainTo = me.calculateConstrainRegion(); + } + }; + } +}); + + +Ext.define('Ext.chart.Mask', { + + + + + + + + constructor: function(config) { + var me = this; + + me.addEvents('select'); + + if (config) { + Ext.apply(me, config); + } + if (me.enableMask) { + me.on('afterrender', function() { + + var comp = new Ext.chart.MaskLayer({ + renderTo: me.el, + hidden: true + }); + comp.el.on({ + 'mousemove': function(e) { + me.onMouseMove(e); + }, + 'mouseup': function(e) { + me.onMouseUp(e); + } + }); + comp.initDraggable(); + me.maskType = me.mask; + me.mask = comp; + me.maskSprite = me.surface.add({ + type: 'path', + path: ['M', 0, 0], + zIndex: 1001, + opacity: 0.6, + hidden: true, + stroke: '#00f', + cursor: 'crosshair' + }); + }, me, { single: true }); + } + }, + + onMouseUp: function(e) { + var me = this, + bbox = me.bbox || me.chartBBox, + sel; + me.maskMouseDown = false; + me.mouseDown = false; + if (me.mouseMoved) { + me.handleMouseEvent(e); + me.mouseMoved = false; + sel = me.maskSelection; + me.fireEvent('select', me, { + x: sel.x - bbox.x, + y: sel.y - bbox.y, + width: sel.width, + height: sel.height + }); + } + }, + + onMouseDown: function(e) { + this.handleMouseEvent(e); + }, + + onMouseMove: function(e) { + this.handleMouseEvent(e); + }, + + handleMouseEvent: function(e) { + var me = this, + mask = me.maskType, + bbox = me.bbox || me.chartBBox, + x = bbox.x, + y = bbox.y, + math = Math, + floor = math.floor, + abs = math.abs, + min = math.min, + max = math.max, + height = floor(y + bbox.height), + width = floor(x + bbox.width), + staticX = e.getPageX() - me.el.getX(), + staticY = e.getPageY() - me.el.getY(), + maskMouseDown = me.maskMouseDown, + path; + + staticX = max(staticX, x); + staticY = max(staticY, y); + staticX = min(staticX, width); + staticY = min(staticY, height); + + if (e.type === 'mousedown') { + + me.mouseDown = true; + me.mouseMoved = false; + me.maskMouseDown = { + x: staticX, + y: staticY + }; + } + else { + + + me.mouseMoved = me.mouseDown; + if (maskMouseDown && me.mouseDown) { + if (mask == 'horizontal') { + staticY = y; + maskMouseDown.y = height; + } + else if (mask == 'vertical') { + staticX = x; + maskMouseDown.x = width; + } + width = maskMouseDown.x - staticX; + height = maskMouseDown.y - staticY; + path = ['M', staticX, staticY, 'l', width, 0, 0, height, -width, 0, 'z']; + me.maskSelection = { + x: (width > 0 ? staticX : staticX + width) + me.el.getX(), + y: (height > 0 ? staticY : staticY + height) + me.el.getY(), + width: abs(width), + height: abs(height) + }; + me.mask.updateBox(me.maskSelection); + me.mask.show(); + me.maskSprite.setAttributes({ + hidden: true + }, true); + } + else { + if (mask == 'horizontal') { + path = ['M', staticX, y, 'L', staticX, height]; + } + else if (mask == 'vertical') { + path = ['M', x, staticY, 'L', width, staticY]; + } + else { + path = ['M', staticX, y, 'L', staticX, height, 'M', x, staticY, 'L', width, staticY]; + } + me.maskSprite.setAttributes({ + path: path, + 'stroke-width': mask === true ? 1 : 1, + hidden: false + }, true); + } + } + + }, + + onMouseLeave: function(e) { + var me = this; + me.mouseMoved = false; + me.mouseDown = false; + me.maskMouseDown = false; + me.mask.hide(); + me.maskSprite.hide(true); + } +}); + + + +Ext.define('Ext.chart.Navigation', { + + + setZoom: function(zoomConfig) { + var me = this, + axesItems = me.axes.items, + i, ln, axis, + bbox = me.chartBBox, + xScale = bbox.width, + yScale = bbox.height, + zoomArea = { + x : zoomConfig.x - me.el.getX(), + y : zoomConfig.y - me.el.getY(), + width : zoomConfig.width, + height : zoomConfig.height + }, + zoomer, ends, from, to, store, count, step, length, horizontal; + + for (i = 0, ln = axesItems.length; i < ln; i++) { + axis = axesItems[i]; + horizontal = (axis.position == 'bottom' || axis.position == 'top'); + if (axis.type == 'Category') { + if (!store) { + store = me.getChartStore(); + count = store.data.items.length; + } + zoomer = zoomArea; + length = axis.length; + step = Math.round(length / count); + if (horizontal) { + from = (zoomer.x ? Math.floor(zoomer.x / step) + 1 : 0); + to = (zoomer.x + zoomer.width) / step; + } else { + from = (zoomer.y ? Math.floor(zoomer.y / step) + 1 : 0); + to = (zoomer.y + zoomer.height) / step; + } + } + else { + zoomer = { + x : zoomArea.x / xScale, + y : zoomArea.y / yScale, + width : zoomArea.width / xScale, + height : zoomArea.height / yScale + } + ends = axis.calcEnds(); + if (horizontal) { + from = (ends.to - ends.from) * zoomer.x + ends.from; + to = (ends.to - ends.from) * zoomer.width + from; + } else { + to = (ends.to - ends.from) * (1 - zoomer.y) + ends.from; + from = to - (ends.to - ends.from) * zoomer.height; + } + } + axis.minimum = from; + axis.maximum = to; + if (horizontal) { + if (axis.doConstrain && me.maskType != 'vertical') { + axis.doConstrain(); + } + } + else { + if (axis.doConstrain && me.maskType != 'horizontal') { + axis.doConstrain(); + } + } + } + me.redraw(false); + }, + + + restoreZoom: function() { + var me = this, + axesItems = me.axes.items, + i, ln, axis; + + me.setSubStore(null); + for (i = 0, ln = axesItems.length; i < ln; i++) { + axis = axesItems[i]; + delete axis.minimum; + delete axis.maximum; + } + me.redraw(false); + } + +}); + + +Ext.define('Ext.chart.Shape', { + + + + singleton: true, + + + + circle: function (surface, opts) { + return surface.add(Ext.apply({ + type: 'circle', + x: opts.x, + y: opts.y, + stroke: null, + radius: opts.radius + }, opts)); + }, + line: function (surface, opts) { + return surface.add(Ext.apply({ + type: 'rect', + x: opts.x - opts.radius, + y: opts.y - opts.radius, + height: 2 * opts.radius, + width: 2 * opts.radius / 5 + }, opts)); + }, + square: function (surface, opts) { + return surface.add(Ext.applyIf({ + type: 'rect', + x: opts.x - opts.radius, + y: opts.y - opts.radius, + height: 2 * opts.radius, + width: 2 * opts.radius, + radius: null + }, opts)); + }, + triangle: function (surface, opts) { + opts.radius *= 1.75; + return surface.add(Ext.apply({ + type: 'path', + stroke: null, + path: "M".concat(opts.x, ",", opts.y, "m0-", opts.radius * 0.58, "l", opts.radius * 0.5, ",", opts.radius * 0.87, "-", opts.radius, ",0z") + }, opts)); + }, + diamond: function (surface, opts) { + var r = opts.radius; + r *= 1.5; + return surface.add(Ext.apply({ + type: 'path', + stroke: null, + path: ["M", opts.x, opts.y - r, "l", r, r, -r, r, -r, -r, r, -r, "z"] + }, opts)); + }, + cross: function (surface, opts) { + var r = opts.radius; + r = r / 1.7; + return surface.add(Ext.apply({ + type: 'path', + stroke: null, + path: "M".concat(opts.x - r, ",", opts.y, "l", [-r, -r, r, -r, r, r, r, -r, r, r, -r, r, r, r, -r, r, -r, -r, -r, r, -r, -r, "z"]) + }, opts)); + }, + plus: function (surface, opts) { + var r = opts.radius / 1.3; + return surface.add(Ext.apply({ + type: 'path', + stroke: null, + path: "M".concat(opts.x - r / 2, ",", opts.y - r / 2, "l", [0, -r, r, 0, 0, r, r, 0, 0, r, -r, 0, 0, r, -r, 0, 0, -r, -r, 0, 0, -r, "z"]) + }, opts)); + }, + arrow: function (surface, opts) { + var r = opts.radius; + return surface.add(Ext.apply({ + type: 'path', + path: "M".concat(opts.x - r * 0.7, ",", opts.y - r * 0.4, "l", [r * 0.6, 0, 0, -r * 0.4, r, r * 0.8, -r, r * 0.8, 0, -r * 0.4, -r * 0.6, 0], "z") + }, opts)); + }, + drop: function (surface, x, y, text, size, angle) { + size = size || 30; + angle = angle || 0; + surface.add({ + type: 'path', + path: ['M', x, y, 'l', size, 0, 'A', size * 0.4, size * 0.4, 0, 1, 0, x + size * 0.7, y - size * 0.7, 'z'], + fill: '#000', + stroke: 'none', + rotate: { + degrees: 22.5 - angle, + x: x, + y: y + } + }); + angle = (angle + 90) * Math.PI / 180; + surface.add({ + type: 'text', + x: x + size * Math.sin(angle) - 10, + y: y + size * Math.cos(angle) + 5, + text: text, + 'font-size': size * 12 / 40, + stroke: 'none', + fill: '#fff' + }); + } +}); + + +Ext.define('Ext.chart.LegendItem', { + + + + extend: Ext.draw.CompositeSprite , + + + + + + + hiddenSeries: false, + + + label: undefined, + + + x: 0, + y: 0, + zIndex: 500, + + + boldRe: /bold\s\d{1,}.*/i, + + constructor: function(config) { + this.callParent(arguments); + this.createLegend(config); + }, + + + createLegend: function(config) { + var me = this, + series = me.series, + index = config.yFieldIndex; + + me.label = me.createLabel(config); + me.createSeriesMarkers(config); + + me.setAttributes({ + hidden: false + }, true); + + me.yFieldIndex = index; + + + me.on('mouseover', me.onMouseOver, me); + me.on('mouseout', me.onMouseOut, me); + me.on('mousedown', me.onMouseDown, me); + + if (!series.visibleInLegend(index)) { + me.hiddenSeries = true; + me.label.setAttributes({ + opacity: 0.5 + }, true); + }; + + + me.updatePosition({ x: 0, y: 0 }); + }, + + + getLabelText: function() { + var me = this, + series = me.series, + idx = me.yFieldIndex; + + function getSeriesProp(name) { + var val = series[name]; + return (Ext.isArray(val) ? val[idx] : val); + } + + return getSeriesProp('title') || getSeriesProp('yField'); + }, + + + createLabel: function(config) { + var me = this, + legend = me.legend; + + return me.add('label', me.surface.add({ + type: 'text', + x: 20, + y: 0, + zIndex: (me.zIndex || 0) + 2, + fill: legend.labelColor, + font: legend.labelFont, + text: me.getLabelText(), + style: { + cursor: 'pointer' + } + })); + }, + + + createSeriesMarkers: function(config) { + var me = this, + index = config.yFieldIndex, + series = me.series, + seriesType = series.type, + surface = me.surface, + z = me.zIndex; + + + if (seriesType === 'line' || seriesType === 'scatter') { + if(seriesType === 'line') { + var seriesStyle = Ext.apply(series.seriesStyle, series.style); + me.drawLine(0.5, 0.5, 16.5, 0.5, z, seriesStyle, index); + }; + + if (series.showMarkers || seriesType === 'scatter') { + var markerConfig = Ext.apply(series.markerStyle, series.markerConfig || {}, { + fill: series.getLegendColor(index) + }); + me.drawMarker(8.5, 0.5, z, markerConfig); + } + } + + else { + me.drawFilledBox(12, 12, z, index); + } + }, + + + drawLine: function(fromX, fromY, toX, toY, z, seriesStyle, index) { + var me = this, + surface = me.surface, + series = me.series; + + return me.add('line', surface.add({ + type: 'path', + path: 'M' + fromX + ',' + fromY + 'L' + toX + ',' + toY, + zIndex: (z || 0) + 2, + "stroke-width": series.lineWidth, + "stroke-linejoin": "round", + "stroke-dasharray": series.dash, + stroke: seriesStyle.stroke || series.getLegendColor(index) || '#000', + style: { + cursor: 'pointer' + } + })); + }, + + + drawMarker: function(x, y, z, markerConfig) { + var me = this, + surface = me.surface, + series = me.series; + + return me.add('marker', Ext.chart.Shape[markerConfig.type](surface, { + fill: markerConfig.fill, + x: x, + y: y, + zIndex: (z || 0) + 2, + radius: markerConfig.radius || markerConfig.size, + style: { + cursor: 'pointer' + } + })); + }, + + + drawFilledBox: function(width, height, z, index) { + var me = this, + surface = me.surface, + series = me.series; + + return me.add('box', surface.add({ + type: 'rect', + zIndex: (z || 0) + 2, + x: 0, + y: 0, + width: width, + height: height, + fill: series.getLegendColor(index), + style: { + cursor: 'pointer' + } + })); + }, + + + onMouseOver: function() { + var me = this; + + me.label.setStyle({ + 'font-weight': 'bold' + }); + me.series._index = me.yFieldIndex; + me.series.highlightItem(); + }, + + + onMouseOut: function() { + var me = this, + legend = me.legend, + boldRe = me.boldRe; + + me.label.setStyle({ + 'font-weight': legend.labelFont && boldRe.test(legend.labelFont) ? 'bold' : 'normal' + }); + me.series._index = me.yFieldIndex; + me.series.unHighlightItem(); + }, + + + onMouseDown: function() { + var me = this, + index = me.yFieldIndex; + + if (!me.hiddenSeries) { + me.series.hideAll(index); + me.label.setAttributes({ + opacity: 0.5 + }, true); + } else { + me.series.showAll(index); + me.label.setAttributes({ + opacity: 1 + }, true); + } + me.hiddenSeries = !me.hiddenSeries; + me.legend.chart.redraw(); + }, + + + updatePosition: function(relativeTo) { + var me = this, + items = me.items, + ln = items.length, + i = 0, + item; + if (!relativeTo) { + relativeTo = me.legend; + } + for (; i < ln; i++) { + item = items[i]; + switch (item.type) { + case 'text': + item.setAttributes({ + x: 20 + relativeTo.x + me.x, + y: relativeTo.y + me.y + }, true); + break; + case 'rect': + item.setAttributes({ + translate: { + x: relativeTo.x + me.x, + y: relativeTo.y + me.y - 6 + } + }, true); + break; + default: + item.setAttributes({ + translate: { + x: relativeTo.x + me.x, + y: relativeTo.y + me.y + } + }, true); + } + } + } +}); + + +Ext.define('Ext.chart.Legend', { + + + + + + + + + visible: true, + + + update: true, + + + position: 'bottom', + + + x: 0, + + + y: 0, + + + labelColor: '#000', + + + labelFont: '12px Helvetica, sans-serif', + + + boxStroke: '#000', + + + boxStrokeWidth: 1, + + + boxFill: '#FFF', + + + itemSpacing: 10, + + + padding: 5, + + + width: 0, + + height: 0, + + + boxZIndex: 100, + + + constructor: function(config) { + var me = this; + if (config) { + Ext.apply(me, config); + } + me.items = []; + + me.isVertical = ("left|right|float".indexOf(me.position) !== -1); + + + me.origX = me.x; + me.origY = me.y; + }, + + + create: function() { + var me = this, + seriesItems = me.chart.series.items, + i, ln, series; + + me.createBox(); + + if (me.rebuild !== false) { + me.createItems(); + } + + if (!me.created && me.isDisplayed()) { + me.created = true; + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + series.on('titlechange', me.redraw, me); + } + } + }, + + + redraw: function() { + var me = this; + + me.create(); + me.updatePosition(); + }, + + + isDisplayed: function() { + return this.visible && this.chart.series.findIndex('showInLegend', true) !== -1; + }, + + + createItems: function() { + var me = this, + seriesItems = me.chart.series.items, + items = me.items, + fields, i, li, j, lj, series, item; + + + me.removeItems(); + + + for (i = 0, li = seriesItems.length; i < li; i++) { + series = seriesItems[i]; + + if (series.showInLegend) { + fields = [].concat(series.yField); + + for (j = 0, lj = fields.length; j < lj; j++) { + item = me.createLegendItem(series, j); + items.push(item); + } + } + } + + me.alignItems(); + }, + + + removeItems: function() { + var me = this, + items = me.items, + len = items ? items.length : 0, + i; + + if (len) { + for (i = 0; i < len; i++) { + items[i].destroy(); + } + } + + + items.length = []; + }, + + + alignItems: function() { + var me = this, + padding = me.padding, + vertical = me.isVertical, + mfloor = Math.floor, + dim, maxWidth, maxHeight, totalWidth, totalHeight; + + dim = me.updateItemDimensions(); + + maxWidth = dim.maxWidth; + maxHeight = dim.maxHeight; + totalWidth = dim.totalWidth; + totalHeight = dim.totalHeight; + + + me.width = mfloor((vertical ? maxWidth : totalWidth) + padding * 2); + me.height = mfloor((vertical ? totalHeight : maxHeight) + padding * 2); + }, + + updateItemDimensions: function() { + var me = this, + items = me.items, + padding = me.padding, + itemSpacing = me.itemSpacing, + maxWidth = 0, + maxHeight = 0, + totalWidth = 0, + totalHeight = 0, + vertical = me.isVertical, + mfloor = Math.floor, + mmax = Math.max, + spacing = 0, + i, l, item, bbox, width, height; + + + + for (i = 0, l = items.length; i < l; i++) { + item = items[i]; + + bbox = item.getBBox(); + + + width = bbox.width; + height = bbox.height; + + spacing = (i === 0 ? 0 : itemSpacing); + + + item.x = padding + mfloor(vertical ? 0 : totalWidth + spacing); + item.y = padding + mfloor(vertical ? totalHeight + spacing : 0) + height / 2; + + + totalWidth += spacing + width; + totalHeight += spacing + height; + maxWidth = mmax(maxWidth, width); + maxHeight = mmax(maxHeight, height); + } + + return { + totalWidth: totalWidth, + totalHeight: totalHeight, + maxWidth: maxWidth, + maxHeight: maxHeight + }; + }, + + + createLegendItem: function(series, yFieldIndex) { + var me = this; + + return new Ext.chart.LegendItem({ + legend: me, + series: series, + surface: me.chart.surface, + yFieldIndex: yFieldIndex + }); + }, + + + getBBox: function() { + var me = this; + return { + x: Math.round(me.x) - me.boxStrokeWidth / 2, + y: Math.round(me.y) - me.boxStrokeWidth / 2, + width: me.width + me.boxStrokeWidth, + height: me.height + me.boxStrokeWidth + }; + }, + + + createBox: function() { + var me = this, + box, bbox; + + if (me.boxSprite) { + me.boxSprite.destroy(); + } + + bbox = me.getBBox(); + + + + + + if (isNaN(bbox.width) || isNaN(bbox.height)) { + me.boxSprite = false; + return; + } + + box = me.boxSprite = me.chart.surface.add(Ext.apply({ + type: 'rect', + stroke: me.boxStroke, + "stroke-width": me.boxStrokeWidth, + fill: me.boxFill, + zIndex: me.boxZIndex + }, bbox)); + + box.redraw(); + }, + + + calcPosition: function() { + var me = this, + x, y, + legendWidth = me.width, + legendHeight = me.height, + chart = me.chart, + chartBBox = chart.chartBBox, + insets = chart.insetPadding, + chartWidth = chartBBox.width - (insets * 2), + chartHeight = chartBBox.height - (insets * 2), + chartX = chartBBox.x + insets, + chartY = chartBBox.y + insets, + surface = chart.surface, + mfloor = Math.floor; + + + switch(me.position) { + case "left": + x = insets; + y = mfloor(chartY + chartHeight / 2 - legendHeight / 2); + break; + case "right": + x = mfloor(surface.width - legendWidth) - insets; + y = mfloor(chartY + chartHeight / 2 - legendHeight / 2); + break; + case "top": + x = mfloor(chartX + chartWidth / 2 - legendWidth / 2); + y = insets; + break; + case "bottom": + x = mfloor(chartX + chartWidth / 2 - legendWidth / 2); + y = mfloor(surface.height - legendHeight) - insets; + break; + default: + x = mfloor(me.origX) + insets; + y = mfloor(me.origY) + insets; + } + + return { x: x, y: y }; + }, + + + updatePosition: function() { + var me = this, + items = me.items, + pos, i, l, bbox; + + if (me.isDisplayed()) { + + pos = me.calcPosition(); + + me.x = pos.x; + me.y = pos.y; + + + for (i = 0, l = items.length; i < l; i++) { + items[i].updatePosition(); + } + + bbox = me.getBBox(); + + + + + + + if (isNaN(bbox.width) || isNaN(bbox.height)) { + if (me.boxSprite) { + me.boxSprite.hide(true); + } + } + else { + if (!me.boxSprite) { + me.createBox(); + } + + + me.boxSprite.setAttributes(bbox, true); + me.boxSprite.show(true); + } + } + }, + + + toggle: function(show) { + var me = this, + i = 0, + items = me.items, + len = items.length; + + if (me.boxSprite) { + if (show) { + me.boxSprite.show(true); + } else { + me.boxSprite.hide(true); + } + } + + for (; i < len; ++i) { + if (show) { + items[i].show(true); + } else { + items[i].hide(true); + } + } + + me.visible = show; + } +}); + + +Ext.define('Ext.chart.theme.Base', { + + + + + + + + constructor: function(config) { + var ident = Ext.identityFn; + Ext.chart.theme.call(this, config, { + background: false, + axis: { + stroke: '#444', + 'stroke-width': 1 + }, + axisLabelTop: { + fill: '#444', + font: '12px Arial, Helvetica, sans-serif', + spacing: 2, + padding: 5, + renderer: ident + }, + axisLabelRight: { + fill: '#444', + font: '12px Arial, Helvetica, sans-serif', + spacing: 2, + padding: 5, + renderer: ident + }, + axisLabelBottom: { + fill: '#444', + font: '12px Arial, Helvetica, sans-serif', + spacing: 2, + padding: 5, + renderer: ident + }, + axisLabelLeft: { + fill: '#444', + font: '12px Arial, Helvetica, sans-serif', + spacing: 2, + padding: 5, + renderer: ident + }, + axisTitleTop: { + font: 'bold 18px Arial', + fill: '#444' + }, + axisTitleRight: { + font: 'bold 18px Arial', + fill: '#444', + rotate: { + x:0, y:0, + degrees: 270 + } + }, + axisTitleBottom: { + font: 'bold 18px Arial', + fill: '#444' + }, + axisTitleLeft: { + font: 'bold 18px Arial', + fill: '#444', + rotate: { + x:0, y:0, + degrees: 270 + } + }, + series: { + 'stroke-width': 0 + }, + seriesLabel: { + font: '12px Arial', + fill: '#333' + }, + marker: { + stroke: '#555', + radius: 3, + size: 3 + }, + colors: [ "#94ae0a", "#115fa6","#a61120", "#ff8809", "#ffd13e", "#a61187", "#24ad9a", "#7c7474", "#a66111"], + seriesThemes: [{ + fill: "#115fa6" + }, { + fill: "#94ae0a" + }, { + fill: "#a61120" + }, { + fill: "#ff8809" + }, { + fill: "#ffd13e" + }, { + fill: "#a61187" + }, { + fill: "#24ad9a" + }, { + fill: "#7c7474" + }, { + fill: "#115fa6" + }, { + fill: "#94ae0a" + }, { + fill: "#a61120" + }, { + fill: "#ff8809" + }, { + fill: "#ffd13e" + }, { + fill: "#a61187" + }, { + fill: "#24ad9a" + }, { + fill: "#7c7474" + }, { + fill: "#a66111" + }], + markerThemes: [{ + fill: "#115fa6", + type: 'circle' + }, { + fill: "#94ae0a", + type: 'cross' + }, { + fill: "#115fa6", + type: 'plus' + }, { + fill: "#94ae0a", + type: 'circle' + }, { + fill: "#a61120", + type: 'cross' + }] + }); + } +}, function() { + var palette = ['#b1da5a', '#4ce0e7', '#e84b67', '#da5abd', '#4d7fe6', '#fec935'], + names = ['Green', 'Sky', 'Red', 'Purple', 'Blue', 'Yellow'], + i = 0, j = 0, l = palette.length, themes = Ext.chart.theme, + categories = [['#f0a50a', '#c20024', '#2044ba', '#810065', '#7eae29'], + ['#6d9824', '#87146e', '#2a9196', '#d39006', '#1e40ac'], + ['#fbbc29', '#ce2e4e', '#7e0062', '#158b90', '#57880e'], + ['#ef5773', '#fcbd2a', '#4f770d', '#1d3eaa', '#9b001f'], + ['#7eae29', '#fdbe2a', '#910019', '#27b4bc', '#d74dbc'], + ['#44dce1', '#0b2592', '#996e05', '#7fb325', '#b821a1']], + cats = categories.length; + + + for (; i < l; i++) { + themes[names[i]] = (function(color) { + return Ext.extend(themes.Base, { + constructor: function(config) { + themes.Base.prototype.constructor.call(this, Ext.apply({ + baseColor: color + }, config)); + } + }); + }(palette[i])); + } + + + for (i = 0; i < cats; i++) { + themes['Category' + (i + 1)] = (function(category) { + return Ext.extend(themes.Base, { + constructor: function(config) { + themes.Base.prototype.constructor.call(this, Ext.apply({ + colors: category + }, config)); + } + }); + }(categories[i])); + } +}); + + +Ext.define('Ext.chart.Chart', { + extend: Ext.draw.Component , + + alias: 'widget.chart', + + mixins: { + themeManager: Ext.chart.theme.Theme , + mask: Ext.chart.Mask , + navigation: Ext.chart.Navigation , + bindable: Ext.util.Bindable , + observable: Ext.util.Observable + }, + + + + + + + + + + + + + + + + + + viewBox: false, + + + + + animate: false, + + + legend: false, + + + insetPadding: 10, + + + background: false, + + + + + + + + + + constructor: function(config) { + var me = this, + defaultAnim; + + config = Ext.apply({}, config); + me.initTheme(config.theme || me.theme); + if (me.gradients) { + Ext.apply(config, { gradients: me.gradients }); + } + if (me.background) { + Ext.apply(config, { background: me.background }); + } + if (config.animate) { + defaultAnim = { + easing: 'ease', + duration: 500 + }; + if (Ext.isObject(config.animate)) { + config.animate = Ext.applyIf(config.animate, defaultAnim); + } + else { + config.animate = defaultAnim; + } + } + + me.mixins.observable.constructor.call(me, config); + if (config.enableMask) { + me.mixins.mask.constructor.call(me); + } + me.mixins.navigation.constructor.call(me); + me.callParent([config]); + }, + + getChartStore: function(){ + return this.substore || this.store; + }, + + initComponent: function() { + var me = this, + axes, + series; + me.callParent(); + me.addEvents( + 'itemmousedown', + 'itemmouseup', + 'itemmouseover', + 'itemmouseout', + 'itemclick', + 'itemdblclick', + 'itemdragstart', + 'itemdrag', + 'itemdragend', + + 'beforerefresh', + + 'refresh' + ); + Ext.applyIf(me, { + zoom: { + width: 1, + height: 1, + x: 0, + y: 0 + } + }); + me.maxGutters = { left: 0, right: 0, bottom: 0, top: 0 }; + me.store = Ext.data.StoreManager.lookup(me.store); + axes = me.axes; + me.axes = new Ext.util.MixedCollection(false, function(a) { return a.position; }); + if (axes) { + me.axes.addAll(axes); + } + series = me.series; + me.series = new Ext.util.MixedCollection(false, function(a) { return a.seriesId || (a.seriesId = Ext.id(null, 'ext-chart-series-')); }); + if (series) { + me.series.addAll(series); + } + if (me.legend !== false) { + me.legend = new Ext.chart.Legend(Ext.applyIf({chart:me}, me.legend)); + } + + me.on({ + mousemove: me.onMouseMove, + mouseleave: me.onMouseLeave, + mousedown: me.onMouseDown, + mouseup: me.onMouseUp, + click: me.onClick, + dblclick: me.onDblClick, + scope: me + }); + }, + + + afterComponentLayout: function(width, height, oldWidth, oldHeight) { + var me = this; + if (Ext.isNumber(width) && Ext.isNumber(height)) { + if (width !== oldWidth || height !== oldHeight) { + me.curWidth = width; + me.curHeight = height; + me.redraw(true); + me.needsRedraw = false; + } else if (me.needsRedraw) { + me.redraw(); + me.needsRedraw = false; + } + } + this.callParent(arguments); + }, + + + redraw: function(resize) { + var me = this, + seriesItems = me.series.items, + seriesLen = seriesItems.length, + axesItems = me.axes.items, + axesLen = axesItems.length, + themeIndex = 0, + i, item, + chartBBox = me.chartBBox = { + x: 0, + y: 0, + height: me.curHeight, + width: me.curWidth + }, + legend = me.legend, + series; + + me.surface.setSize(chartBBox.width, chartBBox.height); + + for (i = 0; i < seriesLen; i++) { + item = seriesItems[i]; + if (!item.initialized) { + series = me.initializeSeries(item, i, themeIndex); + } else { + series = item; + } + + + series.onRedraw(); + + + if (Ext.isArray(item.yField)) { + themeIndex += item.yField.length; + } else { + ++themeIndex; + } + } + for (i = 0; i < axesLen; i++) { + item = axesItems[i]; + if (!item.initialized) { + me.initializeAxis(item); + } + } + + + for (i = 0; i < axesLen; i++) { + axesItems[i].processView(); + } + for (i = 0; i < axesLen; i++) { + axesItems[i].drawAxis(true); + } + + + if (legend !== false && legend.visible) { + if (legend.update || !legend.created) { + legend.create(); + } + } + + + me.alignAxes(); + + + if (legend !== false && legend.visible) { + legend.updatePosition(); + } + + + me.getMaxGutters(); + + + me.resizing = !!resize; + + for (i = 0; i < axesLen; i++) { + axesItems[i].drawAxis(); + } + for (i = 0; i < seriesLen; i++) { + me.drawCharts(seriesItems[i]); + } + me.resizing = false; + }, + + + afterRender: function() { + var me = this; + + me.callParent(arguments); + + if (me.categoryNames) { + me.setCategoryNames(me.categoryNames); + } + + me.bindStore(me.store, true); + me.refresh(); + + if (me.surface.engine === 'Vml') { + me.on('added', me.onAddedVml, me); + me.mon(me.hierarchyEventSource, 'added', me.onContainerAddedVml, me); + } + }, + + + + + + + onAddedVml: function() { + this.needsRedraw = true; + }, + + onContainerAddedVml: function(container) { + if (this.isDescendantOf(container)) { + this.needsRedraw = true; + } + }, + + + getEventXY: function(e) { + var me = this, + box = this.surface.getRegion(), + pageXY = e.getXY(), + x = pageXY[0] - box.left, + y = pageXY[1] - box.top; + return [x, y]; + }, + + onClick: function(e) { + this.handleClick('itemclick', e); + }, + + onDblClick: function(e) { + this.handleClick('itemdblclick', e); + }, + + + handleClick: function(name, e) { + var me = this, + position = me.getEventXY(e), + seriesItems = me.series.items, + i, ln, series, + item; + + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) { + if (series.getItemForPoint) { + item = series.getItemForPoint(position[0], position[1]); + if (item) { + series.fireEvent(name, item); + } + } + } + } + }, + + + onMouseDown: function(e) { + var me = this, + position = me.getEventXY(e), + seriesItems = me.series.items, + i, ln, series, + item; + + if (me.enableMask) { + me.mixins.mask.onMouseDown.call(me, e); + } + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) { + if (series.getItemForPoint) { + item = series.getItemForPoint(position[0], position[1]); + if (item) { + series.fireEvent('itemmousedown', item); + } + } + } + } + }, + + + onMouseUp: function(e) { + var me = this, + position = me.getEventXY(e), + seriesItems = me.series.items, + i, ln, series, + item; + + if (me.enableMask) { + me.mixins.mask.onMouseUp.call(me, e); + } + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) { + if (series.getItemForPoint) { + item = series.getItemForPoint(position[0], position[1]); + if (item) { + series.fireEvent('itemmouseup', item); + } + } + } + } + }, + + + onMouseMove: function(e) { + var me = this, + position = me.getEventXY(e), + seriesItems = me.series.items, + i, ln, series, + item, last, storeItem, storeField; + + + if (me.enableMask) { + me.mixins.mask.onMouseMove.call(me, e); + } + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + if (Ext.draw.Draw.withinBox(position[0], position[1], series.bbox)) { + if (series.getItemForPoint) { + item = series.getItemForPoint(position[0], position[1]); + last = series._lastItemForPoint; + storeItem = series._lastStoreItem; + storeField = series._lastStoreField; + + + if (item !== last || item && (item.storeItem != storeItem || item.storeField != storeField)) { + if (last) { + series.fireEvent('itemmouseout', last); + delete series._lastItemForPoint; + delete series._lastStoreField; + delete series._lastStoreItem; + } + if (item) { + series.fireEvent('itemmouseover', item); + series._lastItemForPoint = item; + series._lastStoreItem = item.storeItem; + series._lastStoreField = item.storeField; + } + } + } + } else { + last = series._lastItemForPoint; + if (last) { + series.fireEvent('itemmouseout', last); + delete series._lastItemForPoint; + delete series._lastStoreField; + delete series._lastStoreItem; + } + } + } + }, + + + onMouseLeave: function(e) { + var me = this, + seriesItems = me.series.items, + i, ln, series; + + if (me.enableMask) { + me.mixins.mask.onMouseLeave.call(me, e); + } + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + delete series._lastItemForPoint; + } + }, + + + delayRefresh: function() { + var me = this; + if (!me.refreshTask) { + me.refreshTask = new Ext.util.DelayedTask(me.refresh, me); + } + me.refreshTask.delay(me.refreshBuffer); + }, + + + refresh: function() { + var me = this; + + if (me.rendered && me.curWidth !== undefined && me.curHeight !== undefined) { + if (!me.isVisible(true)) { + if (!me.refreshPending) { + me.setShowListeners('mon'); + me.refreshPending = true; + } + return; + } + if (me.fireEvent('beforerefresh', me) !== false) { + me.redraw(); + me.fireEvent('refresh', me); + } + } + }, + + onShow: function(){ + var me = this; + me.callParent(arguments); + if (me.refreshPending) { + me.delayRefresh(); + me.setShowListeners('mun'); + } + delete me.refreshPending; + }, + + setShowListeners: function(method){ + var me = this; + me[method](me.hierarchyEventSource, { + scope: me, + single: true, + show: me.forceRefresh, + expand: me.forceRefresh + }); + }, + + doRefresh: function(){ + + this.setSubStore(null); + this.refresh(); + }, + + forceRefresh: function(container) { + var me = this; + if (me.isDescendantOf(container) && me.refreshPending) { + + + me.setShowListeners('mun'); + me.delayRefresh(); + } + delete me.refreshPending; + }, + + bindStore: function(store, initial) { + var me = this; + me.mixins.bindable.bindStore.apply(me, arguments); + if (me.store && !initial) { + me.refresh(); + } + }, + + getStoreListeners: function() { + var refresh = this.doRefresh, + delayRefresh = this.delayRefresh; + + return { + refresh: refresh, + add: delayRefresh, + bulkremove: delayRefresh, + update: delayRefresh, + clear: refresh + }; + }, + + setSubStore: function(subStore){ + this.substore = subStore; + }, + + + initializeAxis: function(axis) { + var me = this, + chartBBox = me.chartBBox, + w = chartBBox.width, + h = chartBBox.height, + x = chartBBox.x, + y = chartBBox.y, + themeAttrs = me.themeAttrs, + config = { + chart: me + }; + if (themeAttrs) { + config.axisStyle = Ext.apply({}, themeAttrs.axis); + config.axisLabelLeftStyle = Ext.apply({}, themeAttrs.axisLabelLeft); + config.axisLabelRightStyle = Ext.apply({}, themeAttrs.axisLabelRight); + config.axisLabelTopStyle = Ext.apply({}, themeAttrs.axisLabelTop); + config.axisLabelBottomStyle = Ext.apply({}, themeAttrs.axisLabelBottom); + config.axisTitleLeftStyle = Ext.apply({}, themeAttrs.axisTitleLeft); + config.axisTitleRightStyle = Ext.apply({}, themeAttrs.axisTitleRight); + config.axisTitleTopStyle = Ext.apply({}, themeAttrs.axisTitleTop); + config.axisTitleBottomStyle = Ext.apply({}, themeAttrs.axisTitleBottom); + } + switch (axis.position) { + case 'top': + Ext.apply(config, { + length: w, + width: h, + x: x, + y: y + }); + break; + case 'bottom': + Ext.apply(config, { + length: w, + width: h, + x: x, + y: h + }); + break; + case 'left': + Ext.apply(config, { + length: h, + width: w, + x: x, + y: h + }); + break; + case 'right': + Ext.apply(config, { + length: h, + width: w, + x: w, + y: h + }); + break; + } + if (!axis.chart) { + Ext.apply(config, axis); + axis = me.axes.replace(Ext.createByAlias('axis.' + axis.type.toLowerCase(), config)); + } else { + Ext.apply(axis, config); + } + axis.initialized = true; + }, + + + + getInsets: function() { + var me = this, + insetPadding = me.insetPadding; + + return { + top: insetPadding, + right: insetPadding, + bottom: insetPadding, + left: insetPadding + }; + }, + + + calculateInsets: function() { + var me = this, + legend = me.legend, + axes = me.axes, + edges = ['top', 'right', 'bottom', 'left'], + insets, i, l, edge, isVertical, axis, bbox; + + function getAxis(edge) { + var i = axes.findIndex('position', edge); + return (i < 0) ? null : axes.getAt(i); + } + + insets = me.getInsets(); + + + for (i = 0, l = edges.length; i < l; i++) { + edge = edges[i]; + + isVertical = (edge === 'left' || edge === 'right'); + axis = getAxis(edge); + + + if (legend !== false) { + if (legend.position === edge) { + bbox = legend.getBBox(); + insets[edge] += (isVertical ? bbox.width : bbox.height) + me.insetPadding; + } + } + + + + if (axis && axis.bbox) { + bbox = axis.bbox; + insets[edge] += (isVertical ? bbox.width : bbox.height); + } + }; + + return insets; + }, + + + alignAxes: function() { + var me = this, + axesItems = me.axes.items, + insets, chartBBox, i, l, axis, pos, isVertical; + + insets = me.calculateInsets(); + + + chartBBox = { + x: insets.left, + y: insets.top, + width: me.curWidth - insets.left - insets.right, + height: me.curHeight - insets.top - insets.bottom + }; + me.chartBBox = chartBBox; + + + + for (i = 0, l = axesItems.length; i < l; i++) { + axis = axesItems[i]; + pos = axis.position; + isVertical = pos === 'left' || pos === 'right'; + + axis.x = (pos === 'right' ? chartBBox.x + chartBBox.width : chartBBox.x); + axis.y = (pos === 'top' ? chartBBox.y : chartBBox.y + chartBBox.height); + axis.width = (isVertical ? chartBBox.width : chartBBox.height); + axis.length = (isVertical ? chartBBox.height : chartBBox.width); + }; + }, + + + initializeSeries: function(series, idx, themeIndex) { + var me = this, + themeAttrs = me.themeAttrs, + seriesObj, markerObj, seriesThemes, st, + markerThemes, colorArrayStyle = [], + isInstance = (series instanceof Ext.chart.series.Series). + i = 0, l, config; + + if (!series.initialized) { + config = { + chart: me, + seriesId: series.seriesId + }; + if (themeAttrs) { + seriesThemes = themeAttrs.seriesThemes; + markerThemes = themeAttrs.markerThemes; + seriesObj = Ext.apply({}, themeAttrs.series); + markerObj = Ext.apply({}, themeAttrs.marker); + config.seriesStyle = Ext.apply(seriesObj, seriesThemes[themeIndex % seriesThemes.length]); + config.seriesLabelStyle = Ext.apply({}, themeAttrs.seriesLabel); + config.markerStyle = Ext.apply(markerObj, markerThemes[themeIndex % markerThemes.length]); + if (themeAttrs.colors) { + config.colorArrayStyle = themeAttrs.colors; + } else { + colorArrayStyle = []; + for (l = seriesThemes.length; i < l; i++) { + st = seriesThemes[i]; + if (st.fill || st.stroke) { + colorArrayStyle.push(st.fill || st.stroke); + } + } + if (colorArrayStyle.length) { + config.colorArrayStyle = colorArrayStyle; + } + } + config.seriesIdx = idx; + config.themeIdx = themeIndex; + } + + if (isInstance) { + Ext.applyIf(series, config); + } + else { + Ext.applyIf(config, series); + series = me.series.replace(Ext.createByAlias('series.' + series.type.toLowerCase(), config)); + } + } + + if (series.initialize) { + series.initialize(); + } + series.initialized = true; + return series; + }, + + + getMaxGutters: function() { + var me = this, + seriesItems = me.series.items, + i, ln, series, gutters, + lowerH = 0, upperH = 0, lowerV = 0, upperV = 0; + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + gutters = seriesItems[i].getGutters(); + if (gutters) { + if (gutters.verticalAxis) { + lowerV = Math.max(lowerV, gutters.lower); + upperV = Math.max(upperV, gutters.upper); + } + else { + lowerH = Math.max(lowerH, gutters.lower); + upperH = Math.max(upperH, gutters.upper); + } + } + } + me.maxGutters = { + left: lowerH, + right: upperH, + bottom: lowerV, + top: upperV + }; + }, + + + drawAxis: function(axis) { + axis.drawAxis(); + }, + + + drawCharts: function(series) { + series.triggerafterrender = false; + series.drawSeries(); + if (!this.animate) { + series.fireEvent('afterrender'); + } + }, + + save: function(config){ + return Ext.draw.Surface.save(this.surface, config); + }, + + destroy: function() { + Ext.destroy(this.surface); + this.bindStore(null); + this.callParent(arguments); + } +}); + + +Ext.define('Ext.chart.Highlight', { + + + + + + + + + highlight: false, + + + highlightCfg : { + fill: '#fdd', + "stroke-width": 5, + stroke: '#f55' + }, + + constructor: function(config) { + + if (config.highlight && (typeof config.highlight !== 'boolean')) { + this.highlightCfg = Ext.merge({}, this.highlightCfg, config.highlight); + } + }, + + + highlightItem: function(item) { + if (!item) { + return; + } + + var me = this, + sprite = item.sprite, + opts = Ext.merge({}, me.highlightCfg, me.highlight), + surface = me.chart.surface, + animate = me.chart.animate, + p, from, to, pi; + + if (!me.highlight || !sprite || sprite._highlighted) { + return; + } + if (sprite._anim) { + sprite._anim.paused = true; + } + sprite._highlighted = true; + if (!sprite._defaults) { + sprite._defaults = Ext.apply({}, sprite.attr); + from = {}; + to = {}; + + for (p in opts) { + if (! (p in sprite._defaults)) { + sprite._defaults[p] = surface.availableAttrs[p]; + } + from[p] = sprite._defaults[p]; + to[p] = opts[p]; + if (Ext.isObject(opts[p])) { + from[p] = {}; + to[p] = {}; + Ext.apply(sprite._defaults[p], sprite.attr[p]); + Ext.apply(from[p], sprite._defaults[p]); + for (pi in sprite._defaults[p]) { + if (! (pi in opts[p])) { + to[p][pi] = from[p][pi]; + } else { + to[p][pi] = opts[p][pi]; + } + } + for (pi in opts[p]) { + if (! (pi in to[p])) { + to[p][pi] = opts[p][pi]; + } + } + } + } + sprite._from = from; + sprite._to = to; + sprite._endStyle = to; + } + if (animate) { + sprite._anim = new Ext.fx.Anim({ + target: sprite, + from: sprite._from, + to: sprite._to, + duration: 150 + }); + } else { + sprite.setAttributes(sprite._to, true); + } + }, + + + unHighlightItem: function() { + if (!this.highlight || !this.items) { + return; + } + + var me = this, + items = me.items, + len = items.length, + opts = Ext.merge({}, me.highlightCfg, me.highlight), + animate = me.chart.animate, + i = 0, + obj, p, sprite; + for (; i < len; i++) { + if (!items[i]) { + continue; + } + sprite = items[i].sprite; + if (sprite && sprite._highlighted) { + if (sprite._anim) { + sprite._anim.paused = true; + } + obj = {}; + for (p in opts) { + if (Ext.isObject(sprite._defaults[p])) { + obj[p] = Ext.apply({}, sprite._defaults[p]); + } + else { + obj[p] = sprite._defaults[p]; + } + } + if (animate) { + + sprite._endStyle = obj; + sprite._anim = new Ext.fx.Anim({ + target: sprite, + to: obj, + duration: 150 + }); + } + else { + sprite.setAttributes(obj, true); + } + delete sprite._highlighted; + + } + } + }, + + cleanHighlights: function() { + if (!this.highlight) { + return; + } + + var group = this.group, + markerGroup = this.markerGroup, + i = 0, + l; + for (l = group.getCount(); i < l; i++) { + delete group.getAt(i)._defaults; + } + if (markerGroup) { + for (l = markerGroup.getCount(); i < l; i++) { + delete markerGroup.getAt(i)._defaults; + } + } + } +}); + + +Ext.define('Ext.chart.Label', { + + + + + + + + + + + + + + + colorStringRe: /url\s*\(\s*#([^\/)]+)\s*\)/, + + + constructor: function(config) { + var me = this; + me.label = Ext.applyIf(me.label || {}, + { + display: "none", + stackedDisplay: "none", + color: "#000", + field: "name", + minMargin: 50, + font: "11px Helvetica, sans-serif", + orientation: "horizontal", + renderer: Ext.identityFn + }); + + if (me.label.display !== 'none') { + me.labelsGroup = me.chart.surface.getGroup(me.seriesId + '-labels'); + } + }, + + + renderLabels: function() { + var me = this, + chart = me.chart, + gradients = chart.gradients, + items = me.items, + animate = chart.animate, + config = me.label, + display = config.display, + stackedDisplay = config.stackedDisplay, + format = config.renderer, + color = config.color, + field = [].concat(config.field), + group = me.labelsGroup, + groupLength = (group || 0) && group.length, + store = me.chart.getChartStore(), + len = store.getCount(), + itemLength = (items || 0) && items.length, + ratio = itemLength / len, + gradientsCount = (gradients || 0) && gradients.length, + Color = Ext.draw.Color, + hides = [], + gradient, i, count, groupIndex, index, j, k, colorStopTotal, colorStopIndex, colorStop, item, label, + storeItem, sprite, spriteColor, spriteBrightness, labelColor, colorString, + total, totalPositive, totalNegative, topText, bottomText; + + if (display == 'none' || !group) { + return; + } + + if(itemLength == 0){ + while(groupLength--) { + hides.push(groupLength); + } + } else { + for (i = 0, count = 0, groupIndex = 0; i < len; i++) { + index = 0; + for (j = 0; j < ratio; j++) { + item = items[count]; + label = group.getAt(groupIndex); + storeItem = store.getAt(i); + + while(this.__excludes && this.__excludes[index]) { + index++; + } + + if (!item && label) { + label.hide(true); + groupIndex++; + } + + if (item && field[j]) { + if (!label) { + label = me.onCreateLabel(storeItem, item, i, display); + if (!label) { + break; + } + } + + + label.setAttributes({ + fill: String(color) + }, true); + + + me.onPlaceLabel(label, storeItem, item, i, display, animate, index); + groupIndex++; + + + if (config.contrast && item.sprite) { + sprite = item.sprite; + + + if (animate && sprite._endStyle) { + colorString = sprite._endStyle.fill; + } else if (animate && sprite._to) { + colorString = sprite._to.fill; + } else { + colorString = sprite.attr.fill; + } + colorString = colorString || sprite.attr.fill; + + spriteColor = Color.fromString(colorString); + + if (colorString && !spriteColor) { + colorString = colorString.match(me.colorStringRe)[1]; + for (k = 0; k < gradientsCount; k++) { + gradient = gradients[k]; + if (gradient.id == colorString) { + + colorStop = 0; colorStopTotal = 0; + for (colorStopIndex in gradient.stops) { + colorStop++; + colorStopTotal += Color.fromString(gradient.stops[colorStopIndex].color).getGrayscale(); + } + spriteBrightness = (colorStopTotal / colorStop) / 255; + break; + } + } + } + else { + spriteBrightness = spriteColor.getGrayscale() / 255; + } + if (label.isOutside) { + spriteBrightness = 1; + } + labelColor = Color.fromString(label.attr.fill || label.attr.color).getHSL(); + labelColor[2] = spriteBrightness > 0.5 ? 0.2 : 0.8; + label.setAttributes({ + fill: String(Color.fromHSL.apply({}, labelColor)) + }, true); + } + + + if (me.stacked && stackedDisplay && (item.totalPositiveValues || item.totalNegativeValues)) { + totalPositive = (item.totalPositiveValues || 0); + totalNegative = (item.totalNegativeValues || 0); + total = totalPositive + totalNegative; + + if (stackedDisplay == 'total') { + topText = format(total); + } else if (stackedDisplay == 'balances') { + if (totalPositive == 0 && totalNegative == 0) { + topText = format(0); + } else { + topText = format(totalPositive); + bottomText = format(totalNegative); + } + } + + if (topText) { + label = group.getAt(groupIndex); + if (!label) { + label = me.onCreateLabel(storeItem, item, i, 'over'); + } + labelColor = Color.fromString(label.attr.color || label.attr.fill).getHSL(); + label.setAttributes({ + text: topText, + style: config.font, + fill: String(Color.fromHSL.apply({}, labelColor)) + }, true); + me.onPlaceLabel(label, storeItem, item, i, 'over', animate, index); + groupIndex ++; + } + + if (bottomText) { + label = group.getAt(groupIndex); + if (!label) { + label = me.onCreateLabel(storeItem, item, i, 'under'); + } + labelColor = Color.fromString(label.attr.color || label.attr.fill).getHSL(); + label.setAttributes({ + text: bottomText, + style: config.font, + fill: String(Color.fromHSL.apply({}, labelColor)) + }, true); + me.onPlaceLabel(label, storeItem, item, i, 'under', animate, index); + groupIndex ++; + } + } + } + count++; + index++; + } + } + groupLength = group.length; + + while(groupLength > groupIndex){ + hides.push(groupIndex); + groupIndex++; + } + } + me.hideLabels(hides); + }, + + hideLabels: function(hides){ + var labelsGroup = this.labelsGroup, + hlen = !!hides && hides.length; + + if (!labelsGroup) { + return; + } + + if (hlen === false) { + hlen = labelsGroup.getCount(); + while (hlen--) { + labelsGroup.getAt(hlen).hide(true); + } + } else { + while(hlen--) { + labelsGroup.getAt(hides[hlen]).hide(true); + } + } + } +}); + + +Ext.define('Ext.chart.TipSurface', { + + + + extend: Ext.draw.Component , + + + + spriteArray: false, + renderFirst: true, + + constructor: function(config) { + this.callParent([config]); + if (config.sprites) { + this.spriteArray = [].concat(config.sprites); + delete config.sprites; + } + }, + + onRender: function() { + var me = this, + i = 0, + l = 0, + sp, + sprites; + this.callParent(arguments); + sprites = me.spriteArray; + if (me.renderFirst && sprites) { + me.renderFirst = false; + for (l = sprites.length; i < l; i++) { + sp = me.surface.add(sprites[i]); + sp.setAttributes({ + hidden: false + }, + true); + } + } + } +}); + + +Ext.define('Ext.chart.Tip', { + + + + + + + + constructor: function(config) { + var me = this, + surface, + sprites, + tipSurface; + if (config.tips) { + me.tipTimeout = null; + me.tipConfig = Ext.apply({}, config.tips, { + renderer: Ext.emptyFn, + constrainPosition: true, + autoHide: true + }); + me.tooltip = new Ext.tip.ToolTip(me.tipConfig); + me.chart.surface.on('mousemove', me.tooltip.onMouseMove, me.tooltip); + me.chart.surface.on('mouseleave', function() { + me.hideTip(); + }); + if (me.tipConfig.surface) { + + surface = me.tipConfig.surface; + sprites = surface.sprites; + tipSurface = new Ext.chart.TipSurface({ + id: 'tipSurfaceComponent', + sprites: sprites + }); + if (surface.width && surface.height) { + tipSurface.setSize(surface.width, surface.height); + } + me.tooltip.add(tipSurface); + me.spriteTip = tipSurface; + } + } + }, + + showTip: function(item) { + var me = this, + tooltip, + spriteTip, + tipConfig, + trackMouse, + sprite, + surface, + surfaceExt, + pos, + x, + y; + if (!me.tooltip) { + return; + } + clearTimeout(me.tipTimeout); + tooltip = me.tooltip; + spriteTip = me.spriteTip; + tipConfig = me.tipConfig; + trackMouse = tooltip.trackMouse; + if (!trackMouse) { + tooltip.trackMouse = true; + sprite = item.sprite; + surface = sprite.surface; + surfaceExt = Ext.get(surface.getId()); + if (surfaceExt) { + pos = surfaceExt.getXY(); + x = pos[0] + (sprite.attr.x || 0) + (sprite.attr.translation && sprite.attr.translation.x || 0); + y = pos[1] + (sprite.attr.y || 0) + (sprite.attr.translation && sprite.attr.translation.y || 0); + tooltip.targetXY = [x, y]; + } + } + if (spriteTip) { + tipConfig.renderer.call(tooltip, item.storeItem, item, spriteTip.surface); + } else { + tipConfig.renderer.call(tooltip, item.storeItem, item); + } + tooltip.show(); + tooltip.trackMouse = trackMouse; + }, + + hideTip: function(item) { + var tooltip = this.tooltip; + if (!tooltip) { + return; + } + clearTimeout(this.tipTimeout); + this.tipTimeout = setTimeout(function() { + tooltip.hide(); + }, 0); + } +}); + + +Ext.define('Ext.chart.axis.Abstract', { + + + + + + + + + + + + + constructor: function(config) { + config = config || {}; + + var me = this, + pos = config.position || 'left'; + + pos = pos.charAt(0).toUpperCase() + pos.substring(1); + + config.label = Ext.apply(config['axisLabel' + pos + 'Style'] || {}, config.label || {}); + config.axisTitleStyle = Ext.apply(config['axisTitle' + pos + 'Style'] || {}, config.labelTitle || {}); + Ext.apply(me, config); + me.fields = Ext.Array.from(me.fields); + this.callParent(); + me.labels = []; + me.getId(); + me.labelGroup = me.chart.surface.getGroup(me.axisId + "-labels"); + }, + + alignment: null, + grid: false, + steps: 10, + x: 0, + y: 0, + minValue: 0, + maxValue: 0, + + getId: function() { + return this.axisId || (this.axisId = Ext.id(null, 'ext-axis-')); + }, + + + processView: Ext.emptyFn, + + drawAxis: Ext.emptyFn, + addDisplayAndLabels: Ext.emptyFn +}); + + +Ext.define('Ext.chart.axis.Axis', { + + + + extend: Ext.chart.axis.Abstract , + + alternateClassName: 'Ext.chart.Axis', + + + + + + + + + + + + + + + hidden: false, + + + forceMinMax: false, + + + dashSize: 3, + + + position: 'bottom', + + + skipFirst: false, + + + length: 0, + + + width: 0, + + + adjustEnd: true, + + majorTickSteps: false, + + nullGutters: { lower: 0, upper: 0, verticalAxis: undefined }, + + + applyData: Ext.emptyFn, + + getRange: function () { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + series = chart.series.items, + position = me.position, + axes, + seriesClasses = Ext.chart.series, + aggregations = [], + min = Infinity, max = -Infinity, + vertical = me.position === 'left' || me.position === 'right' || me.position === 'radial', + i, ln, ln2, j, k, dataLength = data.length, aggregates, + countedFields = {}, + allFields = {}, + excludable = true, + fields, fieldMap, record, field, value; + + fields = me.fields; + for (j = 0, ln = fields.length; j < ln; j++) { + allFields[fields[j]] = true; + } + + for (i = 0, ln = series.length; i < ln; i++) { + if (series[i].seriesIsHidden) { + continue; + } + if (!series[i].getAxesForXAndYFields) { + continue; + } + axes = series[i].getAxesForXAndYFields(); + if (axes.xAxis && axes.xAxis !== position && axes.yAxis && axes.yAxis !== position) { + + continue; + } + + if (seriesClasses.Bar && series[i] instanceof seriesClasses.Bar && !series[i].column) { + + fields = vertical ? Ext.Array.from(series[i].xField) : Ext.Array.from(series[i].yField); + } else { + fields = vertical ? Ext.Array.from(series[i].yField) : Ext.Array.from(series[i].xField); + } + + if (me.fields.length) { + for (j = 0, ln2 = fields.length; j < ln2; j++) { + if (allFields[fields[j]]) { + break; + } + } + if (j == ln2) { + + continue; + } + } + + if (aggregates = series[i].stacked) { + + if (seriesClasses.Bar && series[i] instanceof seriesClasses.Bar) { + if (series[i].column != vertical) { + aggregates = false; + excludable = false; + } + } + + else if (!vertical) { + aggregates = false; + excludable = false; + } + } + + + if (aggregates) { + fieldMap = {}; + for (j = 0; j < fields.length; j++) { + if (excludable && series[i].__excludes && series[i].__excludes[j]) { + continue; + } + if (!allFields[fields[j]]) { + Ext.Logger.warn('Field `' + fields[j] + '` is not included in the ' + position + ' axis config.'); + } + allFields[fields[j]] = fieldMap[fields[j]] = true; + } + aggregations.push({ + fields: fieldMap, + positiveValue: 0, + negativeValue: 0 + }); + } else { + + if (!fields || fields.length == 0) { + fields = me.fields; + } + for (j = 0; j < fields.length; j++) { + if (excludable && series[i].__excludes && series[i].__excludes[j]) { + continue; + } + allFields[fields[j]] = countedFields[fields[j]] = true; + } + } + } + + for (i = 0; i < dataLength; i++) { + record = data[i]; + for (k = 0; k < aggregations.length; k++) { + aggregations[k].positiveValue = 0; + aggregations[k].negativeValue = 0; + } + for (field in allFields) { + value = record.get(field); + if (me.type == 'Time' && typeof value == "string") { + value = Date.parse(value); + } + if (isNaN(value)) { + continue; + } + if (value === undefined) { + value = 0; + } else { + value = Number(value); + } + if (countedFields[field]) { + if (min > value) { + min = value; + } + if (max < value) { + max = value; + } + } + for (k = 0; k < aggregations.length; k++) { + if (aggregations[k].fields[field]) { + + if (value >= 0) { + aggregations[k].positiveValue += value; + if (max < aggregations[k].positiveValue) { + max = aggregations[k].positiveValue; + } + + if (min > 0) { + min = 0; + } + } else { + aggregations[k].negativeValue += value; + if (min > aggregations[k].negativeValue) { + min = aggregations[k].negativeValue; + } + + if (max < 0) { + max = 0; + } + } + } + } + } + } + + if (!isFinite(max)) { + max = me.prevMax || 0; + } + if (!isFinite(min)) { + min = me.prevMin || 0; + } + + if (typeof min === 'number') { + min = Ext.Number.correctFloat(min); + } + + if (typeof max === 'number') { + max = Ext.Number.correctFloat(max); + } + + + if (min != max && (max != Math.floor(max) || min != Math.floor(min))) { + min = Math.floor(min); + max = Math.floor(max) + 1; + } + + if (!isNaN(me.minimum)) { + min = me.minimum; + } + + if (!isNaN(me.maximum)) { + max = me.maximum; + } + + if (min >= max) { + + min = Math.floor(min); + max = min + 1; + } + + return {min: min, max: max}; + }, + + + calcEnds: function () { + var me = this, + range = me.getRange(), + min = range.min, + max = range.max, + steps, prettyNumbers, out, changedRange; + + steps = (Ext.isNumber(me.majorTickSteps) ? me.majorTickSteps + 1 : me.steps); + prettyNumbers = !(Ext.isNumber(me.maximum) && Ext.isNumber(me.minimum) && Ext.isNumber(me.majorTickSteps) && me.majorTickSteps > 0); + + out = Ext.draw.Draw.snapEnds(min, max, steps, prettyNumbers); + + if (Ext.isNumber(me.maximum)) { + out.to = me.maximum; + changedRange = true; + } + if (Ext.isNumber(me.minimum)) { + out.from = me.minimum; + changedRange = true; + } + if (me.adjustMaximumByMajorUnit) { + out.to = Math.ceil(out.to / out.step) * out.step; + changedRange = true; + } + if (me.adjustMinimumByMajorUnit) { + out.from = Math.floor(out.from / out.step) * out.step; + changedRange = true; + } + + if (changedRange) { + out.steps = Math.ceil((out.to - out.from) / out.step); + } + + me.prevMin = (min == max ? 0 : min); + me.prevMax = max; + return out; + }, + + + + drawAxis: function (init) { + var me = this, + i, + x = me.x, + y = me.y, + dashSize = me.dashSize, + length = me.length, + position = me.position, + verticalAxis = (position == 'left' || position == 'right'), + inflections = [], + calcLabels = (me.isNumericAxis), + stepCalcs = me.applyData(), + step = stepCalcs.step, + steps = stepCalcs.steps, + stepsArray = Ext.isArray(steps), + from = stepCalcs.from, + to = stepCalcs.to, + + axisRange = (to - from) || 1, + trueLength, + currentX, + currentY, + path, + subDashesX = me.minorTickSteps || 0, + subDashesY = me.minorTickSteps || 0, + dashesX = Math.max(subDashesX + 1, 0), + dashesY = Math.max(subDashesY + 1, 0), + dashDirection = (position == 'left' || position == 'top' ? -1 : 1), + dashLength = dashSize * dashDirection, + series = me.chart.series.items, + firstSeries = series[0], + gutters = firstSeries ? firstSeries.nullGutters : me.nullGutters, + padding, + subDashes, + subDashValue, + delta = 0, + stepCount = 0, + tick, axes, ln, val, begin, end; + + me.from = from; + me.to = to; + + + if (me.hidden || (from > to)) { + return; + } + + + if ((stepsArray && (steps.length == 0)) || (!stepsArray && isNaN(step))) { + return; + } + + if (stepsArray) { + + + steps = Ext.Array.filter(steps, function(elem, index, array) { + return (+elem > +me.from && +elem < +me.to); + }, this); + + + steps = Ext.Array.union([me.from], steps, [me.to]); + } + else { + + steps = new Array; + for (val = +me.from; val < +me.to; val += step) { + steps.push(val); + } + steps.push(+me.to); + } + stepCount = steps.length; + + + + for (i = 0, ln = series.length; i < ln; i++) { + if (series[i].seriesIsHidden) { + continue; + } + if (!series[i].getAxesForXAndYFields) { + continue; + } + axes = series[i].getAxesForXAndYFields(); + if (!axes.xAxis || !axes.yAxis || (axes.xAxis === position) || (axes.yAxis === position)) { + gutters = series[i].getGutters(); + if ((gutters.verticalAxis !== undefined) && (gutters.verticalAxis != verticalAxis)) { + + + + + padding = series[i].getPadding(); + if (verticalAxis) { + gutters = { lower: padding.bottom, upper: padding.top, verticalAxis: true }; + } else { + gutters = { lower: padding.left, upper: padding.right, verticalAxis: false }; + } + } + break; + } + } + + + + if (calcLabels) { + me.labels = []; + } + + if (gutters) { + if (verticalAxis) { + currentX = Math.floor(x); + path = ["M", currentX + 0.5, y, "l", 0, -length]; + trueLength = length - (gutters.lower + gutters.upper); + + for (tick = 0; tick < stepCount; tick++) { + currentY = y - gutters.lower - (steps[tick] - steps[0]) * trueLength / axisRange; + path.push("M", currentX, Math.floor(currentY) + 0.5, "l", dashLength * 2, 0); + + inflections.push([ currentX, Math.floor(currentY) ]); + + if (calcLabels) { + me.labels.push(steps[tick]); + } + } + } else { + currentY = Math.floor(y); + path = ["M", x, currentY + 0.5, "l", length, 0]; + trueLength = length - (gutters.lower + gutters.upper); + + for (tick = 0; tick < stepCount; tick++) { + currentX = x + gutters.lower + (steps[tick] - steps[0]) * trueLength / axisRange; + path.push("M", Math.floor(currentX) + 0.5, currentY, "l", 0, dashLength * 2 + 1); + + inflections.push([ Math.floor(currentX), currentY ]); + + if (calcLabels) { + me.labels.push(steps[tick]); + } + } + } + } + + + + + + + + + subDashes = (verticalAxis ? subDashesY : subDashesX); + if (Ext.isArray(subDashes)) { + if (subDashes.length == 2) { + subDashValue = +Ext.Date.add(new Date(), subDashes[0], subDashes[1]) - Date.now(); + } else { + subDashValue = subDashes[0]; + } + } + else { + if (Ext.isNumber(subDashes) && subDashes > 0) { + subDashValue = step / (subDashes + 1); + } + } + + if (gutters && subDashValue) { + for (tick = 0; tick < stepCount - 1; tick++) { + begin = +steps[tick]; + end = +steps[tick+1]; + if (verticalAxis) { + for (value = begin + subDashValue; value < end; value += subDashValue) { + currentY = y - gutters.lower - (value - steps[0]) * trueLength / axisRange; + path.push("M", currentX, Math.floor(currentY) + 0.5, "l", dashLength, 0); + } + } + else { + for (value = begin + subDashValue; value < end; value += subDashValue) { + currentX = x + gutters.upper + (value - steps[0]) * trueLength / axisRange; + path.push("M", Math.floor(currentX) + 0.5, currentY, "l", 0, dashLength + 1); + } + } + } + } + + + + + if (!me.axis) { + me.axis = me.chart.surface.add(Ext.apply({ + type: 'path', + path: path + }, me.axisStyle)); + } + me.axis.setAttributes({ + path: path + }, true); + me.inflections = inflections; + if (!init && me.grid) { + me.drawGrid(); + } + me.axisBBox = me.axis.getBBox(); + me.drawLabel(); + }, + + + drawGrid: function () { + var me = this, + surface = me.chart.surface, + grid = me.grid, + odd = grid.odd, + even = grid.even, + inflections = me.inflections, + ln = inflections.length - ((odd || even) ? 0 : 1), + position = me.position, + maxGutters = me.chart.maxGutters, + width = me.width - 2, + point, prevPoint, + i = 1, + path = [], styles, lineWidth, dlineWidth, + oddPath = [], evenPath = []; + + if (((maxGutters.bottom !== 0 || maxGutters.top !== 0) && (position == 'left' || position == 'right')) || + ((maxGutters.left !== 0 || maxGutters.right !== 0) && (position == 'top' || position == 'bottom'))) { + i = 0; + ln++; + } + for (; i < ln; i++) { + point = inflections[i]; + prevPoint = inflections[i - 1]; + if (odd || even) { + path = (i % 2) ? oddPath : evenPath; + styles = ((i % 2) ? odd : even) || {}; + lineWidth = (styles.lineWidth || styles['stroke-width'] || 0) / 2; + dlineWidth = 2 * lineWidth; + if (position == 'left') { + path.push("M", prevPoint[0] + 1 + lineWidth, prevPoint[1] + 0.5 - lineWidth, + "L", prevPoint[0] + 1 + width - lineWidth, prevPoint[1] + 0.5 - lineWidth, + "L", point[0] + 1 + width - lineWidth, point[1] + 0.5 + lineWidth, + "L", point[0] + 1 + lineWidth, point[1] + 0.5 + lineWidth, "Z"); + } + else if (position == 'right') { + path.push("M", prevPoint[0] - lineWidth, prevPoint[1] + 0.5 - lineWidth, + "L", prevPoint[0] - width + lineWidth, prevPoint[1] + 0.5 - lineWidth, + "L", point[0] - width + lineWidth, point[1] + 0.5 + lineWidth, + "L", point[0] - lineWidth, point[1] + 0.5 + lineWidth, "Z"); + } + else if (position == 'top') { + path.push("M", prevPoint[0] + 0.5 + lineWidth, prevPoint[1] + 1 + lineWidth, + "L", prevPoint[0] + 0.5 + lineWidth, prevPoint[1] + 1 + width - lineWidth, + "L", point[0] + 0.5 - lineWidth, point[1] + 1 + width - lineWidth, + "L", point[0] + 0.5 - lineWidth, point[1] + 1 + lineWidth, "Z"); + } + else { + path.push("M", prevPoint[0] + 0.5 + lineWidth, prevPoint[1] - lineWidth, + "L", prevPoint[0] + 0.5 + lineWidth, prevPoint[1] - width + lineWidth, + "L", point[0] + 0.5 - lineWidth, point[1] - width + lineWidth, + "L", point[0] + 0.5 - lineWidth, point[1] - lineWidth, "Z"); + } + } else { + if (position == 'left') { + path = path.concat(["M", point[0] + 0.5, point[1] + 0.5, "l", width, 0]); + } + else if (position == 'right') { + path = path.concat(["M", point[0] - 0.5, point[1] + 0.5, "l", -width, 0]); + } + else if (position == 'top') { + path = path.concat(["M", point[0] + 0.5, point[1] + 0.5, "l", 0, width]); + } + else { + path = path.concat(["M", point[0] + 0.5, point[1] - 0.5, "l", 0, -width]); + } + } + } + if (odd || even) { + if (oddPath.length) { + if (!me.gridOdd && oddPath.length) { + me.gridOdd = surface.add({ + type: 'path', + path: oddPath + }); + } + me.gridOdd.setAttributes(Ext.apply({ + path: oddPath, + hidden: false + }, odd || {}), true); + } + if (evenPath.length) { + if (!me.gridEven) { + me.gridEven = surface.add({ + type: 'path', + path: evenPath + }); + } + me.gridEven.setAttributes(Ext.apply({ + path: evenPath, + hidden: false + }, even || {}), true); + } + } + else { + if (path.length) { + if (!me.gridLines) { + me.gridLines = me.chart.surface.add({ + type: 'path', + path: path, + "stroke-width": me.lineWidth || 1, + stroke: me.gridColor || '#ccc' + }); + } + me.gridLines.setAttributes({ + hidden: false, + path: path + }, true); + } + else if (me.gridLines) { + me.gridLines.hide(true); + } + } + }, + + + getOrCreateLabel: function (i, text) { + var me = this, + labelGroup = me.labelGroup, + textLabel = labelGroup.getAt(i), + surface = me.chart.surface; + if (textLabel) { + if (text != textLabel.attr.text) { + textLabel.setAttributes(Ext.apply({ + text: text + }, me.label), true); + textLabel._bbox = textLabel.getBBox(); + } + } + else { + textLabel = surface.add(Ext.apply({ + group: labelGroup, + type: 'text', + x: 0, + y: 0, + text: text + }, me.label)); + surface.renderItem(textLabel); + textLabel._bbox = textLabel.getBBox(); + } + + if (me.label.rotation) { + textLabel.setAttributes({ + rotation: { + degrees: 0 + } + }, true); + textLabel._ubbox = textLabel.getBBox(); + textLabel.setAttributes(me.label, true); + } else { + textLabel._ubbox = textLabel._bbox; + } + return textLabel; + }, + + rect2pointArray: function (sprite) { + var surface = this.chart.surface, + rect = surface.getBBox(sprite, true), + p1 = [rect.x, rect.y], + p1p = p1.slice(), + p2 = [rect.x + rect.width, rect.y], + p2p = p2.slice(), + p3 = [rect.x + rect.width, rect.y + rect.height], + p3p = p3.slice(), + p4 = [rect.x, rect.y + rect.height], + p4p = p4.slice(), + matrix = sprite.matrix; + + p1[0] = matrix.x.apply(matrix, p1p); + p1[1] = matrix.y.apply(matrix, p1p); + + p2[0] = matrix.x.apply(matrix, p2p); + p2[1] = matrix.y.apply(matrix, p2p); + + p3[0] = matrix.x.apply(matrix, p3p); + p3[1] = matrix.y.apply(matrix, p3p); + + p4[0] = matrix.x.apply(matrix, p4p); + p4[1] = matrix.y.apply(matrix, p4p); + return [p1, p2, p3, p4]; + }, + + intersect: function (l1, l2) { + var r1 = this.rect2pointArray(l1), + r2 = this.rect2pointArray(l2); + return !!Ext.draw.Draw.intersect(r1, r2).length; + }, + + drawHorizontalLabels: function () { + var me = this, + labelConf = me.label, + floor = Math.floor, + max = Math.max, + axes = me.chart.axes, + insetPadding = me.chart.insetPadding, + gutters = me.chart.maxGutters, + position = me.position, + inflections = me.inflections, + ln = inflections.length, + labels = me.labels, + maxHeight = 0, + ratio, + bbox, point, prevLabel, prevLabelId, + adjustEnd = me.adjustEnd, + hasLeft = axes.findIndex('position', 'left') != -1, + hasRight = axes.findIndex('position', 'right') != -1, + textLabel, text, + last, x, y, i, firstLabel; + + last = ln - 1; + + point = inflections[0]; + firstLabel = me.getOrCreateLabel(0, me.label.renderer(labels[0])); + ratio = Math.floor(Math.abs(Math.sin(labelConf.rotate && (labelConf.rotate.degrees * Math.PI / 180) || 0))); + + for (i = 0; i < ln; i++) { + point = inflections[i]; + text = me.label.renderer(labels[i]); + textLabel = me.getOrCreateLabel(i, text); + bbox = textLabel._bbox; + maxHeight = max(maxHeight, bbox.height + me.dashSize + me.label.padding); + x = floor(point[0] - (ratio ? bbox.height : bbox.width) / 2); + if (adjustEnd && gutters.left == 0 && gutters.right == 0) { + if (i == 0 && !hasLeft) { + x = point[0]; + } + else if (i == last && !hasRight) { + x = Math.min(x, point[0] - bbox.width + insetPadding); + } + } + if (position == 'top') { + y = point[1] - (me.dashSize * 2) - me.label.padding - (bbox.height / 2); + } + else { + y = point[1] + (me.dashSize * 2) + me.label.padding + (bbox.height / 2); + } + + textLabel.setAttributes({ + hidden: false, + x: x, + y: y + }, true); + + + if (i != 0 && (me.intersect(textLabel, prevLabel) + || me.intersect(textLabel, firstLabel))) { + if (i === last && prevLabelId !== 0) { + prevLabel.hide(true); + } else { + textLabel.hide(true); + continue; + } + } + + prevLabel = textLabel; + prevLabelId = i; + } + + return maxHeight; + }, + + drawVerticalLabels: function () { + var me = this, + inflections = me.inflections, + position = me.position, + ln = inflections.length, + chart = me.chart, + insetPadding = chart.insetPadding, + labels = me.labels, + maxWidth = 0, + max = Math.max, + floor = Math.floor, + ceil = Math.ceil, + axes = me.chart.axes, + gutters = me.chart.maxGutters, + bbox, point, prevLabel, prevLabelId, + hasTop = axes.findIndex('position', 'top') != -1, + hasBottom = axes.findIndex('position', 'bottom') != -1, + adjustEnd = me.adjustEnd, + textLabel, text, + last = ln - 1, x, y, i; + + for (i = 0; i < ln; i++) { + point = inflections[i]; + text = me.label.renderer(labels[i]); + textLabel = me.getOrCreateLabel(i, text); + bbox = textLabel._bbox; + + maxWidth = max(maxWidth, bbox.width + me.dashSize + me.label.padding); + y = point[1]; + if (adjustEnd && (gutters.bottom + gutters.top) < bbox.height / 2) { + if (i == last && !hasTop) { + y = Math.max(y, me.y - me.length + ceil(bbox.height / 2) - insetPadding); + } + else if (i == 0 && !hasBottom) { + y = me.y + gutters.bottom - floor(bbox.height / 2); + } + } + if (position == 'left') { + x = point[0] - bbox.width - me.dashSize - me.label.padding - 2; + } + else { + x = point[0] + me.dashSize + me.label.padding + 2; + } + textLabel.setAttributes(Ext.apply({ + hidden: false, + x: x, + y: y + }, me.label), true); + + if (i != 0 && me.intersect(textLabel, prevLabel)) { + if (i === last && prevLabelId !== 0) { + prevLabel.hide(true); + } else { + textLabel.hide(true); + continue; + } + } + prevLabel = textLabel; + prevLabelId = i; + } + + return maxWidth; + }, + + + drawLabel: function () { + var me = this, + position = me.position, + labelGroup = me.labelGroup, + inflections = me.inflections, + maxWidth = 0, + maxHeight = 0, + ln, i; + + if (position == 'left' || position == 'right') { + maxWidth = me.drawVerticalLabels(); + } else { + maxHeight = me.drawHorizontalLabels(); + } + + + ln = labelGroup.getCount(); + i = inflections.length; + for (; i < ln; i++) { + labelGroup.getAt(i).hide(true); + } + + me.bbox = {}; + Ext.apply(me.bbox, me.axisBBox); + me.bbox.height = maxHeight; + me.bbox.width = maxWidth; + if (Ext.isString(me.title)) { + me.drawTitle(maxWidth, maxHeight); + } + }, + + + setTitle: function (title) { + this.title = title; + this.drawLabel(); + }, + + + drawTitle: function (maxWidth, maxHeight) { + var me = this, + position = me.position, + surface = me.chart.surface, + displaySprite = me.displaySprite, + title = me.title, + rotate = (position == 'left' || position == 'right'), + x = me.x, + y = me.y, + base, bbox, pad; + + if (displaySprite) { + displaySprite.setAttributes({text: title}, true); + } else { + base = { + type: 'text', + x: 0, + y: 0, + text: title + }; + displaySprite = me.displaySprite = surface.add(Ext.apply(base, me.axisTitleStyle, me.labelTitle)); + surface.renderItem(displaySprite); + } + bbox = displaySprite.getBBox(); + pad = me.dashSize + me.label.padding; + + if (rotate) { + y -= ((me.length / 2) - (bbox.height / 2)); + if (position == 'left') { + x -= (maxWidth + pad + (bbox.width / 2)); + } + else { + x += (maxWidth + pad + bbox.width - (bbox.width / 2)); + } + me.bbox.width += bbox.width + 10; + } + else { + x += (me.length / 2) - (bbox.width * 0.5); + if (position == 'top') { + y -= (maxHeight + pad + (bbox.height * 0.3)); + } + else { + y += (maxHeight + pad + (bbox.height * 0.8)); + } + me.bbox.height += bbox.height + 10; + } + displaySprite.setAttributes({ + translate: { + x: x, + y: y + } + }, true); + } +}); + + +Ext.define('Ext.chart.axis.Category', { + + + + extend: Ext.chart.axis.Axis , + + alternateClassName: 'Ext.chart.CategoryAxis', + + alias: 'axis.category', + + + + + categoryNames: null, + + + calculateCategoryCount: false, + + + doConstrain: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + items = store.data.items, + series = chart.series.items, + seriesLength = series.length, + data = [], i + + for (i = 0; i < seriesLength; i++) { + if (series[i].type === 'bar' && series[i].stacked) { + + return; + } + } + + for (i = me.minimum; i < me.maximum; i++) { + data.push(items[i]); + } + + chart.setSubStore(new Ext.data.Store({ + model: store.model, + data: data + })); + }, + + + setLabels: function() { + var store = this.chart.getChartStore(), + data = store.data.items, + d, dLen, record, + fields = this.fields, + ln = fields.length, + labels, + name, + i; + + labels = this.labels = []; + for (d = 0, dLen = data.length; d < dLen; d++) { + record = data[d]; + for (i = 0; i < ln; i++) { + name = record.get(fields[i]); + labels.push(name); + } + } + }, + + + applyData: function() { + this.callParent(); + this.setLabels(); + var count = this.chart.getChartStore().getCount(); + return { + from: 0, + to: count - 1, + power: 1, + step: 1, + steps: count - 1 + }; + } +}); + + +Ext.define('Ext.chart.axis.Gauge', { + + + + extend: Ext.chart.axis.Abstract , + + + + + + + + + + + + + + position: 'gauge', + + alias: 'axis.gauge', + + drawAxis: function(init) { + var chart = this.chart, + surface = chart.surface, + bbox = chart.chartBBox, + centerX = bbox.x + (bbox.width / 2), + centerY = bbox.y + bbox.height, + margin = this.margin || 10, + rho = Math.min(bbox.width, 2 * bbox.height) /2 + margin, + sprites = [], sprite, + steps = this.steps, + i, pi = Math.PI, + cos = Math.cos, + sin = Math.sin; + + if (this.sprites && !chart.resizing) { + this.drawLabel(); + return; + } + + if (this.margin >= 0) { + if (!this.sprites) { + + for (i = 0; i <= steps; i++) { + sprite = surface.add({ + type: 'path', + path: ['M', centerX + (rho - margin) * cos(i / steps * pi - pi), + centerY + (rho - margin) * sin(i / steps * pi - pi), + 'L', centerX + rho * cos(i / steps * pi - pi), + centerY + rho * sin(i / steps * pi - pi), 'Z'], + stroke: '#ccc' + }); + sprite.setAttributes({ + hidden: false + }, true); + sprites.push(sprite); + } + } else { + sprites = this.sprites; + + for (i = 0; i <= steps; i++) { + sprites[i].setAttributes({ + path: ['M', centerX + (rho - margin) * cos(i / steps * pi - pi), + centerY + (rho - margin) * sin(i / steps * pi - pi), + 'L', centerX + rho * cos(i / steps * pi - pi), + centerY + rho * sin(i / steps * pi - pi), 'Z'], + stroke: '#ccc' + }, true); + } + } + } + this.sprites = sprites; + this.drawLabel(); + if (this.title) { + this.drawTitle(); + } + }, + + drawTitle: function() { + var me = this, + chart = me.chart, + surface = chart.surface, + bbox = chart.chartBBox, + labelSprite = me.titleSprite, + labelBBox; + + if (!labelSprite) { + me.titleSprite = labelSprite = surface.add(Ext.apply({ + type: 'text', + zIndex: 2 + }, me.axisTitleStyle, me.labelTitle)); + } + labelSprite.setAttributes(Ext.apply({ + text: me.title + }, me.label || {}), true); + labelBBox = labelSprite.getBBox(); + labelSprite.setAttributes({ + x: bbox.x + (bbox.width / 2) - (labelBBox.width / 2), + y: bbox.y + bbox.height - (labelBBox.height / 2) - 4 + }, true); + }, + + + setTitle: function(title) { + this.title = title; + this.drawTitle(); + }, + + drawLabel: function() { + var chart = this.chart, + surface = chart.surface, + bbox = chart.chartBBox, + centerX = bbox.x + (bbox.width / 2), + centerY = bbox.y + bbox.height, + margin = this.margin || 10, + rho = Math.min(bbox.width, 2 * bbox.height) /2 + 2 * margin, + round = Math.round, + labelArray = [], label, + maxValue = this.maximum || 0, + minValue = this.minimum || 0, + steps = this.steps, i = 0, + adjY, + pi = Math.PI, + cos = Math.cos, + sin = Math.sin, + labelConf = this.label, + renderer = labelConf.renderer || Ext.identityFn; + + if (!this.labelArray) { + + for (i = 0; i <= steps; i++) { + + adjY = (i === 0 || i === steps) ? 7 : 0; + label = surface.add({ + type: 'text', + text: renderer(round(minValue + i / steps * (maxValue - minValue))), + x: centerX + rho * cos(i / steps * pi - pi), + y: centerY + rho * sin(i / steps * pi - pi) - adjY, + 'text-anchor': 'middle', + 'stroke-width': 0.2, + zIndex: 10, + stroke: '#333' + }); + label.setAttributes({ + hidden: false + }, true); + labelArray.push(label); + } + } + else { + labelArray = this.labelArray; + + for (i = 0; i <= steps; i++) { + + adjY = (i === 0 || i === steps) ? 7 : 0; + labelArray[i].setAttributes({ + text: renderer(round(minValue + i / steps * (maxValue - minValue))), + x: centerX + rho * cos(i / steps * pi - pi), + y: centerY + rho * sin(i / steps * pi - pi) - adjY + }, true); + } + } + this.labelArray = labelArray; + } +}); + + +Ext.define('Ext.chart.axis.Numeric', { + + + + extend: Ext.chart.axis.Axis , + + alternateClassName: 'Ext.chart.NumericAxis', + + + + type: 'Numeric', + + + isNumericAxis: true, + + alias: 'axis.numeric', + + + + constructor: function(config) { + var me = this, + hasLabel = !!(config.label && config.label.renderer), + label; + + me.callParent([config]); + label = me.label; + + if (config.constrain == null) { + me.constrain = (config.minimum != null && config.maximum != null); + } + + if (!hasLabel) { + label.renderer = function(v) { + return me.roundToDecimal(v, me.decimals); + }; + } + }, + + roundToDecimal: function(v, dec) { + var val = Math.pow(10, dec || 0); + return Math.round(v * val) / val; + }, + + + minimum: NaN, + + + maximum: NaN, + + + constrain: true, + + + decimals: 2, + + + scale: "linear", + + + doConstrain: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + items = store.data.items, + d, dLen, record, + series = chart.series.items, + fields = me.fields, + ln = fields.length, + range = me.calcEnds(), + min = range.from, max = range.to, i, l, + useAcum = false, + value, data = [], + addRecord; + + for (d = 0, dLen = items.length; d < dLen; d++) { + addRecord = true; + record = items[d]; + for (i = 0; i < ln; i++) { + value = record.get(fields[i]); + if (me.type == 'Time' && typeof value == "string") { + value = Date.parse(value); + } + if (+value < +min) { + addRecord = false; + break; + } + if (+value > +max) { + addRecord = false; + break; + } + } + if (addRecord) { + data.push(record); + } + } + + chart.setSubStore(new Ext.data.Store({ + model: store.model, + data: data + })); + }, + + position: 'left', + + + adjustMaximumByMajorUnit: false, + + + adjustMinimumByMajorUnit: false, + + + processView: function() { + var me = this, + chart = me.chart, + series = chart.series.items, + i, l; + + for (i = 0, l = series.length; i < l; i++) { + if (series[i].stacked) { + + delete me.minimum; + delete me.maximum; + me.constrain = false; + break; + } + } + + if (me.constrain) { + me.doConstrain(); + } + }, + + + applyData: function() { + this.callParent(); + return this.calcEnds(); + } +}); + + +Ext.define('Ext.chart.axis.Radial', { + + + + extend: Ext.chart.axis.Numeric , + + + + position: 'radial', + + alias: 'axis.radial', + + + + + + drawAxis: function(init) { + var chart = this.chart, + surface = chart.surface, + bbox = chart.chartBBox, + store = chart.getChartStore(), + l = store.getCount(), + centerX = bbox.x + (bbox.width / 2), + centerY = bbox.y + (bbox.height / 2), + rho = Math.min(bbox.width, bbox.height) /2, + sprites = [], sprite, + steps = this.steps, + i, j, pi2 = Math.PI * 2, + cos = Math.cos, sin = Math.sin; + + if (this.sprites && !chart.resizing) { + this.drawLabel(); + return; + } + + if (!this.sprites) { + + for (i = 1; i <= steps; i++) { + sprite = surface.add({ + type: 'circle', + x: centerX, + y: centerY, + radius: Math.max(rho * i / steps, 0), + stroke: '#ccc' + }); + sprite.setAttributes({ + hidden: false + }, true); + sprites.push(sprite); + } + + for (i = 0; i < l; i++) { + sprite = surface.add({ + type: 'path', + path: ['M', centerX, centerY, 'L', centerX + rho * cos(i / l * pi2), centerY + rho * sin(i / l * pi2), 'Z'], + stroke: '#ccc' + }); + sprite.setAttributes({ + hidden: false + }, true); + sprites.push(sprite); + } + } else { + sprites = this.sprites; + + for (i = 0; i < steps; i++) { + sprites[i].setAttributes({ + x: centerX, + y: centerY, + radius: Math.max(rho * (i + 1) / steps, 0), + stroke: '#ccc' + }, true); + } + + for (j = 0; j < l; j++) { + sprites[i + j].setAttributes({ + path: ['M', centerX, centerY, 'L', centerX + rho * cos(j / l * pi2), centerY + rho * sin(j / l * pi2), 'Z'], + stroke: '#ccc' + }, true); + } + } + this.sprites = sprites; + + this.drawLabel(); + }, + + drawLabel: function() { + var chart = this.chart, + seriesItems = chart.series.items, + series, + surface = chart.surface, + bbox = chart.chartBBox, + store = chart.getChartStore(), + data = store.data.items, + ln, record, + centerX = bbox.x + (bbox.width / 2), + centerY = bbox.y + (bbox.height / 2), + rho = Math.min(bbox.width, bbox.height) /2, + max = Math.max, round = Math.round, + labelArray = [], label, + fields = [], nfields, + categories = [], xField, + aggregate = !this.maximum, + maxValue = this.maximum || 0, + steps = this.steps, i = 0, j, dx, dy, + pi2 = Math.PI * 2, + cos = Math.cos, sin = Math.sin, + display = this.label.display, + draw = display !== 'none', + margin = 10; + + if (!draw) { + return; + } + + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + fields.push(series.yField); + xField = series.xField; + } + + + for (j = 0, ln = data.length; j < ln; j++) { + record = data[j]; + categories.push(record.get(xField)); + + if (aggregate) { + for (i = 0, nfields = fields.length; i < nfields; i++) { + maxValue = max(+record.get(fields[i]), maxValue); + } + } + } + if (!this.labelArray) { + if (display != 'categories') { + + for (i = 1; i <= steps; i++) { + label = surface.add({ + type: 'text', + text: round(i / steps * maxValue), + x: centerX, + y: centerY - rho * i / steps, + 'text-anchor': 'middle', + 'stroke-width': 0.1, + stroke: '#333' + }); + label.setAttributes({ + hidden: false + }, true); + labelArray.push(label); + } + } + if (display != 'scale') { + + for (j = 0, steps = categories.length; j < steps; j++) { + dx = cos(j / steps * pi2) * (rho + margin); + dy = sin(j / steps * pi2) * (rho + margin); + label = surface.add({ + type: 'text', + text: categories[j], + x: centerX + dx, + y: centerY + dy, + 'text-anchor': dx * dx <= 0.001? 'middle' : (dx < 0? 'end' : 'start') + }); + label.setAttributes({ + hidden: false + }, true); + labelArray.push(label); + } + } + } + else { + labelArray = this.labelArray; + if (display != 'categories') { + + for (i = 0; i < steps; i++) { + labelArray[i].setAttributes({ + text: round((i + 1) / steps * maxValue), + x: centerX, + y: centerY - rho * (i + 1) / steps, + 'text-anchor': 'middle', + 'stroke-width': 0.1, + stroke: '#333' + }, true); + } + } + if (display != 'scale') { + + for (j = 0, steps = categories.length; j < steps; j++) { + dx = cos(j / steps * pi2) * (rho + margin); + dy = sin(j / steps * pi2) * (rho + margin); + if (labelArray[i + j]) { + labelArray[i + j].setAttributes({ + type: 'text', + text: categories[j], + x: centerX + dx, + y: centerY + dy, + 'text-anchor': dx * dx <= 0.001? 'middle' : (dx < 0? 'end' : 'start') + }, true); + } + } + } + } + this.labelArray = labelArray; + }, + + getRange: function () { + var range = this.callParent(); + range.min = 0; + return range; + }, + + processView: function() { + var me = this, + seriesItems = me.chart.series.items, + i, ln, series, ends, fields = []; + + for (i = 0, ln = seriesItems.length; i < ln; i++) { + series = seriesItems[i]; + fields.push(series.yField); + } + me.fields = fields; + + ends = me.calcEnds(); + me.maximum = ends.to; + me.steps = ends.steps; + } +}); + + +Ext.define('Ext.chart.axis.Time', { + + + + extend: Ext.chart.axis.Numeric , + + alternateClassName: 'Ext.chart.TimeAxis', + + type: 'Time', + + alias: 'axis.time', + + + + + + + dateFormat: false, + + + fromDate: false, + + + toDate: false, + + + step: [Ext.Date.DAY, 1], + + + constrain: false, + + constructor: function (config) { + var me = this, label, f, df; + me.callParent([config]); + label = me.label || {}; + df = this.dateFormat; + if (df) { + if (label.renderer) { + f = label.renderer; + label.renderer = function(v) { + v = f(v); + return Ext.Date.format(new Date(f(v)), df); + }; + } else { + label.renderer = function(v) { + return Ext.Date.format(new Date(v >> 0), df); + }; + } + } + }, + + + processView: function () { + var me = this; + if (me.fromDate) { + me.minimum = +me.fromDate; + } + if (me.toDate) { + me.maximum = +me.toDate; + } + if(me.constrain){ + me.doConstrain(); + } + }, + + + calcEnds: function() { + var me = this, range, step = me.step; + if (step) { + range = me.getRange(); + range = Ext.draw.Draw.snapEndsByDateAndStep(new Date(range.min), new Date(range.max), Ext.isNumber(step) ? [Date.MILLI, step]: step); + if (me.minimum) { + range.from = me.minimum; + } + if (me.maximum) { + range.to = me.maximum; + } + return range; + } else { + return me.callParent(arguments); + } + } + }); + + + +Ext.define('Ext.chart.series.Series', { + + + + mixins: { + observable: Ext.util.Observable , + labels: Ext.chart.Label , + highlights: Ext.chart.Highlight , + tips: Ext.chart.Tip , + callouts: Ext.chart.Callout + }, + + + + + + + + + type: null, + + + title: null, + + + showInLegend: true, + + + renderer: function(sprite, record, attributes, index, store) { + return attributes; + }, + + + shadowAttributes: null, + + + animating: false, + + + nullGutters: { lower: 0, upper: 0, verticalAxis: undefined }, + + + nullPadding: { left:0, right:0, width:0, bottom:0, top:0, height:0 }, + + + + constructor: function(config) { + var me = this; + if (config) { + Ext.apply(me, config); + } + + me.shadowGroups = []; + + me.mixins.labels.constructor.call(me, config); + me.mixins.highlights.constructor.call(me, config); + me.mixins.tips.constructor.call(me, config); + me.mixins.callouts.constructor.call(me, config); + + me.addEvents({ + scope: me, + itemclick: true, + itemmouseover: true, + itemmouseout: true, + itemmousedown: true, + itemmouseup: true, + mouseleave: true, + afterdraw: true, + + + titlechange: true + }); + + me.mixins.observable.constructor.call(me, config); + + me.on({ + scope: me, + itemmouseover: me.onItemMouseOver, + itemmouseout: me.onItemMouseOut, + mouseleave: me.onMouseLeave + }); + + if (me.style) { + Ext.apply(me.seriesStyle, me.style); + } + }, + + onRedraw: Ext.emptyFn, + + + eachRecord: function(fn, scope) { + var chart = this.chart; + chart.getChartStore().each(fn, scope); + }, + + + getRecordCount: function() { + var chart = this.chart, + store = chart.getChartStore(); + return store ? store.getCount() : 0; + }, + + + isExcluded: function(index) { + var excludes = this.__excludes; + return !!(excludes && excludes[index]); + }, + + + setBBox: function(noGutter) { + var me = this, + chart = me.chart, + chartBBox = chart.chartBBox, + maxGutters = noGutter ? { left: 0, right: 0, bottom: 0, top: 0 } : chart.maxGutters, + clipBox, bbox; + + clipBox = { + x: chartBBox.x, + y: chartBBox.y, + width: chartBBox.width, + height: chartBBox.height + }; + me.clipBox = clipBox; + + bbox = { + x: (clipBox.x + maxGutters.left) - (chart.zoom.x * chart.zoom.width), + y: (clipBox.y + maxGutters.bottom) - (chart.zoom.y * chart.zoom.height), + width: (clipBox.width - (maxGutters.left + maxGutters.right)) * chart.zoom.width, + height: (clipBox.height - (maxGutters.bottom + maxGutters.top)) * chart.zoom.height + }; + me.bbox = bbox; + }, + + + onAnimate: function(sprite, attr) { + var me = this; + sprite.stopAnimation(); + if (me.animating) { + return sprite.animate(Ext.applyIf(attr, me.chart.animate)); + } else { + me.animating = true; + return sprite.animate(Ext.apply(Ext.applyIf(attr, me.chart.animate), { + + callback: function() { + me.animating = false; + me.fireEvent('afterrender'); + } + })); + } + }, + + + getGutters: function() { + return this.nullGutters; + }, + + + getPadding: function() { + return this.nullPadding; + }, + + + onItemMouseOver: function(item) { + var me = this; + if (item.series === me) { + if (me.highlight) { + me.highlightItem(item); + } + if (me.tooltip) { + me.showTip(item); + } + } + }, + + + onItemMouseOut: function(item) { + var me = this; + if (item.series === me) { + me.unHighlightItem(); + if (me.tooltip) { + me.hideTip(item); + } + } + }, + + + onMouseLeave: function() { + var me = this; + me.unHighlightItem(); + if (me.tooltip) { + me.hideTip(); + } + }, + + + getItemForPoint: function(x, y) { + + if (!this.items || !this.items.length || this.seriesIsHidden) { + return null; + } + var me = this, + items = me.items, + bbox = me.bbox, + item, i, ln; + + if (!Ext.draw.Draw.withinBox(x, y, bbox)) { + return null; + } + for (i = 0, ln = items.length; i < ln; i++) { + if (items[i] && this.isItemInPoint(x, y, items[i], i)) { + return items[i]; + } + } + + return null; + }, + + isItemInPoint: function(x, y, item, i) { + return false; + }, + + + hideAll: function() { + var me = this, + items = me.items, + item, len, i, j, l, sprite, shadows; + + me.seriesIsHidden = true; + me._prevShowMarkers = me.showMarkers; + + me.showMarkers = false; + + me.hideLabels(0); + + for (i = 0, len = items.length; i < len; i++) { + item = items[i]; + sprite = item.sprite; + if (sprite) { + sprite.setAttributes({ + hidden: true + }, true); + } + + if (sprite && sprite.shadows) { + shadows = sprite.shadows; + for (j = 0, l = shadows.length; j < l; ++j) { + shadows[j].setAttributes({ + hidden: true + }, true); + } + } + } + }, + + + showAll: function() { + var me = this, + prevAnimate = me.chart.animate; + me.chart.animate = false; + me.seriesIsHidden = false; + me.showMarkers = me._prevShowMarkers; + me.drawSeries(); + me.chart.animate = prevAnimate; + }, + + hide: function() { + if (this.items) { + var me = this, + items = me.items, + i, j, lsh, ln, shadows; + + if (items && items.length) { + for (i = 0, ln = items.length; i < ln; ++i) { + if (items[i].sprite) { + items[i].sprite.hide(true); + + shadows = items[i].shadows || items[i].sprite.shadows; + if (shadows) { + for (j = 0, lsh = shadows.length; j < lsh; ++j) { + shadows[j].hide(true); + } + } + } + } + me.hideLabels(); + } + } + }, + + + getLegendColor: function(index) { + var me = this, fill, stroke; + if (me.seriesStyle) { + fill = me.seriesStyle.fill; + stroke = me.seriesStyle.stroke; + if (fill && fill != 'none') { + return fill; + } + if(stroke){ + return stroke; + } + } + return (me.colorArrayStyle)?me.colorArrayStyle[me.themeIdx % me.colorArrayStyle.length]:'#000'; + }, + + + visibleInLegend: function(index){ + var excludes = this.__excludes; + if (excludes) { + return !excludes[index]; + } + return !this.seriesIsHidden; + }, + + + setTitle: function(index, title) { + var me = this, + oldTitle = me.title; + + if (Ext.isString(index)) { + title = index; + index = 0; + } + + if (Ext.isArray(oldTitle)) { + oldTitle[index] = title; + } else { + me.title = title; + } + + me.fireEvent('titlechange', title, index); + } +}); + + +Ext.define('Ext.chart.series.Cartesian', { + + + + extend: Ext.chart.series.Series , + + alternateClassName: ['Ext.chart.CartesianSeries', 'Ext.chart.CartesianChart'], + + + + + xField: null, + + + yField: null, + + + axis: 'left', + + getLegendLabels: function() { + var me = this, + labels = [], + fields, i, ln, + combinations = me.combinations, + title, + combo, label0, label1; + + fields = [].concat(me.yField); + for (i = 0, ln = fields.length; i < ln; i++) { + title = me.title; + + labels.push((Ext.isArray(title) ? title[i] : title) || fields[i]); + } + + + + if (combinations) { + combinations = Ext.Array.from(combinations); + for (i = 0, ln = combinations.length; i < ln; i++) { + combo = combinations[i]; + label0 = labels[combo[0]]; + label1 = labels[combo[1]]; + labels[combo[1]] = label0 + ' & ' + label1; + labels.splice(combo[0], 1); + } + } + + return labels; + }, + + + eachYValue: function(record, fn, scope) { + var me = this, + yValueAccessors = me.getYValueAccessors(), + i, ln, accessor; + + for (i = 0, ln = yValueAccessors.length; i < ln; i++) { + accessor = yValueAccessors[i]; + fn.call(scope, accessor(record), i); + } + }, + + + getYValueCount: function() { + return this.getYValueAccessors().length; + }, + + combine: function(index1, index2) { + var me = this, + accessors = me.getYValueAccessors(), + accessor1 = accessors[index1], + accessor2 = accessors[index2]; + + + accessors[index2] = function(record) { + return accessor1(record) + accessor2(record); + }; + accessors.splice(index1, 1); + + me.callParent([index1, index2]); + }, + + clearCombinations: function() { + + delete this.yValueAccessors; + this.callParent(); + }, + + + getYValueAccessors: function() { + var me = this, + accessors = me.yValueAccessors, + yFields, yField, i, ln; + if (!accessors) { + accessors = me.yValueAccessors = []; + yFields = [].concat(me.yField); + + for (i = 0, ln = yFields.length; i < ln; i++) { + yField = yFields[i]; + accessors.push(function(record) { + return record.get(yField); + }); + } + } + return accessors; + }, + + + getMinMaxXValues: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + count = me.getRecordCount(), + i, ln, record, + min, max, + xField = me.xField, + xValue; + + if (count > 0) { + min = Infinity; + max = -min; + + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + xValue = record.get(xField); + if (xValue > max) { + max = xValue; + } + if (xValue < min) { + min = xValue; + } + } + + + if (min == Infinity) { + min = 0; + } + + if (max == -Infinity) { + max = count - 1; + } + } else { + min = max = 0; + } + return [min, max]; + }, + + + getMinMaxYValues: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + count = me.getRecordCount(), + i, ln, record, + stacked = me.stacked, + min, max, + positiveTotal, negativeTotal; + + function eachYValueStacked(yValue, i) { + if (!me.isExcluded(i)) { + if (yValue < 0) { + negativeTotal += yValue; + } else { + positiveTotal += yValue; + } + } + } + + function eachYValue(yValue, i) { + if (!me.isExcluded(i)) { + if (yValue > max) { + max = yValue; + } + if (yValue < min) { + min = yValue; + } + } + } + + if (count > 0) { + min = Infinity; + max = -min; + + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + if (stacked) { + positiveTotal = 0; + negativeTotal = 0; + me.eachYValue(record, eachYValueStacked); + if (positiveTotal > max) { + max = positiveTotal; + } + if (negativeTotal < min) { + min = negativeTotal; + } + } else { + me.eachYValue(record, eachYValue); + } + } + + + if (min == Infinity) { + min = 0; + } + + if (max == -Infinity) { + max = count - 1; + } + } else { + min = max = 0; + } + return [min, max]; + }, + + getAxesForXAndYFields: function() { + var me = this, + axes = me.chart.axes, + axis = [].concat(me.axis), + yFields = {}, yFieldList = [].concat(me.yField), + xFields = {}, xFieldList = [].concat(me.xField), + fields, xAxis, yAxis, i, ln, flipXY; + + + flipXY = me.type === 'bar' && me.column === false; + if(flipXY) { + fields = yFieldList; + yFieldList = xFieldList; + xFieldList = fields; + } + if (Ext.Array.indexOf(axis, 'top') > -1) { + xAxis = 'top'; + } else if (Ext.Array.indexOf(axis, 'bottom') > -1) { + xAxis = 'bottom'; + } else { + if (axes.get('top') && axes.get('bottom')) { + for (i = 0, ln = xFieldList.length; i < ln; i++) { + xFields[xFieldList[i]] = true; + } + fields = [].concat(axes.get('bottom').fields); + for (i = 0, ln = fields.length; i < ln; i++) { + if (xFields[fields[i]]) { + xAxis = 'bottom'; + break + } + } + fields = [].concat(axes.get('top').fields); + for (i = 0, ln = fields.length; i < ln; i++) { + if (xFields[fields[i]]) { + xAxis = 'top'; + break + } + } + } else if (axes.get('top')) { + xAxis = 'top'; + } else if (axes.get('bottom')) { + xAxis = 'bottom'; + } + } + if (Ext.Array.indexOf(axis, 'left') > -1) { + yAxis = 'left'; + } else if (Ext.Array.indexOf(axis, 'right') > -1) { + yAxis = 'right'; + } else { + if (axes.get('left') && axes.get('right')) { + for (i = 0, ln = yFieldList.length; i < ln; i++) { + yFields[yFieldList[i]] = true; + } + fields = [].concat(axes.get('right').fields); + for (i = 0, ln = fields.length; i < ln; i++) { + if (yFields[fields[i]]) { + + break + } + } + fields = [].concat(axes.get('left').fields); + for (i = 0, ln = fields.length; i < ln; i++) { + if (yFields[fields[i]]) { + yAxis = 'left'; + break + } + } + } else if (axes.get('left')) { + yAxis = 'left'; + } else if (axes.get('right')) { + yAxis = 'right'; + } + } + + return flipXY ? { + xAxis: yAxis, + yAxis: xAxis + }: { + xAxis: xAxis, + yAxis: yAxis + }; + } + + +}); + + +Ext.define('Ext.chart.series.Area', { + + + + extend: Ext.chart.series.Cartesian , + + alias: 'series.area', + + + + + + type: 'area', + + + stacked: true, + + + style: {}, + + constructor: function(config) { + this.callParent(arguments); + var me = this, + surface = me.chart.surface, + i, l; + config.highlightCfg = Ext.Object.merge({}, { + lineWidth: 3, + stroke: '#55c', + opacity: 0.8, + color: '#f00' + }, config.highlightCfg); + + Ext.apply(me, config, { + __excludes: [] + }); + if (me.highlight) { + me.highlightSprite = surface.add({ + type: 'path', + path: ['M', 0, 0], + zIndex: 1000, + opacity: 0.3, + lineWidth: 5, + hidden: true, + stroke: '#444' + }); + } + me.group = surface.getGroup(me.seriesId); + }, + + + shrink: function(xValues, yValues, size) { + var len = xValues.length, + ratio = Math.floor(len / size), + i, j, + xSum = 0, + yCompLen = this.areas.length, + ySum = [], + xRes = [], + yRes = []; + + for (j = 0; j < yCompLen; ++j) { + ySum[j] = 0; + } + for (i = 0; i < len; ++i) { + xSum += +xValues[i]; + for (j = 0; j < yCompLen; ++j) { + ySum[j] += +yValues[i][j]; + } + if (i % ratio == 0) { + + xRes.push(xSum/ratio); + for (j = 0; j < yCompLen; ++j) { + ySum[j] /= ratio; + } + yRes.push(ySum); + + xSum = 0; + for (j = 0, ySum = []; j < yCompLen; ++j) { + ySum[j] = 0; + } + } + } + return { + x: xRes, + y: yRes + }; + }, + + + getBounds: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + i, l, record, + areas = [].concat(me.yField), + areasLen = areas.length, + xValues = [], + yValues = [], + infinity = Infinity, + minX = infinity, + minY = infinity, + maxX = -infinity, + maxY = -infinity, + math = Math, + mmin = math.min, + mmax = math.max, + boundAxis = me.getAxesForXAndYFields(), + boundXAxis = boundAxis.xAxis, + boundYAxis = boundAxis.yAxis, + ends, allowDate, tmp, + bbox, xScale, yScale, xValue, yValue, areaIndex, acumY, ln, sumValues, clipBox, areaElem, axis, out; + + me.setBBox(); + bbox = me.bbox; + + if (axis = chart.axes.get(boundXAxis)) { + if (axis.type === 'Time') { + allowDate = true; + } + ends = axis.applyData(); + minX = ends.from; + maxX = ends.to; + } + + if (axis = chart.axes.get(boundYAxis)) { + ends = axis.applyData(); + minY = ends.from; + maxY = ends.to; + } + + + if (me.xField && !Ext.isNumber(minX)) { + axis = me.getMinMaxXValues(); + allowDate = true; + minX = axis[0]; + maxX = axis[1]; + } + + if (me.yField && !Ext.isNumber(minY)) { + axis = me.getMinMaxYValues(); + minY = axis[0]; + maxY = axis[1]; + } + + if (!Ext.isNumber(minY)) { + minY = 0; + } + if (!Ext.isNumber(maxY)) { + maxY = 0; + } + + l = data.length; + if (l > 0 && allowDate) { + tmp = data[0].get(me.xField); + if (typeof tmp != 'number') { + tmp = +tmp; + if (isNaN(tmp)) { + allowDate = false; + } + } + } + for (i = 0; i < l; i++) { + record = data[i]; + xValue = record.get(me.xField); + yValue = []; + if (typeof xValue != 'number') { + if (allowDate) { + xValue = +xValue; + } else { + xValue = i; + } + } + xValues.push(xValue); + acumY = 0; + for (areaIndex = 0; areaIndex < areasLen; areaIndex++) { + + if (me.__excludes[areaIndex]) { + continue; + } + areaElem = record.get(areas[areaIndex]); + if (typeof areaElem == 'number') { + yValue.push(areaElem); + } + } + yValues.push(yValue); + } + + xScale = bbox.width / ((maxX - minX) || 1); + yScale = bbox.height / ((maxY - minY) || 1); + + ln = xValues.length; + if ((ln > bbox.width) && me.areas) { + sumValues = me.shrink(xValues, yValues, bbox.width); + xValues = sumValues.x; + yValues = sumValues.y; + } + + return { + bbox: bbox, + minX: minX, + minY: minY, + xValues: xValues, + yValues: yValues, + xScale: xScale, + yScale: yScale, + areasLen: areasLen + }; + }, + + + getPaths: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + first = true, + bounds = me.getBounds(), + bbox = bounds.bbox, + items = me.items = [], + componentPaths = [], + componentPath, + count = 0, + paths = [], + i, ln, x, y, xValue, yValue, acumY, areaIndex, prevAreaIndex, areaElem, path, startX; + + ln = bounds.xValues.length; + + for (i = 0; i < ln; i++) { + xValue = bounds.xValues[i]; + yValue = bounds.yValues[i]; + x = bbox.x + (xValue - bounds.minX) * bounds.xScale; + if (startX === undefined) { + startX = x; + } + acumY = 0; + count = 0; + for (areaIndex = 0; areaIndex < bounds.areasLen; areaIndex++) { + + if (me.__excludes[areaIndex]) { + continue; + } + if (!componentPaths[areaIndex]) { + componentPaths[areaIndex] = []; + } + areaElem = yValue[count]; + acumY += areaElem; + y = bbox.y + bbox.height - (acumY - bounds.minY) * bounds.yScale; + if (!paths[areaIndex]) { + paths[areaIndex] = ['M', x, y]; + componentPaths[areaIndex].push(['L', x, y]); + } else { + paths[areaIndex].push('L', x, y); + componentPaths[areaIndex].push(['L', x, y]); + } + if (!items[areaIndex]) { + items[areaIndex] = { + pointsUp: [], + pointsDown: [], + series: me + }; + } + items[areaIndex].pointsUp.push([x, y]); + count++; + } + } + + + for (areaIndex = 0; areaIndex < bounds.areasLen; areaIndex++) { + + if (me.__excludes[areaIndex]) { + continue; + } + path = paths[areaIndex]; + + + if (areaIndex == 0 || first) { + first = false; + + path.push('L', x, bbox.y + bbox.height, + 'L', startX, bbox.y + bbox.height, + 'Z'); + } + + else { + componentPath = componentPaths[prevAreaIndex]; + componentPath.reverse(); + path.push('L', x, componentPath[0][2]); + for (i = 0; i < ln; i++) { + path.push(componentPath[i][0], + componentPath[i][1], + componentPath[i][2]); + items[areaIndex].pointsDown[ln -i -1] = [componentPath[i][1], componentPath[i][2]]; + } + path.push('L', startX, path[2], 'Z'); + } + prevAreaIndex = areaIndex; + } + return { + paths: paths, + areasLen: bounds.areasLen + }; + }, + + + drawSeries: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + surface = chart.surface, + animate = chart.animate, + group = me.group, + endLineStyle = Ext.apply(me.seriesStyle, me.style), + colorArrayStyle = me.colorArrayStyle, + colorArrayLength = colorArrayStyle && colorArrayStyle.length || 0, + themeIndex = me.themeIdx, + areaIndex, areaElem, paths, path, rendererAttributes, idx; + + me.unHighlightItem(); + me.cleanHighlights(); + + if (!store || !store.getCount() || me.seriesIsHidden) { + me.hide(); + me.items = []; + return; + } + + paths = me.getPaths(); + + if (!me.areas) { + me.areas = []; + } + + for (areaIndex = 0; areaIndex < paths.areasLen; areaIndex++) { + + if (me.__excludes[areaIndex]) { + continue; + } + idx = themeIndex + areaIndex; + if (!me.areas[areaIndex]) { + me.items[areaIndex].sprite = me.areas[areaIndex] = surface.add(Ext.apply({}, { + type: 'path', + group: group, + + path: paths.paths[areaIndex], + stroke: endLineStyle.stroke || colorArrayStyle[idx % colorArrayLength], + fill: colorArrayStyle[idx % colorArrayLength] + }, endLineStyle || {})); + } + areaElem = me.areas[areaIndex]; + path = paths.paths[areaIndex]; + if (animate) { + + rendererAttributes = me.renderer(areaElem, false, { + path: path, + + fill: colorArrayStyle[areaIndex % colorArrayLength], + stroke: endLineStyle.stroke || colorArrayStyle[areaIndex % colorArrayLength] + }, areaIndex, store); + + me.animation = me.onAnimate(areaElem, { + to: rendererAttributes + }); + } else { + rendererAttributes = me.renderer(areaElem, false, { + path: path, + + hidden: false, + fill: colorArrayStyle[idx % colorArrayLength], + stroke: endLineStyle.stroke || colorArrayStyle[idx % colorArrayLength] + }, areaIndex, store); + me.areas[areaIndex].setAttributes(rendererAttributes, true); + } + } + me.renderLabels(); + me.renderCallouts(); + }, + + + onAnimate: function(sprite, attr) { + sprite.show(); + return this.callParent(arguments); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + + + + + + + + + + return null; + + var me = this, + group = me.labelsGroup, + config = me.label, + bbox = me.bbox, + endLabelStyle = Ext.apply({}, config, me.seriesLabelStyle || {}); + + return me.chart.surface.add(Ext.apply({ + 'type': 'text', + 'text-anchor': 'middle', + 'group': group, + 'x': Number(item.point[0]), + 'y': bbox.y + bbox.height / 2 + }, endLabelStyle || {})); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + resizing = chart.resizing, + config = me.label, + format = config.renderer, + field = config.field, + bbox = me.bbox, + x = Number(item.point[i][0]), + y = Number(item.point[i][1]), + labelBox, width, height; + + label.setAttributes({ + text: format(storeItem.get(field[index]), label, storeItem, item, i, display, animate, index), + hidden: true + }, true); + + labelBox = label.getBBox(); + width = labelBox.width / 2; + height = labelBox.height / 2; + + + if (x < bbox.x + width) { + x = bbox.x + width; + } else if (x + width > bbox.x + bbox.width) { + x = bbox.x + bbox.width - width; + } + + y = y - height; + if (y < bbox.y + height) { + y += 2 * height; + } else if (y + height > bbox.y + bbox.height) { + y -= 2 * height; + } + + if (me.chart.animate && !me.chart.resizing) { + label.show(true); + me.onAnimate(label, { + to: { + x: x, + y: y + } + }); + } else { + label.setAttributes({ + x: x, + y: y + }, true); + if (resizing && me.animation) { + me.animation.on('afteranimate', function() { + label.show(true); + }); + } else { + label.show(true); + } + } + }, + + + onPlaceCallout : function(callout, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + surface = chart.surface, + resizing = chart.resizing, + config = me.callouts, + items = me.items, + prev = (i == 0) ? false : items[i -1].point, + next = (i == items.length -1) ? false : items[i +1].point, + cur = item.point, + dir, norm, normal, a, aprev, anext, + bbox = (callout && callout.label ? callout.label.getBBox() : {width:0,height:0}), + offsetFromViz = 30, + offsetToSide = 10, + offsetBox = 3, + boxx, boxy, boxw, boxh, + p, clipRect = me.clipRect, + x, y; + + if (!bbox.width || !bbox.height) { + return; + } + + + if (!prev) { + prev = cur; + } + if (!next) { + next = cur; + } + a = (next[1] - prev[1]) / (next[0] - prev[0]); + aprev = (cur[1] - prev[1]) / (cur[0] - prev[0]); + anext = (next[1] - cur[1]) / (next[0] - cur[0]); + + norm = Math.sqrt(1 + a * a); + dir = [1 / norm, a / norm]; + normal = [-dir[1], dir[0]]; + + + if (aprev > 0 && anext < 0 && normal[1] < 0 || aprev < 0 && anext > 0 && normal[1] > 0) { + normal[0] *= -1; + normal[1] *= -1; + } else if (Math.abs(aprev) < Math.abs(anext) && normal[0] < 0 || Math.abs(aprev) > Math.abs(anext) && normal[0] > 0) { + normal[0] *= -1; + normal[1] *= -1; + } + + + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + + + if (boxx < clipRect[0] || (boxx + boxw) > (clipRect[0] + clipRect[2])) { + normal[0] *= -1; + } + if (boxy < clipRect[1] || (boxy + boxh) > (clipRect[1] + clipRect[3])) { + normal[1] *= -1; + } + + + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + + callout.lines.setAttributes({ + path: ["M", cur[0], cur[1], "L", x, y, "Z"] + }, true); + + callout.box.setAttributes({ + x: boxx, + y: boxy, + width: boxw, + height: boxh + }, true); + + callout.label.setAttributes({ + x: x + (normal[0] > 0? offsetBox : -(bbox.width + offsetBox)), + y: y + }, true); + for (p in callout) { + callout[p].show(true); + } + }, + + isItemInPoint: function(x, y, item, i) { + var me = this, + pointsUp = item.pointsUp, + pointsDown = item.pointsDown, + abs = Math.abs, + distChanged = false, + last = false, + dist = Infinity, p, pln, point; + + for (p = 0, pln = pointsUp.length; p < pln; p++) { + point = [pointsUp[p][0], pointsUp[p][1]]; + + distChanged = false; + last = p == pln -1; + + if (dist > abs(x - point[0])) { + dist = abs(x - point[0]); + distChanged = true; + if (last) { + ++p; + } + } + + if (!distChanged || (distChanged && last)) { + point = pointsUp[p -1]; + if (y >= point[1] && (!pointsDown.length || y <= (pointsDown[p -1][1]))) { + item.storeIndex = p -1; + item.storeField = me.yField[i]; + item.storeItem = me.chart.getChartStore().getAt(p -1); + item._points = pointsDown.length? [point, pointsDown[p -1]] : [point]; + return true; + } else { + break; + } + } + } + return false; + }, + + + highlightSeries: function() { + var area, to, fillColor; + if (this._index !== undefined) { + area = this.areas[this._index]; + if (area.__highlightAnim) { + area.__highlightAnim.paused = true; + } + area.__highlighted = true; + area.__prevOpacity = area.__prevOpacity || area.attr.opacity || 1; + area.__prevFill = area.__prevFill || area.attr.fill; + area.__prevLineWidth = area.__prevLineWidth || area.attr.lineWidth; + fillColor = Ext.draw.Color.fromString(area.__prevFill); + to = { + lineWidth: (area.__prevLineWidth || 0) + 2 + }; + if (fillColor) { + to.fill = fillColor.getLighter(0.2).toString(); + } + else { + to.opacity = Math.max(area.__prevOpacity - 0.3, 0); + } + if (this.chart.animate) { + area.__highlightAnim = new Ext.fx.Anim(Ext.apply({ + target: area, + to: to + }, this.chart.animate)); + } + else { + area.setAttributes(to, true); + } + } + }, + + + unHighlightSeries: function() { + var area; + if (this._index !== undefined) { + area = this.areas[this._index]; + if (area.__highlightAnim) { + area.__highlightAnim.paused = true; + } + if (area.__highlighted) { + area.__highlighted = false; + area.__highlightAnim = new Ext.fx.Anim({ + target: area, + to: { + fill: area.__prevFill, + opacity: area.__prevOpacity, + lineWidth: area.__prevLineWidth + } + }); + } + } + }, + + + highlightItem: function(item) { + var me = this, + points, path; + if (!item) { + this.highlightSeries(); + return; + } + points = item._points; + path = points.length == 2? ['M', points[0][0], points[0][1], 'L', points[1][0], points[1][1]] + : ['M', points[0][0], points[0][1], 'L', points[0][0], me.bbox.y + me.bbox.height]; + me.highlightSprite.setAttributes({ + path: path, + hidden: false + }, true); + }, + + + unHighlightItem: function(item) { + if (!item) { + this.unHighlightSeries(); + } + + if (this.highlightSprite) { + this.highlightSprite.hide(true); + } + }, + + + hideAll: function(index) { + var me = this; + index = (isNaN(me._index) ? index : me._index) || 0; + me.__excludes[index] = true; + me.areas[index].hide(true); + me.redraw(); + }, + + + showAll: function(index) { + var me = this; + index = (isNaN(me._index) ? index : me._index) || 0; + me.__excludes[index] = false; + me.areas[index].show(true); + me.redraw(); + }, + + redraw: function() { + + + + var me = this, + prevLegendConfig; + prevLegendConfig = me.chart.legend.rebuild; + me.chart.legend.rebuild = false; + me.chart.redraw(); + me.chart.legend.rebuild = prevLegendConfig; + }, + + hide: function() { + if (this.areas) { + var me = this, + areas = me.areas, + i, j, l, ln, shadows; + + if (areas && areas.length) { + for (i = 0, ln = areas.length; i < ln; ++i) { + if (areas[i]) { + areas[i].hide(true); + } + } + me.hideLabels(); + } + } + }, + + + getLegendColor: function(index) { + var me = this; + index += me.themeIdx; + return me.colorArrayStyle[index % me.colorArrayStyle.length]; + } +}); + + +Ext.define('Ext.chart.series.Bar', { + + + + extend: Ext.chart.series.Cartesian , + + alternateClassName: ['Ext.chart.BarSeries', 'Ext.chart.BarChart', 'Ext.chart.StackedBarChart'], + + + + + + type: 'bar', + + alias: 'series.bar', + + column: false, + + + style: {}, + + + gutter: 38.2, + + + groupGutter: 38.2, + + + xPadding: 0, + + + yPadding: 10, + + + + constructor: function(config) { + this.callParent(arguments); + var me = this, + surface = me.chart.surface, + shadow = me.chart.shadow, + i, l; + config.highlightCfg = Ext.Object.merge({ + lineWidth: 3, + stroke: '#55c', + opacity: 0.8, + color: '#f00' + }, config.highlightCfg); + Ext.apply(me, config, { + shadowAttributes: [{ + "stroke-width": 6, + "stroke-opacity": 0.05, + stroke: 'rgb(200, 200, 200)', + translate: { + x: 1.2, + y: 1.2 + } + }, { + "stroke-width": 4, + "stroke-opacity": 0.1, + stroke: 'rgb(150, 150, 150)', + translate: { + x: 0.9, + y: 0.9 + } + }, { + "stroke-width": 2, + "stroke-opacity": 0.15, + stroke: 'rgb(100, 100, 100)', + translate: { + x: 0.6, + y: 0.6 + } + }] + }); + + me.group = surface.getGroup(me.seriesId + '-bars'); + if (shadow) { + for (i = 0, l = me.shadowAttributes.length; i < l; i++) { + me.shadowGroups.push(surface.getGroup(me.seriesId + '-shadows' + i)); + } + } + }, + + + getPadding: function() { + var me = this, + xPadding = me.xPadding, + yPadding = me.yPadding, + padding = { }; + + if (Ext.isNumber(xPadding)) { + padding.left = xPadding; + padding.right = xPadding; + } else if (Ext.isObject(xPadding)) { + padding.left = xPadding.left; + padding.right = xPadding.right; + } else { + padding.left = 0; + padding.right = 0; + } + padding.width = padding.left + padding.right; + + if (Ext.isNumber(yPadding)) { + padding.bottom = yPadding; + padding.top = yPadding; + } else if (Ext.isObject(yPadding)) { + padding.bottom = yPadding.bottom; + padding.top = yPadding.top; + } else { + padding.bottom = 0; + padding.top = 0; + } + padding.height = padding.bottom + padding.top; + + return padding; + }, + + + getBarGirth: function() { + var me = this, + store = me.chart.getChartStore(), + column = me.column, + ln = store.getCount(), + gutter = me.gutter / 100, + padding, + property; + + if (me.style && me.style.width) { + return me.style.width; + } + padding = me.getPadding(); + property = (column ? 'width' : 'height'); + return (me.chart.chartBBox[property] - padding[property]) / (ln * (gutter + 1) - gutter); + }, + + + getGutters: function() { + var me = this, + column = me.column, + padding = me.getPadding(), + halfBarGirth = me.getBarGirth() / 2, + lowerGutter = Math.ceil((column ? padding.left : padding.bottom) + halfBarGirth), + upperGutter = Math.ceil((column ? padding.right : padding.top) + halfBarGirth); + + return { + lower: lowerGutter, + upper: upperGutter, + verticalAxis: !column + }; + }, + + + getBounds: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + i, ln, record, + bars = [].concat(me.yField), + barsLoc, + barsLen = bars.length, + groupBarsLen = barsLen, + groupGutter = me.groupGutter / 100, + column = me.column, + padding = me.getPadding(), + stacked = me.stacked, + barWidth = me.getBarGirth(), + barWidthProperty = column ? 'width' : 'height', + math = Math, + mmin = math.min, + mmax = math.max, + mabs = math.abs, + boundAxes = me.getAxesForXAndYFields(), + boundYAxis = boundAxes.yAxis, + minX, maxX, colsScale, colsZero, gutters, + ends, shrunkBarWidth, groupBarWidth, bbox, minY, maxY, axis, out, + scale, zero, total, rec, j, plus, minus; + + me.setBBox(true); + bbox = me.bbox; + + + if (me.__excludes) { + for (j = 0, total = me.__excludes.length; j < total; j++) { + if (me.__excludes[j]) { + groupBarsLen--; + } + } + } + axis = chart.axes.get(boundYAxis); + if (axis) { + ends = axis.applyData(); + minY = ends.from; + maxY = ends.to; + } + + if (me.yField && !Ext.isNumber(minY)) { + out = me.getMinMaxYValues(); + minY = out[0]; + maxY = out[1]; + } + + if (!Ext.isNumber(minY)) { + minY = 0; + } + if (!Ext.isNumber(maxY)) { + maxY = 0; + } + scale = (column ? bbox.height - padding.height : bbox.width - padding.width) / (maxY - minY); + shrunkBarWidth = barWidth; + groupBarWidth = (barWidth / ((stacked ? 1 : groupBarsLen) * (groupGutter + 1) - groupGutter)); + + if (barWidthProperty in me.style) { + groupBarWidth = mmin(groupBarWidth, me.style[barWidthProperty]); + shrunkBarWidth = groupBarWidth * ((stacked ? 1 : groupBarsLen) * (groupGutter + 1) - groupGutter); + } + zero = (column) ? bbox.y + bbox.height - padding.bottom : bbox.x + padding.left; + + if (stacked) { + total = [[], []]; + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + total[0][i] = total[0][i] || 0; + total[1][i] = total[1][i] || 0; + for (j = 0; j < barsLen; j++) { + if (me.__excludes && me.__excludes[j]) { + continue; + } + rec = record.get(bars[j]); + total[+(rec > 0)][i] += mabs(rec); + } + } + total[+(maxY > 0)].push(mabs(maxY)); + total[+(minY > 0)].push(mabs(minY)); + minus = mmax.apply(math, total[0]); + plus = mmax.apply(math, total[1]); + scale = (column ? bbox.height - padding.height : bbox.width - padding.width) / (plus + minus); + zero = zero + minus * scale * (column ? -1 : 1); + } + else if (minY / maxY < 0) { + zero = zero - minY * scale * (column ? -1 : 1); + } + + + if (me.boundColumn) { + axis = chart.axes.get(boundAxes.xAxis); + if (axis) { + ends = axis.applyData(); + minX = ends.from; + maxX = ends.to; + } + if (me.xField && !Ext.isNumber(minX)) { + out = me.getMinMaxYValues(); + minX = out[0]; + maxX = out[1]; + } + if (!Ext.isNumber(minX)) { + minX = 0; + } + if (!Ext.isNumber(maxX)) { + maxX = 0; + } + gutters = me.getGutters(); + colsScale = (bbox.width - (gutters.lower + gutters.upper)) / ((maxX - minX) || 1); + + colsZero = bbox.x + gutters.lower; + + barsLoc = []; + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + rec = record.get(me.xField); + barsLoc[i] = colsZero + (rec - minX) * colsScale - (groupBarWidth / 2); + } + } + + return { + bars: bars, + barsLoc: barsLoc, + bbox: bbox, + shrunkBarWidth: shrunkBarWidth, + barsLen: barsLen, + groupBarsLen: groupBarsLen, + barWidth: barWidth, + groupBarWidth: groupBarWidth, + scale: scale, + zero: zero, + padding: padding, + signed: minY / maxY < 0, + minY: minY, + maxY: maxY + }; + }, + + + getPaths: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + data = store.data.items, + i, total, record, + bounds = me.bounds = me.getBounds(), + items = me.items = [], + yFields = Ext.isArray(me.yField) ? me.yField : [me.yField], + gutter = me.gutter / 100, + groupGutter = me.groupGutter / 100, + animate = chart.animate, + column = me.column, + group = me.group, + enableShadows = chart.shadow, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + shadowGroupsLn = shadowGroups.length, + bbox = bounds.bbox, + barWidth = bounds.barWidth, + shrunkBarWidth = bounds.shrunkBarWidth, + padding = me.getPadding(), + stacked = me.stacked, + barsLen = bounds.barsLen, + colors = me.colorArrayStyle, + colorLength = colors && colors.length || 0, + themeIndex = me.themeIdx, + math = Math, + mmax = math.max, + mmin = math.min, + mabs = math.abs, + j, yValue, height, totalDim, totalNegDim, bottom, top, hasShadow, barAttr, attrs, counter, + totalPositiveValues, totalNegativeValues, + shadowIndex, shadow, sprite, offset, floorY, idx; + + for (i = 0, total = data.length; i < total; i++) { + record = data[i]; + bottom = bounds.zero; + top = bounds.zero; + totalDim = 0; + totalNegDim = 0; + totalPositiveValues = totalNegativeValues = 0; + hasShadow = false; + for (j = 0, counter = 0; j < barsLen; j++) { + + if (me.__excludes && me.__excludes[j]) { + continue; + } + yValue = record.get(bounds.bars[j]); + if (yValue >= 0) { + totalPositiveValues += yValue; + } + else { + totalNegativeValues += yValue; + } + height = Math.round((yValue - mmax(bounds.minY, 0)) * bounds.scale); + idx = themeIndex + (barsLen > 1 ? j : 0); + barAttr = { + fill: colors[idx % colorLength] + }; + if (column) { + Ext.apply(barAttr, { + height: height, + width: mmax(bounds.groupBarWidth, 0), + x: (me.boundColumn ? bounds.barsLoc[i] + : (bbox.x + padding.left + + (barWidth - shrunkBarWidth) * 0.5 + + i * barWidth * (1 + gutter) + + counter * bounds.groupBarWidth * (1 + groupGutter) * !stacked)), + y: bottom - height + }); + } + else { + + offset = (total - 1) - i; + Ext.apply(barAttr, { + height: mmax(bounds.groupBarWidth, 0), + width: height + (bottom == bounds.zero), + x: bottom + (bottom != bounds.zero), + y: (bbox.y + padding.top + + (barWidth - shrunkBarWidth) * 0.5 + + offset * barWidth * (1 + gutter) + + counter * bounds.groupBarWidth * (1 + groupGutter) * !stacked + 1) + }); + } + if (height < 0) { + if (column) { + barAttr.y = top; + barAttr.height = mabs(height); + } else { + barAttr.x = top + height; + barAttr.width = mabs(height); + } + } + if (stacked) { + if (height < 0) { + top += height * (column ? -1 : 1); + } else { + bottom += height * (column ? -1 : 1); + } + totalDim += mabs(height); + if (height < 0) { + totalNegDim += mabs(height); + } + } + barAttr.x = Math.floor(barAttr.x) + 1; + floorY = Math.floor(barAttr.y); + if (Ext.isIE8m && barAttr.y > floorY) { + floorY--; + } + barAttr.y = floorY; + barAttr.width = Math.floor(barAttr.width); + barAttr.height = Math.floor(barAttr.height); + items.push({ + series: me, + yField: yFields[j], + storeItem: record, + value: [record.get(me.xField), yValue], + attr: barAttr, + point: column ? [barAttr.x + barAttr.width / 2, yValue >= 0 ? barAttr.y : barAttr.y + barAttr.height] : + [yValue >= 0 ? barAttr.x + barAttr.width : barAttr.x, barAttr.y + barAttr.height / 2] + }); + + if (animate && chart.resizing) { + attrs = column ? { + x: barAttr.x, + y: bounds.zero, + width: barAttr.width, + height: 0 + } : { + x: bounds.zero, + y: barAttr.y, + width: 0, + height: barAttr.height + }; + if (enableShadows && (stacked && !hasShadow || !stacked)) { + hasShadow = true; + + for (shadowIndex = 0; shadowIndex < shadowGroupsLn; shadowIndex++) { + shadow = shadowGroups[shadowIndex].getAt(stacked ? i : (i * barsLen + j)); + if (shadow) { + shadow.setAttributes(attrs, true); + } + } + } + + sprite = group.getAt(i * barsLen + j); + if (sprite) { + sprite.setAttributes(attrs, true); + } + } + counter++; + } + if (stacked && items.length) { + items[i * counter].totalDim = totalDim; + items[i * counter].totalNegDim = totalNegDim; + items[i * counter].totalPositiveValues = totalPositiveValues; + items[i * counter].totalNegativeValues = totalNegativeValues; + } + } + if (stacked && counter == 0) { + + for (i = 0, total = data.length; i < total; i++) { + for (shadowIndex = 0; shadowIndex < shadowGroupsLn; shadowIndex++) { + shadow = shadowGroups[shadowIndex].getAt(i); + if (shadow) { + shadow.hide(true); + } + } + } + } + }, + + + renderShadows: function(i, barAttr, baseAttrs, bounds) { + var me = this, + chart = me.chart, + surface = chart.surface, + animate = chart.animate, + stacked = me.stacked, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + shadowGroupsLn = shadowGroups.length, + store = chart.getChartStore(), + column = me.column, + items = me.items, + shadows = [], + zero = bounds.zero, + shadowIndex, shadowBarAttr, shadow, totalDim, totalNegDim, j, rendererAttributes; + + if ((stacked && (i % bounds.groupBarsLen === 0)) || !stacked) { + j = i / bounds.groupBarsLen; + + for (shadowIndex = 0; shadowIndex < shadowGroupsLn; shadowIndex++) { + shadowBarAttr = Ext.apply({}, shadowAttributes[shadowIndex]); + shadow = shadowGroups[shadowIndex].getAt(stacked ? j : i); + Ext.copyTo(shadowBarAttr, barAttr, 'x,y,width,height'); + if (!shadow) { + shadow = surface.add(Ext.apply({ + type: 'rect', + group: shadowGroups[shadowIndex] + }, Ext.apply({}, baseAttrs, shadowBarAttr))); + } + if (stacked) { + totalDim = items[i].totalDim; + totalNegDim = items[i].totalNegDim; + if (column) { + shadowBarAttr.y = zero + totalNegDim - totalDim - 1; + shadowBarAttr.height = totalDim; + } + else { + shadowBarAttr.x = zero - totalNegDim; + shadowBarAttr.width = totalDim; + } + } + + rendererAttributes = me.renderer(shadow, store.getAt(j), shadowBarAttr, i, store); + rendererAttributes.hidden = !!barAttr.hidden; + if (animate) { + me.onAnimate(shadow, { to: rendererAttributes }); + } + else { + shadow.setAttributes(rendererAttributes, true); + } + shadows.push(shadow); + } + } + return shadows; + }, + + + drawSeries: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + surface = chart.surface, + animate = chart.animate, + stacked = me.stacked, + column = me.column, + chartAxes = chart.axes, + boundAxes = me.getAxesForXAndYFields(), + boundXAxis = boundAxes.xAxis, + boundYAxis = boundAxes.yAxis, + enableShadows = chart.shadow, + shadowGroups = me.shadowGroups, + shadowGroupsLn = shadowGroups.length, + group = me.group, + seriesStyle = me.seriesStyle, + items, ln, i, j, baseAttrs, sprite, rendererAttributes, shadowIndex, shadowGroup, + bounds, endSeriesStyle, barAttr, attrs, anim; + + if (!store || !store.getCount() || me.seriesIsHidden) { + me.hide(); + me.items = []; + return; + } + + + endSeriesStyle = Ext.apply({}, this.style, seriesStyle); + delete endSeriesStyle.fill; + delete endSeriesStyle.x; + delete endSeriesStyle.y; + delete endSeriesStyle.width; + delete endSeriesStyle.height; + + me.unHighlightItem(); + me.cleanHighlights(); + + me.boundColumn = (boundXAxis && Ext.Array.contains(me.axis,boundXAxis) + && chartAxes.get(boundXAxis) + && chartAxes.get(boundXAxis).isNumericAxis); + + me.getPaths(); + bounds = me.bounds; + items = me.items; + + baseAttrs = column ? { + y: bounds.zero, + height: 0 + } : { + x: bounds.zero, + width: 0 + }; + ln = items.length; + + + for (i = 0; i < ln; i++) { + sprite = group.getAt(i); + barAttr = items[i].attr; + + if (enableShadows) { + items[i].shadows = me.renderShadows(i, barAttr, baseAttrs, bounds); + } + + + if (!sprite) { + attrs = Ext.apply({}, baseAttrs, barAttr); + attrs = Ext.apply(attrs, endSeriesStyle || {}); + sprite = surface.add(Ext.apply({}, { + type: 'rect', + group: group + }, attrs)); + } + if (animate) { + rendererAttributes = me.renderer(sprite, store.getAt(i), barAttr, i, store); + sprite._to = rendererAttributes; + anim = me.onAnimate(sprite, { to: Ext.apply(rendererAttributes, endSeriesStyle) }); + if (enableShadows && stacked && (i % bounds.barsLen === 0)) { + j = i / bounds.barsLen; + for (shadowIndex = 0; shadowIndex < shadowGroupsLn; shadowIndex++) { + anim.on('afteranimate', function() { + this.show(true); + }, shadowGroups[shadowIndex].getAt(j)); + } + } + } + else { + rendererAttributes = me.renderer(sprite, store.getAt(i), Ext.apply(barAttr, { hidden: false }), i, store); + sprite.setAttributes(Ext.apply(rendererAttributes, endSeriesStyle), true); + } + items[i].sprite = sprite; + } + + + ln = group.getCount(); + for (j = i; j < ln; j++) { + group.getAt(j).hide(true); + } + + if (me.stacked) { + + i = store.getCount(); + } + + + if (enableShadows) { + for (shadowIndex = 0; shadowIndex < shadowGroupsLn; shadowIndex++) { + shadowGroup = shadowGroups[shadowIndex]; + ln = shadowGroup.getCount(); + for (j = i; j < ln; j++) { + shadowGroup.getAt(j).hide(true); + } + } + } + me.renderLabels(); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + var me = this, + surface = me.chart.surface, + group = me.labelsGroup, + config = me.label, + endLabelStyle = Ext.apply({}, config, me.seriesLabelStyle || {}), + sprite; + + return surface.add(Ext.apply({ + type: 'text', + group: group + }, endLabelStyle || {})); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + + + var me = this, + opt = me.bounds, + groupBarWidth = opt.groupBarWidth, + column = me.column, + chart = me.chart, + chartBBox = chart.chartBBox, + resizing = chart.resizing, + xValue = item.value[0], + yValue = item.value[1], + attr = item.attr, + config = me.label, + stacked = me.stacked, + stackedDisplay = config.stackedDisplay, + rotate = (config.orientation == 'vertical'), + field = [].concat(config.field), + format = config.renderer, + text, size, width, height, + zero = opt.zero, + insideStart = 'insideStart', + insideEnd = 'insideEnd', + outside = 'outside', + over = 'over', + under = 'under', + labelMarginX = 4, + labelMarginY = 2, + signed = opt.signed, + x, y, finalAttr; + + if (display == insideStart || display == insideEnd || display == outside) { + if (stacked && (display == outside)) { + + + label.hide(true); + return; + } + label.setAttributes({ + + + style: undefined + }); + text = (Ext.isNumber(index) ? format(storeItem.get(field[index]), label, storeItem, item, i, display, animate, index) : ''); + label.setAttributes({ + + text: text + }); + size = me.getLabelSize(text, label.attr.style); + width = size.width; + height = size.height; + if (column) { + + + + + + if (!width || !height || (stacked && (attr.height < height))) { + label.hide(true); + return; + } + + + x = attr.x + (rotate ? groupBarWidth/2 : (groupBarWidth - width)/2); + + + if (display == outside) { + var free = (yValue >= 0 ? (attr.y - chartBBox.y) : (chartBBox.y + chartBBox.height - attr.y - attr.height)); + if (free < height + labelMarginY) { + display = insideEnd; + } + } + + + + if (!stacked && (display != outside)) { + if (height + labelMarginY > attr.height) { + display = outside; + } + } + + + + if (!y) { + y = attr.y; + if (yValue >= 0) { + switch (display) { + case insideStart: y += attr.height + (rotate ? -labelMarginY : -height/2); break; + case insideEnd: y += (rotate ? height + labelMarginX : height/2); break; + case outside: y += (rotate ? -labelMarginY : -height/2); break; + } + } else { + switch (display) { + case insideStart: y += (rotate ? height + labelMarginY : height/2); break; + case insideEnd: y += (rotate ? attr.height - labelMarginY : attr.height - height/2); break; + case outside: y += (rotate ? attr.height + height + labelMarginY : attr.height + height/2); break; + } + } + } + } + else { + + + + + if (!width || !height || (stacked && !attr.width)) { + label.hide(true); + return; + } + + + y = attr.y + (rotate ? (groupBarWidth + height)/2 : groupBarWidth/2); + + + if (display == outside) { + var free = (yValue >= 0 ? (chartBBox.x + chartBBox.width - attr.x - attr.width) : (attr.x - chartBBox.x)); + if (free < width + labelMarginX) { + display = insideEnd; + } + } + + + + + if ((display != outside) && !rotate) { + if (width + labelMarginX > attr.width) { + if (stacked) { + if (height > attr.width) { + label.hide(true); + return; + } + x = attr.x + attr.width/2; + y = attr.y + attr.height - (attr.height - width)/2; + rotate = true; + } else { + display = outside; + } + } + } + + + + if (!x) { + x = attr.x; + if (yValue >= 0) { + switch (display) { + case insideStart: x += (rotate ? width/2 : labelMarginX); break; + case insideEnd: x += attr.width + (rotate ? -width/2 : -width - labelMarginX); break; + case outside: x += attr.width + (rotate ? width/2 : labelMarginX); break; + } + } else { + switch (display) { + case insideStart: x += attr.width + (rotate ? -width/2 : -width - labelMarginX); break; + case insideEnd: x += (rotate ? width/2 : labelMarginX); break; + case outside: x += (rotate ? -width/2 : -width - labelMarginX); break; + } + } + } + } + } else if (display == over || display == under) { + if (stacked && stackedDisplay) { + + + + text = label.attr.text; + label.setAttributes({ + + + style: Ext.applyIf((label.attr && label.attr.style) || {}, + { + 'font-weight':'bold', + 'font-size':'14px' + } + ) + }); + + size = me.getLabelSize(text, label.attr.style); + width = size.width; + height = size.height; + + switch (display) { + case over: + if (column) { + x = attr.x + (rotate ? groupBarWidth/2 : (groupBarWidth - width)/2); + y = zero - (item.totalDim - item.totalNegDim) - height/2 - labelMarginY; + } else { + x = zero + (item.totalDim - item.totalNegDim) + labelMarginX; + y = attr.y + (rotate ? (groupBarWidth + height)/2 : groupBarWidth/2); + } + break; + case under: + if (column) { + x = attr.x + (rotate ? groupBarWidth/2 : (groupBarWidth - width)/2); + y = zero + item.totalNegDim + height/2; + } else { + x = zero - item.totalNegDim - width - labelMarginX; + y = attr.y + (rotate ? (groupBarWidth + height)/2 : groupBarWidth/2); + } + break; + } + } + } + + if (x == undefined || y == undefined) { + + label.hide(true); + return; + } + + label.isOutside = (display == outside); + label.setAttributes({ + text: text + }); + + + finalAttr = { + x: x, + y: y + }; + + if (rotate) { + finalAttr.rotate = { + x: x, + y: y, + degrees: 270 + }; + } + + if (animate && resizing) { + if (column) { + x = attr.x + attr.width / 2; + y = zero; + } else { + x = zero; + y = attr.y + attr.height / 2; + } + label.setAttributes({ + x: x, + y: y + }, true); + if (rotate) { + label.setAttributes({ + rotate: { + x: x, + y: y, + degrees: 270 + } + }, true); + } + } + + if (animate) { + me.onAnimate(label, { to: finalAttr }); + } + else { + label.setAttributes(Ext.apply(finalAttr, { + hidden: false + }), true); + } + }, + + + getLabelSize: function(value, labelStyle) { + var tester = this.testerLabel, + config = this.label, + endLabelStyle = Ext.apply({}, config, labelStyle, this.seriesLabelStyle || {}), + rotated = config.orientation === 'vertical', + bbox, w, h, + undef; + if (!tester) { + tester = this.testerLabel = this.chart.surface.add(Ext.apply({ + type: 'text', + opacity: 0 + }, endLabelStyle)); + } + tester.setAttributes({ + style: labelStyle, + text: value + }, true); + + + bbox = tester.getBBox(); + w = bbox.width; + h = bbox.height; + return { + width: rotated ? h : w, + height: rotated ? w : h + }; + }, + + + onAnimate: function(sprite, attr) { + sprite.show(); + return this.callParent(arguments); + }, + + isItemInPoint: function(x, y, item) { + var bbox = item.sprite.getBBox(); + return bbox.x <= x && bbox.y <= y + && (bbox.x + bbox.width) >= x + && (bbox.y + bbox.height) >= y; + }, + + + hideAll: function(index) { + var axes = this.chart.axes, + axesItems = axes.items, + ln = axesItems.length, + i = 0; + + index = (isNaN(this._index) ? index : this._index) || 0; + + if (!this.__excludes) { + this.__excludes = []; + } + + this.__excludes[index] = true; + this.drawSeries(); + + for (i; i < ln; i++) { + axesItems[i].drawAxis(); + } + }, + + + showAll: function(index) { + var axes = this.chart.axes, + axesItems = axes.items, + ln = axesItems.length, + i = 0; + + index = (isNaN(this._index) ? index : this._index) || 0; + + if (!this.__excludes) { + this.__excludes = []; + } + + this.__excludes[index] = false; + this.drawSeries(); + + for (i; i < ln; i++) { + axesItems[i].drawAxis(); + } + }, + + + getLegendColor: function(index) { + var me = this, + colorLength = me.colorArrayStyle.length; + + if (me.style && me.style.fill) { + return me.style.fill; + } else { + return me.colorArrayStyle[index % colorLength]; + } + }, + + highlightItem: function(item) { + this.callParent(arguments); + this.renderLabels(); + }, + + unHighlightItem: function() { + this.callParent(arguments); + this.renderLabels(); + }, + + cleanHighlights: function() { + this.callParent(arguments); + this.renderLabels(); + } +}); + + +Ext.define('Ext.chart.series.Column', { + + + + alternateClassName: ['Ext.chart.ColumnSeries', 'Ext.chart.ColumnChart', 'Ext.chart.StackedColumnChart'], + + extend: Ext.chart.series.Bar , + + + + type: 'column', + alias: 'series.column', + + column: true, + + + boundColumn: false, + + + + + xPadding: 10, + + + yPadding: 0 +}); + + +Ext.define('Ext.chart.series.Gauge', { + + + + extend: Ext.chart.series.Series , + + + + type: "gauge", + alias: 'series.gauge', + + rad: Math.PI / 180, + + + highlightDuration: 150, + + + angleField: false, + + + needle: false, + + + donut: false, + + + showInLegend: false, + + + style: {}, + + constructor: function(config) { + this.callParent(arguments); + var me = this, + chart = me.chart, + surface = chart.surface, + store = chart.store, + shadow = chart.shadow, i, l, cfg; + Ext.apply(me, config, { + shadowAttributes: [{ + "stroke-width": 6, + "stroke-opacity": 1, + stroke: 'rgb(200, 200, 200)', + translate: { + x: 1.2, + y: 2 + } + }, + { + "stroke-width": 4, + "stroke-opacity": 1, + stroke: 'rgb(150, 150, 150)', + translate: { + x: 0.9, + y: 1.5 + } + }, + { + "stroke-width": 2, + "stroke-opacity": 1, + stroke: 'rgb(100, 100, 100)', + translate: { + x: 0.6, + y: 1 + } + }] + }); + me.group = surface.getGroup(me.seriesId); + if (shadow) { + for (i = 0, l = me.shadowAttributes.length; i < l; i++) { + me.shadowGroups.push(surface.getGroup(me.seriesId + '-shadows' + i)); + } + } + surface.customAttributes.segment = function(opt) { + return me.getSegment(opt); + }; + }, + + + initialize: function() { + var me = this, + store = me.chart.getChartStore(), + data = store.data.items, + label = me.label, + ln = data.length; + + me.yField = []; + if (label && label.field && ln > 0) { + me.yField.push(data[0].get(label.field)); + } + }, + + + getSegment: function(opt) { + var me = this, + rad = me.rad, + cos = Math.cos, + sin = Math.sin, + abs = Math.abs, + x = me.centerX, + y = me.centerY, + x1 = 0, x2 = 0, x3 = 0, x4 = 0, + y1 = 0, y2 = 0, y3 = 0, y4 = 0, + delta = 1e-2, + r = opt.endRho - opt.startRho, + startAngle = opt.startAngle, + endAngle = opt.endAngle, + midAngle = (startAngle + endAngle) / 2 * rad, + margin = opt.margin || 0, + flag = abs(endAngle - startAngle) > 180, + a1 = Math.min(startAngle, endAngle) * rad, + a2 = Math.max(startAngle, endAngle) * rad, + singleSlice = false; + + x += margin * cos(midAngle); + y += margin * sin(midAngle); + + x1 = x + opt.startRho * cos(a1); + y1 = y + opt.startRho * sin(a1); + + x2 = x + opt.endRho * cos(a1); + y2 = y + opt.endRho * sin(a1); + + x3 = x + opt.startRho * cos(a2); + y3 = y + opt.startRho * sin(a2); + + x4 = x + opt.endRho * cos(a2); + y4 = y + opt.endRho * sin(a2); + + if (abs(x1 - x3) <= delta && abs(y1 - y3) <= delta) { + singleSlice = true; + } + + if (singleSlice) { + return { + path: [ + ["M", x1, y1], + ["L", x2, y2], + ["A", opt.endRho, opt.endRho, 0, +flag, 1, x4, y4], + ["Z"]] + }; + } else { + return { + path: [ + ["M", x1, y1], + ["L", x2, y2], + ["A", opt.endRho, opt.endRho, 0, +flag, 1, x4, y4], + ["L", x3, y3], + ["A", opt.startRho, opt.startRho, 0, +flag, 0, x1, y1], + ["Z"]] + }; + } + }, + + + calcMiddle: function(item) { + var me = this, + rad = me.rad, + slice = item.slice, + x = me.centerX, + y = me.centerY, + startAngle = slice.startAngle, + endAngle = slice.endAngle, + radius = Math.max(('rho' in slice) ? slice.rho: me.radius, me.label.minMargin), + donut = +me.donut, + a1 = Math.min(startAngle, endAngle) * rad, + a2 = Math.max(startAngle, endAngle) * rad, + midAngle = -(a1 + (a2 - a1) / 2), + xm = x + (item.endRho + item.startRho) / 2 * Math.cos(midAngle), + ym = y - (item.endRho + item.startRho) / 2 * Math.sin(midAngle); + + item.middle = { + x: xm, + y: ym + }; + }, + + + drawSeries: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + group = me.group, + animate = me.chart.animate, + axis = me.chart.axes.get(0), + minimum = axis && axis.minimum || me.minimum || 0, + maximum = axis && axis.maximum || me.maximum || 0, + field = me.angleField || me.field || me.xField, + surface = chart.surface, + chartBBox = chart.chartBBox, + rad = me.rad, + donut = +me.donut, + values = {}, + items = [], + seriesStyle = me.seriesStyle, + seriesLabelStyle = me.seriesLabelStyle, + colorArrayStyle = me.colorArrayStyle, + colorArrayLength = colorArrayStyle && colorArrayStyle.length || 0, + cos = Math.cos, + sin = Math.sin, + rendererAttributes, centerX, centerY, slice, slices, sprite, value, + item, ln, record, i, j, startAngle, endAngle, middleAngle, sliceLength, path, + p, spriteOptions, bbox, splitAngle, sliceA, sliceB; + + Ext.apply(seriesStyle, me.style || {}); + + me.setBBox(); + bbox = me.bbox; + + + if (me.colorSet) { + colorArrayStyle = me.colorSet; + colorArrayLength = colorArrayStyle.length; + } + + + if (!store || !store.getCount() || me.seriesIsHidden) { + me.hide(); + me.items = []; + return; + } + + centerX = me.centerX = chartBBox.x + (chartBBox.width / 2); + centerY = me.centerY = chartBBox.y + chartBBox.height; + me.radius = Math.min(centerX - chartBBox.x, centerY - chartBBox.y); + me.slices = slices = []; + me.items = items = []; + + if (!me.value) { + record = store.getAt(0); + me.value = record.get(field); + } + + value = me.value; + if (me.needle) { + sliceA = { + series: me, + value: value, + startAngle: -180, + endAngle: 0, + rho: me.radius + }; + splitAngle = -180 * (1 - (value - minimum) / (maximum - minimum)); + slices.push(sliceA); + } else { + splitAngle = -180 * (1 - (value - minimum) / (maximum - minimum)); + sliceA = { + series: me, + value: value, + startAngle: -180, + endAngle: splitAngle, + rho: me.radius + }; + sliceB = { + series: me, + value: me.maximum - value, + startAngle: splitAngle, + endAngle: 0, + rho: me.radius + }; + slices.push(sliceA, sliceB); + } + + + for (i = 0, ln = slices.length; i < ln; i++) { + slice = slices[i]; + sprite = group.getAt(i); + + rendererAttributes = Ext.apply({ + segment: { + startAngle: slice.startAngle, + endAngle: slice.endAngle, + margin: 0, + rho: slice.rho, + startRho: slice.rho * +donut / 100, + endRho: slice.rho + } + }, Ext.apply(seriesStyle, colorArrayStyle && { fill: colorArrayStyle[i % colorArrayLength] } || {})); + + item = Ext.apply({}, + rendererAttributes.segment, { + slice: slice, + series: me, + storeItem: record, + index: i + }); + items[i] = item; + + if (!sprite) { + spriteOptions = Ext.apply({ + type: "path", + group: group + }, Ext.apply(seriesStyle, colorArrayStyle && { fill: colorArrayStyle[i % colorArrayLength] } || {})); + sprite = surface.add(Ext.apply(spriteOptions, rendererAttributes)); + } + slice.sprite = slice.sprite || []; + item.sprite = sprite; + slice.sprite.push(sprite); + if (animate) { + rendererAttributes = me.renderer(sprite, record, rendererAttributes, i, store); + sprite._to = rendererAttributes; + me.onAnimate(sprite, { + to: rendererAttributes + }); + } else { + rendererAttributes = me.renderer(sprite, record, Ext.apply(rendererAttributes, { + hidden: false + }), i, store); + sprite.setAttributes(rendererAttributes, true); + } + } + + if (me.needle) { + splitAngle = splitAngle * Math.PI / 180; + + if (!me.needleSprite) { + me.needleSprite = me.chart.surface.add({ + type: 'path', + path: ['M', centerX + (me.radius * +donut / 100) * cos(splitAngle), + centerY + -Math.abs((me.radius * +donut / 100) * sin(splitAngle)), + 'L', centerX + me.radius * cos(splitAngle), + centerY + -Math.abs(me.radius * sin(splitAngle))], + 'stroke-width': 4, + 'stroke': '#222' + }); + } else { + if (animate) { + me.onAnimate(me.needleSprite, { + to: { + path: ['M', centerX + (me.radius * +donut / 100) * cos(splitAngle), + centerY + -Math.abs((me.radius * +donut / 100) * sin(splitAngle)), + 'L', centerX + me.radius * cos(splitAngle), + centerY + -Math.abs(me.radius * sin(splitAngle))] + } + }); + } else { + me.needleSprite.setAttributes({ + type: 'path', + path: ['M', centerX + (me.radius * +donut / 100) * cos(splitAngle), + centerY + -Math.abs((me.radius * +donut / 100) * sin(splitAngle)), + 'L', centerX + me.radius * cos(splitAngle), + centerY + -Math.abs(me.radius * sin(splitAngle))] + }); + } + } + me.needleSprite.setAttributes({ + hidden: false + }, true); + } + + delete me.value; + }, + + + setValue: function (value) { + this.value = value; + this.drawSeries(); + }, + + + onCreateLabel: function(storeItem, item, i, display) {}, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) {}, + + + onPlaceCallout: function() {}, + + + onAnimate: function(sprite, attr) { + sprite.show(); + return this.callParent(arguments); + }, + + isItemInPoint: function(x, y, item, i) { + var me = this, + cx = me.centerX, + cy = me.centerY, + abs = Math.abs, + dx = abs(x - cx), + dy = abs(y - cy), + startAngle = item.startAngle, + endAngle = item.endAngle, + rho = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(y - cy, x - cx) / me.rad; + + + return (i === 0) && (angle >= startAngle && angle < endAngle && + rho >= item.startRho && rho <= item.endRho); + }, + + + getLegendColor: function(index) { + var colors = this.colorSet || this.colorArrayStyle; + return colors[index % colors.length]; + } +}); + + + +Ext.define('Ext.chart.series.Line', { + + + + extend: Ext.chart.series.Cartesian , + + alternateClassName: ['Ext.chart.LineSeries', 'Ext.chart.LineChart'], + + + + + + type: 'line', + + alias: 'series.line', + + + selectionTolerance: 20, + + + showMarkers: true, + + + markerConfig: {}, + + + style: {}, + + + smooth: false, + + + defaultSmoothness: 3, + + + fill: false, + + constructor: function(config) { + this.callParent(arguments); + var me = this, + surface = me.chart.surface, + shadow = me.chart.shadow, + i, l; + config.highlightCfg = Ext.Object.merge({ 'stroke-width': 3 }, config.highlightCfg); + Ext.apply(me, config, { + shadowAttributes: [{ + "stroke-width": 6, + "stroke-opacity": 0.05, + stroke: 'rgb(0, 0, 0)', + translate: { + x: 1, + y: 1 + } + }, { + "stroke-width": 4, + "stroke-opacity": 0.1, + stroke: 'rgb(0, 0, 0)', + translate: { + x: 1, + y: 1 + } + }, { + "stroke-width": 2, + "stroke-opacity": 0.15, + stroke: 'rgb(0, 0, 0)', + translate: { + x: 1, + y: 1 + } + }] + }); + me.group = surface.getGroup(me.seriesId); + if (me.showMarkers) { + me.markerGroup = surface.getGroup(me.seriesId + '-markers'); + } + if (shadow) { + for (i = 0, l = me.shadowAttributes.length; i < l; i++) { + me.shadowGroups.push(surface.getGroup(me.seriesId + '-shadows' + i)); + } + } + }, + + + shrink: function(xValues, yValues, size) { + + var len = xValues.length, + ratio = Math.floor(len / size), + i = 1, + xSum = 0, + ySum = 0, + xRes = [+xValues[0]], + yRes = [+yValues[0]]; + + for (; i < len; ++i) { + xSum += +xValues[i] || 0; + ySum += +yValues[i] || 0; + if (i % ratio == 0) { + xRes.push(xSum/ratio); + yRes.push(ySum/ratio); + xSum = 0; + ySum = 0; + } + } + return { + x: xRes, + y: yRes + }; + }, + + + drawSeries: function() { + var me = this, + chart = me.chart, + chartAxes = chart.axes, + store = chart.getChartStore(), + data = store.data.items, + record, + storeCount = store.getCount(), + surface = me.chart.surface, + bbox = {}, + group = me.group, + showMarkers = me.showMarkers, + markerGroup = me.markerGroup, + enableShadows = chart.shadow, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + smooth = me.smooth, + lnsh = shadowGroups.length, + dummyPath = ["M"], + path = ["M"], + renderPath = ["M"], + smoothPath = ["M"], + markerIndex = chart.markerIndex, + axes = [].concat(me.axis), + shadowBarAttr, + xValues = [], + xValueMap = {}, + yValues = [], + yValueMap = {}, + onbreak = false, + storeIndices = [], + markerStyle = Ext.apply({}, me.markerStyle), + seriesStyle = me.seriesStyle, + colorArrayStyle = me.colorArrayStyle, + colorArrayLength = colorArrayStyle && colorArrayStyle.length || 0, + isNumber = Ext.isNumber, + seriesIdx = me.seriesIdx, + boundAxes = me.getAxesForXAndYFields(), + boundXAxis = boundAxes.xAxis, + boundYAxis = boundAxes.yAxis, + xAxisType = boundXAxis ? chartAxes.get(boundXAxis).type : '', + yAxisType = boundYAxis ? chartAxes.get(boundYAxis).type : '', + shadows, shadow, shindex, fromPath, fill, fillPath, rendererAttributes, + x, y, prevX, prevY, firstX, firstY, markerCount, i, j, ln, axis, ends, marker, markerAux, item, xValue, + yValue, coords, xScale, yScale, minX, maxX, minY, maxY, line, animation, endMarkerStyle, + endLineStyle, type, count, opacity, lineOpacity, fillOpacity, fillDefaultValue; + + if (me.fireEvent('beforedraw', me) === false) { + return; + } + + + if (!storeCount || me.seriesIsHidden) { + me.hide(); + me.items = []; + if (me.line) { + me.line.hide(true); + if (me.line.shadows) { + shadows = me.line.shadows; + for (j = 0, lnsh = shadows.length; j < lnsh; j++) { + shadow = shadows[j]; + shadow.hide(true); + } + } + if (me.fillPath) { + me.fillPath.hide(true); + } + } + me.line = null; + me.fillPath = null; + return; + } + + + endMarkerStyle = Ext.apply(markerStyle || {}, me.markerConfig, { + fill: me.seriesStyle.fill || colorArrayStyle[me.themeIdx % colorArrayStyle.length] + }); + type = endMarkerStyle.type; + delete endMarkerStyle.type; + endLineStyle = seriesStyle; + + + if (!endLineStyle['stroke-width']) { + endLineStyle['stroke-width'] = 0.5; + } + + + opacity = 'opacity' in endLineStyle ? endLineStyle.opacity : 1; + fillDefaultValue = 'opacity' in endLineStyle ? endLineStyle.opacity : 0.3; + lineOpacity = 'lineOpacity' in endLineStyle ? endLineStyle.lineOpacity : opacity; + fillOpacity = 'fillOpacity' in endLineStyle ? endLineStyle.fillOpacity : fillDefaultValue; + + + + if (markerIndex && markerGroup && markerGroup.getCount()) { + for (i = 0; i < markerIndex; i++) { + marker = markerGroup.getAt(i); + markerGroup.remove(marker); + markerGroup.add(marker); + markerAux = markerGroup.getAt(markerGroup.getCount() - 2); + marker.setAttributes({ + x: 0, + y: 0, + translate: { + x: markerAux.attr.translation.x, + y: markerAux.attr.translation.y + } + }, true); + } + } + + me.unHighlightItem(); + me.cleanHighlights(); + + me.setBBox(); + bbox = me.bbox; + me.clipRect = [bbox.x, bbox.y, bbox.width, bbox.height]; + + if (axis = chartAxes.get(boundXAxis)) { + ends = axis.applyData(); + minX = ends.from; + maxX = ends.to; + } + + if (axis = chartAxes.get(boundYAxis)) { + ends = axis.applyData(); + minY = ends.from; + maxY = ends.to; + } + + + if (me.xField && !Ext.isNumber(minX)) { + axis = me.getMinMaxXValues(); + minX = axis[0]; + maxX = axis[1]; + } + + if (me.yField && !Ext.isNumber(minY)) { + axis = me.getMinMaxYValues(); + minY = axis[0]; + maxY = axis[1]; + } + + if (isNaN(minX)) { + minX = 0; + xScale = bbox.width / ((storeCount - 1) || 1); + } + else { + xScale = bbox.width / ((maxX - minX) || (storeCount -1) || 1); + } + + if (isNaN(minY)) { + minY = 0; + yScale = bbox.height / ((storeCount - 1) || 1); + } + else { + yScale = bbox.height / ((maxY - minY) || (storeCount - 1) || 1); + } + + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + xValue = record.get(me.xField); + if (xAxisType == 'Time' && typeof xValue == "string") { + xValue = Date.parse(xValue); + } + + if (typeof xValue == 'string' || typeof xValue == 'object' && !Ext.isDate(xValue) + + || boundXAxis && chartAxes.get(boundXAxis) && chartAxes.get(boundXAxis).type == 'Category') { + if (xValue in xValueMap) { + xValue = xValueMap[xValue]; + } else { + xValue = xValueMap[xValue] = i; + } + } + + + yValue = record.get(me.yField); + if (yAxisType == 'Time' && typeof yValue == "string") { + yValue = Date.parse(yValue); + } + + if (typeof yValue == 'undefined' || (typeof yValue == 'string' && !yValue)) { + continue; + } + + if (typeof yValue == 'string' || typeof yValue == 'object' && !Ext.isDate(yValue) + + || boundYAxis && chartAxes.get(boundYAxis) && chartAxes.get(boundYAxis).type == 'Category') { + yValue = i; + } + storeIndices.push(i); + xValues.push(xValue); + yValues.push(yValue); + } + + ln = xValues.length; + if (ln > bbox.width) { + coords = me.shrink(xValues, yValues, bbox.width); + xValues = coords.x; + yValues = coords.y; + } + + me.items = []; + + count = 0; + ln = xValues.length; + for (i = 0; i < ln; i++) { + xValue = xValues[i]; + yValue = yValues[i]; + if (yValue === false) { + if (path.length == 1) { + path = []; + } + onbreak = true; + me.items.push(false); + continue; + } else { + x = (bbox.x + (xValue - minX) * xScale).toFixed(2); + y = ((bbox.y + bbox.height) - (yValue - minY) * yScale).toFixed(2); + if (onbreak) { + onbreak = false; + path.push('M'); + } + path = path.concat([x, y]); + } + if ((typeof firstY == 'undefined') && (typeof y != 'undefined')) { + firstY = y; + firstX = x; + } + + if (!me.line || chart.resizing) { + dummyPath = dummyPath.concat([x, bbox.y + bbox.height / 2]); + } + + + if (chart.animate && chart.resizing && me.line) { + me.line.setAttributes({ + path: dummyPath, + opacity: lineOpacity + }, true); + if (me.fillPath) { + me.fillPath.setAttributes({ + path: dummyPath, + opacity: fillOpacity + }, true); + } + if (me.line.shadows) { + shadows = me.line.shadows; + for (j = 0, lnsh = shadows.length; j < lnsh; j++) { + shadow = shadows[j]; + shadow.setAttributes({ + path: dummyPath + }, true); + } + } + } + if (showMarkers) { + marker = markerGroup.getAt(count++); + if (!marker) { + marker = Ext.chart.Shape[type](surface, Ext.apply({ + group: [group, markerGroup], + x: 0, y: 0, + translate: { + x: +(prevX || x), + y: prevY || (bbox.y + bbox.height / 2) + }, + value: '"' + xValue + ', ' + yValue + '"', + zIndex: 4000 + }, endMarkerStyle)); + marker._to = { + translate: { + x: +x, + y: +y + } + }; + } else { + marker.setAttributes({ + value: '"' + xValue + ', ' + yValue + '"', + x: 0, y: 0, + hidden: false + }, true); + marker._to = { + translate: { + x: +x, + y: +y + } + }; + } + } + me.items.push({ + series: me, + value: [xValue, yValue], + point: [x, y], + sprite: marker, + storeItem: store.getAt(storeIndices[i]) + }); + prevX = x; + prevY = y; + } + + if (path.length <= 1) { + + return; + } + + if (me.smooth) { + smoothPath = Ext.draw.Draw.smooth(path, isNumber(smooth) ? smooth : me.defaultSmoothness); + } + + renderPath = smooth ? smoothPath : path; + + + if (chart.markerIndex && me.previousPath) { + fromPath = me.previousPath; + if (!smooth) { + Ext.Array.erase(fromPath, 1, 2); + } + } else { + fromPath = path; + } + + + if (!me.line) { + me.line = surface.add(Ext.apply({ + type: 'path', + group: group, + path: dummyPath, + stroke: endLineStyle.stroke || endLineStyle.fill + }, endLineStyle || {})); + me + + + me.line.setAttributes({ + opacity: lineOpacity + }, true); + + if (enableShadows) { + me.line.setAttributes(Ext.apply({}, me.shadowOptions), true); + } + + + me.line.setAttributes({ + fill: 'none', + zIndex: 3000 + }); + if (!endLineStyle.stroke && colorArrayLength) { + me.line.setAttributes({ + stroke: colorArrayStyle[me.themeIdx % colorArrayLength] + }, true); + } + if (enableShadows) { + + shadows = me.line.shadows = []; + for (shindex = 0; shindex < lnsh; shindex++) { + shadowBarAttr = shadowAttributes[shindex]; + shadowBarAttr = Ext.apply({}, shadowBarAttr, { path: dummyPath }); + shadow = surface.add(Ext.apply({}, { + type: 'path', + group: shadowGroups[shindex] + }, shadowBarAttr)); + shadows.push(shadow); + } + } + } + if (me.fill) { + fillPath = renderPath.concat([ + ["L", x, bbox.y + bbox.height], + ["L", firstX, bbox.y + bbox.height], + ["L", firstX, firstY] + ]); + if (!me.fillPath) { + me.fillPath = surface.add({ + group: group, + type: 'path', + fill: endLineStyle.fill || colorArrayStyle[me.themeIdx % colorArrayLength], + path: dummyPath + }); + } + } + markerCount = showMarkers && markerGroup.getCount(); + if (chart.animate) { + fill = me.fill; + line = me.line; + + rendererAttributes = me.renderer(line, false, { path: renderPath }, i, store); + Ext.apply(rendererAttributes, endLineStyle || {}, { + stroke: endLineStyle.stroke || endLineStyle.fill + }); + + delete rendererAttributes.fill; + line.show(true); + if (chart.markerIndex && me.previousPath) { + me.animation = animation = me.onAnimate(line, { + to: rendererAttributes, + from: { + path: fromPath + } + }); + } else { + me.animation = animation = me.onAnimate(line, { + to: rendererAttributes + }); + } + + if (enableShadows) { + shadows = line.shadows; + for(j = 0; j < lnsh; j++) { + shadows[j].show(true); + if (chart.markerIndex && me.previousPath) { + me.onAnimate(shadows[j], { + to: { path: renderPath }, + from: { path: fromPath } + }); + } else { + me.onAnimate(shadows[j], { + to: { path: renderPath } + }); + } + } + } + + if (fill) { + me.fillPath.show(true); + me.onAnimate(me.fillPath, { + to: Ext.apply({}, { + path: fillPath, + fill: endLineStyle.fill || colorArrayStyle[me.themeIdx % colorArrayLength], + 'stroke-width': 0, + opacity: fillOpacity + }, endLineStyle || {}) + }); + } + + if (showMarkers) { + count = 0; + for(i = 0; i < ln; i++) { + if (me.items[i]) { + item = markerGroup.getAt(count++); + if (item) { + rendererAttributes = me.renderer(item, store.getAt(i), item._to, i, store); + me.onAnimate(item, { + to: Ext.applyIf(rendererAttributes, endMarkerStyle || {}) + }); + item.show(true); + } + } + } + for(; count < markerCount; count++) { + item = markerGroup.getAt(count); + item.hide(true); + } + + + + + } + } else { + rendererAttributes = me.renderer(me.line, false, { path: renderPath, hidden: false }, i, store); + Ext.apply(rendererAttributes, endLineStyle || {}, { + stroke: endLineStyle.stroke || endLineStyle.fill + }); + + delete rendererAttributes.fill; + me.line.setAttributes(rendererAttributes, true); + me.line.setAttributes({ + opacity: lineOpacity + }, true); + + if (enableShadows) { + shadows = me.line.shadows; + for(j = 0; j < lnsh; j++) { + shadows[j].setAttributes({ + path: renderPath, + hidden: false + }, true); + } + } + if (me.fill) { + me.fillPath.setAttributes({ + path: fillPath, + hidden: false, + opacity: fillOpacity + }, true); + } + if (showMarkers) { + count = 0; + for(i = 0; i < ln; i++) { + if (me.items[i]) { + item = markerGroup.getAt(count++); + if (item) { + rendererAttributes = me.renderer(item, store.getAt(i), item._to, i, store); + item.setAttributes(Ext.apply(endMarkerStyle || {}, rendererAttributes || {}), true); + if (!item.attr.hidden) { + item.show(true); + } + } + } + } + for(; count < markerCount; count++) { + item = markerGroup.getAt(count); + item.hide(true); + } + } + } + + if (chart.markerIndex) { + if (me.smooth) { + Ext.Array.erase(path, 1, 2); + } else { + Ext.Array.splice(path, 1, 0, path[1], path[2]); + } + me.previousPath = path; + } + me.renderLabels(); + me.renderCallouts(); + + me.fireEvent('draw', me); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + var me = this, + group = me.labelsGroup, + config = me.label, + bbox = me.bbox, + endLabelStyle = Ext.apply({}, config, me.seriesLabelStyle || {}); + + return me.chart.surface.add(Ext.apply({ + 'type': 'text', + 'text-anchor': 'middle', + 'group': group, + 'x': Number(item.point[0]), + 'y': bbox.y + bbox.height / 2 + }, endLabelStyle || {})); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + resizing = chart.resizing, + config = me.label, + format = config.renderer, + field = config.field, + bbox = me.bbox, + x = Number(item.point[0]), + y = Number(item.point[1]), + radius = item.sprite.attr.radius, + labelBox, markerBox, width, height, xOffset, yOffset; + + label.setAttributes({ + text: format(storeItem.get(field), label, storeItem, item, i, display, animate, index), + hidden: true + }, true); + + + markerBox = item.sprite.getBBox(); + markerBox.width = markerBox.width || (radius * 2); + markerBox.height = markerBox.height || (radius * 2); + + labelBox = label.getBBox(); + width = labelBox.width/2; + height = labelBox.height/2; + + if (display == 'rotate') { + + xOffset = markerBox.width/2 + width + height/2; + if (x + xOffset + width > bbox.x + bbox.width) { + x -= xOffset; + } else { + x += xOffset; + } + label.setAttributes({ + 'rotation': { + x: x, + y: y, + degrees: -45 + } + }, true); + } else if (display == 'under' || display == 'over') { + label.setAttributes({ + 'rotation': { + degrees: 0 + } + }, true); + + + if (x < bbox.x + width) { + x = bbox.x + width; + } else if (x + width > bbox.x + bbox.width) { + x = bbox.x + bbox.width - width; + } + + yOffset = markerBox.height/2 + height; + y = y + (display == 'over' ? -yOffset : yOffset); + if (y < bbox.y + height) { + y += 2 * yOffset; + } else if (y + height > bbox.y + bbox.height) { + y -= 2 * yOffset; + } + } + + if (me.chart.animate && !me.chart.resizing) { + label.show(true); + me.onAnimate(label, { + to: { + x: x, + y: y + } + }); + } else { + label.setAttributes({ + x: x, + y: y + }, true); + if (resizing && me.animation) { + me.animation.on('afteranimate', function() { + label.show(true); + }); + } else { + label.show(true); + } + } + }, + + + highlightItem: function() { + var me = this, + line = me.line; + + me.callParent(arguments); + if (line && !me.highlighted) { + if (!('__strokeWidth' in line)) { + line.__strokeWidth = parseFloat(line.attr['stroke-width']) || 0; + } + if (line.__anim) { + line.__anim.paused = true; + } + + line.__anim = new Ext.fx.Anim({ + target: line, + to: { + 'stroke-width': line.__strokeWidth + 3 + } + }); + me.highlighted = true; + } + }, + + + unHighlightItem: function() { + var me = this, + line = me.line, + width; + + me.callParent(arguments); + if (line && me.highlighted) { + width = line.__strokeWidth || parseFloat(line.attr['stroke-width']) || 0; + line.__anim = new Ext.fx.Anim({ + target: line, + to: { + 'stroke-width': width + } + }); + me.highlighted = false; + } + }, + + + onPlaceCallout : function(callout, storeItem, item, i, display, animate, index) { + if (!display) { + return; + } + + var me = this, + chart = me.chart, + surface = chart.surface, + resizing = chart.resizing, + config = me.callouts, + items = me.items, + prev = i == 0? false : items[i -1].point, + next = (i == items.length -1)? false : items[i +1].point, + cur = [+item.point[0], +item.point[1]], + dir, norm, normal, a, aprev, anext, + offsetFromViz = config.offsetFromViz || 30, + offsetToSide = config.offsetToSide || 10, + offsetBox = config.offsetBox || 3, + boxx, boxy, boxw, boxh, + p, clipRect = me.clipRect, + bbox = { + width: config.styles.width || 10, + height: config.styles.height || 10 + }, + x, y; + + + if (!prev) { + prev = cur; + } + if (!next) { + next = cur; + } + a = (next[1] - prev[1]) / (next[0] - prev[0]); + aprev = (cur[1] - prev[1]) / (cur[0] - prev[0]); + anext = (next[1] - cur[1]) / (next[0] - cur[0]); + + norm = Math.sqrt(1 + a * a); + dir = [1 / norm, a / norm]; + normal = [-dir[1], dir[0]]; + + + if (aprev > 0 && anext < 0 && normal[1] < 0 + || aprev < 0 && anext > 0 && normal[1] > 0) { + normal[0] *= -1; + normal[1] *= -1; + } else if (Math.abs(aprev) < Math.abs(anext) && normal[0] < 0 + || Math.abs(aprev) > Math.abs(anext) && normal[0] > 0) { + normal[0] *= -1; + normal[1] *= -1; + } + + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + + + if (boxx < clipRect[0] || (boxx + boxw) > (clipRect[0] + clipRect[2])) { + normal[0] *= -1; + } + if (boxy < clipRect[1] || (boxy + boxh) > (clipRect[1] + clipRect[3])) { + normal[1] *= -1; + } + + + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + if (chart.animate) { + + me.onAnimate(callout.lines, { + to: { + path: ["M", cur[0], cur[1], "L", x, y, "Z"] + } + }); + + if (callout.panel) { + callout.panel.setPosition(boxx, boxy, true); + } + } + else { + + callout.lines.setAttributes({ + path: ["M", cur[0], cur[1], "L", x, y, "Z"] + }, true); + + if (callout.panel) { + callout.panel.setPosition(boxx, boxy); + } + } + for (p in callout) { + callout[p].show(true); + } + }, + + isItemInPoint: function(x, y, item, i) { + var me = this, + items = me.items, + tolerance = me.selectionTolerance, + result = null, + prevItem, + nextItem, + prevPoint, + nextPoint, + ln, + x1, + y1, + x2, + y2, + xIntersect, + yIntersect, + dist1, dist2, dist, midx, midy, + sqrt = Math.sqrt, abs = Math.abs; + + nextItem = items[i]; + prevItem = i && items[i - 1]; + + if (i >= ln) { + prevItem = items[ln - 1]; + } + prevPoint = prevItem && prevItem.point; + nextPoint = nextItem && nextItem.point; + x1 = prevItem ? prevPoint[0] : nextPoint[0] - tolerance; + y1 = prevItem ? prevPoint[1] : nextPoint[1]; + x2 = nextItem ? nextPoint[0] : prevPoint[0] + tolerance; + y2 = nextItem ? nextPoint[1] : prevPoint[1]; + dist1 = sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1)); + dist2 = sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2)); + dist = Math.min(dist1, dist2); + + if (dist <= tolerance) { + return dist == dist1? prevItem : nextItem; + } + return false; + }, + + + toggleAll: function(show) { + var me = this, + i, ln, shadow, shadows; + if (!show) { + Ext.chart.series.Cartesian.prototype.hideAll.call(me); + } + else { + Ext.chart.series.Cartesian.prototype.showAll.call(me); + } + if (me.line) { + me.line.setAttributes({ + hidden: !show + }, true); + + if (me.line.shadows) { + for (i = 0, shadows = me.line.shadows, ln = shadows.length; i < ln; i++) { + shadow = shadows[i]; + shadow.setAttributes({ + hidden: !show + }, true); + } + } + } + if (me.fillPath) { + me.fillPath.setAttributes({ + hidden: !show + }, true); + } + }, + + + hideAll: function() { + this.toggleAll(false); + }, + + + showAll: function() { + this.toggleAll(true); + } +}); + + +Ext.define('Ext.chart.series.Pie', { + + + + alternateClassName: ['Ext.chart.PieSeries', 'Ext.chart.PieChart'], + + extend: Ext.chart.series.Series , + + + + type: "pie", + + alias: 'series.pie', + + accuracy: 100000, + + rad: Math.PI * 2 / 100000, + + + highlightDuration: 150, + + + angleField: false, + + + + + + + lengthField: false, + + + donut: false, + + + showInLegend: false, + + + + + style: {}, + + constructor: function(config) { + this.callParent(arguments); + var me = this, + chart = me.chart, + surface = chart.surface, + store = chart.store, + shadow = chart.shadow, i, l, cfg; + config.highlightCfg = Ext.merge({ + segment: { + margin: 20 + } + }, config.highlightCfg); + Ext.apply(me, config, { + shadowAttributes: [{ + "stroke-width": 6, + "stroke-opacity": 1, + stroke: 'rgb(200, 200, 200)', + translate: { + x: 1.2, + y: 2 + } + }, + { + "stroke-width": 4, + "stroke-opacity": 1, + stroke: 'rgb(150, 150, 150)', + translate: { + x: 0.9, + y: 1.5 + } + }, + { + "stroke-width": 2, + "stroke-opacity": 1, + stroke: 'rgb(100, 100, 100)', + translate: { + x: 0.6, + y: 1 + } + }] + }); + me.group = surface.getGroup(me.seriesId); + if (shadow) { + for (i = 0, l = me.shadowAttributes.length; i < l; i++) { + me.shadowGroups.push(surface.getGroup(me.seriesId + '-shadows' + i)); + } + } + surface.customAttributes.segment = function(opt) { + + + + var ans = me.getSegment(opt); + if (!ans.path || ans.path.length === 0) { + ans.path = ['M', 0, 0]; + } + return ans; + }; + me.__excludes = me.__excludes || []; + }, + + onRedraw: function(){ + this.initialize(); + }, + + + initialize: function() { + var me = this, + store = me.chart.getChartStore(), + data = store.data.items, + i, ln, rec; + + me.yField = []; + if (me.label.field) { + for (i = 0, ln = data.length; i < ln; i++) { + rec = data[i]; + me.yField.push(rec.get(me.label.field)); + } + } + }, + + + getSegment: function(opt) { + var me = this, + rad = me.rad, + cos = Math.cos, + sin = Math.sin, + x = me.centerX, + y = me.centerY, + x1 = 0, x2 = 0, x3 = 0, x4 = 0, + y1 = 0, y2 = 0, y3 = 0, y4 = 0, + x5 = 0, y5 = 0, x6 = 0, y6 = 0, + delta = 1e-2, + startAngle = opt.startAngle, + endAngle = opt.endAngle, + midAngle = (startAngle + endAngle) / 2 * rad, + margin = opt.margin || 0, + a1 = Math.min(startAngle, endAngle) * rad, + a2 = Math.max(startAngle, endAngle) * rad, + c1 = cos(a1), s1 = sin(a1), + c2 = cos(a2), s2 = sin(a2), + cm = cos(midAngle), sm = sin(midAngle), + flag = 0, hsqr2 = 0.7071067811865476; + + if (a2 - a1 < delta) { + return {path: ""}; + } + + if (margin !== 0) { + x += margin * cm; + y += margin * sm; + } + + x2 = x + opt.endRho * c1; + y2 = y + opt.endRho * s1; + + x4 = x + opt.endRho * c2; + y4 = y + opt.endRho * s2; + + x6 = x + opt.endRho * cm; + y6 = y + opt.endRho * sm; + + if (opt.startRho !== 0) { + x1 = x + opt.startRho * c1; + y1 = y + opt.startRho * s1; + + x3 = x + opt.startRho * c2; + y3 = y + opt.startRho * s2; + + x5 = x + opt.startRho * cm; + y5 = y + opt.startRho * sm; + + return { + path: [ + ["M", x2, y2], + ["A", opt.endRho, opt.endRho, 0, 0, 1, x6, y6], ["L", x6, y6], + ["A", opt.endRho, opt.endRho, 0, flag, 1, x4, y4], ["L", x4, y4], + ["L", x3, y3], + ["A", opt.startRho, opt.startRho, 0, flag, 0, x5, y5], ["L", x5, y5], + ["A", opt.startRho, opt.startRho, 0, 0, 0, x1, y1], ["L", x1, y1], + ["Z"] + ] + }; + } else { + return { + path: [ + ["M", x, y], + ["L", x2, y2], + ["A", opt.endRho, opt.endRho, 0, 0, 1, x6, y6], ["L", x6, y6], + ["A", opt.endRho, opt.endRho, 0, flag, 1, x4, y4], ["L", x4, y4], + ["L", x, y], + ["Z"] + ] + }; + } + }, + + + calcMiddle: function(item) { + var me = this, + rad = me.rad, + slice = item.slice, + x = me.centerX, + y = me.centerY, + startAngle = slice.startAngle, + endAngle = slice.endAngle, + donut = +me.donut, + midAngle = -(startAngle + endAngle) * rad / 2, + r = (item.endRho + item.startRho) / 2, + xm = x + r * Math.cos(midAngle), + ym = y - r * Math.sin(midAngle); + + item.middle = { + x: xm, + y: ym + }; + }, + + + drawSeries: function() { + var me = this, + store = me.chart.getChartStore(), + data = store.data.items, + record, + group = me.group, + animate = me.chart.animate, + field = me.angleField || me.field || me.xField, + lenField = [].concat(me.lengthField), + totalLenField = 0, + chart = me.chart, + surface = chart.surface, + chartBBox = chart.chartBBox, + enableShadows = chart.shadow, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + lnsh = shadowGroups.length, + layers = lenField.length, + rhoAcum = 0, + donut = +me.donut, + layerTotals = [], + items = [], + totalField = 0, + maxLenField = 0, + angle = 0, + seriesStyle = me.seriesStyle, + colorArrayStyle = me.colorArrayStyle, + colorArrayLength = colorArrayStyle && colorArrayStyle.length || 0, + rendererAttributes, + shadowAttr, + shadows, + shadow, + shindex, + centerX, + centerY, + deltaRho, + first = 0, + slice, + slices, + sprite, + value, + item, + lenValue, + ln, + i, + j, + endAngle, + path, + p, + spriteOptions, bbox; + + Ext.apply(seriesStyle, me.style || {}); + + me.setBBox(); + bbox = me.bbox; + + + if (me.colorSet) { + colorArrayStyle = me.colorSet; + colorArrayLength = colorArrayStyle.length; + } + + + if (!store || !store.getCount() || me.seriesIsHidden) { + me.hide(); + me.items = []; + return; + } + + me.unHighlightItem(); + me.cleanHighlights(); + + centerX = me.centerX = chartBBox.x + (chartBBox.width / 2); + centerY = me.centerY = chartBBox.y + (chartBBox.height / 2); + me.radius = Math.min(centerX - chartBBox.x, centerY - chartBBox.y); + me.slices = slices = []; + me.items = items = []; + + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + if (this.__excludes && this.__excludes[i]) { + + continue; + } + totalField += +record.get(field); + if (lenField[0]) { + for (j = 0, totalLenField = 0; j < layers; j++) { + totalLenField += +record.get(lenField[j]); + } + layerTotals[i] = totalLenField; + maxLenField = Math.max(maxLenField, totalLenField); + } + } + + totalField = totalField || 1; + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + if (this.__excludes && this.__excludes[i]) { + value = 0; + } else { + value = record.get(field); + if (first == 0) { + first = 1; + } + } + + + if (first == 1) { + first = 2; + me.firstAngle = angle = me.accuracy * value / totalField / 2; + for (j = 0; j < i; j++) { + slices[j].startAngle = slices[j].endAngle = me.firstAngle; + } + } + + endAngle = angle - me.accuracy * value / totalField; + slice = { + series: me, + value: value, + startAngle: angle, + endAngle: endAngle, + storeItem: record + }; + if (lenField[0]) { + lenValue = +layerTotals[i]; + + slice.rho = Math.floor(me.radius / maxLenField * lenValue); + } else { + slice.rho = me.radius; + } + slices[i] = slice; + + (function () { + angle = endAngle; + })(); + } + + + if (enableShadows) { + for (i = 0, ln = slices.length; i < ln; i++) { + slice = slices[i]; + slice.shadowAttrs = []; + for (j = 0, rhoAcum = 0, shadows = []; j < layers; j++) { + sprite = group.getAt(i * layers + j); + deltaRho = lenField[j] ? store.getAt(i).get(lenField[j]) / layerTotals[i] * slice.rho: slice.rho; + + rendererAttributes = { + segment: { + startAngle: slice.startAngle, + endAngle: slice.endAngle, + margin: 0, + rho: slice.rho, + startRho: rhoAcum + (deltaRho * donut / 100), + endRho: rhoAcum + deltaRho + }, + hidden: !slice.value && (slice.startAngle % me.accuracy) == (slice.endAngle % me.accuracy) + }; + + for (shindex = 0, shadows = []; shindex < lnsh; shindex++) { + shadowAttr = shadowAttributes[shindex]; + shadow = shadowGroups[shindex].getAt(i); + if (!shadow) { + shadow = chart.surface.add(Ext.apply({}, { + type: 'path', + group: shadowGroups[shindex], + strokeLinejoin: "round" + }, rendererAttributes, shadowAttr)); + } + shadowAttr = me.renderer(shadow, store.getAt(i), Ext.apply({}, rendererAttributes, shadowAttr), i, store); + if (animate) { + me.onAnimate(shadow, { + to: shadowAttr + }); + } else { + shadow.setAttributes(shadowAttr, true); + } + shadows.push(shadow); + } + slice.shadowAttrs[j] = shadows; + } + } + } + + for (i = 0, ln = slices.length; i < ln; i++) { + slice = slices[i]; + for (j = 0, rhoAcum = 0; j < layers; j++) { + sprite = group.getAt(i * layers + j); + deltaRho = lenField[j] ? store.getAt(i).get(lenField[j]) / layerTotals[i] * slice.rho: slice.rho; + + rendererAttributes = Ext.apply({ + segment: { + startAngle: slice.startAngle, + endAngle: slice.endAngle, + margin: 0, + rho: slice.rho, + startRho: rhoAcum + (deltaRho * donut / 100), + endRho: rhoAcum + deltaRho + }, + hidden: (!slice.value && (slice.startAngle % me.accuracy) == (slice.endAngle % me.accuracy)) + }, Ext.apply(seriesStyle, colorArrayStyle && { fill: colorArrayStyle[(layers > 1? j : i) % colorArrayLength] } || {})); + item = Ext.apply({}, + rendererAttributes.segment, { + slice: slice, + series: me, + storeItem: slice.storeItem, + index: i + }); + me.calcMiddle(item); + if (enableShadows) { + item.shadows = slice.shadowAttrs[j]; + } + items[i] = item; + + if (!sprite) { + spriteOptions = Ext.apply({ + type: "path", + group: group, + middle: item.middle + }, Ext.apply(seriesStyle, colorArrayStyle && { fill: colorArrayStyle[(layers > 1? j : i) % colorArrayLength] } || {})); + sprite = surface.add(Ext.apply(spriteOptions, rendererAttributes)); + } + slice.sprite = slice.sprite || []; + item.sprite = sprite; + slice.sprite.push(sprite); + slice.point = [item.middle.x, item.middle.y]; + if (animate) { + rendererAttributes = me.renderer(sprite, store.getAt(i), rendererAttributes, i, store); + sprite._to = rendererAttributes; + sprite._animating = true; + me.onAnimate(sprite, { + to: rendererAttributes, + listeners: { + afteranimate: { + fn: function() { + this._animating = false; + }, + scope: sprite + } + } + }); + } else { + rendererAttributes = me.renderer(sprite, store.getAt(i), Ext.apply(rendererAttributes, { + hidden: false + }), i, store); + sprite.setAttributes(rendererAttributes, true); + } + rhoAcum += deltaRho; + } + } + + + ln = group.getCount(); + for (i = 0; i < ln; i++) { + if (!slices[(i / layers) >> 0] && group.getAt(i)) { + group.getAt(i).hide(true); + } + } + if (enableShadows) { + lnsh = shadowGroups.length; + for (shindex = 0; shindex < ln; shindex++) { + if (!slices[(shindex / layers) >> 0]) { + for (j = 0; j < lnsh; j++) { + if (shadowGroups[j].getAt(shindex)) { + shadowGroups[j].getAt(shindex).hide(true); + } + } + } + } + } + me.renderLabels(); + me.renderCallouts(); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + var me = this, + group = me.labelsGroup, + config = me.label, + centerX = me.centerX, + centerY = me.centerY, + middle = item.middle, + endLabelStyle = Ext.apply(me.seriesLabelStyle || {}, config || {}); + + return me.chart.surface.add(Ext.apply({ + 'type': 'text', + 'text-anchor': 'middle', + 'group': group, + 'x': middle.x, + 'y': middle.y + }, endLabelStyle)); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + resizing = chart.resizing, + config = me.label, + format = config.renderer, + field = config.field, + centerX = me.centerX, + centerY = me.centerY, + middle = item.middle, + opt = { + x: middle.x, + y: middle.y + }, + x = middle.x - centerX, + y = middle.y - centerY, + from = {}, + rho = 1, + theta = Math.atan2(y, x || 1), + dg = theta * 180 / Math.PI, + prevDg, labelBox, width, height; + + opt.hidden = false; + + if (this.__excludes && this.__excludes[i]) { + opt.hidden = true; + } + + function fixAngle(a) { + if (a < 0) { + a += 360; + } + return a % 360; + } + + label.setAttributes({ + text: format(storeItem.get(field), label, storeItem, item, i, display, animate, index) + }, true); + + switch (display) { + case 'outside': + + rho = Math.sqrt(x * x + y * y) * 2; + + + label.setAttributes({rotation:{degrees: 0}}, true); + labelBox = label.getBBox(); + width = labelBox.width/2 * Math.cos(theta) + 4; + height = labelBox.height/2 * Math.sin(theta) + 4; + + rho += Math.sqrt(width*width + height*height); + + + opt.x = rho * Math.cos(theta) + centerX; + opt.y = rho * Math.sin(theta) + centerY; + break; + + case 'rotate': + dg = fixAngle(dg); + dg = (dg > 90 && dg < 270) ? dg + 180: dg; + + prevDg = label.attr.rotation.degrees; + if (prevDg != null && Math.abs(prevDg - dg) > 180 * 0.5) { + if (dg > prevDg) { + dg -= 360; + } else { + dg += 360; + } + dg = dg % 360; + } else { + dg = fixAngle(dg); + } + + opt.rotate = { + degrees: dg, + x: opt.x, + y: opt.y + }; + break; + + default: + break; + } + + opt.translate = { + x: 0, y: 0 + }; + if (animate && !resizing && (display != 'rotate' || prevDg != null)) { + me.onAnimate(label, { + to: opt + }); + } else { + label.setAttributes(opt, true); + } + label._from = from; + }, + + + onPlaceCallout: function(callout, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + centerX = me.centerX, + centerY = me.centerY, + middle = item.middle, + opt = { + x: middle.x, + y: middle.y + }, + x = middle.x - centerX, + y = middle.y - centerY, + rho = 1, + rhoCenter, + theta = Math.atan2(y, x || 1), + bbox = (callout && callout.label ? callout.label.getBBox() : {width:0,height:0}), + offsetFromViz = 20, + offsetToSide = 10, + offsetBox = 10, + p; + + if (!bbox.width || !bbox.height) { + return; + } + + + rho = item.endRho + offsetFromViz; + rhoCenter = (item.endRho + item.startRho) / 2 + (item.endRho - item.startRho) / 3; + + opt.x = rho * Math.cos(theta) + centerX; + opt.y = rho * Math.sin(theta) + centerY; + + x = rhoCenter * Math.cos(theta); + y = rhoCenter * Math.sin(theta); + + if (chart.animate) { + + me.onAnimate(callout.lines, { + to: { + path: ["M", x + centerX, y + centerY, "L", opt.x, opt.y, "Z", "M", opt.x, opt.y, "l", x > 0 ? offsetToSide: -offsetToSide, 0, "z"] + } + }); + + me.onAnimate(callout.box, { + to: { + x: opt.x + (x > 0 ? offsetToSide: -(offsetToSide + bbox.width + 2 * offsetBox)), + y: opt.y + (y > 0 ? ( - bbox.height - offsetBox / 2) : ( - bbox.height - offsetBox / 2)), + width: bbox.width + 2 * offsetBox, + height: bbox.height + 2 * offsetBox + } + }); + + me.onAnimate(callout.label, { + to: { + x: opt.x + (x > 0 ? (offsetToSide + offsetBox) : -(offsetToSide + bbox.width + offsetBox)), + y: opt.y + (y > 0 ? -bbox.height / 4: -bbox.height / 4) + } + }); + } else { + + callout.lines.setAttributes({ + path: ["M", x + centerX, y + centerY, "L", opt.x, opt.y, "Z", "M", opt.x, opt.y, "l", x > 0 ? offsetToSide: -offsetToSide, 0, "z"] + }, + true); + + callout.box.setAttributes({ + x: opt.x + (x > 0 ? offsetToSide: -(offsetToSide + bbox.width + 2 * offsetBox)), + y: opt.y + (y > 0 ? ( - bbox.height - offsetBox / 2) : ( - bbox.height - offsetBox / 2)), + width: bbox.width + 2 * offsetBox, + height: bbox.height + 2 * offsetBox + }, + true); + + callout.label.setAttributes({ + x: opt.x + (x > 0 ? (offsetToSide + offsetBox) : -(offsetToSide + bbox.width + offsetBox)), + y: opt.y + (y > 0 ? -bbox.height / 4: -bbox.height / 4) + }, + true); + } + for (p in callout) { + callout[p].show(true); + } + }, + + + onAnimate: function(sprite, attr) { + sprite.show(); + return this.callParent(arguments); + }, + + isItemInPoint: function(x, y, item, i) { + var me = this, + cx = me.centerX, + cy = me.centerY, + abs = Math.abs, + dx = abs(x - cx), + dy = abs(y - cy), + startAngle = item.startAngle, + endAngle = item.endAngle, + rho = Math.sqrt(dx * dx + dy * dy), + angle = Math.atan2(y - cy, x - cx) / me.rad; + + + if (angle > me.firstAngle) { + angle -= me.accuracy; + } + return (angle <= startAngle && angle > endAngle + && rho >= item.startRho && rho <= item.endRho); + }, + + + hideAll: function(index) { + var i, l, shadow, shadows, sh, lsh, sprite; + index = (isNaN(this._index) ? index : this._index) || 0; + this.__excludes = this.__excludes || []; + this.__excludes[index] = true; + sprite = this.slices[index].sprite; + for (sh = 0, lsh = sprite.length; sh < lsh; sh++) { + sprite[sh].setAttributes({ + hidden: true + }, true); + } + if (this.slices[index].shadowAttrs) { + for (i = 0, shadows = this.slices[index].shadowAttrs, l = shadows.length; i < l; i++) { + shadow = shadows[i]; + for (sh = 0, lsh = shadow.length; sh < lsh; sh++) { + shadow[sh].setAttributes({ + hidden: true + }, true); + } + } + } + this.drawSeries(); + }, + + + showAll: function(index) { + index = (isNaN(this._index) ? index : this._index) || 0; + this.__excludes[index] = false; + this.drawSeries(); + }, + + + highlightItem: function(item) { + var me = this, + rad = me.rad, + highlightSegment, + animate, + attrs, + i, + shadows, + shadow, + ln, + to, + itemHighlightSegment, + prop, + group, + display, + label, + middle, + r, + x, + y; + item = item || this.items[this._index]; + + + + + + this.unHighlightItem(); + + if (!item || me.animating || (item.sprite && item.sprite._animating)) { + return; + } + me.callParent([item]); + if (!me.highlight) { + return; + } + if ('segment' in me.highlightCfg) { + highlightSegment = me.highlightCfg.segment; + animate = me.chart.animate; + + if (me.labelsGroup) { + group = me.labelsGroup; + display = me.label.display; + label = group.getAt(item.index); + middle = (item.startAngle + item.endAngle) / 2 * rad; + r = highlightSegment.margin || 0; + x = r * Math.cos(middle); + y = r * Math.sin(middle); + + + + + + + if (Math.abs(x) < 1e-10) { + x = 0; + } + if (Math.abs(y) < 1e-10) { + y = 0; + } + + if (animate) { + label.stopAnimation(); + label.animate({ + to: { + translate: { + x: x, + y: y + } + }, + duration: me.highlightDuration + }); + } + else { + label.setAttributes({ + translate: { + x: x, + y: y + } + }, true); + } + } + + if (me.chart.shadow && item.shadows) { + i = 0; + shadows = item.shadows; + ln = shadows.length; + for (; i < ln; i++) { + shadow = shadows[i]; + to = {}; + itemHighlightSegment = item.sprite._from.segment; + for (prop in itemHighlightSegment) { + if (! (prop in highlightSegment)) { + to[prop] = itemHighlightSegment[prop]; + } + } + attrs = { + segment: Ext.applyIf(to, me.highlightCfg.segment) + }; + if (animate) { + shadow.stopAnimation(); + shadow.animate({ + to: attrs, + duration: me.highlightDuration + }); + } + else { + shadow.setAttributes(attrs, true); + } + } + } + } + }, + + + unHighlightItem: function() { + var me = this, + items, + animate, + shadowsEnabled, + group, + len, + i, + j, + display, + shadowLen, + p, + to, + ihs, + hs, + sprite, + shadows, + shadow, + item, + label, + attrs; + if (!me.highlight) { + return; + } + + if (('segment' in me.highlightCfg) && me.items) { + items = me.items; + animate = me.chart.animate; + shadowsEnabled = !!me.chart.shadow; + group = me.labelsGroup; + len = items.length; + i = 0; + j = 0; + display = me.label.display; + + for (; i < len; i++) { + item = items[i]; + if (!item) { + continue; + } + sprite = item.sprite; + if (sprite && sprite._highlighted) { + + if (group) { + label = group.getAt(item.index); + attrs = Ext.apply({ + translate: { + x: 0, + y: 0 + } + }, + display == 'rotate' ? { + rotate: { + x: label.attr.x, + y: label.attr.y, + degrees: label.attr.rotation.degrees + } + }: {}); + if (animate) { + label.stopAnimation(); + label.animate({ + to: attrs, + duration: me.highlightDuration + }); + } + else { + label.setAttributes(attrs, true); + } + } + if (shadowsEnabled) { + shadows = item.shadows; + shadowLen = shadows.length; + for (; j < shadowLen; j++) { + to = {}; + ihs = item.sprite._to.segment; + hs = item.sprite._from.segment; + Ext.apply(to, hs); + for (p in ihs) { + if (! (p in hs)) { + to[p] = ihs[p]; + } + } + shadow = shadows[j]; + if (animate) { + shadow.stopAnimation(); + shadow.animate({ + to: { + segment: to + }, + duration: me.highlightDuration + }); + } + else { + shadow.setAttributes({ segment: to }, true); + } + } + } + } + } + } + me.callParent(arguments); + }, + + + getLegendColor: function(index) { + var me = this; + return (me.colorSet && me.colorSet[index % me.colorSet.length]) || me.colorArrayStyle[index % me.colorArrayStyle.length]; + } +}); + + + +Ext.define('Ext.chart.series.Radar', { + + + + extend: Ext.chart.series.Series , + + + + + + type: "radar", + alias: 'series.radar', + + + rad: Math.PI / 180, + + showInLegend: false, + + + style: {}, + + + + + + + + + + constructor: function(config) { + this.callParent(arguments); + var me = this, + surface = me.chart.surface; + me.group = surface.getGroup(me.seriesId); + if (me.showMarkers) { + me.markerGroup = surface.getGroup(me.seriesId + '-markers'); + } + }, + + + drawSeries: function() { + var me = this, + store = me.chart.getChartStore(), + data = store.data.items, + d, record, + group = me.group, + chart = me.chart, + seriesItems = chart.series.items, + s, sLen, series, + field = me.field || me.yField, + surface = chart.surface, + chartBBox = chart.chartBBox, + colorArrayStyle = me.colorArrayStyle, + centerX, centerY, + items, + radius, + maxValue = 0, + fields = [], + max = Math.max, + cos = Math.cos, + sin = Math.sin, + pi2 = Math.PI * 2, + l = store.getCount(), + startPath, path, x, y, rho, + i, nfields, + seriesStyle = me.seriesStyle, + axis = chart.axes && chart.axes.get(0), + aggregate = !(axis && axis.maximum); + + me.setBBox(); + + maxValue = aggregate? 0 : (axis.maximum || 0); + + Ext.apply(seriesStyle, me.style || {}); + + + if (!store || !store.getCount() || me.seriesIsHidden) { + me.hide(); + me.items = []; + if (me.radar) { + me.radar.hide(true); + } + me.radar = null; + return; + } + + if(!seriesStyle['stroke']){ + seriesStyle['stroke'] = colorArrayStyle[me.themeIdx % colorArrayStyle.length]; + } + + me.unHighlightItem(); + me.cleanHighlights(); + + centerX = me.centerX = chartBBox.x + (chartBBox.width / 2); + centerY = me.centerY = chartBBox.y + (chartBBox.height / 2); + me.radius = radius = Math.min(chartBBox.width, chartBBox.height) /2; + me.items = items = []; + + if (aggregate) { + + for (s = 0, sLen = seriesItems.length; s < sLen; s++) { + series = seriesItems[s]; + fields.push(series.yField); + } + + for (d = 0; d < l; d++) { + record = data[d]; + for (i = 0, nfields = fields.length; i < nfields; i++) { + maxValue = max(+record.get(fields[i]), maxValue); + } + } + } + + maxValue = maxValue || 1; + + startPath = []; path = []; + for (i = 0; i < l; i++) { + record = data[i]; + rho = radius * record.get(field) / maxValue; + x = rho * cos(i / l * pi2); + y = rho * sin(i / l * pi2); + if (i == 0) { + path.push('M', x + centerX, y + centerY); + startPath.push('M', 0.01 * x + centerX, 0.01 * y + centerY); + } else { + path.push('L', x + centerX, y + centerY); + startPath.push('L', 0.01 * x + centerX, 0.01 * y + centerY); + } + items.push({ + sprite: false, + point: [centerX + x, centerY + y], + storeItem: record, + series: me + }); + } + path.push('Z'); + + if (!me.radar) { + me.radar = surface.add(Ext.apply({ + type: 'path', + group: group, + path: startPath + }, seriesStyle || {})); + } + + if (chart.resizing) { + me.radar.setAttributes({ + path: startPath + }, true); + } + + if (chart.animate) { + me.onAnimate(me.radar, { + to: Ext.apply({ + path: path + }, seriesStyle || {}) + }); + } else { + me.radar.setAttributes(Ext.apply({ + path: path + }, seriesStyle || {}), true); + } + + if (me.showMarkers) { + me.drawMarkers(); + } + me.renderLabels(); + me.renderCallouts(); + }, + + + drawMarkers: function() { + var me = this, + chart = me.chart, + surface = chart.surface, + store = chart.getChartStore(), + markerStyle = Ext.apply({}, me.markerStyle || {}), + endMarkerStyle = Ext.apply(markerStyle, me.markerConfig, { + fill: me.colorArrayStyle[me.themeIdx % me.colorArrayStyle.length] + }), + items = me.items, + type = endMarkerStyle.type, + markerGroup = me.markerGroup, + centerX = me.centerX, + centerY = me.centerY, + item, i, l, marker, rendererAttributes; + + delete endMarkerStyle.type; + + for (i = 0, l = items.length; i < l; i++) { + item = items[i]; + marker = markerGroup.getAt(i); + if (!marker) { + marker = Ext.chart.Shape[type](surface, Ext.apply({ + group: markerGroup, + x: 0, + y: 0, + translate: { + x: centerX, + y: centerY + } + }, endMarkerStyle)); + } + else { + marker.show(); + } + + item.sprite = marker; + + if (chart.resizing) { + marker.setAttributes({ + x: 0, + y: 0, + translate: { + x: centerX, + y: centerY + } + }, true); + } + marker._to = { + translate: { + x: item.point[0], + y: item.point[1] + } + }; + + rendererAttributes = me.renderer(marker, store.getAt(i), marker._to, i, store); + rendererAttributes = Ext.applyIf(rendererAttributes || {}, endMarkerStyle || {}); + if (chart.animate) { + me.onAnimate(marker, { + to: rendererAttributes + }); + } + else { + marker.setAttributes(rendererAttributes, true); + } + } + }, + + isItemInPoint: function(x, y, item) { + var point, + tolerance = 10, + abs = Math.abs; + point = item.point; + return (abs(point[0] - x) <= tolerance && + abs(point[1] - y) <= tolerance); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + var me = this, + group = me.labelsGroup, + config = me.label, + centerX = me.centerX, + centerY = me.centerY, + endLabelStyle = Ext.apply({}, config, me.seriesLabelStyle || {}); + + return me.chart.surface.add(Ext.apply({ + 'type': 'text', + 'text-anchor': 'middle', + 'group': group, + 'x': centerX, + 'y': centerY + }, endLabelStyle || {})); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + resizing = chart.resizing, + config = me.label, + format = config.renderer, + field = config.field, + centerX = me.centerX, + centerY = me.centerY, + opt = { + x: Number(item.point[0]), + y: Number(item.point[1]) + }, + x = opt.x - centerX, + y = opt.y - centerY, + theta = Math.atan2(y, x || 1), + deg = theta * 180 / Math.PI, + labelBox, direction; + + function fixAngle(a) { + if (a < 0) { + a += 360; + } + return a % 360; + } + + label.setAttributes({ + text: format(storeItem.get(field), label, storeItem, item, i, display, animate, index), + hidden: true + }, + true); + + + + labelBox = label.getBBox(); + deg = fixAngle(deg); + if ((deg > 45 && deg < 135) || (deg > 225 && deg < 315)) { + direction = (deg > 45 && deg < 135 ? 1 : -1); + opt.y += direction * labelBox.height/2; + } else { + direction = (deg >= 135 && deg <= 225 ? -1 : 1); + opt.x += direction * labelBox.width/2; + } + + if (resizing) { + label.setAttributes({ + x: centerX, + y: centerY + }, true); + } + + if (animate) { + label.show(true); + me.onAnimate(label, { + to: opt + }); + } else { + label.setAttributes(opt, true); + label.show(true); + } + }, + + + toggleAll: function(show) { + var me = this, + i, ln, shadow, shadows; + if (!show) { + Ext.chart.series.Radar.superclass.hideAll.call(me); + } + else { + Ext.chart.series.Radar.superclass.showAll.call(me); + } + if (me.radar) { + me.radar.setAttributes({ + hidden: !show + }, true); + + if (me.radar.shadows) { + for (i = 0, shadows = me.radar.shadows, ln = shadows.length; i < ln; i++) { + shadow = shadows[i]; + shadow.setAttributes({ + hidden: !show + }, true); + } + } + } + }, + + + hideAll: function() { + this.toggleAll(false); + this.hideMarkers(0); + }, + + + showAll: function() { + this.toggleAll(true); + }, + + + hideMarkers: function(index) { + var me = this, + count = me.markerGroup && me.markerGroup.getCount() || 0, + i = index || 0; + for (; i < count; i++) { + me.markerGroup.getAt(i).hide(true); + } + }, + + + + getAxesForXAndYFields: function() { + var me = this, + chart = me.chart, + axes = chart.axes, + axis = [].concat(axes && axes.get(0)); + + return { + yAxis: axis + }; + } +}); + + + +Ext.define('Ext.chart.series.Scatter', { + + + + extend: Ext.chart.series.Cartesian , + + + + + + type: 'scatter', + alias: 'series.scatter', + + + + + + constructor: function(config) { + this.callParent(arguments); + var me = this, + shadow = me.chart.shadow, + surface = me.chart.surface, i, l; + Ext.apply(me, config, { + style: {}, + markerConfig: {}, + shadowAttributes: [{ + "stroke-width": 6, + "stroke-opacity": 0.05, + stroke: 'rgb(0, 0, 0)' + }, { + "stroke-width": 4, + "stroke-opacity": 0.1, + stroke: 'rgb(0, 0, 0)' + }, { + "stroke-width": 2, + "stroke-opacity": 0.15, + stroke: 'rgb(0, 0, 0)' + }] + }); + me.group = surface.getGroup(me.seriesId); + if (shadow) { + for (i = 0, l = me.shadowAttributes.length; i < l; i++) { + me.shadowGroups.push(surface.getGroup(me.seriesId + '-shadows' + i)); + } + } + }, + + + getBounds: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + chartAxes = chart.axes, + boundAxes = me.getAxesForXAndYFields(), + boundXAxis = boundAxes.xAxis, + boundYAxis = boundAxes.yAxis, + bbox, xScale, yScale, ln, minX, minY, maxX, maxY, i, axis, ends; + + me.setBBox(); + bbox = me.bbox; + + if (axis = chartAxes.get(boundXAxis)) { + ends = axis.applyData(); + minX = ends.from; + maxX = ends.to; + } + + if (axis = chartAxes.get(boundYAxis)) { + ends = axis.applyData(); + minY = ends.from; + maxY = ends.to; + } + + + if (me.xField && !Ext.isNumber(minX)) { + axis = me.getMinMaxXValues(); + minX = axis[0]; + maxX = axis[1]; + } + + if (me.yField && !Ext.isNumber(minY)) { + axis = me.getMinMaxYValues(); + minY = axis[0]; + maxY = axis[1]; + } + + if (isNaN(minX)) { + minX = 0; + maxX = store.getCount() - 1; + xScale = bbox.width / (store.getCount() - 1); + } + else { + xScale = bbox.width / (maxX - minX); + } + + if (isNaN(minY)) { + minY = 0; + maxY = store.getCount() - 1; + yScale = bbox.height / (store.getCount() - 1); + } + else { + yScale = bbox.height / (maxY - minY); + } + + return { + bbox: bbox, + minX: minX, + minY: minY, + xScale: xScale, + yScale: yScale + }; + }, + + + getPaths: function() { + var me = this, + chart = me.chart, + enableShadows = chart.shadow, + store = chart.getChartStore(), + data = store.data.items, + i, ln, record, + group = me.group, + bounds = me.bounds = me.getBounds(), + bbox = me.bbox, + xScale = bounds.xScale, + yScale = bounds.yScale, + minX = bounds.minX, + minY = bounds.minY, + boxX = bbox.x, + boxY = bbox.y, + boxHeight = bbox.height, + items = me.items = [], + attrs = [], + x, y, xValue, yValue, sprite; + + for (i = 0, ln = data.length; i < ln; i++) { + record = data[i]; + xValue = record.get(me.xField); + yValue = record.get(me.yField); + + if (typeof yValue == 'undefined' || (typeof yValue == 'string' && !yValue) + || xValue == null || yValue == null) { + continue; + } + + if (typeof xValue == 'string' || typeof xValue == 'object' && !Ext.isDate(xValue)) { + xValue = i; + } + if (typeof yValue == 'string' || typeof yValue == 'object' && !Ext.isDate(yValue)) { + yValue = i; + } + x = boxX + (xValue - minX) * xScale; + y = boxY + boxHeight - (yValue - minY) * yScale; + attrs.push({ + x: x, + y: y + }); + + me.items.push({ + series: me, + value: [xValue, yValue], + point: [x, y], + storeItem: record + }); + + + if (chart.animate && chart.resizing) { + sprite = group.getAt(i); + if (sprite) { + me.resetPoint(sprite); + if (enableShadows) { + me.resetShadow(sprite); + } + } + } + } + return attrs; + }, + + + resetPoint: function(sprite) { + var bbox = this.bbox; + sprite.setAttributes({ + translate: { + x: (bbox.x + bbox.width) / 2, + y: (bbox.y + bbox.height) / 2 + } + }, true); + }, + + + resetShadow: function(sprite) { + var me = this, + shadows = sprite.shadows, + shadowAttributes = me.shadowAttributes, + ln = me.shadowGroups.length, + bbox = me.bbox, + i, attr; + for (i = 0; i < ln; i++) { + attr = Ext.apply({}, shadowAttributes[i]); + + if (attr.translate) { + attr.translate.x += (bbox.x + bbox.width) / 2; + attr.translate.y += (bbox.y + bbox.height) / 2; + } + else { + attr.translate = { + x: (bbox.x + bbox.width) / 2, + y: (bbox.y + bbox.height) / 2 + }; + } + shadows[i].setAttributes(attr, true); + } + }, + + + createPoint: function(attr, type) { + var me = this, + chart = me.chart, + group = me.group, + bbox = me.bbox; + + return Ext.chart.Shape[type](chart.surface, Ext.apply({}, { + x: 0, + y: 0, + group: group, + translate: { + x: (bbox.x + bbox.width) / 2, + y: (bbox.y + bbox.height) / 2 + } + }, attr)); + }, + + + createShadow: function(sprite, endMarkerStyle, type) { + var me = this, + chart = me.chart, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + lnsh = shadowGroups.length, + bbox = me.bbox, + i, shadow, shadows, attr; + + sprite.shadows = shadows = []; + + for (i = 0; i < lnsh; i++) { + attr = Ext.apply({}, shadowAttributes[i]); + if (attr.translate) { + attr.translate.x += (bbox.x + bbox.width) / 2; + attr.translate.y += (bbox.y + bbox.height) / 2; + } + else { + Ext.apply(attr, { + translate: { + x: (bbox.x + bbox.width) / 2, + y: (bbox.y + bbox.height) / 2 + } + }); + } + Ext.apply(attr, endMarkerStyle); + shadow = Ext.chart.Shape[type](chart.surface, Ext.apply({}, { + x: 0, + y: 0, + group: shadowGroups[i] + }, attr)); + shadows.push(shadow); + } + }, + + + drawSeries: function() { + var me = this, + chart = me.chart, + store = chart.getChartStore(), + group = me.group, + enableShadows = chart.shadow, + shadowGroups = me.shadowGroups, + shadowAttributes = me.shadowAttributes, + lnsh = shadowGroups.length, + sprite, attrs, attr, ln, i, endMarkerStyle, shindex, type, shadows, + rendererAttributes, shadowAttribute; + + endMarkerStyle = Ext.apply(me.markerStyle, me.markerConfig); + type = endMarkerStyle.type || 'circle'; + delete endMarkerStyle.type; + + + if (!store || !store.getCount()) { + me.hide(); + me.items = []; + return; + } + + + me.unHighlightItem(); + me.cleanHighlights(); + + attrs = me.getPaths(); + ln = attrs.length; + for (i = 0; i < ln; i++) { + attr = attrs[i]; + sprite = group.getAt(i); + Ext.apply(attr, endMarkerStyle); + + + if (!sprite) { + sprite = me.createPoint(attr, type); + if (enableShadows) { + me.createShadow(sprite, endMarkerStyle, type); + } + } + + shadows = sprite.shadows; + if (chart.animate) { + rendererAttributes = me.renderer(sprite, store.getAt(i), { translate: attr }, i, store); + sprite._to = rendererAttributes; + me.onAnimate(sprite, { + to: rendererAttributes + }); + + for (shindex = 0; shindex < lnsh; shindex++) { + shadowAttribute = Ext.apply({}, shadowAttributes[shindex]); + rendererAttributes = me.renderer(shadows[shindex], store.getAt(i), Ext.apply({}, { + hidden: false, + translate: { + x: attr.x + (shadowAttribute.translate? shadowAttribute.translate.x : 0), + y: attr.y + (shadowAttribute.translate? shadowAttribute.translate.y : 0) + } + }, shadowAttribute), i, store); + me.onAnimate(shadows[shindex], { to: rendererAttributes }); + } + } + else { + rendererAttributes = me.renderer(sprite, store.getAt(i), { translate: attr }, i, store); + sprite._to = rendererAttributes; + sprite.setAttributes(rendererAttributes, true); + + for (shindex = 0; shindex < lnsh; shindex++) { + shadowAttribute = Ext.apply({}, shadowAttributes[shindex]); + rendererAttributes = me.renderer(shadows[shindex], store.getAt(i), Ext.apply({}, { + hidden: false, + translate: { + x: attr.x + (shadowAttribute.translate? shadowAttribute.translate.x : 0), + y: attr.y + (shadowAttribute.translate? shadowAttribute.translate.y : 0) + } + }, shadowAttribute), i, store); + shadows[shindex].setAttributes(rendererAttributes, true); + } + } + me.items[i].sprite = sprite; + } + + + ln = group.getCount(); + for (i = attrs.length; i < ln; i++) { + group.getAt(i).hide(true); + } + me.renderLabels(); + me.renderCallouts(); + }, + + + onCreateLabel: function(storeItem, item, i, display) { + var me = this, + group = me.labelsGroup, + config = me.label, + endLabelStyle = Ext.apply({}, config, me.seriesLabelStyle), + bbox = me.bbox; + + return me.chart.surface.add(Ext.apply({ + type: 'text', + 'text-anchor': 'middle', + group: group, + x: Number(item.point[0]), + y: bbox.y + bbox.height / 2 + }, endLabelStyle)); + }, + + + onPlaceLabel: function(label, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + resizing = chart.resizing, + config = me.label, + format = config.renderer, + field = config.field, + bbox = me.bbox, + x = Number(item.point[0]), + y = Number(item.point[1]), + radius = item.sprite.attr.radius, + labelBox, markerBox, width, height, xOffset, yOffset, + anim; + + label.setAttributes({ + text: format(storeItem.get(field), label, storeItem, item, i, display, animate, index), + hidden: true + }, true); + + + + markerBox = item.sprite.getBBox(); + markerBox.width = markerBox.width || (radius * 2); + markerBox.height = markerBox.height || (radius * 2); + + labelBox = label.getBBox(); + width = labelBox.width/2; + height = labelBox.height/2; + + if (display == 'rotate') { + + xOffset = markerBox.width/2 + width + height/2; + if (x + xOffset + width > bbox.x + bbox.width) { + x -= xOffset; + } else { + x += xOffset; + } + label.setAttributes({ + 'rotation': { + x: x, + y: y, + degrees: -45 + } + }, true); + } else if (display == 'under' || display == 'over') { + label.setAttributes({ + 'rotation': { + degrees: 0 + } + }, true); + + + if (x < bbox.x + width) { + x = bbox.x + width; + } else if (x + width > bbox.x + bbox.width) { + x = bbox.x + bbox.width - width; + } + + yOffset = markerBox.height/2 + height; + y = y + (display == 'over' ? -yOffset : yOffset); + if (y < bbox.y + height) { + y += 2 * yOffset; + } else if (y + height > bbox.y + bbox.height) { + y -= 2 * yOffset; + } + } + + if (!chart.animate) { + label.setAttributes({ + x: x, + y: y + }, true); + label.show(true); + } + else { + if (resizing) { + anim = item.sprite.getActiveAnimation(); + if (anim) { + anim.on('afteranimate', function() { + label.setAttributes({ + x: x, + y: y + }, true); + label.show(true); + }); + } + else { + label.show(true); + } + } + else { + me.onAnimate(label, { + to: { + x: x, + y: y + } + }); + } + } + }, + + + onPlaceCallout: function(callout, storeItem, item, i, display, animate, index) { + var me = this, + chart = me.chart, + surface = chart.surface, + resizing = chart.resizing, + config = me.callouts, + items = me.items, + cur = item.point, + normal, + bbox = callout.label.getBBox(), + offsetFromViz = 30, + offsetToSide = 10, + offsetBox = 3, + boxx, boxy, boxw, boxh, + p, clipRect = me.bbox, + x, y; + + + normal = [Math.cos(Math.PI /4), -Math.sin(Math.PI /4)]; + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + + + if (boxx < clipRect[0] || (boxx + boxw) > (clipRect[0] + clipRect[2])) { + normal[0] *= -1; + } + if (boxy < clipRect[1] || (boxy + boxh) > (clipRect[1] + clipRect[3])) { + normal[1] *= -1; + } + + + x = cur[0] + normal[0] * offsetFromViz; + y = cur[1] + normal[1] * offsetFromViz; + + + boxx = x + (normal[0] > 0? 0 : -(bbox.width + 2 * offsetBox)); + boxy = y - bbox.height /2 - offsetBox; + boxw = bbox.width + 2 * offsetBox; + boxh = bbox.height + 2 * offsetBox; + + if (chart.animate) { + + me.onAnimate(callout.lines, { + to: { + path: ["M", cur[0], cur[1], "L", x, y, "Z"] + } + }, true); + + me.onAnimate(callout.box, { + to: { + x: boxx, + y: boxy, + width: boxw, + height: boxh + } + }, true); + + me.onAnimate(callout.label, { + to: { + x: x + (normal[0] > 0? offsetBox : -(bbox.width + offsetBox)), + y: y + } + }, true); + } else { + + callout.lines.setAttributes({ + path: ["M", cur[0], cur[1], "L", x, y, "Z"] + }, true); + + callout.box.setAttributes({ + x: boxx, + y: boxy, + width: boxw, + height: boxh + }, true); + + callout.label.setAttributes({ + x: x + (normal[0] > 0? offsetBox : -(bbox.width + offsetBox)), + y: y + }, true); + } + for (p in callout) { + callout[p].show(true); + } + }, + + + onAnimate: function(sprite, attr) { + sprite.show(); + return this.callParent(arguments); + }, + + isItemInPoint: function(x, y, item) { + var point, + tolerance = 10, + abs = Math.abs; + + function dist(point) { + var dx = abs(point[0] - x), + dy = abs(point[1] - y); + return Math.sqrt(dx * dx + dy * dy); + } + point = item.point; + return (point[0] - tolerance <= x && point[0] + tolerance >= x && + point[1] - tolerance <= y && point[1] + tolerance >= y); + } +}); + + + +Ext.define('Ext.layout.container.Table', { + + + + alias: ['layout.table'], + extend: Ext.layout.container.Container , + alternateClassName: 'Ext.layout.TableLayout', + + + + + + + monitorResize:false, + + type: 'table', + + createsInnerCt: true, + + targetCls: Ext.baseCSSPrefix + 'table-layout-ct', + tableCls: Ext.baseCSSPrefix + 'table-layout', + cellCls: Ext.baseCSSPrefix + 'table-layout-cell', + + + tableAttrs: null, + + + + + + getItemSizePolicy: function (item) { + return this.autoSizePolicy; + }, + + initHierarchyState: function (hierarchyStateInner) { + hierarchyStateInner.inShrinkWrapTable = true; + }, + + getLayoutItems: function() { + var me = this, + result = [], + items = me.callParent(), + item, + len = items.length, i; + + for (i = 0; i < len; i++) { + item = items[i]; + if (!item.hidden) { + result.push(item); + } + } + return result; + }, + + getHiddenItems: function(){ + var result = [], + items = this.owner.items.items, + len = items.length, + i = 0, item; + + for (; i < len; ++i) { + item = items[i]; + if (item.rendered && item.hidden) { + result.push(item); + } + } + return result; + }, + + + renderChildren: function() { + var me = this, + items = me.getLayoutItems(), + tbody = me.owner.getTargetEl().child('table', true).tBodies[0], + rows = tbody.rows, + i = 0, + len = items.length, + hiddenItems = me.getHiddenItems(), + cells, curCell, rowIdx, cellIdx, item, trEl, tdEl, itemCt, el; + + + cells = me.calculateCells(items); + + + + + for (; i < len; i++) { + curCell = cells[i]; + rowIdx = curCell.rowIdx; + cellIdx = curCell.cellIdx; + item = items[i]; + + + trEl = rows[rowIdx]; + if (!trEl) { + trEl = tbody.insertRow(rowIdx); + if (me.trAttrs) { + trEl.set(me.trAttrs); + } + } + + + itemCt = tdEl = Ext.get(trEl.cells[cellIdx] || trEl.insertCell(cellIdx)); + if (me.needsDivWrap()) { + itemCt = tdEl.first() || tdEl.createChild({tag: 'div'}); + itemCt.setWidth(null); + } + + + if (!item.rendered) { + me.renderItem(item, itemCt, 0); + } else if (!me.isValidParent(item, itemCt, rowIdx, cellIdx, tbody)) { + me.moveItem(item, itemCt, 0); + } + + + if (me.tdAttrs) { + tdEl.set(me.tdAttrs); + } + if (item.tdAttrs) { + tdEl.set(item.tdAttrs); + } + tdEl.set({ + colSpan: item.colspan || 1, + rowSpan: item.rowspan || 1, + id: item.cellId || '', + cls: me.cellCls + ' ' + (item.cellCls || '') + }); + + + if (!cells[i + 1] || cells[i + 1].rowIdx !== rowIdx) { + cellIdx++; + while (trEl.cells[cellIdx]) { + trEl.deleteCell(cellIdx); + } + } + } + + + rowIdx++; + while (tbody.rows[rowIdx]) { + tbody.deleteRow(rowIdx); + } + + + + for (i = 0, len = hiddenItems.length; i < len; ++i) { + me.ensureInDocument(hiddenItems[i].getEl()); + } + }, + + ensureInDocument: function(el){ + var dom = el.dom.parentNode; + while (dom) { + if (dom.tagName.toUpperCase() == 'BODY') { + return; + } + dom = dom.parentNode; + } + + Ext.getDetachedBody().appendChild(el); + }, + + calculate: function (ownerContext) { + if (!ownerContext.hasDomProp('containerChildrenSizeDone')) { + this.done = false; + } else { + var targetContext = ownerContext.targetContext, + widthShrinkWrap = ownerContext.widthModel.shrinkWrap, + heightShrinkWrap = ownerContext.heightModel.shrinkWrap, + shrinkWrap = heightShrinkWrap || widthShrinkWrap, + table = shrinkWrap && targetContext.el.child('table', true), + targetPadding = shrinkWrap && targetContext.getPaddingInfo(); + + if (widthShrinkWrap) { + ownerContext.setContentWidth(table.offsetWidth + targetPadding.width, true); + } + + if (heightShrinkWrap) { + ownerContext.setContentHeight(table.offsetHeight + targetPadding.height, true); + } + } + }, + + finalizeLayout: function() { + if (this.needsDivWrap()) { + + var items = this.getLayoutItems(), + i, + iLen = items.length, + item; + + for (i = 0; i < iLen; i++) { + item = items[i]; + + Ext.fly(item.el.dom.parentNode).setWidth(item.getWidth()); + } + } + if (Ext.isIE6 || Ext.isIEQuirks) { + + this.owner.getTargetEl().child('table').repaint(); + } + }, + + + calculateCells: function(items) { + var cells = [], + rowIdx = 0, + colIdx = 0, + cellIdx = 0, + totalCols = this.columns || Infinity, + rowspans = [], + i = 0, j, + len = items.length, + item; + + for (; i < len; i++) { + item = items[i]; + + + while (colIdx >= totalCols || rowspans[colIdx] > 0) { + if (colIdx >= totalCols) { + + colIdx = 0; + cellIdx = 0; + rowIdx++; + + + for (j = 0; j < totalCols; j++) { + if (rowspans[j] > 0) { + rowspans[j]--; + } + } + } else { + colIdx++; + } + } + + + cells.push({ + rowIdx: rowIdx, + cellIdx: cellIdx + }); + + + for (j = item.colspan || 1; j; --j) { + rowspans[colIdx] = item.rowspan || 1; + ++colIdx; + } + ++cellIdx; + } + + return cells; + }, + + getRenderTree: function() { + var me = this, + items = me.getLayoutItems(), + cells, + rows = [], + result = Ext.apply({ + tag: 'table', + role: 'presentation', + cls: me.tableCls, + cellspacing: 0, + cellpadding: 0, + cn: { + tag: 'tbody', + cn: rows + } + }, me.tableAttrs), + tdAttrs = me.tdAttrs, + needsDivWrap = me.needsDivWrap(), + i, len = items.length, item, curCell, tr, rowIdx, cellIdx, cell; + + + cells = me.calculateCells(items); + + for (i = 0; i < len; i++) { + item = items[i]; + + curCell = cells[i]; + rowIdx = curCell.rowIdx; + cellIdx = curCell.cellIdx; + + + tr = rows[rowIdx]; + if (!tr) { + tr = rows[rowIdx] = { + tag: 'tr', + cn: [] + }; + if (me.trAttrs) { + Ext.apply(tr, me.trAttrs); + } + } + + + cell = tr.cn[cellIdx] = { + tag: 'td' + }; + if (tdAttrs) { + Ext.apply(cell, tdAttrs); + } + Ext.apply(cell, { + colSpan: item.colspan || 1, + rowSpan: item.rowspan || 1, + id: item.cellId || '', + cls: me.cellCls + ' ' + (item.cellCls || '') + }); + + if (needsDivWrap) { + cell = cell.cn = { + tag: 'div' + }; + } + + me.configureItem(item); + + cell.cn = item.getRenderTree(); + } + return result; + }, + + isValidParent: function(item, target, rowIdx, cellIdx) { + var tbody, + correctCell, + table; + + + if (arguments.length === 3) { + table = item.el.up('table'); + return table && table.dom.parentNode === target.dom; + } + tbody = this.owner.getTargetEl().child('table', true).tBodies[0]; + correctCell = tbody.rows[rowIdx].cells[cellIdx]; + return item.el.dom.parentNode === correctCell; + }, + + + needsDivWrap: function() { + return Ext.isOpera10_5; + } +}); + + +Ext.define('Ext.container.ButtonGroup', { + extend: Ext.panel.Panel , + alias: 'widget.buttongroup', + alternateClassName: 'Ext.ButtonGroup', + + + + + + + baseCls: Ext.baseCSSPrefix + 'btn-group', + + + layout: { + type: 'table' + }, + + defaultType: 'button', + + + frame: true, + + + + frameHeader: false, + + titleAlign: 'center', + + noTitleCls: 'notitle', + + initComponent : function() { + + var me = this, + cols = me.columns; + + if (cols) { + me.layout = Ext.apply({}, {columns: cols}, me.layout); + } + + if (!me.title) { + me.addClsWithUI(me.noTitleCls); + } + me.callParent(arguments); + }, + + + onBeforeAdd: function(component) { + if (component.isButton) { + if (this.defaultButtonUI && component.ui === 'default' && + !component.hasOwnProperty('ui')) { + component.ui = this.defaultButtonUI; + } else { + component.ui = component.ui + '-toolbar'; + } + } + this.callParent(arguments); + }, + + + applyDefaults: function(c) { + if (!Ext.isString(c)) { + c = this.callParent(arguments); + } + return c; + } + + + + + + +}); + + +Ext.define('Ext.container.Monitor', { + target: null, + selector: '', + + scope: null, + addHandler: null, + removeHandler: null, + + disabled: 0, + + constructor: function(config){ + Ext.apply(this, config); + }, + + bind: function(target){ + var me = this; + + me.target = target; + target.on('beforedestroy', me.disable, me); + me.onContainerAdd(target); + }, + + unbind: function() { + var me = this, + target = me.target; + + if (target) { + target.un('beforedestroy', me.disable, me); + } + me.items = null; + }, + + disable: function(){ + ++this.disabled; + }, + + enable: function(){ + if (this.disabled > 0) { + --this.disabled; + } + }, + + handleAdd: function(ct, comp) { + if (!this.disabled) { + if (comp.is(this.selector)) { + this.onItemAdd(comp.ownerCt, comp); + } + + if (comp.isQueryable) { + this.onContainerAdd(comp); + } + } + }, + + onItemAdd: function(ct, comp){ + var me = this, + items = me.items, + handler = me.addHandler; + + if (!me.disabled) { + if (handler) { + handler.call(me.scope || comp, comp); + } + if (items) { + items.add(comp); + } + } + }, + + onItemRemove: function(ct, comp){ + var me = this, + items = me.items, + handler = me.removeHandler; + + if (!me.disabled) { + if (handler) { + handler.call(me.scope || comp, comp); + } + if (items) { + items.remove(comp); + } + } + }, + + onContainerAdd: function(ct, preventChildren) { + var me = this, + items, len, + handleAdd = me.handleAdd, + handleRemove = me.handleRemove, + i, comp; + + if (ct.isContainer) { + ct.on('add', handleAdd, me); + ct.on('dockedadd', handleAdd, me); + ct.on('remove', handleRemove, me); + ct.on('dockedremove', handleRemove, me); + } + + + + if (preventChildren !== true) { + items = ct.query(me.selector); + for (i = 0, len = items.length; i < len; ++i) { + comp = items[i]; + me.onItemAdd(comp.ownerCt, comp); + } + } + + items = ct.query('container'); + for (i = 0, len = items.length; i < len; ++i) { + me.onContainerAdd(items[i], true); + } + + }, + + handleRemove: function(ct, comp) { + var me = this; + + + + if (!me.disabled) { + if (comp.is(me.selector)) { + me.onItemRemove(ct, comp); + } + + if (comp.isQueryable) { + me.onContainerRemove(ct, comp); + } + } + }, + + onContainerRemove: function(ct, comp){ + var me = this, + items, i, len, item; + + + + if (!comp.isDestroyed && !comp.destroying && comp.isContainer) { + me.removeCtListeners(comp); + + items = comp.query(me.selector); + for (i = 0, len = items.length; i < len; ++i) { + item = items[i]; + me.onItemRemove(item.ownerCt, item); + } + + items = comp.query('container'); + for (i = 0, len = items.length; i < len; ++i) { + me.removeCtListeners(items[i]); + } + } else { + + me.invalidateItems(); + } + }, + + removeCtListeners: function(comp){ + var me = this; + comp.un('add', me.handleAdd, me); + comp.un('dockedadd', me.handleAdd, me); + comp.un('remove', me.handleRemove, me); + comp.un('dockedremove', me.handleRemove, me); + }, + + getItems: function(){ + var me = this, + items = me.items; + + if (!items) { + items = me.items = new Ext.util.MixedCollection(); + items.addAll(me.target.query(me.selector)); + } + return items; + }, + + invalidateItems: function(){ + this.items = null; + } +}); + + +Ext.define('Ext.container.Viewport', { + extend: Ext.container.Container , + alias: 'widget.viewport', + + alternateClassName: 'Ext.Viewport', + + + + + + + + + + + + + + + + + isViewport: true, + + ariaRole: 'application', + + preserveElOnDestroy: true, + + viewportCls: Ext.baseCSSPrefix + 'viewport', + + initComponent : function() { + var me = this, + html = document.body.parentNode, + el = me.el = Ext.getBody(); + + + Ext.getScrollbarSize(); + + + me.width = me.height = undefined; + + me.callParent(arguments); + Ext.fly(html).addCls(me.viewportCls); + if (me.autoScroll) { + Ext.fly(html).setStyle(me.getOverflowStyle()); + delete me.autoScroll; + } + el.setHeight = el.setWidth = Ext.emptyFn; + el.dom.scroll = 'no'; + me.allowDomMove = false; + me.renderTo = me.el; + }, + + + applyTargetCls: function(targetCls) { + this.el.addCls(targetCls); + }, + + onRender: function() { + var me = this; + + me.callParent(arguments); + + + + me.width = Ext.Element.getViewportWidth(); + me.height = Ext.Element.getViewportHeight(); + }, + + afterFirstLayout: function() { + var me = this; + + me.callParent(arguments); + setTimeout(function() { + Ext.EventManager.onWindowResize(me.fireResize, me); + }, 1); + }, + + fireResize : function(width, height){ + + + if (width != this.width || height != this.height) { + this.setSize(width, height); + } + }, + + initHierarchyState: function(hierarchyState) { + this.callParent([this.hierarchyState = Ext.rootHierarchyState]); + }, + + beforeDestroy: function(){ + var me = this; + + me.removeUIFromElement(); + me.el.removeCls(me.baseCls); + Ext.fly(document.body.parentNode).removeCls(me.viewportCls); + me.callParent(); + } +}); + + +Ext.define('Ext.data.IdGenerator', { + + + isGenerator: true, + + + constructor: function(config) { + var me = this; + + Ext.apply(me, config); + + if (me.id) { + Ext.data.IdGenerator.all[me.id] = me; + } + }, + + + + getRecId: function (rec) { + return rec.modelName + '-' + rec.internalId; + }, + + + + statics: { + + all: {}, + + + get: function (config) { + var generator, + id, + type; + + if (typeof config == 'string') { + id = type = config; + config = null; + } else if (config.isGenerator) { + return config; + } else { + id = config.id || config.type; + type = config.type; + } + + generator = this.all[id]; + if (!generator) { + generator = Ext.create('idgen.' + type, config); + } + + return generator; + } + } +}); + + +Ext.define('Ext.data.SortTypes', { + + singleton: true, + + + none : Ext.identityFn, + + + stripTagsRE : /<\/?[^>]+>/gi, + + + asText : function(s) { + return String(s).replace(this.stripTagsRE, ""); + }, + + + asUCText : function(s) { + return String(s).toUpperCase().replace(this.stripTagsRE, ""); + }, + + + asUCString : function(s) { + return String(s).toUpperCase(); + }, + + + asDate : function(s) { + if(!s){ + return 0; + } + if(Ext.isDate(s)){ + return s.getTime(); + } + return Date.parse(String(s)); + }, + + + asFloat : function(s) { + var val = parseFloat(String(s).replace(/,/g, "")); + return isNaN(val) ? 0 : val; + }, + + + asInt : function(s) { + var val = parseInt(String(s).replace(/,/g, ""), 10); + return isNaN(val) ? 0 : val; + } +}); + + +Ext.define('Ext.data.Types', { + singleton: true + +}, function() { + var st = Ext.data.SortTypes; + + Ext.apply(Ext.data.Types, { + + stripRe: /[\$,%]/g, + + + AUTO: { + sortType: st.none, + type: 'auto' + }, + + + STRING: { + convert: function(v) { + var defaultValue = this.useNull ? null : ''; + return (v === undefined || v === null) ? defaultValue : String(v); + }, + sortType: st.asUCString, + type: 'string' + }, + + + INT: { + convert: function(v) { + + + + if (typeof v == 'number') { + return parseInt(v); + } + return v !== undefined && v !== null && v !== '' ? + parseInt(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0); + }, + sortType: st.none, + type: 'int' + }, + + + FLOAT: { + convert: function(v) { + if (typeof v === 'number') { + return v; + } + return v !== undefined && v !== null && v !== '' ? + parseFloat(String(v).replace(Ext.data.Types.stripRe, ''), 10) : (this.useNull ? null : 0); + }, + sortType: st.none, + type: 'float' + }, + + + BOOL: { + convert: function(v) { + if (typeof v === 'boolean') { + return v; + } + if (this.useNull && (v === undefined || v === null || v === '')) { + return null; + } + return v === 'true' || v == 1; + }, + sortType: st.none, + type: 'bool' + }, + + + DATE: { + convert: function(v) { + var df = this.dateReadFormat || this.dateFormat, + parsed; + + if (!v) { + return null; + } + + if (v instanceof Date) { + return v; + } + if (df) { + return Ext.Date.parse(v, df); + } + + parsed = Date.parse(v); + return parsed ? new Date(parsed) : null; + }, + sortType: st.asDate, + type: 'date' + } + }); + + Ext.apply(Ext.data.Types, { + + BOOLEAN: this.BOOL, + + + INTEGER: this.INT, + + + NUMBER: this.FLOAT + }); +}); + + +Ext.define('Ext.data.Field', { + + alias: 'data.field', + + isField: true, + + constructor : function(config) { + var me = this, + types = Ext.data.Types, + st; + + if (Ext.isString(config)) { + config = {name: config}; + } + Ext.apply(me, config); + + st = me.sortType; + + if (me.type) { + if (Ext.isString(me.type)) { + me.type = types[me.type.toUpperCase()] || types.AUTO; + } + } else { + me.type = types.AUTO; + } + + + if (Ext.isString(st)) { + me.sortType = Ext.data.SortTypes[st]; + } else if(Ext.isEmpty(st)) { + me.sortType = me.type.sortType; + } + + + if (!config.hasOwnProperty('convert')) { + me.convert = me.type.convert; + } else if (!me.convert && me.type.convert && !config.hasOwnProperty('defaultValue')) { + + + me.defaultValue = me.type.convert(me.defaultValue); + } + + if (config.convert) { + me.hasCustomConvert = true; + } + }, + + + + + + + + + + + dateFormat: null, + + + dateReadFormat: null, + + + dateWriteFormat: null, + + + useNull: false, + + + defaultValue: "", + + + mapping: null, + + + sortType : null, + + + sortDir : "ASC", + + + allowBlank : true, + + + persist: true +}); + + +Ext.define('Ext.data.Errors', { + extend: Ext.util.MixedCollection , + + + isValid: function() { + return this.length === 0; + }, + + + getByField: function(fieldName) { + var errors = [], + error, i; + + for (i = 0; i < this.length; i++) { + error = this.items[i]; + + if (error.field == fieldName) { + errors.push(error); + } + } + + return errors; + } +}); + + +Ext.define('Ext.data.validations', { + singleton: true, + + + presenceMessage: 'must be present', + + + lengthMessage: 'is the wrong length', + + + formatMessage: 'is the wrong format', + + + inclusionMessage: 'is not included in the list of acceptable values', + + + exclusionMessage: 'is not an acceptable value', + + + emailMessage: 'is not a valid email address', + + + emailRe: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/, + + + presence: function(config, value) { + + if (arguments.length === 1) { + value = config; + } + + + return !!value || value === 0 || value === false; + }, + + + length: function(config, value) { + if (value === undefined || value === null) { + return false; + } + + var length = value.length, + min = config.min, + max = config.max; + + if ((min && length < min) || (max && length > max)) { + return false; + } else { + return true; + } + }, + + + email: function(config, email) { + return Ext.data.validations.emailRe.test(email); + }, + + + format: function(config, value) { + return !!(config.matcher && config.matcher.test(value)); + }, + + + inclusion: function(config, value) { + return config.list && Ext.Array.indexOf(config.list,value) != -1; + }, + + + exclusion: function(config, value) { + return config.list && Ext.Array.indexOf(config.list,value) == -1; + } +}); + + +Ext.define('Ext.data.Model', { + alternateClassName: 'Ext.data.Record', + + mixins: { + observable: Ext.util.Observable + }, + + + + + + + + + + + + compareConvertFields: function(f1, f2) { + var f1SpecialConvert = f1.convert && f1.type && f1.convert !== f1.type.convert, + f2SpecialConvert = f2.convert && f2.type && f2.convert !== f2.type.convert; + + if (f1SpecialConvert && !f2SpecialConvert) { + return 1; + } + + if (!f1SpecialConvert && f2SpecialConvert) { + return -1; + } + return 0; + }, + + itemNameFn: function(item) { + return item.name; + }, + + onClassExtended: function(cls, data, hooks) { + var onBeforeClassCreated = hooks.onBeforeCreated; + + hooks.onBeforeCreated = function(cls, data) { + var me = this, + name = Ext.getClassName(cls), + prototype = cls.prototype, + superCls = cls.prototype.superclass, + + validations = data.validations || [], + fields = data.fields || [], + field, + associationsConfigs = data.associations || [], + addAssociations = function(items, type) { + var i = 0, + len, + item; + + if (items) { + items = Ext.Array.from(items); + + for (len = items.length; i < len; ++i) { + item = items[i]; + + if (!Ext.isObject(item)) { + item = {model: item}; + } + + item.type = type; + associationsConfigs.push(item); + } + } + }, + idgen = data.idgen, + + fieldsMixedCollection = new Ext.util.MixedCollection(false, prototype.itemNameFn), + + associationsMixedCollection = new Ext.util.MixedCollection(false, prototype.itemNameFn), + + superValidations = superCls.validations, + superFields = superCls.fields, + superAssociations = superCls.associations, + + associationConfig, i, ln, + dependencies = [], + + + idProperty = 'idProperty' in data ? data.idProperty : prototype.idProperty, + + + idField = idProperty ? (idProperty.isField ? idProperty : new Ext.data.Field(idProperty)) : null, + + + idFieldDefined = false, + + + onFieldAddReplace = function(arg0, arg1, arg2) { + var newField, + pos; + + if (fieldsMixedCollection.events.add.firing) { + + pos = arg0; + newField = arg1; + } else { + + newField = arg2; + pos = arg1.originalIndex; + } + + + + newField.originalIndex = pos; + + + + + if (idField && ((newField.mapping && (newField.mapping === idField.mapping)) || (newField.name === idField.name))) { + prototype.idField = newField; + idFieldDefined = true; + newField.defaultValue = undefined; + } + }, + + + clsProxy = data.proxy, + + + fieldConvertSortFn = function() { + fieldsMixedCollection.sortBy(prototype.compareConvertFields); + }; + + + cls.modelName = name; + prototype.modelName = name; + + + if (superValidations) { + validations = superValidations.concat(validations); + } + + data.validations = validations; + + + if (superFields) { + fields = superFields.items.concat(fields); + } + + fieldsMixedCollection.on({ + add: onFieldAddReplace, + replace: onFieldAddReplace + }); + + for (i = 0, ln = fields.length; i < ln; ++i) { + field = fields[i]; + fieldsMixedCollection.add(field.isField ? field : new Ext.data.Field(field)); + } + + + + + if (idField && !idFieldDefined) { + prototype.idField = idField; + idField.defaultValue = undefined; + fieldsMixedCollection.add(idField); + } + + + fieldConvertSortFn(); + fieldsMixedCollection.on({ + add: fieldConvertSortFn, + replace: fieldConvertSortFn + }); + + data.fields = fieldsMixedCollection; + + if (idgen) { + data.idgen = Ext.data.IdGenerator.get(idgen); + } + + + + addAssociations(data.belongsTo, 'belongsTo'); + delete data.belongsTo; + addAssociations(data.hasMany, 'hasMany'); + delete data.hasMany; + addAssociations(data.hasOne, 'hasOne'); + delete data.hasOne; + + if (superAssociations) { + associationsConfigs = superAssociations.items.concat(associationsConfigs); + } + + for (i = 0, ln = associationsConfigs.length; i < ln; ++i) { + dependencies.push('association.' + associationsConfigs[i].type.toLowerCase()); + } + + + if (clsProxy) { + if (!clsProxy.isProxy) { + dependencies.push('proxy.' + (clsProxy.type || clsProxy)); + } + } + + + else if (!cls.prototype.proxy) { + cls.prototype.proxy = cls.prototype.defaultProxyType; + dependencies.push('proxy.' + cls.prototype.defaultProxyType); + } + + Ext.require(dependencies, function() { + Ext.ModelManager.registerType(name, cls); + + for (i = 0, ln = associationsConfigs.length; i < ln; ++i) { + associationConfig = associationsConfigs[i]; + if (associationConfig.isAssociation) { + associationConfig = Ext.applyIf({ + ownerModel: name, + associatedModel: associationConfig.model + }, associationConfig.initialConfig); + } else { + Ext.apply(associationConfig, { + ownerModel: name, + associatedModel: associationConfig.model + }); + } + + if (Ext.ModelManager.getModel(associationConfig.model) === undefined) { + Ext.ModelManager.registerDeferredAssociation(associationConfig); + } else { + associationsMixedCollection.add(Ext.data.association.Association.create(associationConfig)); + } + } + + data.associations = associationsMixedCollection; + + + + + + + onBeforeClassCreated.call(me, cls, data, hooks); + + + if (clsProxy && clsProxy.isProxy) { + cls.setProxy(clsProxy); + } + + + Ext.ModelManager.onModelDefined(cls); + }); + }; + }, + + inheritableStatics: { + + setProxy: function(proxy) { + + if (!proxy.isProxy) { + if (typeof proxy == "string") { + proxy = { + type: proxy + }; + } + proxy = Ext.createByAlias("proxy." + proxy.type, proxy); + } + proxy.setModel(this); + this.proxy = this.prototype.proxy = proxy; + + return proxy; + }, + + + getProxy: function() { + + var proxy = this.proxy; + + + if (!proxy) { + proxy = this.prototype.proxy; + + + if (proxy.isProxy) { + proxy = proxy.clone() + } + + return this.setProxy(proxy); + } + + return proxy; + }, + + + setFields: function(fields, idProperty, clientIdProperty) { + var me = this, + newField, + idField, + idFieldDefined = false, + proto = me.prototype, + prototypeFields = proto.fields, + superFields = proto.superclass.fields, + len, + i; + + if (idProperty) { + proto.idProperty = idProperty; + idField = idProperty.isField ? idProperty : new Ext.data.Field(idProperty); + + } + if (clientIdProperty) { + proto.clientIdProperty = clientIdProperty; + } + + if (prototypeFields) { + prototypeFields.clear(); + } + else { + prototypeFields = me.prototype.fields = new Ext.util.MixedCollection(false, function(field) { + return field.name; + }); + } + + + if (superFields) { + fields = superFields.items.concat(fields); + } + + for (i = 0, len = fields.length; i < len; i++) { + newField = new Ext.data.Field(fields[i]); + + + + + if (idField && ((newField.mapping && (newField.mapping === idField.mapping)) || (newField.name === idField.name))) { + idFieldDefined = true; + newField.defaultValue = undefined; + } + prototypeFields.add(newField); + } + + + + + if (idField && !idFieldDefined) { + idField.defaultValue = undefined; + prototypeFields.add(idField); + } + + me.fields = prototypeFields; + + return prototypeFields; + }, + + + getFields: function() { + return this.prototype.fields.items; + }, + + + load: function(id, config) { + config = Ext.apply({}, config); + config = Ext.applyIf(config, { + action: 'read', + id : id + }); + + var operation = new Ext.data.Operation(config), + scope = config.scope || this, + callback; + + callback = function(operation) { + var record = null, + success = operation.wasSuccessful(); + + if (success) { + record = operation.getRecords()[0]; + + if (!record.hasId()) { + record.setId(id); + } + Ext.callback(config.success, scope, [record, operation]); + } else { + Ext.callback(config.failure, scope, [record, operation]); + } + Ext.callback(config.callback, scope, [record, operation, success]); + }; + + this.getProxy().read(operation, callback, this); + } + }, + + statics: { + + PREFIX : 'ext-record', + + AUTO_ID: 1, + + EDIT : 'edit', + + REJECT : 'reject', + + COMMIT : 'commit', + + + id: function(rec) { + var id = [this.PREFIX, '-', this.AUTO_ID++].join(''); + rec.phantom = true; + rec.internalId = id; + return id; + } + }, + + + idgen: { + isGenerator: true, + type: 'default', + + generate: function () { + return null; + }, + getRecId: function (rec) { + return rec.modelName + '-' + rec.internalId; + } + }, + + + editing : false, + + + dirty : false, + + + persistenceProperty: 'data', + + evented: false, + + + isModel: true, + + + phantom : false, + + + idProperty: 'id', + + + clientIdProperty: null, + + + defaultProxyType: 'ajax', + + + emptyData: [], + + + + + + + + + + + + + + + + + constructor: function(data, id, raw, convertedData) { + + + + + + + + + var me = this, + passedId = (id || id === 0), + hasId, + fields, + length, + field, + name, + value, + newId, + persistenceProperty, + idProperty = me.idProperty, + idField = me.idField, + i; + + + me.raw = raw || data; + + + me.modified = {}; + + persistenceProperty = me[me.persistenceProperty] = convertedData || {}; + + + me.data = me[me.persistenceProperty]; + + me.mixins.observable.constructor.call(me); + + if (!convertedData) { + + if (data) { + + if (!passedId && idProperty) { + id = data[idProperty]; + hasId = (id || id === 0); + } + } + + else { + data = me.emptyData; + } + + + fields = me.fields.items; + length = fields.length; + i = 0; + + if (Ext.isArray(data)) { + for (; i < length; i++) { + field = fields[i]; + name = field.name; + + + + value = data[field.originalIndex]; + + if (value === undefined) { + value = field.defaultValue; + } + + + if (field.convert) { + value = field.convert(value, me); + } + + if (value !== undefined) { + persistenceProperty[name] = value; + } + } + + } else { + for (; i < length; i++) { + field = fields[i]; + name = field.name; + value = data[name]; + if (value === undefined) { + value = field.defaultValue; + } + if (field.convert) { + value = field.convert(value, me); + } + + if (value !== undefined) { + persistenceProperty[name] = value; + } + } + } + } + + + me.stores = []; + + + + if (passedId) { + hasId = true; + persistenceProperty[idProperty] = idField && idField.convert ? idField.convert(id) : id; + } + + + else if (!hasId) { + + newId = me.idgen.generate(); + if (newId != null) { + me.preventInternalUpdate = true; + me.setId(newId); + delete me.preventInternalUpdate; + } + } + + + me.internalId = hasId ? id : Ext.data.Model.id(me); + + + if (typeof me.init == 'function') { + me.init(); + } + + + me.id = me.idgen.getRecId(me); + }, + + + get: function(field) { + return this[this.persistenceProperty][field]; + }, + + + + + _singleProp: {}, + + + set: function (fieldName, newValue) { + var me = this, + data = me[me.persistenceProperty], + fields = me.fields, + modified = me.modified, + single = (typeof fieldName == 'string'), + currentValue, field, idChanged, key, modifiedFieldNames, name, oldId, + newId, value, values; + + if (single) { + values = me._singleProp; + values[fieldName] = newValue; + } else { + values = fieldName; + } + + for (name in values) { + if (values.hasOwnProperty(name)) { + value = values[name]; + + if (fields && (field = fields.get(name)) && field.convert) { + value = field.convert(value, me); + } + + currentValue = data[name]; + if (me.isEqual(currentValue, value)) { + continue; + } + + data[name] = value; + (modifiedFieldNames || (modifiedFieldNames = [])).push(name); + + if (field && field.persist) { + if (modified.hasOwnProperty(name)) { + if (me.isEqual(modified[name], value)) { + + + delete modified[name]; + + + + + me.dirty = false; + for (key in modified) { + if (modified.hasOwnProperty(key)){ + me.dirty = true; + break; + } + } + } + } else { + me.dirty = true; + modified[name] = currentValue; + } + } + + if (name == me.idProperty) { + idChanged = true; + oldId = currentValue; + newId = value; + } + } + } + + if (single) { + + + delete values[fieldName]; + } + + if (idChanged) { + me.changeId(oldId, newId); + } + + if (!me.editing && modifiedFieldNames) { + me.afterEdit(modifiedFieldNames); + } + + return modifiedFieldNames || null; + }, + + + copyFrom: function(sourceRecord) { + var me = this, + fields = me.fields.items, + fieldCount = fields.length, + modifiedFieldNames = [], + field, i = 0, + myData, + sourceData, + idProperty = me.idProperty, + name, + value; + + if (sourceRecord) { + myData = me[me.persistenceProperty]; + sourceData = sourceRecord[sourceRecord.persistenceProperty]; + for (; i < fieldCount; i++) { + field = fields[i]; + name = field.name; + + + + + + + + if (name != idProperty) { + value = sourceData[name]; + + + + if (value !== undefined && !me.isEqual(myData[name], value)) { + myData[name] = value; + modifiedFieldNames.push(name); + } + } + } + + + if (me.phantom && !sourceRecord.phantom) { + + + me.beginEdit(); + me.setId(sourceRecord.getId()); + me.endEdit(true); + me.commit(true); + } + } + return modifiedFieldNames; + }, + + + isEqual: function(a, b) { + + if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime(); + } + return a === b; + }, + + + beginEdit : function(){ + var me = this, + key, + data, + o; + + if (!me.editing) { + me.editing = true; + me.dirtySave = me.dirty; + + o = me[me.persistenceProperty]; + data = me.dataSave = {}; + for (key in o) { + if (o.hasOwnProperty(key)) { + data[key] = o[key]; + } + } + + o = me.modified; + data = me.modifiedSave = {}; + for (key in o) { + if (o.hasOwnProperty(key)) { + data[key] = o[key]; + } + } + } + }, + + + cancelEdit : function(){ + var me = this; + if (me.editing) { + me.editing = false; + + me.modified = me.modifiedSave; + me[me.persistenceProperty] = me.dataSave; + me.dirty = me.dirtySave; + me.modifiedSave = me.dataSave = me.dirtySave = null; + } + }, + + + endEdit : function(silent, modifiedFieldNames){ + var me = this, + dataSave, + changed; + + silent = silent === true; + if (me.editing) { + me.editing = false; + dataSave = me.dataSave; + me.modifiedSave = me.dataSave = me.dirtySave = null; + if (!silent) { + if (!modifiedFieldNames) { + modifiedFieldNames = me.getModifiedFieldNames(dataSave); + } + changed = me.dirty || modifiedFieldNames.length > 0; + if (changed) { + me.afterEdit(modifiedFieldNames); + } + } + } + }, + + + getModifiedFieldNames: function(saved){ + var me = this, + data = me[me.persistenceProperty], + modified = [], + key; + + saved = saved || me.dataSave; + for (key in data) { + if (data.hasOwnProperty(key)) { + if (!me.isEqual(data[key], saved[key])) { + modified.push(key); + } + } + } + return modified; + }, + + + getChanges : function(){ + var modified = this.modified, + changes = {}, + field; + + for (field in modified) { + if (modified.hasOwnProperty(field)){ + changes[field] = this.get(field); + } + } + + return changes; + }, + + + isModified : function(fieldName) { + return this.modified.hasOwnProperty(fieldName); + }, + + + setDirty : function() { + var me = this, + fields = me.fields.items, + fLen = fields.length, + field, name, f; + + me.dirty = true; + + for (f = 0; f < fLen; f++) { + field = fields[f]; + + if (field.persist) { + name = field.name; + me.modified[name] = me.get(name); + } + } + }, + + + + reject : function(silent) { + var me = this, + modified = me.modified, + field; + + for (field in modified) { + if (modified.hasOwnProperty(field)) { + if (typeof modified[field] != "function") { + me[me.persistenceProperty][field] = modified[field]; + } + } + } + + me.dirty = false; + me.editing = false; + me.modified = {}; + + if (silent !== true) { + me.afterReject(); + } + }, + + + commit : function(silent, modifiedFieldNames) { + var me = this; + + me.phantom = me.dirty = me.editing = false; + me.modified = {}; + + if (silent !== true) { + me.afterCommit(modifiedFieldNames); + } + }, + + + copy : function(newId) { + var me = this; + return new me.self(me.raw, newId, null, Ext.apply({}, me[me.persistenceProperty])); + }, + + + setProxy: function(proxy) { + + if (!proxy.isProxy) { + if (typeof proxy === "string") { + proxy = { + type: proxy + }; + } + proxy = Ext.createByAlias("proxy." + proxy.type, proxy); + } + proxy.setModel(this.self); + this.proxy = proxy; + + return proxy; + }, + + + getProxy: function() { + return this.hasOwnProperty('proxy') ? this.proxy : this.self.getProxy(); + }, + + + validate: function() { + var errors = new Ext.data.Errors(), + validations = this.validations, + validators = Ext.data.validations, + length, validation, field, valid, type, i; + + if (validations) { + length = validations.length; + + for (i = 0; i < length; i++) { + validation = validations[i]; + field = validation.field || validation.name; + type = validation.type; + valid = validators[type](validation, this.get(field)); + + if (!valid) { + errors.add({ + field : field, + message: validation.message || validators[type + 'Message'] + }); + } + } + } + + return errors; + }, + + + isValid: function(){ + return this.validate().isValid(); + }, + + + save: function(options) { + options = Ext.apply({}, options); + + var me = this, + action = me.phantom ? 'create' : 'update', + scope = options.scope || me, + stores = me.stores, + i = 0, + storeCount, + store, + operation, + callback; + + Ext.apply(options, { + records: [me], + action : action + }); + + operation = new Ext.data.Operation(options); + + callback = function(operation) { + var success = operation.wasSuccessful(); + + if (success) { + for(storeCount = stores.length; i < storeCount; i++) { + store = stores[i]; + store.fireEvent('write', store, operation); + store.fireEvent('datachanged', store); + + } + Ext.callback(options.success, scope, [me, operation]); + } + else { + Ext.callback(options.failure, scope, [me, operation]); + } + + Ext.callback(options.callback, scope, [me, operation, success]); + }; + + me.getProxy()[action](operation, callback, me); + + return me; + }, + + + destroy: function(options) { + options = Ext.apply({ + records: [this], + action : 'destroy' + }, options); + + var me = this, + isNotPhantom = me.phantom !== true, + scope = options.scope || me, + stores, + i = 0, + storeCount, + store, + args, + operation, + callback; + + operation = new Ext.data.Operation(options); + + callback = function(operation) { + args = [me, operation]; + + + stores = Ext.Array.clone(me.stores); + if (operation.wasSuccessful()) { + for (storeCount = stores.length; i < storeCount; i++) { + store = stores[i]; + + + + if (store.remove) { + store.remove(me, true); + } + + + + store.fireEvent('bulkremove', store, [me], [store.indexOf(me)], false); + if (isNotPhantom) { + store.fireEvent('write', store, operation); + } + } + me.clearListeners(); + Ext.callback(options.success, scope, args); + } else { + Ext.callback(options.failure, scope, args); + } + Ext.callback(options.callback, scope, args); + }; + + + + if (isNotPhantom) { + me.getProxy().destroy(operation, callback, me); + } + + else { + operation.complete = operation.success = true; + operation.resultSet = me.getProxy().reader.nullResultSet; + callback(operation); + } + return me; + }, + + + getId: function() { + return this.get(this.idField.name); + }, + + + getObservableId: function() { + return this.id; + }, + + + setId: function(id) { + this.set(this.idProperty, id); + }, + + changeId: function(oldId, newId) { + var me = this, + hasOldId, hasId, oldInternalId; + + if (!me.preventInternalUpdate) { + hasOldId = me.hasId(oldId); + hasId = me.hasId(newId); + oldInternalId = me.internalId; + me.phantom = !hasId; + + + + + if (hasId !== hasOldId || (hasId && hasOldId)) { + me.internalId = hasId ? newId : Ext.data.Model.id(me); + } + + me.fireEvent('idchanged', me, oldId, newId, oldInternalId); + me.callStore('onIdChanged', oldId, newId, oldInternalId); + } + }, + + + hasId: function(id) { + if (arguments.length === 0) { + id = this.getId(); + } + return !!(id || id === 0); + }, + + + join : function(store) { + var me = this; + + + if (!me.stores.length) { + me.stores[0] = store; + } else { + Ext.Array.include(this.stores, store); + } + + + this.store = this.stores[0]; + }, + + + unjoin: function(store) { + Ext.Array.remove(this.stores, store); + this.store = this.stores[0] || null; + }, + + + afterEdit : function(modifiedFieldNames) { + this.callStore('afterEdit', modifiedFieldNames); + }, + + + afterReject : function() { + this.callStore('afterReject'); + }, + + + afterCommit: function(modifiedFieldNames) { + this.callStore('afterCommit', modifiedFieldNames); + }, + + + callStore: function(fn) { + var args = Ext.Array.clone(arguments), + stores = this.stores, + i = 0, + len = stores.length, + store; + + args[0] = this; + for (; i < len; ++i) { + store = stores[i]; + if (store && Ext.isFunction(store[fn])) { + store[fn].apply(store, args); + } + } + }, + + + getData: function(includeAssociated){ + var me = this, + fields = me.fields.items, + fLen = fields.length, + data = {}, + name, f; + + for (f = 0; f < fLen; f++) { + name = fields[f].name; + data[name] = me.get(name); + } + + if (includeAssociated === true) { + Ext.apply(data, me.getAssociatedData()); + } + return data; + }, + + + getAssociatedData: function(){ + return this.prepareAssociatedData({}, 1); + }, + + + prepareAssociatedData: function(seenKeys, depth) { + + var me = this, + associations = me.associations.items, + associationCount = associations.length, + associationData = {}, + + + + toRead = [], + toReadKey = [], + toReadIndex = [], + associatedStore, associatedRecords, associatedRecord, o, index, result, seenDepth, + associationId, associatedRecordCount, association, i, j, type, name; + + for (i = 0; i < associationCount; i++) { + association = associations[i]; + associationId = association.associationId; + + seenDepth = seenKeys[associationId]; + if (seenDepth && seenDepth !== depth) { + continue; + } + seenKeys[associationId] = depth; + + type = association.type; + name = association.name; + if (type == 'hasMany') { + + associatedStore = me[association.storeName]; + + + associationData[name] = []; + + + if (associatedStore && associatedStore.getCount() > 0) { + associatedRecords = associatedStore.data.items; + associatedRecordCount = associatedRecords.length; + + + + for (j = 0; j < associatedRecordCount; j++) { + associatedRecord = associatedRecords[j]; + associationData[name][j] = associatedRecord.getData(); + toRead.push(associatedRecord); + toReadKey.push(name); + toReadIndex.push(j); + } + } + } else if (type == 'belongsTo' || type == 'hasOne') { + associatedRecord = me[association.instanceName]; + + if (associatedRecord !== undefined) { + associationData[name] = associatedRecord.getData(); + toRead.push(associatedRecord); + toReadKey.push(name); + toReadIndex.push(-1); + } + } + } + + for (i = 0, associatedRecordCount = toRead.length; i < associatedRecordCount; ++i) { + associatedRecord = toRead[i]; + o = associationData[toReadKey[i]]; + index = toReadIndex[i]; + result = associatedRecord.prepareAssociatedData(seenKeys, depth + 1); + if (index === -1) { + Ext.apply(o, result); + } else { + Ext.apply(o[index], result); + } + } + + return associationData; + } +}); + + +Ext.define('Ext.data.proxy.Server', { + extend: Ext.data.proxy.Proxy , + alias : 'proxy.server', + alternateClassName: 'Ext.data.ServerProxy', + + + + + + pageParam: 'page', + + + startParam: 'start', + + + limitParam: 'limit', + + + groupParam: 'group', + + + groupDirectionParam: 'groupDir', + + + sortParam: 'sort', + + + filterParam: 'filter', + + + directionParam: 'dir', + + + idParam: 'id', + + + simpleSortMode: false, + + + simpleGroupMode: false, + + + noCache : true, + + + cacheString: "_dc", + + + timeout : 30000, + + + + constructor: function(config) { + var me = this; + + config = config || {}; + + me.callParent([config]); + + + me.extraParams = config.extraParams || {}; + + me.api = Ext.apply({}, config.api || me.api); + + + + me.nocache = me.noCache; + }, + + + create: function() { + return this.doRequest.apply(this, arguments); + }, + + read: function() { + return this.doRequest.apply(this, arguments); + }, + + update: function() { + return this.doRequest.apply(this, arguments); + }, + + destroy: function() { + return this.doRequest.apply(this, arguments); + }, + + + setExtraParam: function(name, value) { + this.extraParams[name] = value; + }, + + + buildRequest: function(operation) { + var me = this, + + params = operation.params = Ext.apply({}, operation.params, me.extraParams), + request; + + + Ext.applyIf(params, me.getParams(operation)); + + + + + if (operation.id !== undefined && params[me.idParam] === undefined) { + params[me.idParam] = operation.id; + } + + request = new Ext.data.Request({ + params : params, + action : operation.action, + records : operation.records, + operation: operation, + url : operation.url, + + + + proxy: me + }); + + request.url = me.buildUrl(request); + + + operation.request = request; + + return request; + }, + + + processResponse: function(success, operation, request, response, callback, scope) { + var me = this, + reader, + result; + + if (success === true) { + reader = me.getReader(); + + + + + reader.applyDefaults = operation.action === 'read'; + + result = reader.read(me.extractResponseData(response)); + + if (result.success !== false) { + + Ext.apply(operation, { + response: response, + resultSet: result + }); + + operation.commitRecords(result.records); + operation.setCompleted(); + operation.setSuccessful(); + } else { + operation.setException(result.message); + me.fireEvent('exception', this, response, operation); + } + } else { + me.setException(operation, response); + me.fireEvent('exception', this, response, operation); + } + + + if (typeof callback == 'function') { + callback.call(scope || me, operation); + } + + me.afterRequest(request, success); + }, + + + setException: function(operation, response) { + operation.setException({ + status: response.status, + statusText: response.statusText + }); + }, + + + extractResponseData: Ext.identityFn, + + + applyEncoding: function(value) { + return Ext.encode(value); + }, + + + encodeSorters: function(sorters) { + var min = [], + length = sorters.length, + i = 0; + + for (; i < length; i++) { + min[i] = { + property : sorters[i].property, + direction: sorters[i].direction + }; + } + return this.applyEncoding(min); + + }, + + + encodeFilters: function(filters) { + var min = [], + length = filters.length, + i = 0; + + for (; i < length; i++) { + min[i] = { + property: filters[i].property, + value : filters[i].value + }; + } + return this.applyEncoding(min); + }, + + + getParams: function(operation) { + var me = this, + params = {}, + isDef = Ext.isDefined, + groupers = operation.groupers, + sorters = operation.sorters, + filters = operation.filters, + page = operation.page, + start = operation.start, + limit = operation.limit, + simpleSortMode = me.simpleSortMode, + simpleGroupMode = me.simpleGroupMode, + pageParam = me.pageParam, + startParam = me.startParam, + limitParam = me.limitParam, + groupParam = me.groupParam, + groupDirectionParam = me.groupDirectionParam, + sortParam = me.sortParam, + filterParam = me.filterParam, + directionParam = me.directionParam, + hasGroups, index; + + if (pageParam && isDef(page)) { + params[pageParam] = page; + } + + if (startParam && isDef(start)) { + params[startParam] = start; + } + + if (limitParam && isDef(limit)) { + params[limitParam] = limit; + } + + hasGroups = groupParam && groupers && groupers.length > 0; + if (hasGroups) { + + if (simpleGroupMode) { + params[groupParam] = groupers[0].property; + params[groupDirectionParam] = groupers[0].direction || 'ASC'; + } else { + params[groupParam] = me.encodeSorters(groupers); + } + } + + if (sortParam && sorters && sorters.length > 0) { + if (simpleSortMode) { + index = 0; + + if (sorters.length > 1 && hasGroups) { + index = 1; + } + params[sortParam] = sorters[index].property; + params[directionParam] = sorters[index].direction; + } else { + params[sortParam] = me.encodeSorters(sorters); + } + + } + + if (filterParam && filters && filters.length > 0) { + params[filterParam] = me.encodeFilters(filters); + } + + return params; + }, + + + buildUrl: function(request) { + var me = this, + url = me.getUrl(request); + + + if (me.noCache) { + url = Ext.urlAppend(url, Ext.String.format("{0}={1}", me.cacheString, Ext.Date.now())); + } + + return url; + }, + + + getUrl: function(request) { + return request.url || this.api[request.action] || this.url; + }, + + + doRequest: function(operation, callback, scope) { + }, + + + afterRequest: Ext.emptyFn, + + onDestroy: function() { + Ext.destroy(this.reader, this.writer); + } +}); + + +Ext.define('Ext.data.proxy.Ajax', { + + extend: Ext.data.proxy.Server , + alias: 'proxy.ajax', + alternateClassName: ['Ext.data.HttpProxy', 'Ext.data.AjaxProxy'], + + + actionMethods: { + create : 'POST', + read : 'GET', + update : 'POST', + destroy: 'POST' + }, + + + binary: false, + + + + doRequest: function(operation, callback, scope) { + var writer = this.getWriter(), + request = this.buildRequest(operation); + + if (operation.allowWrite()) { + request = writer.write(request); + } + + Ext.apply(request, { + binary : this.binary, + headers : this.headers, + timeout : this.timeout, + scope : this, + callback : this.createRequestCallback(request, operation, callback, scope), + method : this.getMethod(request), + disableCaching: false + }); + + Ext.Ajax.request(request); + + return request; + }, + + + getMethod: function(request) { + return this.actionMethods[request.action]; + }, + + + createRequestCallback: function(request, operation, callback, scope) { + var me = this; + + return function(options, success, response) { + me.processResponse(success, operation, request, response, callback, scope); + }; + } +}, function() { + + Ext.data.HttpProxy = this; +}); + + +Ext.define('Ext.data.proxy.Client', { + extend: Ext.data.proxy.Proxy , + alternateClassName: 'Ext.data.ClientProxy', + + + isSynchronous: true, + + + clear: function() { + } +}); + + +Ext.define('Ext.data.proxy.Memory', { + extend: Ext.data.proxy.Client , + alias: 'proxy.memory', + alternateClassName: 'Ext.data.MemoryProxy', + + + + + + constructor: function(config) { + this.callParent([config]); + + + this.setReader(this.reader); + }, + + + updateOperation: function(operation, callback, scope) { + var i = 0, + recs = operation.getRecords(), + len = recs.length; + + for (i; i < len; i++) { + recs[i].commit(); + } + operation.setCompleted(); + operation.setSuccessful(); + + Ext.callback(callback, scope || this, [operation]); + }, + + + create: function() { + this.updateOperation.apply(this, arguments); + }, + + + update: function() { + this.updateOperation.apply(this, arguments); + }, + + + destroy: function() { + this.updateOperation.apply(this, arguments); + }, + + + read: function(operation, callback, scope) { + var me = this, + resultSet = operation.resultSet = me.getReader().read(me.data), + records = resultSet.records, + sorters = operation.sorters, + groupers = operation.groupers, + filters = operation.filters; + + operation.setCompleted(); + + + if (resultSet.success) { + + + if (filters && filters.length) { + records = resultSet.records = Ext.Array.filter(records, Ext.util.Filter.createFilterFn(filters)); + } + + + if (groupers && groupers.length) { + + sorters = sorters ? sorters.concat(groupers) : sorters; + } + + + if (sorters && sorters.length) { + resultSet.records = Ext.Array.sort(records, Ext.util.Sortable.createComparator(sorters)); + } + + + + if (me.enablePaging && operation.start !== undefined && operation.limit !== undefined) { + + + if (operation.start >= resultSet.total) { + resultSet.success = false; + resultSet.count = 0; + resultSet.records = []; + } + + else { + resultSet.records = Ext.Array.slice(resultSet.records, operation.start, operation.start + operation.limit); + resultSet.count = resultSet.records.length; + } + } + } + + if (resultSet.success) { + operation.setSuccessful(); + } else { + me.fireEvent('exception', me, null, operation); + } + Ext.callback(callback, scope || me, [operation]); + }, + + clear: Ext.emptyFn +}); + + +Ext.define('Ext.util.LruCache', { + extend: Ext.util.HashMap , + + + + constructor: function(config) { + Ext.apply(this, config); + this.callParent([config]); + }, + + + add: function(key, newValue) { + var me = this, + existingKey = me.findKey(newValue), + entry; + + + if (existingKey) { + me.unlinkEntry(entry = me.map[existingKey]); + entry.prev = me.last; + entry.next = null; + } + + else { + entry = { + prev: me.last, + next: null, + key: key, + value: newValue + }; + } + + + if (me.last) { + me.last.next = entry; + } + + else { + me.first = entry; + } + me.last = entry; + me.callParent([key, entry]); + me.prune(); + return newValue; + }, + + + insertBefore: function(key, newValue, sibling) { + var me = this, + existingKey, + entry; + + + + if (sibling = this.map[this.findKey(sibling)]) { + existingKey = me.findKey(newValue); + + + if (existingKey) { + me.unlinkEntry(entry = me.map[existingKey]); + } + + else { + entry = { + prev: sibling.prev, + next: sibling, + key: key, + value: newValue + }; + } + + if (sibling.prev) { + entry.prev.next = entry; + } else { + me.first = entry; + } + entry.next = sibling; + sibling.prev = entry; + me.prune(); + return newValue; + } + + else { + return me.add(key, newValue); + } + }, + + + get: function(key) { + var entry = this.map[key]; + if (entry) { + + + if (entry.next) { + this.moveToEnd(entry); + } + return entry.value; + } + }, + + + removeAtKey: function(key) { + this.unlinkEntry(this.map[key]); + return this.callParent(arguments); + }, + + + clear: function( initial) { + this.first = this.last = null; + return this.callParent(arguments); + }, + + + unlinkEntry: function(entry) { + + if (entry) { + if (entry.next) { + entry.next.prev = entry.prev; + } else { + this.last = entry.prev; + } + if (entry.prev) { + entry.prev.next = entry.next; + } else { + this.first = entry.next; + } + entry.prev = entry.next = null; + } + }, + + + moveToEnd: function(entry) { + this.unlinkEntry(entry); + + + + if (entry.prev = this.last) { + this.last.next = entry; + } + + else { + this.first = entry; + } + this.last = entry; + }, + + + getArray: function(isKey) { + var arr = [], + entry = this.first; + + while (entry) { + arr.push(isKey ? entry.key: entry.value); + entry = entry.next; + } + return arr; + }, + + + each: function(fn, scope, reverse) { + var me = this, + entry = reverse ? me.last : me.first, + length = me.length; + + scope = scope || me; + while (entry) { + if (fn.call(scope, entry.key, entry.value, length) === false) { + break; + } + entry = reverse ? entry.prev : entry.next; + } + return me; + }, + + + findKey: function(value) { + var key, + map = this.map; + + for (key in map) { + + + if (map.hasOwnProperty(key) && map[key].value === value) { + return key; + } + } + return undefined; + }, + + + clone: function() { + var newCache = new this.self(this.initialConfig), + map = this.map, + key; + + newCache.suspendEvents(); + for (key in map) { + if (map.hasOwnProperty(key)) { + newCache.add(key, map[key].value); + } + } + newCache.resumeEvents(); + return newCache; + }, + + + prune: function() { + var me = this, + purgeCount = me.maxSize ? (me.length - me.maxSize) : 0; + + if (purgeCount > 0) { + for (; me.first && purgeCount; purgeCount--) { + me.removeAtKey(me.first.key); + } + } + } + + + + + +}); + + +Ext.define('Ext.data.PageMap', { + extend: Ext.util.LruCache , + + + clear: function(initial) { + var me = this; + me.pageMapGeneration = (me.pageMapGeneration || 0) + 1; + me.callParent(arguments); + }, + + forEach: function(fn, scope) { + var me = this, + pageNumbers = Ext.Object.getKeys(me.map), + pageCount = pageNumbers.length, + i, j, + pageNumber, + page, + pageSize; + + for (i = 0; i < pageCount; i++) { + pageNumbers[i] = Number(pageNumbers[i]); + } + Ext.Array.sort(pageNumbers); + scope = scope || me; + for (i = 0; i < pageCount; i++) { + pageNumber = pageNumbers[i]; + page = me.getPage(pageNumber); + pageSize = page.length; + for (j = 0; j < pageSize; j++) { + if (fn.call(scope, page[j], (pageNumber - 1) * me.pageSize + j) === false) { + return; + } + } + } + }, + + + findBy: function(fn, scope) { + var me = this, + result = null; + + scope = scope || me; + me.forEach(function(rec, index) { + if (fn.call(scope, rec, index)) { + result = rec; + return false; + } + }); + return result; + }, + + + findIndexBy: function(fn, scope) { + var me = this, + result = -1; + + scope = scope || me; + me.forEach(function(rec, index) { + if (fn.call(scope, rec)) { + result = index; + return false; + } + }); + return result; + }, + + getPageFromRecordIndex: function() { + return Ext.data.Store.prototype.getPageFromRecordIndex.apply(this, arguments); + }, + + addAll: function(records) { + this.addPage(1, records); + }, + + addPage: function(pageNumber, records) { + var me = this, + lastPage = pageNumber + Math.floor((records.length - 1) / me.pageSize), + startIdx, + page; + + + + for (startIdx = 0; pageNumber <= lastPage; pageNumber++, startIdx += me.pageSize) { + page = Ext.Array.slice(records, startIdx, startIdx + me.pageSize); + me.add(pageNumber, page); + me.fireEvent('pageAdded', pageNumber, page); + } + }, + + getCount: function() { + var result = this.callParent(); + if (result) { + result = (result - 1) * this.pageSize + this.last.value.length; + } + return result; + }, + + indexOf: function(record) { + return record ? record.index : -1; + }, + + insert: function() { + }, + + remove: function() { + }, + + removeAt: function() { + }, + + getPage: function(pageNumber) { + return this.get(pageNumber); + }, + + hasRange: function(start, end) { + var pageNumber = this.getPageFromRecordIndex(start), + endPageNumber = this.getPageFromRecordIndex(end); + + for (; pageNumber <= endPageNumber; pageNumber++) { + if (!this.hasPage(pageNumber)) { + return false; + } + } + return true; + }, + + hasPage: function(pageNumber) { + + return !!this.get(pageNumber); + }, + + getAt: function(index) { + return this.getRange(index, index)[0]; + }, + + getRange: function(start, end) { + if (!this.hasRange(start, end)) { + Ext.Error.raise('PageMap asked for range which it does not have'); + } + var me = this, + startPageNumber = me.getPageFromRecordIndex(start), + endPageNumber = me.getPageFromRecordIndex(end), + dataStart = (startPageNumber - 1) * me.pageSize, + dataEnd = (endPageNumber * me.pageSize) - 1, + pageNumber = startPageNumber, + result = [], + sliceBegin, sliceEnd, doSlice, + i = 0, len; + + for (; pageNumber <= endPageNumber; pageNumber++) { + + + if (pageNumber == startPageNumber) { + sliceBegin = start - dataStart; + doSlice = true; + } else { + sliceBegin = 0; + doSlice = false; + } + if (pageNumber == endPageNumber) { + sliceEnd = me.pageSize - (dataEnd - end); + doSlice = true; + } + + + if (doSlice) { + Ext.Array.push(result, Ext.Array.slice(me.getPage(pageNumber), sliceBegin, sliceEnd)); + } else { + Ext.Array.push(result, me.getPage(pageNumber)); + } + } + + + for (len = result.length; i < len; i++) { + result[i].index = start++; + } + return result; + } +}); + + +Ext.define('Ext.data.Group', { + + extend: Ext.util.Observable , + + key: undefined, + + dirty: true, + + constructor: function(){ + this.callParent(arguments); + this.records = []; + }, + + contains: function(record){ + return Ext.Array.indexOf(this.records, record) !== -1; + }, + + add: function(records) { + Ext.Array.push(this.records, records); + this.dirty = true; + }, + + remove: function(records) { + if (!Ext.isArray(records)) { + records = [records]; + } + + var len = records.length, + i; + + for (i = 0; i < len; ++i) { + Ext.Array.remove(this.records, records[i]); + } + this.dirty = true; + }, + + isDirty: function(){ + return this.dirty; + }, + + hasAggregate: function(){ + return !!this.aggregate; + }, + + setDirty: function(){ + this.dirty = true; + }, + + commit: function(){ + this.dirty = false; + }, + + isCollapsed: function(){ + return this.collapsed; + }, + + getAggregateRecord: function(forceNew){ + var me = this, + Model; + + if (forceNew === true || me.dirty || !me.aggregate) { + Model = me.store.model; + me.aggregate = new Model(); + me.aggregate.isSummary = true; + } + return me.aggregate; + } + +}); + + +Ext.define('Ext.data.Store', { + extend: Ext.data.AbstractStore , + + alias: 'store.store', + + + + + + + + + + + + + + + + + + + + + + remoteSort: false, + + + remoteFilter: false, + + + remoteGroup : false, + + + + + + + + + groupField: undefined, + + + groupDir: "ASC", + + + trailingBufferZone: 25, + + + leadingBufferZone: 200, + + + pageSize: undefined, + + + currentPage: 1, + + + clearOnPageLoad: true, + + + loading: false, + + + sortOnFilter: true, + + + buffered: false, + + + purgePageCount: 5, + + + clearRemovedOnLoad: true, + + defaultPageSize: 25, + + + defaultViewSize: 100, + + + addRecordsOptions: { + addRecords: true + }, + + statics: { + recordIdFn: function(record) { + return record.internalId; + }, + recordIndexFn: function(record) { + return record.index; + }, + grouperIdFn: function(grouper) { + return grouper.id || grouper.property; + }, + groupIdFn: function(group) { + return group.key; + } + }, + + + constructor: function(config) { + + config = Ext.apply({}, config); + + var me = this, + groupers = config.groupers || me.groupers, + groupField = config.groupField || me.groupField, + proxy, + data; + + + + + + data = config.data || me.data; + + if (data) { + me.inlineData = data; + delete config.data; + } + + if (!groupers && groupField) { + groupers = [{ + property : groupField, + direction: config.groupDir || me.groupDir + }]; + + + if (config.getGroupString || (me.getGroupString !== Ext.data.Store.prototype.getGroupString)) { + groupers[0].getGroupString = function(record) { + return me.getGroupString(record); + } + } + } + delete config.groupers; + + + me.groupers = new Ext.util.MixedCollection(false, Ext.data.Store.grouperIdFn); + me.groupers.addAll(me.decodeGroupers(groupers)); + + me.groups = new Ext.util.MixedCollection(false, Ext.data.Store.groupIdFn); + + + me.callParent([config]); + + + if (me.buffered) { + me.data = new Ext.data.PageMap({ + store: me, + keyFn: Ext.data.Store.recordIdFn, + pageSize: me.pageSize, + maxSize: me.purgePageCount, + listeners: { + + + clear: me.onPageMapClear, + scope: me + } + }); + me.pageRequests = {}; + + + me.remoteSort = me.remoteGroup = me.remoteFilter = true; + + me.sortOnLoad = false; + me.filterOnLoad = false; + } else { + + me.data = new Ext.util.MixedCollection({ + getKey: Ext.data.Store.recordIdFn, + maintainIndices: true + }); + me.data.pageSize = me.pageSize; + } + + + if (me.remoteGroup) { + me.remoteSort = true; + } + + + me.sorters.insert(0, me.groupers.getRange()); + + proxy = me.proxy; + data = me.inlineData; + + + + if (!me.buffered && !me.pageSize) { + me.pageSize = me.defaultPageSize; + } + + + if (data) { + if (proxy instanceof Ext.data.proxy.Memory) { + proxy.data = data; + me.read(); + } else { + me.add.apply(me, [data]); + } + + + + if (me.sorters.items.length && !me.remoteSort) { + me.group(null, null, true); + } + + delete me.inlineData; + } + else if (me.autoLoad) { + + Ext.defer(me.load, 1, me, [ typeof me.autoLoad === 'object' ? me.autoLoad : undefined ]); + } + }, + + onBeforeSort: function() { + var groupers = this.groupers; + if (groupers.getCount() > 0) { + this.sort(groupers.items, 'prepend', false); + } + }, + + + decodeGroupers: function(groupers) { + if (!Ext.isArray(groupers)) { + if (groupers === undefined) { + groupers = []; + } else { + groupers = [groupers]; + } + } + + var length = groupers.length, + Grouper = Ext.util.Grouper, + config, i, result = []; + + for (i = 0; i < length; i++) { + config = groupers[i]; + + if (!(config instanceof Grouper)) { + if (Ext.isString(config)) { + config = { + property: config + }; + } + + config = Ext.apply({ + root : 'data', + direction: "ASC" + }, config); + + + if (config.fn) { + config.sorterFn = config.fn; + } + + + if (typeof config == 'function') { + config = { + sorterFn: config + }; + } + + + result.push(new Grouper(config)); + } else { + result.push(config); + } + } + return result; + }, + + + group: function(groupers, direction, suppressEvent) { + var me = this, + grouper, + newGroupers; + + + if (groupers) { + + + me.sorters.removeAll(me.groupers.items); + + if (Ext.isArray(groupers)) { + newGroupers = groupers; + } else if (Ext.isObject(groupers)) { + newGroupers = [groupers]; + } else if (Ext.isString(groupers)) { + grouper = me.groupers.get(groupers); + + if (!grouper) { + grouper = { + property : groupers, + direction: direction || 'ASC' + }; + newGroupers = [grouper]; + } else if (direction === undefined) { + grouper.toggle(); + } else { + grouper.setDirection(direction); + } + } + + + if (newGroupers && newGroupers.length) { + me.groupers.clear(); + me.groupers.addAll(me.decodeGroupers(newGroupers)); + } + + + me.sorters.insert(0, me.groupers.items); + } + + if (me.remoteGroup) { + if (me.buffered) { + me.data.clear(); + me.loadPage(1, { groupChange: true }); + } else { + me.load({ + scope: me, + callback: suppressEvent ? null : me.fireGroupChange + }); + } + } else { + me.doSort(me.generateComparator()); + me.constructGroups(); + if (!suppressEvent) { + me.fireGroupChange(); + } + } + }, + + getGroupField: function(){ + var first = this.groupers.first(), + group; + + if (first) { + group = first.property; + } + return group; + }, + + constructGroups: function(){ + var me = this, + data = this.data.items, + len = data.length, + groups = me.groups, + groupValue, i, group, rec; + + groups.clear(); + + if (me.isGrouped()) { + for (i = 0; i < len; ++i) { + rec = data[i]; + groupValue = me.getGroupString(rec); + group = groups.get(groupValue); + if (!group) { + group = new Ext.data.Group({ + key: groupValue, + store: me + }); + groups.add(groupValue, group); + } + group.add(rec); + } + } + }, + + + clearGrouping: function() { + var me = this, + groupers = me.groupers.items, + gLen = groupers.length, + g; + + + for (g = 0; g < gLen; g++) { + me.sorters.remove(groupers[g]); + } + me.groupers.clear(); + if (me.remoteGroup) { + if (me.buffered) { + me.data.clear(); + me.loadPage(1, { groupChange: true }); + } else { + me.load({ + scope: me, + callback: me.fireGroupChange + }); + } + } else { + me.groups.clear(); + if (me.sorters.length) { + me.sort(); + } else { + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + me.fireGroupChange(); + } + }, + + + isGrouped: function() { + return this.groupers.getCount() > 0; + }, + + + fireGroupChange: function() { + this.fireEvent('groupchange', this, this.groupers); + }, + + + getGroups: function(requestGroupString) { + var records = this.data.items, + length = records.length, + groups = [], + pointers = {}, + record, + groupStr, + group, + i; + + for (i = 0; i < length; i++) { + record = records[i]; + groupStr = this.getGroupString(record); + group = pointers[groupStr]; + + if (group === undefined) { + group = { + name: groupStr, + children: [] + }; + + groups.push(group); + pointers[groupStr] = group; + } + + group.children.push(record); + } + + return requestGroupString ? pointers[requestGroupString] : groups; + }, + + + getGroupsForGrouper: function(records, grouper) { + var length = records.length, + groups = [], + oldValue, + newValue, + record, + group, + i; + + for (i = 0; i < length; i++) { + record = records[i]; + newValue = grouper.getGroupString(record); + + if (newValue !== oldValue) { + group = { + name: newValue, + grouper: grouper, + records: [] + }; + groups.push(group); + } + + group.records.push(record); + + oldValue = newValue; + } + + return groups; + }, + + + getGroupsForGrouperIndex: function(records, grouperIndex) { + var me = this, + groupers = me.groupers, + grouper = groupers.getAt(grouperIndex), + groups = me.getGroupsForGrouper(records, grouper), + length = groups.length, + i; + + if (grouperIndex + 1 < groupers.length) { + for (i = 0; i < length; i++) { + groups[i].children = me.getGroupsForGrouperIndex(groups[i].records, grouperIndex + 1); + } + } + + for (i = 0; i < length; i++) { + groups[i].depth = grouperIndex; + } + + return groups; + }, + + + getGroupData: function(sort) { + var me = this; + if (sort !== false) { + me.sort(); + } + + return me.getGroupsForGrouperIndex(me.data.items, 0); + }, + + + getGroupString: function(instance) { + var group = this.groupers.first(); + if (group) { + return group.getGroupString(instance); + } + return ''; + }, + + + insert: function(index, records) { + var me = this, + sync = false, + i, len, record, + defaults = me.modelDefaults, + out; + + + if (!Ext.isIterable(records)) { + out = records = [records]; + } else { + out = []; + } + len = records.length; + + if (len) { + for (i = 0; i < len; i++) { + record = records[i]; + if (!record.isModel) { + record = me.createModel(record); + } + out[i] = record; + if (defaults) { + record.set(defaults); + } + + record.join(me); + sync = sync || record.phantom === true; + } + + me.data.insert(index, out); + + if (me.snapshot) { + me.snapshot.addAll(out); + } + + if (me.requireSort) { + + me.suspendEvents(); + me.sort(); + me.resumeEvents(); + } + + if (me.isGrouped()) { + me.updateGroupsOnAdd(out); + } + + me.fireEvent('add', me, out, index); + me.fireEvent('datachanged', me); + if (me.autoSync && sync && !me.autoSyncSuspended) { + me.sync(); + } + } + return out; + }, + + updateGroupsOnAdd: function(records) { + var me = this, + groups = me.groups, + len = records.length, + i, groupName, group, rec; + + for (i = 0; i < len; ++i) { + rec = records[i]; + groupName = me.getGroupString(rec); + group = groups.getByKey(groupName); + if (!group) { + group = groups.add(new Ext.data.Group({ + key: groupName, + store: me + })); + } + group.add(rec); + } + }, + + updateGroupsOnRemove: function(records) { + var me = this, + groups = me.groups, + len = records.length, + i, groupName, group, rec; + + for (i = 0; i < len; ++i) { + rec = records[i]; + groupName = me.getGroupString(rec); + group = groups.getByKey(groupName); + + if (group) { + group.remove(rec); + if (group.records.length === 0) { + groups.remove(group); + } + } + } + }, + + updateGroupsOnUpdate: function(record, modifiedFieldNames){ + var me = this, + groupField = me.getGroupField(), + groupName = me.getGroupString(record), + groups = me.groups, + len, i, items, group; + + if (modifiedFieldNames && Ext.Array.indexOf(modifiedFieldNames, groupField) !== -1) { + + + if (me.buffered) { + Ext.Error.raise({ + msg: 'Cannot move records between groups in a buffered store record' + }); + } + + + items = groups.items; + for (i = 0, len = items.length; i < len; ++i) { + group = items[i]; + if (group.contains(record)) { + group.remove(record); + break; + } + } + group = groups.getByKey(groupName); + if (!group) { + group = groups.add(new Ext.data.Group({ + key: groupName, + store: me + })); + } + group.add(record); + + + + me.data.remove(record); + me.data.insert(me.data.findInsertionIndex(record, me.generateComparator()), record); + + + for (i = 0, len = this.getCount(); i < len; i++) { + me.data.items[i].index = i; + } + + } else { + + groups.getByKey(groupName).setDirty(); + } + }, + + + add: function(arg) { + var me = this, + records, + length, isSorted; + + + + if (Ext.isArray(arg)) { + records = arg; + } else { + records = arguments; + } + + length = records.length; + isSorted = !me.remoteSort && me.sorters && me.sorters.items.length; + + + + if (isSorted && length === 1) { + return [ me.addSorted(me.createModel(records[0])) ]; + } + + + + if (isSorted) { + me.requireSort = true; + } + + records = me.insert(me.data.length, records); + delete me.requireSort; + + return records; + }, + + + addSorted: function(record) { + var me = this, + index = me.data.findInsertionIndex(record, me.generateComparator()); + + me.insert(index, record); + return record; + }, + + + createModel: function(record) { + if (!record.isModel) { + record = Ext.ModelManager.create(record, this.model); + } + + return record; + }, + + onUpdate: function(record, type, modifiedFieldNames){ + if (this.isGrouped()) { + this.updateGroupsOnUpdate(record, modifiedFieldNames); + } + }, + + + each: function(fn, scope) { + var data = this.data.items, + dLen = data.length, + record, d; + + for (d = 0; d < dLen; d++) { + record = data[d]; + if (fn.call(scope || record, record, d, dLen) === false) { + break; + } + } + }, + + + remove: function(records, isMove, silent) { + + isMove = isMove === true; + + var me = this, + sync = false, + snapshot = me.snapshot, + data = me.data, + i = 0, + length, + info = [], + allRecords = [], + indexes = [], + item, + isNotPhantom, + index, + record, + removeRange, + removeCount, + fireRemoveEvent = !silent && me.hasListeners.remove; + + + if (records.isModel) { + records = [records]; + length = 1; + } + + + else if (Ext.isIterable(records)) { + length = records.length; + } + + + + else if (typeof records === 'object') { + removeRange = true; + i = records.start; + length = records.end + 1; + removeCount = length - i; + } + + + + if (!removeRange) { + for (i = 0; i < length; ++i) { + + record = records[i]; + + + if (typeof record == 'number') { + index = record; + record = data.getAt(index); + } + + else { + index = me.indexOf(record); + } + + + if (record && index > -1) { + info.push({ + record: record, + index: index + }); + } + + + if (snapshot) { + snapshot.remove(record); + } + } + + + info = Ext.Array.sort(info, function(o1, o2) { + var index1 = o1.index, + index2 = o2.index; + + return index1 === o2.index2 ? 0 : (index1 < index2 ? -1 : 1); + }); + + + i = 0; + length = info.length; + } + + + + + for (; i < length; i++) { + if (removeRange) { + record = data.getAt(i); + index = i; + } else { + item = info[i]; + record = item.record; + index = item.index; + } + + allRecords.push(record); + indexes.push(index); + + isNotPhantom = record.phantom !== true; + + if (!isMove && isNotPhantom) { + + + + record.removedFrom = index; + me.removed.push(record); + } + + record.unjoin(me); + + + + index -= i; + sync = sync || isNotPhantom; + + + + if (!removeRange) { + data.removeAt(index); + + + if (fireRemoveEvent) { + me.fireEvent('remove', me, record, index, !!isMove); + } + } + } + + + + if (removeRange) { + data.removeRange(records.start, removeCount); + } + + if (!silent) { + me.fireEvent('bulkremove', me, allRecords, indexes, !!isMove); + me.fireEvent('datachanged', me); + } + if (!isMove && me.autoSync && sync && !me.autoSyncSuspended) { + me.sync(); + } + }, + + + removeAt: function(index, count) { + var me = this, + storeCount = me.getCount(); + + if (index <= storeCount) { + if (arguments.length === 1) { + me.remove([ index ]); + } else if (count) { + me.remove({ + start: index, + end: Math.min(index + count, storeCount) - 1 + }); + } + } + }, + + + removeAll: function(silent) { + var me = this, + snapshot = me.snapshot, + data = me.data; + + if (snapshot) { + snapshot.removeAll(data.getRange()); + } + + if (me.buffered) { + if (data) { + if (silent) { + me.suspendEvent('clear'); + } + data.clear(); + if (silent) { + me.resumeEvent('clear'); + } + } + } + + else { + + + me.remove({ + start: 0, + end: me.getCount() - 1 + }, false, silent); + if (silent !== true) { + me.fireEvent('clear', me); + } + } + }, + + + load: function(options) { + var me = this; + + options = options || {}; + + if (typeof options == 'function') { + options = { + callback: options + }; + } + + options.groupers = options.groupers || me.groupers.items; + options.page = options.page || me.currentPage; + options.start = (options.start !== undefined) ? options.start : (options.page - 1) * me.pageSize; + options.limit = options.limit || me.pageSize; + options.addRecords = options.addRecords || false; + + if (me.buffered) { + options.limit = me.viewSize || me.defaultViewSize; + return me.loadToPrefetch(options); + } + return me.callParent([options]); + }, + + reload: function(options) { + var me = this, + startIdx, + endIdx, + startPage, + endPage, + i, + waitForReload, + bufferZone, + records, + count = me.getCount(); + + if (!options) { + options = {}; + } + + + + if (me.buffered) { + + + delete me.totalCount; + + waitForReload = function() { + if (me.rangeCached(startIdx, endIdx)) { + me.loading = false; + me.data.un('pageAdded', waitForReload); + records = me.data.getRange(startIdx, endIdx); + me.fireEvent('load', me, records, true); + } + }; + bufferZone = Math.ceil((me.leadingBufferZone + me.trailingBufferZone) / 2); + + + startIdx = options.start || (count ? me.getAt(0).index : 0); + endIdx = startIdx + (options.count || (count ? count : me.pageSize)) - 1; + + + startPage = me.getPageFromRecordIndex(Math.max(startIdx - bufferZone, 0)); + endPage = me.getPageFromRecordIndex(endIdx + bufferZone); + + + me.data.clear(true); + + if (me.fireEvent('beforeload', me, options) !== false) { + me.loading = true; + + + + me.data.on('pageAdded', waitForReload); + + + for (i = startPage; i <= endPage; i++) { + me.prefetchPage(i, options); + } + } + } else { + return me.callParent(arguments); + } + }, + + + onProxyLoad: function(operation) { + var me = this, + resultSet = operation.getResultSet(), + records = operation.getRecords(), + successful = operation.wasSuccessful(); + + if (me.isDestroyed) { + return; + } + + if (resultSet) { + me.totalCount = resultSet.total; + } + + + + + me.loading = false; + if (successful) { + me.loadRecords(records, operation); + } + + if (me.hasListeners.load) { + me.fireEvent('load', me, records, successful); + } + + + + if (me.hasListeners.read) { + me.fireEvent('read', me, records, successful); + } + + + Ext.callback(operation.callback, operation.scope || me, [records, operation, successful]); + }, + + + getNewRecords: function() { + return this.data.filterBy(this.filterNew).items; + }, + + + getUpdatedRecords: function() { + return this.data.filterBy(this.filterUpdated).items; + }, + + + filter: function(filters, value) { + if (Ext.isString(filters)) { + filters = { + property: filters, + value: value + }; + } + + var me = this, + decoded = me.decodeFilters(filters), + i, + doLocalSort = me.sorters.length && me.sortOnFilter && !me.remoteSort, + length = decoded.length; + + + for (i = 0; i < length; i++) { + me.filters.replace(decoded[i]); + } + + filters = me.filters.items; + + + + + if (filters.length) { + if (me.remoteFilter) { + + delete me.totalCount; + + + + + if (me.buffered) { + me.data.clear(); + me.loadPage(1); + } else { + + me.currentPage = 1; + + me.load(); + } + } else { + + me.snapshot = me.snapshot || me.data.clone(); + + + me.data = me.snapshot.filter(filters); + + + me.constructGroups(); + + if (doLocalSort) { + me.sort(); + } else { + + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + } + me.fireEvent('filterchange', me, filters); + } + }, + + + clearFilter: function(suppressEvent) { + var me = this; + + me.filters.clear(); + + if (me.remoteFilter) { + + + if (suppressEvent) { + return; + } + + + delete me.totalCount; + + + + + if (me.buffered) { + me.data.clear(); + me.loadPage(1); + } else { + + me.currentPage = 1; + me.load(); + } + } else if (me.isFiltered()) { + me.data = me.snapshot; + delete me.snapshot; + + + me.constructGroups(); + + if (suppressEvent !== true) { + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + } + me.fireEvent('filterchange', me, me.filters.items); + }, + + + removeFilter: function(toRemove, applyFilters) { + var me = this; + + if (!me.remoteFilter && me.isFiltered()) { + if (toRemove instanceof Ext.util.Filter) { + me.filters.remove(toRemove); + } else { + me.filters.removeAtKey(toRemove); + } + + if (applyFilters !== false) { + + + if (me.filters.length) { + me.filter(); + } + + + else { + me.clearFilter(); + } + } else { + me.fireEvent('filterchange', me, me.filters.items); + } + } + }, + + + addFilter: function(filters, applyFilters) { + var me = this, + decoded, + i, + length; + + + decoded = me.decodeFilters(filters); + length = decoded.length; + for (i = 0; i < length; i++) { + me.filters.replace(decoded[i]); + } + + if (applyFilters !== false && me.filters.length) { + me.filter(); + } else { + me.fireEvent('filterchange', me, me.filters.items); + } + }, + + + isFiltered: function() { + var snapshot = this.snapshot; + return !!(snapshot && snapshot !== this.data); + }, + + + filterBy: function(fn, scope) { + var me = this; + + me.snapshot = me.snapshot || me.data.clone(); + me.data = me.queryBy(fn, scope || me); + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + }, + + + queryBy: function(fn, scope) { + var me = this; + return (me.snapshot || me.data).filterBy(fn, scope || me); + }, + + + query: function(property, value, anyMatch, caseSensitive, exactMatch) { + var me = this, + queryFn = me.createFilterFn(property, value, anyMatch, caseSensitive, exactMatch), + results = me.queryBy(queryFn); + + + if(!results) { + results = new Ext.util.MixedCollection(); + } + + return results; + }, + + + loadData: function(data, append) { + var length = data.length, + newData = [], + i; + + + for (i = 0; i < length; i++) { + newData.push(this.createModel(data[i])); + } + + this.loadRecords(newData, append ? this.addRecordsOptions : undefined); + }, + + + loadRawData : function(data, append) { + var me = this, + result = me.proxy.reader.read(data), + records = result.records; + + if (result.success) { + me.totalCount = result.total; + me.loadRecords(records, append ? me.addRecordsOptions : undefined); + } + }, + + + loadRecords: function(records, options) { + var me = this, + i = 0, + length = records.length, + start, + addRecords, + snapshot = me.snapshot; + + if (options) { + start = options.start; + addRecords = options.addRecords; + } + + if (!addRecords) { + delete me.snapshot; + me.clearData(true); + } else if (snapshot) { + snapshot.addAll(records); + } + + me.data.addAll(records); + + if (start !== undefined) { + for (; i < length; i++) { + records[i].index = start + i; + records[i].join(me); + } + } else { + for (; i < length; i++) { + records[i].join(me); + } + } + + + me.suspendEvents(); + + if (me.filterOnLoad && !me.remoteFilter) { + me.filter(); + } + + if (me.sortOnLoad && !me.remoteSort) { + me.sort(undefined, undefined, undefined, true); + } + + me.resumeEvents(); + if (me.isGrouped()) { + me.constructGroups(); + } + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + }, + + + + loadPage: function(page, options) { + var me = this; + + me.currentPage = page; + + + options = Ext.apply({ + page: page, + start: (page - 1) * me.pageSize, + limit: me.pageSize, + addRecords: !me.clearOnPageLoad + }, options); + + if (me.buffered) { + options.limit = me.viewSize || me.defaultViewSize; + return me.loadToPrefetch(options); + } + me.read(options); + }, + + + nextPage: function(options) { + this.loadPage(this.currentPage + 1, options); + }, + + + previousPage: function(options) { + this.loadPage(this.currentPage - 1, options); + }, + + + clearData: function(isLoad) { + var me = this, + records, + i; + + + + + + + if (!me.buffered && me.data) { + records = me.data.items; + i = records.length; + while (i--) { + records[i].unjoin(me); + } + } + + + if (me.data) { + me.data.clear(); + } + + if (isLoad !== true || me.clearRemovedOnLoad) { + me.removed.length = 0; + } + }, + + loadToPrefetch: function(options) { + var me = this, + i, + records, + dataSetSize, + prefetchOptions = options, + + + startIdx = options.start, + endIdx = options.start + options.limit - 1, + + + loadEndIdx = Math.min(endIdx, options.start + (me.viewSize || options.limit) - 1), + + + + startPage = me.getPageFromRecordIndex(Math.max(startIdx - me.trailingBufferZone, 0)), + endPage = me.getPageFromRecordIndex(endIdx + me.leadingBufferZone), + + + waitForRequestedRange = function() { + if (me.rangeCached(startIdx, loadEndIdx)) { + me.loading = false; + records = me.data.getRange(startIdx, loadEndIdx); + me.data.un('pageAdded', waitForRequestedRange); + + + if (me.hasListeners.guaranteedrange) { + me.guaranteeRange(startIdx, loadEndIdx, options.callback, options.scope); + } + if (options.callback) { + options.callback.call(options.scope||me, records, startIdx, endIdx, options); + } + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + me.fireEvent('load', me, records, true); + if (options.groupChange) { + me.fireGroupChange(); + } + } + }; + + if (me.fireEvent('beforeload', me, options) !== false) { + + + delete me.totalCount; + + me.loading = true; + + + + if (options.callback) { + prefetchOptions = Ext.apply({}, options); + delete prefetchOptions.callback; + } + + + + + + me.on('prefetch', function(store, records, successful, operation) { + + if (successful) { + + + if ((dataSetSize = me.getTotalCount())) { + + + me.data.on('pageAdded', waitForRequestedRange); + + + loadEndIdx = Math.min(loadEndIdx, dataSetSize - 1); + + + endPage = me.getPageFromRecordIndex(Math.min(loadEndIdx + me.leadingBufferZone, dataSetSize - 1)); + + for (i = startPage + 1; i <= endPage; ++i) { + me.prefetchPage(i, prefetchOptions); + } + } else { + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + me.fireEvent('load', me, records, true); + } + } + + else { + me.fireEvent('load', me, records, false); + } + }, null, {single: true}); + + me.prefetchPage(startPage, prefetchOptions); + } + }, + + + + prefetch: function(options) { + var me = this, + pageSize = me.pageSize, + proxy, + operation; + + + if (pageSize) { + if (me.lastPageSize && pageSize != me.lastPageSize) { + Ext.Error.raise("pageSize cannot be dynamically altered"); + } + if (!me.data.pageSize) { + me.data.pageSize = pageSize; + } + } + + + else { + me.pageSize = me.data.pageSize = pageSize = options.limit; + } + + + me.lastPageSize = pageSize; + + + if (!options.page) { + options.page = me.getPageFromRecordIndex(options.start); + options.start = (options.page - 1) * pageSize; + options.limit = Math.ceil(options.limit / pageSize) * pageSize; + } + + + if (!me.pageRequests[options.page]) { + + + options = Ext.apply({ + action : 'read', + filters: me.filters.items, + sorters: me.sorters.items, + groupers: me.groupers.items, + + + + pageMapGeneration: me.data.pageMapGeneration + }, options); + + operation = new Ext.data.Operation(options); + + if (me.fireEvent('beforeprefetch', me, operation) !== false) { + proxy = me.proxy; + me.pageRequests[options.page] = proxy.read(operation, me.onProxyPrefetch, me); + if (proxy.isSynchronous) { + delete me.pageRequests[options.page]; + } + } + } + + return me; + }, + + + onPageMapClear: function() { + var me = this, + loadingFlag = me.wasLoading, + reqs = me.pageRequests, + req, + page; + + + if (me.data.events.pageadded) { + me.data.events.pageadded.clearListeners(); + } + + + + + me.loading = true; + me.totalCount = 0; + + + for (page in reqs) { + if (reqs.hasOwnProperty(page)) { + req = reqs[page]; + delete reqs[page]; + delete req.callback; + } + } + + + me.fireEvent('clear', me); + + + + me.loading = loadingFlag; + }, + + + prefetchPage: function(page, options) { + var me = this, + pageSize = me.pageSize || me.defaultPageSize, + start = (page - 1) * me.pageSize, + total = me.totalCount; + + + if (total !== undefined && me.getCount() === total) { + return; + } + + + me.prefetch(Ext.applyIf({ + page : page, + start : start, + limit : pageSize + }, options)); + }, + + + onProxyPrefetch: function(operation) { + var me = this, + resultSet = operation.getResultSet(), + records = operation.getRecords(), + successful = operation.wasSuccessful(), + page = operation.page; + + + + if (operation.pageMapGeneration === me.data.pageMapGeneration) { + + if (resultSet) { + me.totalCount = resultSet.total; + me.fireEvent('totalcountchange', me.totalCount); + } + + + if (page !== undefined) { + delete me.pageRequests[page]; + } + + + me.loading = false; + me.fireEvent('prefetch', me, records, successful, operation); + + + + if (successful) { + me.cachePage(records, operation.page); + } + + + Ext.callback(operation.callback, operation.scope || me, [records, operation, successful]); + } + }, + + + cachePage: function(records, page) { + var me = this, + len = records.length, i; + + if (!Ext.isDefined(me.totalCount)) { + me.totalCount = records.length; + me.fireEvent('totalcountchange', me.totalCount); + } + + + for (i = 0; i < len; i++) { + records[i].join(me); + } + me.data.addPage(page, records); + }, + + + rangeCached: function(start, end) { + return this.data && this.data.hasRange(start, end); + }, + + + pageCached: function(page) { + return this.data && this.data.hasPage(page); + }, + + + pagePending: function(page) { + return !!this.pageRequests[page]; + }, + + + rangeSatisfied: function(start, end) { + return this.rangeCached(start, end); + }, + + + getPageFromRecordIndex: function(index) { + return Math.floor(index / this.pageSize) + 1; + }, + + + onGuaranteedRange: function(options) { + var me = this, + totalCount = me.getTotalCount(), + start = options.prefetchStart, + end = (options.prefetchEnd > totalCount - 1) ? totalCount - 1 : options.prefetchEnd, + range; + + end = Math.max(0, end); + + + range = me.data.getRange(start, end); + if (options.fireEvent !== false) { + me.fireEvent('guaranteedrange', range, start, end, options); + } + if (options.callback) { + options.callback.call(options.scope || me, range, start, end, options); + } + }, + + + guaranteeRange: function(start, end, callback, scope, options) { + options = Ext.apply({ + callback: callback, + scope: scope + }, options); + this.getRange(start, end, options) + }, + + + prefetchRange: function(start, end) { + var me = this, + startPage, endPage, page; + if (!me.rangeCached(start, end)) { + startPage = me.getPageFromRecordIndex(start); + endPage = me.getPageFromRecordIndex(end); + + + + + me.data.maxSize = me.purgePageCount ? (endPage - startPage + 1) + me.purgePageCount : 0; + + + for (page = startPage; page <= endPage; page++) { + if (!me.pageCached(page)) { + me.prefetchPage(page); + } + } + } + }, + + primeCache: function(start, end, direction) { + var me = this; + + + if (direction === -1) { + start = Math.max(start - me.leadingBufferZone, 0); + end = Math.min(end + me.trailingBufferZone, me.totalCount - 1); + } + + else if (direction === 1) { + start = Math.max(Math.min(start - me.trailingBufferZone, me.totalCount - me.pageSize), 0); + end = Math.min(end + me.leadingBufferZone, me.totalCount - 1); + } + + else { + start = Math.min(Math.max(Math.floor(start - ((me.leadingBufferZone + me.trailingBufferZone) / 2)), 0), me.totalCount - me.pageSize); + end = Math.min(Math.max(Math.ceil (end + ((me.leadingBufferZone + me.trailingBufferZone) / 2)), 0), me.totalCount - 1); + } + me.prefetchRange(start, end); + }, + + + + sort: function() { + var me = this; + + if (me.buffered && me.remoteSort) { + me.data.clear(); + } + return me.callParent(arguments); + }, + + + + + doSort: function(sorterFn) { + var me = this, + range, + ln, + i; + + if (me.remoteSort) { + + + + + if (me.buffered) { + me.data.clear(); + me.loadPage(1); + } else { + + me.load(); + } + } else { + me.data.sortBy(sorterFn); + if (!me.buffered) { + range = me.getRange(); + ln = range.length; + for (i = 0; i < ln; i++) { + range[i].index = i; + } + } + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + }, + + + find: function(property, value, start, anyMatch, caseSensitive, exactMatch) { + var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, exactMatch); + return fn ? this.data.findIndexBy(fn, null, start) : -1; + }, + + + findRecord: function() { + var me = this, + index = me.find.apply(me, arguments); + return index !== -1 ? me.getAt(index) : null; + }, + + + createFilterFn: function(property, value, anyMatch, caseSensitive, exactMatch) { + if (Ext.isEmpty(value)) { + return false; + } + value = this.data.createValueMatcher(value, anyMatch, caseSensitive, exactMatch); + return function(r) { + return value.test(r.data[property]); + }; + }, + + + findExact: function(property, value, start) { + return this.data.findIndexBy(function(rec) { + return rec.isEqual(rec.get(property), value); + }, + this, start); + }, + + + findBy: function(fn, scope, start) { + return this.data.findIndexBy(fn, scope, start); + }, + + + collect: function(dataIndex, allowNull, bypassFilter) { + var me = this, + data = (bypassFilter === true && me.snapshot) ? me.snapshot : me.data; + + return data.collect(dataIndex, 'data', allowNull); + }, + + + getCount: function() { + return this.data.getCount(); + }, + + + getTotalCount: function() { + return this.totalCount || 0; + }, + + + getAt: function(index) { + return this.data.getAt(index); + }, + + + getRange: function(start, end, options) { + + var me = this, + requiredStart, + requiredEnd, + maxIndex = me.totalCount - 1, + lastRequestStart = me.lastRequestStart, + pageAddHandler, + result; + + options = Ext.apply({ + prefetchStart: start, + prefetchEnd: end + }, options); + + if (me.buffered) { + + end = (end >= me.totalCount) ? maxIndex : end; + + + + + + requiredStart = start === 0 ? 0 : start - 1; + requiredEnd = end === maxIndex ? end : end + 1; + + + me.lastRequestStart = start; + + + if (me.rangeCached(requiredStart, requiredEnd)) { + me.onGuaranteedRange(options); + result = me.data.getRange(start, end); + } + + else { + + me.fireEvent('cachemiss', me, start, end); + + + pageAddHandler = function(page, records) { + if (me.rangeCached(requiredStart, requiredEnd)) { + + me.fireEvent('cachefilled', me, start, end); + me.data.un('pageAdded', pageAddHandler); + me.onGuaranteedRange(options); + } + }; + me.data.on('pageAdded', pageAddHandler); + + + + + me.prefetchRange(start, end); + + } + + me.primeCache(start, end, start < lastRequestStart ? -1 : 1); + } else { + result = me.data.getRange(start, end); + + + if (options.callback) { + options.callback.call(options.scope || me, result, start, end, options) + } + } + + return result; + }, + + + getById: function(id) { + var result = (this.snapshot || this.data).findBy(function(record) { + return record.getId() === id; + }); + return result; + }, + + + indexOf: function(record) { + return this.data.indexOf(record); + }, + + + indexOfTotal: function(record) { + var index = record.index; + if (index || index === 0) { + return index; + } + return this.indexOf(record); + }, + + + indexOfId: function(id) { + return this.indexOf(this.getById(id)); + }, + + + + + first: function(grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(function(records) { + return records.length ? records[0] : undefined; + }, me, true); + } else { + return me.data.first(); + } + }, + + + last: function(grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(function(records) { + var len = records.length; + return len ? records[len - 1] : undefined; + }, me, true); + } else { + return me.data.last(); + } + }, + + + sum: function(field, grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(me.getSum, me, true, [field]); + } else { + return me.getSum(me.data.items, field); + } + }, + + + getSum: function(records, field) { + var total = 0, + i = 0, + len = records.length; + + for (; i < len; ++i) { + total += records[i].get(field); + } + + return total; + }, + + + count: function(grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(function(records) { + return records.length; + }, me, true); + } else { + return me.getCount(); + } + }, + + + min: function(field, grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(me.getMin, me, true, [field]); + } else { + return me.getMin(me.data.items, field); + } + }, + + + getMin: function(records, field) { + var i = 1, + len = records.length, + value, min; + + if (len > 0) { + min = records[0].get(field); + } + + for (; i < len; ++i) { + value = records[i].get(field); + if (value < min) { + min = value; + } + } + return min; + }, + + + max: function(field, grouped) { + var me = this; + + if (grouped && me.isGrouped()) { + return me.aggregate(me.getMax, me, true, [field]); + } else { + return me.getMax(me.data.items, field); + } + }, + + + getMax: function(records, field) { + var i = 1, + len = records.length, + value, + max; + + if (len > 0) { + max = records[0].get(field); + } + + for (; i < len; ++i) { + value = records[i].get(field); + if (value > max) { + max = value; + } + } + return max; + }, + + + average: function(field, grouped) { + var me = this; + if (grouped && me.isGrouped()) { + return me.aggregate(me.getAverage, me, true, [field]); + } else { + return me.getAverage(me.data.items, field); + } + }, + + + getAverage: function(records, field) { + var i = 0, + len = records.length, + sum = 0; + + if (records.length > 0) { + for (; i < len; ++i) { + sum += records[i].get(field); + } + return sum / len; + } + return 0; + }, + + + aggregate: function(fn, scope, grouped, args) { + args = args || []; + if (grouped && this.isGrouped()) { + var groups = this.getGroups(), + len = groups.length, + out = {}, + group, i; + + for (i = 0; i < len; ++i) { + group = groups[i]; + out[group.name] = this.getAggregate(fn, scope || this, group.children, args); + } + return out; + } else { + return this.getAggregate(fn, scope, this.data.items, args); + } + }, + + getAggregate: function(fn, scope, records, args){ + args = args || []; + return fn.apply(scope || this, [records].concat(args)); + }, + + onIdChanged: function(rec, oldId, newId, oldInternalId){ + var snapshot = this.snapshot; + if (snapshot) { + snapshot.updateKey(oldInternalId, newId); + } + this.data.updateKey(oldInternalId, newId); + this.callParent(arguments); + }, + + + commitChanges : function(){ + var me = this, + recs = me.getModifiedRecords(), + len = recs.length, + i = 0; + + for (; i < len; i++){ + recs[i].commit(); + } + + + + me.removed.length = 0; + }, + + filterNewOnly: function(item){ + return item.phantom === true; + }, + + + + + getRejectRecords: function() { + + return Ext.Array.push(this.data.filterBy(this.filterNewOnly).items, this.getUpdatedRecords()); + }, + + + rejectChanges : function() { + var me = this, + recs = me.getRejectRecords(), + len = recs.length, + i = 0, + rec; + + for (; i < len; i++) { + rec = recs[i]; + rec.reject(); + if (rec.phantom) { + me.remove(rec); + } + } + + + recs = me.removed; + len = recs.length; + for (i = 0; i < len; i++) { + rec = recs[i]; + me.insert(rec.removedFrom || 0, rec); + rec.reject(); + } + + + + me.removed.length = 0; + } +}, function() { + + + + Ext.regStore('ext-empty-store', {fields: [], proxy: 'memory'}); +}); + + +Ext.define('Ext.data.reader.Array', { + extend: Ext.data.reader.Json , + alternateClassName: 'Ext.data.ArrayReader', + alias : 'reader.array', + + + totalProperty: undefined, + successProperty: undefined, + + + createFieldAccessExpression: function(field, fieldVarName, dataName) { + + + var index = (field.mapping == null) ? field.originalIndex : field.mapping, + result; + + if (typeof index === 'function') { + result = fieldVarName + '.mapping(' + dataName + ', this)'; + } else { + if (isNaN(index)) { + index = '"' + index + '"'; + } + result = dataName + "[" + index + "]"; + } + return result; + } +}); + + +Ext.define('Ext.data.ArrayStore', { + extend: Ext.data.Store , + alias: 'store.array', + + + + + + constructor: function(config) { + config = Ext.apply({ + proxy: { + type: 'memory', + reader: 'array' + } + }, config); + this.callParent([config]); + }, + + loadData: function(data, append) { + if (this.expandData === true) { + var r = [], + i = 0, + ln = data.length; + + for (; i < ln; i++) { + r[r.length] = [data[i]]; + } + + data = r; + } + + this.callParent([data, append]); + } +}, function() { + + Ext.data.SimpleStore = Ext.data.ArrayStore; + +}); + + +Ext.define('Ext.data.Batch', { + mixins: { + observable: Ext.util.Observable + }, + + + autoStart: false, + + + pauseOnException: false, + + + current: -1, + + + total: 0, + + + isRunning: false, + + + isComplete: false, + + + hasException: false, + + + constructor: function(config) { + var me = this; + + + + + + + + me.mixins.observable.constructor.call(me, config); + + + me.operations = []; + + + me.exceptions = []; + }, + + + add: function(operation) { + this.total++; + + operation.setBatch(this); + + this.operations.push(operation); + + return this; + }, + + + start: function( index) { + var me = this; + + if (me.isRunning) { + return me; + } + + me.exceptions.length = 0; + me.hasException = false; + me.isRunning = true; + + return me.runOperation(Ext.isDefined(index) ? index : me.current + 1); + }, + + + retry: function() { + return this.start(this.current); + }, + + + runNextOperation: function() { + return this.runOperation(this.current + 1); + }, + + + pause: function() { + this.isRunning = false; + return this; + }, + + + runOperation: function(index) { + var me = this, + operations = me.operations, + operation = operations[index], + onProxyReturn; + + if (operation === undefined) { + me.isRunning = false; + me.isComplete = true; + me.fireEvent('complete', me, operations[operations.length - 1]); + } else { + me.current = index; + + onProxyReturn = function(operation) { + var hasException = operation.hasException(); + + if (hasException) { + me.hasException = true; + me.exceptions.push(operation); + me.fireEvent('exception', me, operation); + } + + if (hasException && me.pauseOnException) { + me.pause(); + } else { + operation.setCompleted(); + me.fireEvent('operationcomplete', me, operation); + me.runNextOperation(); + } + }; + + operation.setStarted(); + + me.proxy[operation.action](operation, onProxyReturn, me); + } + + return me; + } +}); + + +Ext.define('Ext.data.BufferStore', { + extend: Ext.data.Store , + alias: 'store.buffer', + sortOnLoad: false, + filterOnLoad: false, + + constructor: function() { + Ext.Error.raise('The BufferStore class has been deprecated. Instead, specify the buffered config option on Ext.data.Store'); + } +}); + + + +Ext.define('Ext.direct.Manager', { + singleton: true, + + + + + + + mixins: { + observable: Ext.util.Observable + }, + + + exceptions: { + TRANSPORT: 'xhr', + PARSE: 'parse', + DATA: 'data', + LOGIN: 'login', + SERVER: 'exception' + }, + + constructor: function() { + var me = this; + + me.addEvents( + + 'event', + + + 'exception' + ); + + me.transactions = new Ext.util.MixedCollection(); + me.providers = new Ext.util.MixedCollection(); + + me.mixins.observable.constructor.call(me); + }, + + + addProvider: function(provider) { + var me = this, + args = arguments, + relayers = me.relayers || (me.relayers = {}), + i, len; + + if (args.length > 1) { + for (i = 0, len = args.length; i < len; ++i) { + me.addProvider(args[i]); + } + + return; + } + + + if (!provider.isProvider) { + provider = Ext.create('direct.' + provider.type + 'provider', provider); + } + + me.providers.add(provider); + provider.on('data', me.onProviderData, me); + + if (provider.relayedEvents) { + relayers[provider.id] = me.relayEvents(provider, provider.relayedEvents); + } + + if (!provider.isConnected()) { + provider.connect(); + } + + return provider; + }, + + + getProvider: function(id) { + return id.isProvider ? id : this.providers.get(id); + }, + + + removeProvider: function(provider) { + var me = this, + providers = me.providers, + relayers = me.relayers, + id; + + provider = provider.isProvider ? provider : providers.get(provider); + + if (provider) { + provider.un('data', me.onProviderData, me); + + id = provider.id; + + if (relayers[id]) { + relayers[id].destroy(); + delete relayers[id]; + } + + providers.remove(provider); + + return provider; + } + + return null; + }, + + + addTransaction: function(transaction) { + this.transactions.add(transaction); + + return transaction; + }, + + + removeTransaction: function(transaction) { + var me = this; + + transaction = me.getTransaction(transaction); + me.transactions.remove(transaction); + + return transaction; + }, + + + getTransaction: function(transaction) { + return typeof transaction === 'object' ? transaction : this.transactions.get(transaction); + }, + + onProviderData: function(provider, event) { + var me = this, + i, len; + + if (Ext.isArray(event)) { + for (i = 0, len = event.length; i < len; ++i) { + me.onProviderData(provider, event[i]); + } + + return; + } + + if (event.name && event.name != 'event' && event.name != 'exception') { + me.fireEvent(event.name, event); + } + else if (event.status === false) { + me.fireEvent('exception', event); + } + + me.fireEvent('event', event, provider); + }, + + + parseMethod: function(fn) { + if (Ext.isString(fn)) { + var parts = fn.split('.'), + i = 0, + len = parts.length, + current = Ext.global; + + while (current && i < len) { + current = current[parts[i]]; + ++i; + } + + fn = Ext.isFunction(current) ? current : null; + } + + return fn || null; + } + +}, function() { + + Ext.Direct = Ext.direct.Manager; +}); + + +Ext.define('Ext.data.proxy.Direct', { + + + extend: Ext.data.proxy.Server , + alternateClassName: 'Ext.data.DirectProxy', + + alias: 'proxy.direct', + + + + + + + paramOrder: undefined, + + + paramsAsHash: true, + + + directFn : undefined, + + + + + + + paramOrderRe: /[\s,|]/, + + constructor: function(config){ + var me = this, + paramOrder; + + me.callParent(arguments); + + paramOrder = me.paramOrder; + if (Ext.isString(paramOrder)) { + me.paramOrder = paramOrder.split(me.paramOrderRe); + } + }, + + resolveMethods: function() { + var me = this, + fn = me.directFn, + api = me.api, + Manager = Ext.direct.Manager, + method; + + if (fn) { + method = me.directFn = Manager.parseMethod(fn); + + if (!Ext.isFunction(method)) { + Ext.Error.raise('Cannot resolve directFn ' + fn); + } + } + else if (api) { + for (fn in api) { + if (api.hasOwnProperty(fn)) { + method = api[fn]; + api[fn] = Manager.parseMethod(method); + + if (!Ext.isFunction(api[fn])) { + Ext.Error.raise('Cannot resolve Direct api ' + fn + ' method ' + method); + } + } + } + } + + me.methodsResolved = true; + }, + + doRequest: function(operation, callback, scope) { + var me = this, + writer = me.getWriter(), + request = me.buildRequest(operation), + params = request.params, + args = [], + fn, method; + + if (!me.methodsResolved) { + me.resolveMethods(); + } + + fn = me.api[request.action] || me.directFn; + + + if (operation.allowWrite()) { + request = writer.write(request); + } + + if (operation.action == 'read') { + + method = fn.directCfg.method; + args = method.getArgs(params, me.paramOrder, me.paramsAsHash); + } else { + args.push(request.jsonData); + } + + Ext.apply(request, { + args: args, + directFn: fn + }); + args.push(me.createRequestCallback(request, operation, callback, scope), me); + fn.apply(window, args); + }, + + + applyEncoding: Ext.identityFn, + + createRequestCallback: function(request, operation, callback, scope){ + var me = this; + + return function(data, event){ + me.processResponse(event.status, operation, request, event, callback, scope); + }; + }, + + + extractResponseData: function(response){ + return Ext.isDefined(response.result) ? response.result : response.data; + }, + + + setException: function(operation, response) { + operation.setException(response.message); + }, + + + buildUrl: function(){ + return ''; + } +}); + + +Ext.define('Ext.data.DirectStore', { + + + extend: Ext.data.Store , + + alias: 'store.direct', + + + + + + constructor : function(config){ + config = Ext.apply({}, config); + if (!config.proxy) { + var proxy = { + type: 'direct', + reader: { + type: 'json' + } + }; + Ext.copyTo(proxy, config, 'paramOrder,paramsAsHash,directFn,api,simpleSortMode'); + Ext.copyTo(proxy.reader, config, 'totalProperty,root,idProperty'); + config.proxy = proxy; + } + this.callParent([config]); + } +}); + + +Ext.define('Ext.data.JsonP', { + + + + singleton: true, + + + + + requestCount: 0, + + + requests: {}, + + + timeout: 30000, + + + disableCaching: true, + + + disableCachingParam: '_dc', + + + callbackKey: 'callback', + + + request: function(options) { + options = Ext.apply({}, options); + + + var me = this, + disableCaching = Ext.isDefined(options.disableCaching) ? options.disableCaching : me.disableCaching, + cacheParam = options.disableCachingParam || me.disableCachingParam, + id = ++me.requestCount, + callbackName = options.callbackName || 'callback' + id, + callbackKey = options.callbackKey || me.callbackKey, + timeout = Ext.isDefined(options.timeout) ? options.timeout : me.timeout, + params = Ext.apply({}, options.params), + url = options.url, + name = Ext.name, + request, + script; + + + + if (disableCaching && !params[cacheParam]) { + params[cacheParam] = Ext.Date.now(); + } + options.params = params; + + params[callbackKey] = name + '.data.JsonP.' + callbackName; + script = me.createScript(url, params, options); + + me.requests[id] = request = { + url: url, + params: params, + script: script, + id: id, + scope: options.scope, + success: options.success, + failure: options.failure, + callback: options.callback, + callbackKey: callbackKey, + callbackName: callbackName + }; + + if (timeout > 0) { + request.timeout = setTimeout(Ext.bind(me.handleTimeout, me, [request]), timeout); + } + + me.setupErrorHandling(request); + me[callbackName] = Ext.bind(me.handleResponse, me, [request], true); + me.loadScript(request); + return request; + }, + + + abort: function(request){ + var me = this, + requests = me.requests, + key; + + if (request) { + if (!request.id) { + request = requests[request]; + } + me.handleAbort(request); + } else { + for (key in requests) { + if (requests.hasOwnProperty(key)) { + me.abort(requests[key]); + } + } + } + }, + + + setupErrorHandling: function(request){ + request.script.onerror = Ext.bind(this.handleError, this, [request]); + }, + + + handleAbort: function(request){ + request.errorType = 'abort'; + this.handleResponse(null, request); + }, + + + handleError: function(request){ + request.errorType = 'error'; + this.handleResponse(null, request); + }, + + + cleanupErrorHandling: function(request){ + request.script.onerror = null; + }, + + + handleTimeout: function(request){ + request.errorType = 'timeout'; + this.handleResponse(null, request); + }, + + + handleResponse: function(result, request){ + + var success = true; + + if (request.timeout) { + clearTimeout(request.timeout); + } + delete this[request.callbackName]; + delete this.requests[request.id]; + this.cleanupErrorHandling(request); + Ext.fly(request.script).remove(); + + if (request.errorType) { + success = false; + Ext.callback(request.failure, request.scope, [request.errorType]); + } else { + Ext.callback(request.success, request.scope, [result]); + } + Ext.callback(request.callback, request.scope, [success, result, request.errorType]); + Ext.EventManager.idleEvent.fire(); + }, + + + createScript: function(url, params, options) { + var script = document.createElement('script'); + script.setAttribute("src", Ext.urlAppend(url, Ext.Object.toQueryString(params))); + script.setAttribute("async", true); + script.setAttribute("type", "text/javascript"); + return script; + }, + + + loadScript: function (request) { + Ext.getHead().appendChild(request.script); + } +}); + + +Ext.define('Ext.data.proxy.JsonP', { + extend: Ext.data.proxy.Server , + alternateClassName: 'Ext.data.ScriptTagProxy', + alias: ['proxy.jsonp', 'proxy.scripttag'], + + + defaultWriterType: 'base', + + + callbackKey : 'callback', + + + recordParam: 'records', + + + autoAppendParams: true, + + constructor: function() { + this.addEvents( + + 'exception' + ); + this.callParent(arguments); + }, + + + doRequest: function(operation, callback, scope) { + + var me = this, + request = me.buildRequest(operation), + params = request.params; + + + Ext.apply(request, { + callbackKey: me.callbackKey, + timeout: me.timeout, + scope: me, + disableCaching: false, + callback: me.createRequestCallback(request, operation, callback, scope) + }); + + + + if (me.autoAppendParams) { + request.params = {}; + } + + request.jsonp = Ext.data.JsonP.request(request); + + request.params = params; + operation.setStarted(); + me.lastRequest = request; + + return request; + }, + + + createRequestCallback: function(request, operation, callback, scope) { + var me = this; + + return function(success, response, errorType) { + delete me.lastRequest; + me.processResponse(success, operation, request, response, callback, scope); + }; + }, + + + setException: function(operation, response) { + operation.setException(operation.request.jsonp.errorType); + }, + + + + buildUrl: function(request) { + var me = this, + url = me.callParent(arguments), + records = request.records, + writer = me.getWriter(), + params, + filters, + filter, i; + + + + if (writer && request.operation.allowWrite()) { + request = writer.write(request); + } + + + params = request.params; + filters = params.filters, + delete params.filters; + if (filters && filters.length) { + for (i = 0; i < filters.length; i++) { + filter = filters[i]; + + if (filter.value) { + params[filter.property] = filter.value; + } + } + } + + + if ((!writer || !writer.encode) && Ext.isArray(records) && records.length > 0) { + params[me.recordParam] = me.encodeRecords(records); + } + + + + if (me.autoAppendParams) { + url = Ext.urlAppend(url, Ext.Object.toQueryString(params)); + } + + return url; + }, + + + abort: function() { + var lastRequest = this.lastRequest; + if (lastRequest) { + Ext.data.JsonP.abort(lastRequest.jsonp); + } + }, + + + encodeRecords: function(records) { + var encoded = [], + i = 0, + len = records.length; + + for (; i < len; i++) { + encoded.push(Ext.encode(records[i].getData())); + } + + return encoded; + } +}); + + +Ext.define('Ext.data.JsonPStore', { + extend: Ext.data.Store , + alias : 'store.jsonp', + + + + + + constructor: function(config) { + config = Ext.apply({ + proxy: { + type: 'jsonp', + reader: 'json' + } + }, config); + this.callParent([config]); + } +}); + + +Ext.define('Ext.data.JsonStore', { + extend: Ext.data.Store , + alias: 'store.json', + + + + + + + constructor: function(config) { + config = Ext.apply({ + proxy: { + type : 'ajax', + reader: 'json', + writer: 'json' + } + }, config); + this.callParent([config]); + } +}); + + +Ext.define('Ext.data.NodeInterface', { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + statics: { + + decorate: function(modelClass) { + var idName, idField, idType; + + + if (typeof modelClass == 'string') { + modelClass = Ext.ModelManager.getModel(modelClass); + } else if (modelClass.isModel) { + modelClass = Ext.ModelManager.getModel(modelClass.modelName); + } + + + if (modelClass.prototype.isNode) { + return; + } + + idName = modelClass.prototype.idProperty; + idField = modelClass.prototype.fields.get(idName); + idType = modelClass.prototype.fields.get(idName).type.type; + + modelClass.override(this.getPrototypeBody()); + this.applyFields(modelClass, [ + { name : 'parentId', type : idType, defaultValue : null, useNull : idField.useNull }, + { name : 'index', type : 'int', defaultValue : 0, persist : false , convert: null }, + { name : 'depth', type : 'int', defaultValue : 0, persist : false , convert: null }, + { name : 'expanded', type : 'bool', defaultValue : false, persist : false , convert: null }, + { name : 'expandable', type : 'bool', defaultValue : true, persist : false , convert: null }, + { name : 'checked', type : 'auto', defaultValue : null, persist : false , convert: null }, + { name : 'leaf', type : 'bool', defaultValue : false }, + { name : 'cls', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'iconCls', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'icon', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'root', type : 'boolean', defaultValue : false, persist : false , convert: null }, + { name : 'isLast', type : 'boolean', defaultValue : false, persist : false , convert: null }, + { name : 'isFirst', type : 'boolean', defaultValue : false, persist : false , convert: null }, + { name : 'allowDrop', type : 'boolean', defaultValue : true, persist : false , convert: null }, + { name : 'allowDrag', type : 'boolean', defaultValue : true, persist : false , convert: null }, + { name : 'loaded', type : 'boolean', defaultValue : false, persist : false , convert: null }, + { name : 'loading', type : 'boolean', defaultValue : false, persist : false , convert: null }, + { name : 'href', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'hrefTarget', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'qtip', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'qtitle', type : 'string', defaultValue : '', persist : false , convert: null }, + { name : 'qshowDelay', type : 'int', defaultValue : 0, persist : false , convert: null }, + { name : 'children', type : 'auto', defaultValue : null, persist : false , convert: null } + ]); + }, + + applyFields: function(modelClass, addFields) { + var modelPrototype = modelClass.prototype, + fields = modelPrototype.fields, + keys = fields.keys, + ln = addFields.length, + addField, i; + + for (i = 0; i < ln; i++) { + addField = addFields[i]; + if (!Ext.Array.contains(keys, addField.name)) { + fields.add(new Ext.data.Field(addField)); + } + } + + }, + + getPrototypeBody: function() { + var bubbledEvents = { + idchanged : true, + append : true, + remove : true, + move : true, + insert : true, + beforeappend : true, + beforeremove : true, + beforemove : true, + beforeinsert : true, + expand : true, + collapse : true, + beforeexpand : true, + beforecollapse: true, + sort : true, + rootchange : true + }; + return { + + isNode: true, + + constructor: function() { + var me = this; + me.callParent(arguments); + me.firstChild = me.lastChild = me.parentNode = me.previousSibling = me.nextSibling = null; + me.childNodes = []; + + + + + + + + + + + + + + + + + return me; + }, + + createNode: function(node) { + if (!node.isModel) { + node = Ext.ModelManager.create(node, this.modelName); + } + + + + if (!node.childNodes) { + node.firstChild = node.lastChild = node.parentNode = node.previousSibling = node.nextSibling = null; + node.childNodes = []; + } + return node; + }, + + + isLeaf : function() { + return this.get('leaf') === true; + }, + + + setFirstChild : function(node) { + this.firstChild = node; + }, + + + setLastChild : function(node) { + this.lastChild = node; + }, + + + updateInfo: function(commit, info) { + var me = this, + oldDepth = me.data.depth, + childInfo = {}, + children = me.childNodes, + childCount = children.length, + i, + phantom = me.phantom, + dataObject = me[me.persistenceProperty], + propName, newValue, + field; + + if (!info) { + Ext.Error.raise('NodeInterface expects update info to be passed'); + } + + + + + for (propName in info) { + field = me.fields.get(propName); + newValue = info[propName]; + + + if (field && field.persist) { + me.dirty = me.dirty || !me.isEqual(dataObject[propName], newValue); + } + dataObject[propName] = newValue; + } + if (commit) { + me.commit(); + me.phantom = phantom; + } + + + if (me.data.depth !== oldDepth) { + childInfo = { + depth: me.data.depth + 1 + }; + for (i = 0; i < childCount; i++) { + children[i].updateInfo(commit, childInfo); + } + } + }, + + + isLast : function() { + return this.get('isLast'); + }, + + + isFirst : function() { + return this.get('isFirst'); + }, + + + hasChildNodes : function() { + return !this.isLeaf() && this.childNodes.length > 0; + }, + + + isExpandable : function() { + var me = this; + + if (me.get('expandable')) { + return !(me.isLeaf() || (me.isLoaded() && !me.hasChildNodes())); + } + return false; + }, + + triggerUIUpdate: function() { + + + this.afterEdit([]); + }, + + + appendChild : function(node, suppressEvents, commit) { + var me = this, + i, ln, + index, + oldParent, + previousSibling, + childInfo = { + isLast: true, + parentId: me.getId(), + depth: (me.data.depth||0) + 1 + }; + + + if (Ext.isArray(node)) { + + me.callStore('suspendAutoSync'); + for (i = 0, ln = node.length - 1; i < ln; i++) { + me.appendChild(node[i], suppressEvents, commit); + } + + me.callStore('resumeAutoSync'); + me.appendChild(node[ln], suppressEvents, commit); + } else { + + node = me.createNode(node); + + if (suppressEvents !== true && me.fireEventArgs("beforeappend", [me, node]) === false) { + return false; + } + + index = me.childNodes.length; + oldParent = node.parentNode; + + + if (oldParent) { + if (suppressEvents !== true && node.fireEventArgs("beforemove", [node, oldParent, me, index]) === false) { + return false; + } + oldParent.removeChild(node, false, false, true); + } + + + Ext.suspendLayouts(); + + index = me.childNodes.length; + if (index === 0) { + me.setFirstChild(node); + } + + me.childNodes[index] = node; + node.parentNode = me; + node.nextSibling = null; + + me.setLastChild(node); + + previousSibling = me.childNodes[index - 1]; + if (previousSibling) { + node.previousSibling = previousSibling; + previousSibling.nextSibling = node; + previousSibling.updateInfo(commit, { + isLast: false + }); + previousSibling.triggerUIUpdate(); + } else { + node.previousSibling = null; + } + + + childInfo.isFirst = index === 0; + childInfo.index = index; + node.updateInfo(commit, childInfo); + + + if (!me.isLoaded()) { + me.set('loaded', true); + } else if (me.childNodes.length === 1) { + me.triggerUIUpdate(); + } + + + if (index && me.childNodes[index - 1].isExpanded()) { + me.childNodes[index - 1].cascadeBy(me.triggerUIUpdate); + } + + if(!node.isLeaf() && node.phantom) { + node.set('loaded', true); + } + + + Ext.resumeLayouts(true); + + if (suppressEvents !== true) { + me.fireEventArgs("append", [me, node, index]); + + if (oldParent) { + node.fireEventArgs("move", [node, oldParent, me, index]); + } + } + + return node; + } + }, + + + getOwnerTree: function() { + var node = this, + store; + + while (node.parentNode) { + node = node.parentNode; + } + store = node.store; + if (store) { + if (store.treeStore) { + store = store.treeStore; + } + + if (store.tree) { + return store.ownerTree; + } + } + return undefined; + }, + + + removeChild : function(node, destroy, suppressEvents, isMove) { + var me = this, + index = me.indexOf(node), + i, childCount, + previousSibling; + + if (index === -1 || (suppressEvents !== true && me.fireEventArgs("beforeremove", [me, node, !!isMove]) === false)) { + return false; + } + + + Ext.suspendLayouts(); + + + Ext.Array.erase(me.childNodes, index, 1); + + + if (me.firstChild === node) { + me.setFirstChild(node.nextSibling); + } + if (me.lastChild === node) { + me.setLastChild(node.previousSibling); + } + + + + if (previousSibling = node.previousSibling) { + node.previousSibling.nextSibling = node.nextSibling; + } + + + if (node.nextSibling) { + node.nextSibling.previousSibling = node.previousSibling; + + + if (index === 0) { + node.nextSibling.updateInfo(false, { + isFirst: true + }); + } + + + for (i = index, childCount = me.childNodes.length; i < childCount; i++) { + me.childNodes[i].updateInfo(false, { + index: i + }); + } + } + + + + else if (previousSibling) { + previousSibling.updateInfo(false, { + isLast: true + }); + + + + if (previousSibling.isExpanded()) { + previousSibling.cascadeBy(me.triggerUIUpdate); + } + + else { + previousSibling.triggerUIUpdate(); + } + } + + + if (!me.childNodes.length) { + me.triggerUIUpdate(); + } + + + Ext.resumeLayouts(true); + + if (suppressEvents !== true) { + + node.removeContext = { + parentNode: node.parentNode, + previousSibling: node.previousSibling, + nextSibling: node.nextSibling + }; + + node.previousSibling = node.nextSibling = node.parentNode = null; + me.fireEventArgs('remove', [me, node, !!isMove]); + + + node.removeContext = null; + } + + + + if (destroy) { + node.destroy(true); + } else { + node.clear(); + } + + return node; + }, + + + copy: function(newId, deep) { + var me = this, + result = me.callParent(arguments), + len = me.childNodes ? me.childNodes.length : 0, + i; + + + if (deep) { + for (i = 0; i < len; i++) { + result.appendChild(me.childNodes[i].copy(undefined, true)); + } + } + return result; + }, + + + clear : function(destroy) { + var me = this; + + + me.parentNode = me.previousSibling = me.nextSibling = null; + if (destroy) { + me.firstChild = me.lastChild = null; + } + }, + + + destroy : function(silent) { + + var me = this, + options = me.destroyOptions, + nodes = me.childNodes, + nLen = nodes.length, + n; + + if (silent === true) { + me.clear(true); + + for (n = 0; n < nLen; n++) { + nodes[n].destroy(true); + } + + me.childNodes = null; + delete me.destroyOptions; + me.callParent([options]); + } else { + me.destroyOptions = silent; + + me.remove(true); + } + }, + + + insertBefore : function(node, refNode, suppressEvents) { + var me = this, + index = me.indexOf(refNode), + oldParent = node.parentNode, + refIndex = index, + childCount, previousSibling, i; + + if (!refNode) { + return me.appendChild(node); + } + + + if (node === refNode) { + return false; + } + + + node = me.createNode(node); + + if (suppressEvents !== true && me.fireEventArgs("beforeinsert", [me, node, refNode]) === false) { + return false; + } + + + if (oldParent === me && me.indexOf(node) < index) { + refIndex--; + } + + + if (oldParent) { + if (suppressEvents !== true && node.fireEventArgs("beforemove", [node, oldParent, me, index, refNode]) === false) { + return false; + } + oldParent.removeChild(node, false, false, true); + } + + if (refIndex === 0) { + me.setFirstChild(node); + } + + Ext.Array.splice(me.childNodes, refIndex, 0, node); + node.parentNode = me; + + node.nextSibling = refNode; + refNode.previousSibling = node; + + previousSibling = me.childNodes[refIndex - 1]; + if (previousSibling) { + node.previousSibling = previousSibling; + previousSibling.nextSibling = node; + } else { + node.previousSibling = null; + } + + + node.updateInfo(false, { + parentId: me.getId(), + index: refIndex, + isFirst: refIndex === 0, + isLast: false, + depth: (me.data.depth||0) + 1 + }); + + + for (i = refIndex + 1, childCount = me.childNodes.length; i < childCount; i++) { + me.childNodes[i].updateInfo(false, { + index: i + }); + } + + if (!me.isLoaded()) { + me.set('loaded', true); + } + + else if (me.childNodes.length === 1) { + me.triggerUIUpdate(); + } + + if(!node.isLeaf() && node.phantom) { + node.set('loaded', true); + } + + if (suppressEvents !== true) { + me.fireEventArgs("insert", [me, node, refNode]); + + if (oldParent) { + node.fireEventArgs("move", [node, oldParent, me, refIndex, refNode]); + } + } + + return node; + }, + + + insertChild: function(index, node) { + var sibling = this.childNodes[index]; + if (sibling) { + return this.insertBefore(node, sibling); + } + else { + return this.appendChild(node); + } + }, + + + remove : function(destroy, suppressEvents) { + var me = this, + parentNode = me.parentNode; + + if (parentNode) { + parentNode.removeChild(me, destroy, suppressEvents); + } else if (destroy) { + + me.destroy(true); + } + return me; + }, + + + removeAll : function(destroy, suppressEvents, fromParent) { + + + + var me = this, + childNodes = me.childNodes, + i = 0, + len = childNodes.length, + node; + + + if (!len) { + return; + } + + + + me.fireEventArgs('bulkremove', [me, childNodes, false]); + + for (; i < len; ++i) { + node = childNodes[i]; + + + node.removeContext = { + parentNode: node.parentNode, + previousSibling: node.previousSibling, + nextSibling: node.nextSibling + }; + + node.previousSibling = node.nextSibling = node.parentNode = null; + me.fireEventArgs('remove', [me, node, false]); + + + node.removeContext = null; + + + if (destroy) { + node.destroy(true); + } + + else { + node.removeAll(false, suppressEvents, true); + } + } + + me.firstChild = me.lastChild = null; + + + if (fromParent) { + + me.childNodes = null; + } else { + + me.childNodes.length = 0; + me.triggerUIUpdate(); + } + + return me; + }, + + + getChildAt : function(index) { + return this.childNodes[index]; + }, + + + replaceChild : function(newChild, oldChild, suppressEvents) { + var s = oldChild ? oldChild.nextSibling : null; + + this.removeChild(oldChild, false, suppressEvents); + this.insertBefore(newChild, s, suppressEvents); + return oldChild; + }, + + + indexOf : function(child) { + return Ext.Array.indexOf(this.childNodes, child); + }, + + + indexOfId: function(id) { + var childNodes = this.childNodes, + len = childNodes.length, + i = 0; + + for (; i < len; ++i) { + if (childNodes[i].getId() === id) { + return i; + } + } + return -1; + }, + + + getPath: function(field, separator) { + field = field || this.idProperty; + separator = separator || '/'; + + var path = [this.get(field)], + parent = this.parentNode; + + while (parent) { + path.unshift(parent.get(field)); + parent = parent.parentNode; + } + return separator + path.join(separator); + }, + + + getDepth : function() { + return this.get('depth'); + }, + + + bubble : function(fn, scope, args) { + var p = this; + while (p) { + if (fn.apply(scope || p, args || [p]) === false) { + break; + } + p = p.parentNode; + } + }, + + cascade: function() { + if (Ext.isDefined(Ext.global.console)) { + Ext.global.console.warn('Ext.data.Node: cascade has been deprecated. Please use cascadeBy instead.'); + } + return this.cascadeBy.apply(this, arguments); + }, + + + cascadeBy : function(fn, scope, args) { + if (fn.apply(scope || this, args || [this]) !== false) { + var childNodes = this.childNodes, + length = childNodes.length, + i; + + for (i = 0; i < length; i++) { + childNodes[i].cascadeBy(fn, scope, args); + } + } + }, + + + eachChild : function(fn, scope, args) { + var childNodes = this.childNodes, + length = childNodes.length, + i; + + for (i = 0; i < length; i++) { + if (fn.apply(scope || this, args || [childNodes[i]]) === false) { + break; + } + } + }, + + + findChild : function(attribute, value, deep) { + return this.findChildBy(function() { + return this.get(attribute) == value; + }, null, deep); + }, + + + findChildBy : function(fn, scope, deep) { + var cs = this.childNodes, + len = cs.length, + i = 0, n, res; + + for (; i < len; i++) { + n = cs[i]; + if (fn.call(scope || n, n) === true) { + return n; + } + else if (deep) { + res = n.findChildBy(fn, scope, deep); + if (res !== null) { + return res; + } + } + } + + return null; + }, + + + contains : function(node) { + return node.isAncestor(this); + }, + + + isAncestor : function(node) { + var p = this.parentNode; + while (p) { + if (p === node) { + return true; + } + p = p.parentNode; + } + return false; + }, + + + sort : function(sortFn, recursive, suppressEvent) { + var cs = this.childNodes, + ln = cs.length, + i, n, info = { + isFirst: true + }; + + if (ln > 0) { + Ext.Array.sort(cs, sortFn); + this.setFirstChild(cs[0]); + this.setLastChild(cs[ln - 1]); + + for (i = 0; i < ln; i++) { + n = cs[i]; + n.previousSibling = cs[i-1]; + n.nextSibling = cs[i+1]; + + + info.isLast = (i === ln - 1); + info.index = i; + n.updateInfo(false, info); + info.isFirst = false; + + if (recursive && !n.isLeaf()) { + n.sort(sortFn, true, true); + } + } + + if (suppressEvent !== true) { + this.fireEventArgs('sort', [this, cs]); + } + } + }, + + + isExpanded: function() { + return this.get('expanded'); + }, + + + isLoaded: function() { + return this.get('loaded'); + }, + + + isLoading: function() { + return this.get('loading'); + }, + + + isRoot: function() { + return !this.parentNode; + }, + + + isVisible: function() { + var parent = this.parentNode; + while (parent) { + if (!parent.isExpanded()) { + return false; + } + parent = parent.parentNode; + } + return true; + }, + + + expand: function(recursive, callback, scope) { + var me = this, + owner; + + + + + + if (!me.isLeaf()) { + + if (me.isLoading()) { + me.on('expand', function() { + me.expand(recursive, callback, scope); + }, me, {single: true}); + } else { + + if (!me.isExpanded()) { + + + + + + me.fireEventArgs('beforeexpand', [me, me.onChildNodesAvailable, me, [recursive, callback, scope]]); + } else if (recursive) { + + owner = me.getOwnerTree(); + me.expandChildren(true, owner ? owner.singleExpand : false, callback, scope); + } else { + Ext.callback(callback, scope || me, [me.childNodes]); + } + } + } else { + + Ext.callback(callback, scope || me); + } + }, + + + onChildNodesAvailable: function(records, recursive, callback, scope) { + var me = this, + owner; + + + + Ext.suspendLayouts(); + + + me.set('expanded', true); + + + me.fireEventArgs('expand', [me, me.childNodes, false]); + + + if (recursive) { + owner = me.getOwnerTree(); + me.expandChildren(true, owner ? owner.singleExpand : false, callback, scope); + } else { + Ext.callback(callback, scope || me, [me.childNodes]); + } + + Ext.resumeLayouts(true); + }, + + + expandChildren: function(recursive, singleExpand, callback, scope) { + var me = this, + i, + allNodes = me.childNodes, + expandNodes = [], + ln = singleExpand ? Math.min(allNodes.length, 1) : allNodes.length, + node; + + for (i = 0; i < ln; ++i) { + node = allNodes[i]; + if (!node.isLeaf()) { + expandNodes[expandNodes.length] = node; + } + } + ln = expandNodes.length; + + for (i = 0; i < ln; ++i) { + expandNodes[i].expand(recursive); + } + + if (callback) { + Ext.callback(callback, scope || me, [me.childNodes]); + } + }, + + + collapse: function(recursive, callback, scope) { + var me = this, + expanded = me.isExpanded(), + len = me.childNodes.length, + i, collapseChildren; + + + + + + if (!me.isLeaf() && ((!expanded && recursive) || me.fireEventArgs('beforecollapse', [me]) !== false)) { + + + + Ext.suspendLayouts(); + + + if (me.isExpanded()) { + + + + + + + if (recursive) { + collapseChildren = function() { + for (i = 0; i < len; i++) { + me.childNodes[i].setCollapsed(true); + } + }; + if (callback) { + callback = Ext.Function.createSequence(collapseChildren, callback); + } else { + callback = collapseChildren; + } + } + + + me.set('expanded', false); + + + + + me.fireEventArgs('collapse', [me, me.childNodes, false, callback ? Ext.Function.bind(callback, scope, [me.childNodes]) : null, null]); + + + callback = null; + } + + + + + + else if (recursive) { + for (i = 0; i < len; i++) { + me.childNodes[i].setCollapsed(true); + } + } + + Ext.resumeLayouts(true); + } + + + Ext.callback(callback, scope || me, [me.childNodes]); + }, + + + setCollapsed: function(recursive) { + var me = this, + len = me.childNodes.length, + i; + + + if (!me.isLeaf() && me.fireEventArgs('beforecollapse', [me, Ext.emptyFn]) !== false) { + + + me.data.expanded = false; + + + + + me.fireEventArgs('collapse', [me, me.childNodes, false, null, null]); + + if (recursive) { + for (i = 0; i < len; i++) { + me.childNodes[i].setCollapsed(true); + } + } + } + }, + + + collapseChildren: function(recursive, callback, scope) { + var me = this, + i, + allNodes = me.childNodes, + ln = allNodes.length, + collapseNodes = [], + node; + + + for (i = 0; i < ln; ++i) { + node = allNodes[i]; + if (!node.isLeaf() && node.isLoaded() && node.isExpanded()) { + collapseNodes.push(node); + } + } + ln = collapseNodes.length; + + + + for (i = 0; i < ln; ++i) { + node = collapseNodes[i]; + if (i === ln - 1) { + node.collapse(recursive, callback, scope); + } else { + node.collapse(recursive); + } + } + }, + + + + + fireEventArgs: function(eventName, args) { + + + + var fireEventArgs = Ext.data.Model.prototype.fireEventArgs, + result, eventSource, tree, treeStore, rootNode; + + + if (bubbledEvents[eventName]) { + for (eventSource = this; result !== false && eventSource; eventSource = (rootNode = eventSource).parentNode) { + if (eventSource.hasListeners[eventName]) { + result = fireEventArgs.call(eventSource, eventName, args); + } + } + + + tree = rootNode.rootOf; + if (result !== false && tree) { + treeStore = tree.treeStore; + if (treeStore && treeStore.hasListeners[eventName]) { + result = treeStore.fireEventArgs.call(treeStore, eventName, args); + } + if (result !== false && tree.hasListeners[eventName]) { + result = tree.fireEventArgs.call(tree, eventName, args); + } + } + return result; + } + + else { + return fireEventArgs.apply(this, arguments) + } + }, + + + serialize: function() { + var result = Ext.data.writer.Json.prototype.getRecordData(this), + childNodes = this.childNodes, + len = childNodes.length, + children, i; + + if (len > 0) { + children = []; + for (i = 0; i < len; i++) { + children.push(childNodes[i].serialize()); + } + result.children = children; + } + return result; + } + }; + } + } +}); + + +Ext.define('Ext.data.NodeStore', { + extend: Ext.data.Store , + alias: 'store.node', + + + + isNodeStore: true, + + + node: null, + + + recursive: false, + + + rootVisible: false, + + + + + isExpandingOrCollapsing: 0, + + constructor: function(config) { + var me = this, + node; + + config = config || {}; + Ext.apply(me, config); + + + config.proxy = {type: 'proxy'}; + me.callParent([config]); + + node = me.node; + if (node) { + me.node = null; + me.setNode(node); + } + }, + + + + + getTotalCount: function() { + return this.getCount(); + }, + + setNode: function(node) { + var me = this; + if (me.node && me.node != node) { + + me.mun(me.node, { + expand: me.onNodeExpand, + collapse: me.onNodeCollapse, + append: me.onNodeAppend, + insert: me.onNodeInsert, + bulkremove: me.onBulkRemove, + remove: me.onNodeRemove, + sort: me.onNodeSort, + scope: me + }); + me.node = null; + } + + if (node) { + Ext.data.NodeInterface.decorate(node.self); + me.removeAll(); + if (me.rootVisible) { + me.add(node); + } else if (!node.isExpanded() && me.treeStore.autoLoad !== false) { + node.expand(); + } + + me.mon(node, { + expand: me.onNodeExpand, + collapse: me.onNodeCollapse, + append: me.onNodeAppend, + insert: me.onNodeInsert, + bulkremove: me.onBulkRemove, + remove: me.onNodeRemove, + sort: me.onNodeSort, + scope: me + }); + me.node = node; + if (node.isExpanded() && node.isLoaded()) { + me.onNodeExpand(node, node.childNodes, true); + } + } + }, + + onNodeSort: function(node, childNodes) { + var me = this; + + if ((me.indexOf(node) !== -1 || (node === me.node && !me.rootVisible) && node.isExpanded())) { + Ext.suspendLayouts(); + me.onNodeCollapse(node, childNodes, true); + me.onNodeExpand(node, childNodes, true); + Ext.resumeLayouts(true); + } + }, + + + onNodeExpand: function(parent, records, suppressEvent) { + var me = this, + insertIndex = me.indexOf(parent) + 1, + toAdd = []; + + + + + if (!suppressEvent) { + me.fireEvent('beforeexpand', parent, records, insertIndex); + } + + me.handleNodeExpand(parent, records, toAdd); + + + + + me.insert(insertIndex, toAdd); + + + + if (!suppressEvent) { + me.fireEvent('expand', parent, records); + } + }, + + + + handleNodeExpand: function(parent, records, toAdd) { + var me = this, + ln = records ? records.length : 0, + i, record; + + + if (!me.recursive && parent !== me.node) { + return; + } + + if (parent !== this.node && !me.isVisible(parent)) { + return; + } + + if (ln) { + + + for (i = 0; i < ln; i++) { + record = records[i]; + + + + + toAdd.push(record); + + if (record.isExpanded()) { + if (record.isLoaded()) { + + me.handleNodeExpand(record, record.childNodes, toAdd); + } + else { + + record.set('expanded', false); + record.expand(); + } + } + } + } + }, + + + onBulkRemove: function(parent, childNodes, isMove) { + this.onNodeCollapse(parent, childNodes, true); + }, + + + onNodeCollapse: function(parent, records, suppressEvent, callback, scope) { + var me = this, + collapseIndex = me.indexOf(parent) + 1, + node, lastNodeIndexPlus, sibling, found; + + if (!me.recursive && parent !== me.node) { + return; + } + + + + + + if (!suppressEvent) { + me.fireEvent('beforecollapse', parent, records, collapseIndex, callback, scope); + } + + + + + + if (records.length && me.data.contains(records[0])) { + + + + + node = parent; + while (node.parentNode) { + sibling = node.nextSibling; + if (sibling) { + found = true; + lastNodeIndexPlus = me.indexOf(sibling); + break; + } else { + node = node.parentNode; + } + } + if (!found) { + lastNodeIndexPlus = me.getCount(); + } + + + me.removeAt(collapseIndex, lastNodeIndexPlus - collapseIndex); + } + + + + if (!suppressEvent) { + me.fireEvent('collapse', parent, records, collapseIndex); + } + }, + + onNodeAppend: function(parent, node, index) { + var me = this, + refNode, sibling; + + + if (me.isVisible(node)) { + if (index === 0) { + refNode = parent; + } else { + sibling = node.previousSibling; + while (sibling.isExpanded() && sibling.lastChild) { + sibling = sibling.lastChild; + } + refNode = sibling; + } + me.insert(me.indexOf(refNode) + 1, node); + if (!node.isLeaf() && node.isExpanded()) { + if (node.isLoaded()) { + + me.onNodeExpand(node, node.childNodes, true); + } else if (!me.treeStore.fillCount ) { + + + + + node.set('expanded', false); + node.expand(); + } + } + } + }, + + onNodeInsert: function(parent, node, refNode) { + var me = this, + index = this.indexOf(refNode); + + if (index != -1 && me.isVisible(node)) { + me.insert(index, node); + if (!node.isLeaf() && node.isExpanded()) { + if (node.isLoaded()) { + + me.onNodeExpand(node, node.childNodes, true); + } + else { + node.set('expanded', false); + node.expand(); + } + } + } + }, + + onNodeRemove: function(parent, node, isMove) { + var me = this; + if (me.indexOf(node) != -1) { + + + + if (!node.isLeaf() && node.isExpanded()) { + + + + + + node.parentNode = node.removeContext.parentNode; + node.nextSibling = node.removeContext.nextSibling; + me.onNodeCollapse(node, node.childNodes, true); + node.parentNode = node.nextSibling = null; + } + me.remove(node); + } + }, + + isVisible: function(node) { + var parent = node.parentNode; + while (parent) { + + if (parent === this.node && parent.data.expanded) { + return true; + } + + + if (!parent.data.expanded) { + return false; + } + + parent = parent.parentNode; + } + + return false; + } +}); + + +Ext.define('Ext.data.Request', { + + action: undefined, + + + params: undefined, + + + method: 'GET', + + + url: undefined, + + + constructor: function(config) { + Ext.apply(this, config); + } +}); + + +Ext.define('Ext.data.SequentialIdGenerator', { + extend: Ext.data.IdGenerator , + alias: 'idgen.sequential', + + constructor: function() { + var me = this; + + me.callParent(arguments); + + me.parts = [ me.prefix, '']; + }, + + + prefix: '', + + + seed: 1, + + + generate: function () { + var me = this, + parts = me.parts; + + parts[1] = me.seed++; + return parts.join(''); + } +}); + + +Ext.define('Ext.data.Tree', { + alias: 'data.tree', + + mixins: { + observable: Ext.util.Observable + }, + + + root: null, + + + constructor: function(root) { + var me = this; + + me.mixins.observable.constructor.call(me); + + if (root) { + me.setRootNode(root); + } + + + me.on({ + scope: me, + idchanged: me.onNodeIdChanged, + insert: me.onNodeInsert, + append: me.onNodeAppend, + remove: me.onNodeRemove + }); + }, + + + getRootNode : function() { + return this.root; + }, + + + setRootNode : function(node) { + var me = this; + + me.root = node; + + + if (node.rootOf) { + node.rootOf.removeRootNode(); + } + + + else if (node.parentNode) { + node.parentNode.removeChild(node); + } + + + node.rootOf = me; + + if (node.fireEventArgs('beforeappend', [null, node]) !== false) { + node.set('root', true); + + node.updateInfo(true, { + isFirst: true, + isLast: true, + depth: 0, + index: 0, + parentId: null + }); + + + + + + + + + + + + + + + + + + me.nodeHash = {}; + node.fireEvent('append', null, node); + node.fireEvent('rootchange', node); + } + + return node; + }, + + + removeRootNode: function() { + var me = this, + root = me.root; + + root.set('root', false); + root.fireEvent('remove', null, root, false); + root.fireEvent('rootchange', null); + + + + root.rootOf = me.root = null; + return root; + }, + + + flatten: function(){ + return Ext.Object.getValues(this.nodeHash); + }, + + + onNodeInsert: function(parent, node) { + this.registerNode(node, true); + }, + + + onNodeAppend: function(parent, node) { + this.registerNode(node, true); + }, + + + onNodeRemove: function(parent, node) { + this.unregisterNode(node, true); + }, + + + onNodeIdChanged: function(node, oldId, newId, oldInternalId) { + var nodeHash = this.nodeHash; + + nodeHash[node.internalId] = node; + delete nodeHash[oldInternalId]; + }, + + + getNodeById : function(id) { + return this.nodeHash[id]; + }, + + + registerNode : function(node, includeChildren) { + var me = this, + children, length, i; + + me.nodeHash[node.internalId] = node; + if (includeChildren === true) { + children = node.childNodes; + length = children.length; + for (i = 0; i < length; i++) { + me.registerNode(children[i], true); + } + } + }, + + + unregisterNode : function(node, includeChildren) { + var me = this, + children, length, i; + + delete me.nodeHash[node.internalId]; + if (includeChildren === true) { + children = node.childNodes; + length = children.length; + for (i = 0; i < length; i++) { + me.unregisterNode(children[i], true); + } + } + }, + + + sort: function(sorterFn, recursive) { + this.getRootNode().sort(sorterFn, recursive); + }, + + + filter: function(filters, recursive) { + this.getRootNode().filter(filters, recursive); + } +}); + + +Ext.define('Ext.data.TreeModel', { + extend: Ext.data.Model + + + +}, +function () { + Ext.data.NodeInterface.decorate(this); +}); + + +Ext.define('Ext.data.TreeStore', { + extend: Ext.data.AbstractStore , + alias: 'store.tree', + + + + + + + + + + clearOnLoad : true, + + + clearRemovedOnLoad: true, + + + nodeParam: 'node', + + + defaultRootId: 'root', + + + defaultRootText: 'Root', + + + defaultRootProperty: 'children', + + + rootProperty: 'children', + + fillCount: 0, + + + folderSort: false, + + constructor: function(config) { + var me = this, + root, + fields, + defaultRoot; + + config = Ext.apply({}, config); + + + fields = config.fields || me.fields; + if (!fields) { + config.fields = [ + {name: 'text', type: 'string'} + ]; + defaultRoot = config.defaultRootProperty || me.defaultRootProperty; + if (defaultRoot !== me.defaultRootProperty) { + config.fields.push({ + name: defaultRoot, + type: 'auto', + defaultValue: null, + persist: false + }); + } + } + + me.callParent([config]); + + + me.tree = new Ext.data.Tree(); + + + me.tree.treeStore = me; + + + + + + + + + + + + + + + + + me.tree.on({ + scope: me, + remove: me.onNodeRemove, + + + beforeexpand: me.onBeforeNodeExpand, + append: me.onNodeAdded, + insert: me.onNodeAdded, + sort: me.onNodeSort + }); + + me.onBeforeSort(); + + root = me.root; + if (root) { + delete me.root; + me.setRootNode(root); + } + + if (Ext.isDefined(me.nodeParameter)) { + if (Ext.isDefined(Ext.global.console)) { + Ext.global.console.warn('Ext.data.TreeStore: nodeParameter has been deprecated. Please use nodeParam instead.'); + } + me.nodeParam = me.nodeParameter; + delete me.nodeParameter; + } + }, + + + setProxy: function(proxy) { + var reader, + needsRoot; + + if (proxy instanceof Ext.data.proxy.Proxy) { + + needsRoot = Ext.isEmpty(proxy.getReader().root); + } else if (Ext.isString(proxy)) { + + needsRoot = true; + } else { + + reader = proxy.reader; + needsRoot = !(reader && !Ext.isEmpty(reader.root)); + } + proxy = this.callParent(arguments); + + + + + proxy.idParam = this.nodeParam; + + if (needsRoot) { + reader = proxy.getReader(); + reader.root = this.defaultRootProperty; + + reader.buildExtractors(true); + } + return proxy; + }, + + + onBeforeSort: function() { + if (this.folderSort) { + this.sort({ + property: 'leaf', + direction: 'ASC' + }, 'prepend', false); + } + }, + + + onBeforeNodeExpand: function(node, callback, scope, args) { + var me = this, + reader, dataRoot, data, + callbackArgs; + + + if (node.isLoaded()) { + callbackArgs = [node.childNodes]; + if (args) { + callbackArgs.push.apply(callbackArgs, args); + } + Ext.callback(callback, scope || node, callbackArgs); + } + + else if (dataRoot = (data = (node.raw || node[node.persistenceProperty])[(reader = me.getProxy().getReader()).root])) { + me.fillNode(node, reader.extractData(dataRoot)); + delete data[reader.root]; + callbackArgs = [node.childNodes]; + if (args) { + callbackArgs.push.apply(callbackArgs, args); + } + Ext.callback(callback, scope || node, callbackArgs); + } + + else if (node.isLoading()) { + me.on('load', function() { + callbackArgs = [node.childNodes]; + if (args) { + callbackArgs.push.apply(callbackArgs, args); + } + Ext.callback(callback, scope || node, callbackArgs); + }, me, {single: true}); + } + + else { + me.read({ + node: node, + callback: function() { + + + delete me.lastOptions.callback; + callbackArgs = [node.childNodes]; + if (args) { + callbackArgs.push.apply(callbackArgs, args); + } + Ext.callback(callback, scope || node, callbackArgs); + } + }); + } + }, + + + getNewRecords: function() { + return Ext.Array.filter(this.tree.flatten(), this.filterNew); + }, + + + getUpdatedRecords: function() { + return Ext.Array.filter(this.tree.flatten(), this.filterUpdated); + }, + + onNodeRemove: function(parent, node, isMove) { + var me = this; + + node.unjoin(me); + + + + if (!node.phantom && !isMove) { + Ext.Array.include(me.removed, node); + } + + if (me.autoSync && !me.autoSyncSuspended && !isMove) { + me.sync(); + } + }, + + onNodeAdded: function(parent, node) { + var me = this, + proxy = me.getProxy(), + reader = proxy.getReader(), + data = node.raw || node[node.persistenceProperty], + dataRoot; + + Ext.Array.remove(me.removed, node); + node.join(me); + + + if (!node.isLeaf() && !me.lazyFill) { + dataRoot = reader.getRoot(data); + if (dataRoot) { + me.fillNode(node, reader.extractData(dataRoot)); + delete data[reader.root]; + } + } + + if (me.autoSync && !me.autoSyncSuspended && (node.phantom || node.dirty)) { + me.sync(); + } + }, + + onNodeSort: function() { + if (this.autoSync && !this.autoSyncSuspended) { + this.sync(); + } + }, + + + setRootNode: function(root, preventLoad) { + var me = this, + model = me.model, + idProperty = model.prototype.idProperty + + root = root || {}; + if (!root.isModel) { + root = Ext.apply({}, root); + + Ext.applyIf(root, { + id: me.defaultRootId, + text: me.defaultRootText, + allowDrag: false + }); + if (root[idProperty] === undefined) { + root[idProperty] = me.defaultRootId; + } + Ext.data.NodeInterface.decorate(model); + root = Ext.ModelManager.create(root, model); + } else if (root.isModel && !root.isNode) { + Ext.data.NodeInterface.decorate(model); + } + + + + + me.getProxy().getReader().buildExtractors(true); + + + me.tree.setRootNode(root); + + + + + + + if (preventLoad !== true && !root.isLoaded() && (me.autoLoad === true || root.isExpanded())) { + root.data.expanded = false; + root.expand(); + } + + return root; + }, + + + getRootNode: function() { + return this.tree.getRootNode(); + }, + + + getNodeById: function(id) { + return this.tree.getNodeById(id); + }, + + + getById: function(id) { + return this.getNodeById(id); + }, + + + load: function(options) { + options = options || {}; + options.params = options.params || {}; + + var me = this, + node = options.node || me.tree.getRootNode(); + + + + if (!node) { + node = me.setRootNode({ + expanded: true + }, true); + } + + + + options.id = node.getId(); + + if (me.clearOnLoad) { + if(me.clearRemovedOnLoad) { + + me.clearRemoved(node); + } + + me.tree.un('remove', me.onNodeRemove, me); + + node.removeAll(false); + + me.tree.on('remove', me.onNodeRemove, me); + } + + Ext.applyIf(options, { + node: node + }); + + me.callParent([options]); + + if (me.loading && node) { + node.set('loading', true); + } + + return me; + }, + + + clearRemoved: function(node) { + var me = this, + removed = me.removed, + id = node.getId(), + removedLength = removed.length, + i = removedLength, + recordsToClear = {}, + newRemoved = [], + removedHash = {}, + removedNode, + targetNode, + targetId; + + if(node === me.getRootNode()) { + + me.removed = []; + return; + } + + + for(; i--;) { + removedNode = removed[i]; + removedHash[removedNode.getId()] = removedNode; + } + + for(i = removedLength; i--;) { + removedNode = removed[i]; + targetNode = removedNode; + while(targetNode && targetNode.getId() !== id) { + + targetId = targetNode.get('parentId'); + targetNode = targetNode.parentNode || me.getNodeById(targetId) || removedHash[targetId]; + } + if(targetNode) { + + recordsToClear[removedNode.getId()] = removedNode; + } + } + + + for(i = 0; i < removedLength; i++) { + removedNode = removed[i]; + if(!recordsToClear[removedNode.getId()]) { + newRemoved.push(removedNode); + } + } + + me.removed = newRemoved; + }, + + + fillNode: function(node, newNodes) { + var me = this, + ln = newNodes ? newNodes.length : 0, + sorters = me.sorters, + i, sortCollection, + needsIndexSort = false, + performLocalSort = ln && me.sortOnLoad && !me.remoteSort && sorters && sorters.items && sorters.items.length, + node1, node2, rootFill; + + + for (i = 1; i < ln; i++) { + node1 = newNodes[i]; + node2 = newNodes[i - 1]; + needsIndexSort = node1[node1.persistenceProperty].index != node2[node2.persistenceProperty].index; + if (needsIndexSort) { + break; + } + } + + + if (performLocalSort) { + + if (needsIndexSort) { + me.sorters.insert(0, me.indexSorter); + } + sortCollection = new Ext.util.MixedCollection(); + sortCollection.addAll(newNodes); + sortCollection.sort(me.sorters.items); + newNodes = sortCollection.items; + + + me.sorters.remove(me.indexSorter); + } else if (needsIndexSort) { + Ext.Array.sort(newNodes, me.sortByIndex); + } + + node.set('loaded', true); + + + + + + rootFill = me.fillCount === 0; + if (rootFill) { + + me.fireEvent('beforefill', me, node, newNodes); + } + ++me.fillCount; + + if (newNodes.length) { + node.appendChild(newNodes, undefined, true); + } + + if (rootFill) { + + me.fireEvent('fillcomplete', me, node, newNodes); + } + --me.fillCount; + + return newNodes; + }, + + + sortByIndex: function(node1, node2) { + return node1[node1.persistenceProperty].index - node2[node2.persistenceProperty].index; + }, + + onIdChanged: function(model, oldId, newId, oldInternalId){ + this.tree.onNodeIdChanged(model, oldId, newId, oldInternalId); + this.callParent(arguments); + }, + + + onProxyLoad: function(operation) { + var me = this, + successful = operation.wasSuccessful(), + records = operation.getRecords(), + node = operation.node; + + me.loading = false; + node.set('loading', false); + if (successful) { + if (!me.clearOnLoad) { + records = me.cleanRecords(node, records); + } + records = me.fillNode(node, records); + } + + + + + me.fireEvent('read', me, operation.node, records, successful); + me.fireEvent('load', me, operation.node, records, successful); + + Ext.callback(operation.callback, operation.scope || me, [records, operation, successful]); + }, + + cleanRecords: function(node, records){ + var nodeHash = {}, + childNodes = node.childNodes, + i = 0, + len = childNodes.length, + out = [], + rec; + + + for (; i < len; ++i) { + nodeHash[childNodes[i].getId()] = true; + } + + for (i = 0, len = records.length; i < len; ++i) { + rec = records[i]; + if (!nodeHash[rec.getId()]) { + out.push(rec); + } + } + + return out; + }, + + + removeAll: function() { + var root = this.getRootNode(); + if (root) { + root.destroy(true); + } + this.fireEvent('clear', this); + }, + + + doSort: function(sorterFn) { + var me = this; + if (me.remoteSort) { + + me.load(); + } else { + me.tree.sort(sorterFn, true); + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + } + me.fireEvent('sort', me, me.sorters.getRange()); + } +}, function() { + var proto = this.prototype; + proto.indexSorter = new Ext.util.Sorter({ + sorterFn: proto.sortByIndex + }); +}); + + +Ext.define('Ext.data.UuidGenerator', (function () { + var twoPow14 = Math.pow(2, 14), + twoPow16 = Math.pow(2, 16), + twoPow28 = Math.pow(2, 28), + twoPow32 = Math.pow(2, 32); + + function toHex (value, length) { + var ret = value.toString(16); + if (ret.length > length) { + ret = ret.substring(ret.length - length); + } else if (ret.length < length) { + ret = Ext.String.leftPad(ret, length, '0'); + } + return ret; + } + + function rand (lo, hi) { + var v = Math.random() * (hi - lo + 1); + return Math.floor(v) + lo; + } + + function split (bignum) { + if (typeof(bignum) == 'number') { + var hi = Math.floor(bignum / twoPow32); + return { + lo: Math.floor(bignum - hi * twoPow32), + hi: hi + }; + } + return bignum; + } + + return { + extend: Ext.data.IdGenerator , + + alias: 'idgen.uuid', + + id: 'uuid', + + + + + + + version: 4, + + constructor: function() { + var me = this; + + me.callParent(arguments); + + me.parts = []; + me.init(); + }, + + generate: function () { + var me = this, + parts = me.parts, + ts = me.timestamp; + + + parts[0] = toHex(ts.lo, 8); + parts[1] = toHex(ts.hi & 0xFFFF, 4); + parts[2] = toHex(((ts.hi >>> 16) & 0xFFF) | (me.version << 12), 4); + parts[3] = toHex(0x80 | ((me.clockSeq >>> 8) & 0x3F), 2) + + toHex(me.clockSeq & 0xFF, 2); + parts[4] = toHex(me.salt.hi, 4) + toHex(me.salt.lo, 8); + + if (me.version == 4) { + me.init(); + } else { + + ++ts.lo; + if (ts.lo >= twoPow32) { + ts.lo = 0; + ++ts.hi; + } + } + + return parts.join('-').toLowerCase(); + }, + + getRecId: function (rec) { + return rec.getId(); + }, + + + init: function () { + var me = this, + salt, time; + + if (me.version == 4) { + + + + + me.clockSeq = rand(0, twoPow14-1); + + + salt = me.salt || (me.salt = {}); + time = me.timestamp || (me.timestamp = {}); + + + salt.lo = rand(0, twoPow32-1); + salt.hi = rand(0, twoPow16-1); + time.lo = rand(0, twoPow32-1); + time.hi = rand(0, twoPow28-1); + } else { + + me.salt = split(me.salt); + me.timestamp = split(me.timestamp); + + + + me.salt.hi |= 0x100; + } + }, + + + reconfigure: function (config) { + Ext.apply(this, config); + this.init(); + } + }; +}())); + + +Ext.define('Ext.data.reader.Xml', { + extend: Ext.data.reader.Reader , + alternateClassName: 'Ext.data.XmlReader', + alias : 'reader.xml', + + + + + + + createAccessor: function(expr) { + var me = this; + + if (Ext.isEmpty(expr)) { + return Ext.emptyFn; + } + + if (Ext.isFunction(expr)) { + return expr; + } + + return function(root) { + return me.getNodeValue(Ext.DomQuery.selectNode(expr, root)); + }; + }, + + getNodeValue: function(node) { + if (node) { + + + + if (typeof node.normalize === 'function') { + node.normalize(); + } + node = node.firstChild; + if (node) { + return node.nodeValue; + } + } + return undefined; + }, + + + getResponseData: function(response) { + var xml = response.responseXML, + error, + msg; + + if (!xml) { + msg = 'XML data not found in the response'; + + error = new Ext.data.ResultSet({ + total : 0, + count : 0, + records: [], + success: false, + message: msg + }); + + this.fireEvent('exception', this, response, error); + + Ext.Logger.warn(msg); + + return error; + } + + return this.readRecords(xml); + }, + + + getData: function(data) { + return data.documentElement || data; + }, + + + getRoot: function(data) { + var nodeName = data.nodeName, + root = this.root; + + if (!root || (nodeName && nodeName == root)) { + return data; + } else if (Ext.DomQuery.isXml(data)) { + + + + return Ext.DomQuery.selectNode(root, data); + } + }, + + + extractData: function(root) { + var recordName = this.record; + + + if (recordName != root.nodeName) { + root = Ext.DomQuery.select(recordName, root); + } else { + root = [root]; + } + return this.callParent([root]); + }, + + + getAssociatedDataRoot: function(data, associationName) { + return Ext.DomQuery.select(associationName, data)[0]; + }, + + + readRecords: function(doc) { + + + if (Ext.isArray(doc)) { + doc = doc[0]; + } + + + this.xmlData = doc; + return this.callParent([doc]); + }, + + + createFieldAccessExpression: function(field, fieldVarName, dataName) { + var namespace = this.namespace, + selector, result; + + selector = field.mapping || ((namespace ? namespace + '|' : '') + field.name); + + if (typeof selector === 'function') { + result = fieldVarName + '.mapping(' + dataName + ', this)'; + } else { + result = 'me.getNodeValue(Ext.DomQuery.selectNode("' + selector + '", ' + dataName + '))'; + } + return result; + } +}); + + +Ext.define('Ext.data.writer.Xml', { + + + + extend: Ext.data.writer.Writer , + alternateClassName: 'Ext.data.XmlWriter', + + alias: 'writer.xml', + + + + + documentRoot: 'xmlData', + + + defaultDocumentRoot: 'xmlData', + + + header: '', + + + record: 'record', + + + writeRecords: function(request, data) { + var me = this, + xml = [], + i = 0, + len = data.length, + root = me.documentRoot, + record = me.record, + needsRoot = data.length !== 1, + item, + key; + + + xml.push(me.header || ''); + + if (!root && needsRoot) { + root = me.defaultDocumentRoot; + } + + if (root) { + xml.push('<', root, '>'); + } + + for (; i < len; ++i) { + item = data[i]; + xml.push('<', record, '>'); + for (key in item) { + if (item.hasOwnProperty(key)) { + xml.push('<', key, '>', item[key], ''); + } + } + xml.push(''); + } + + if (root) { + xml.push(''); + } + + request.xmlData = xml.join(''); + return request; + } +}); + + +Ext.define('Ext.data.XmlStore', { + extend: Ext.data.Store , + alias: 'store.xml', + + + + + + + + constructor: function(config){ + config = Ext.apply({ + proxy: { + type: 'ajax', + reader: 'xml', + writer: 'xml' + } + }, config); + + this.callParent([config]); + } +}); + + +Ext.define('Ext.data.association.BelongsTo', { + extend: Ext.data.association.Association , + alternateClassName: 'Ext.data.BelongsToAssociation', + alias: 'association.belongsto', + + + + + + + + + constructor: function(config) { + this.callParent(arguments); + + var me = this, + ownerProto = me.ownerModel.prototype, + associatedName = me.associatedName, + getterName = me.getterName || 'get' + associatedName, + setterName = me.setterName || 'set' + associatedName; + + Ext.applyIf(me, { + name : associatedName, + foreignKey : associatedName.toLowerCase() + "_id", + instanceName: associatedName + 'BelongsToInstance', + associationKey: associatedName.toLowerCase() + }); + + ownerProto[getterName] = me.createGetter(); + ownerProto[setterName] = me.createSetter(); + }, + + + createSetter: function() { + var me = this, + foreignKey = me.foreignKey, + instanceName = me.instanceName; + + + return function(value, options, scope) { + + var setByRecord = value && value.isModel, + valueToSet = setByRecord ? value.getId() : value; + + + if (setByRecord) { + this[instanceName] = value; + } + + + else if (this[instanceName] instanceof Ext.data.Model && !this.isEqual(this.get(foreignKey), valueToSet)) { + delete this[instanceName]; + } + + + this.set(foreignKey, valueToSet); + + if (Ext.isFunction(options)) { + options = { + callback: options, + scope: scope || this + }; + } + + if (Ext.isObject(options)) { + return this.save(options); + } + }; + }, + + + createGetter: function() { + var me = this, + associatedName = me.associatedName, + associatedModel = me.associatedModel, + foreignKey = me.foreignKey, + primaryKey = me.primaryKey, + instanceName = me.instanceName; + + + return function(options, scope) { + options = options || {}; + + var model = this, + foreignKeyId = model.get(foreignKey), + success, + instance, + args; + + if (options.reload === true || model[instanceName] === undefined) { + instance = Ext.ModelManager.create({}, associatedName); + instance.set(primaryKey, foreignKeyId); + + if (typeof options == 'function') { + options = { + callback: options, + scope: scope || model + }; + } + + + success = options.success; + options.success = function(rec){ + model[instanceName] = rec; + if (success) { + success.apply(this, arguments); + } + }; + + associatedModel.load(foreignKeyId, options); + + model[instanceName] = instance; + return instance; + } else { + instance = model[instanceName]; + args = [instance]; + scope = scope || options.scope || model; + + + + + Ext.callback(options, scope, args); + Ext.callback(options.success, scope, args); + Ext.callback(options.failure, scope, args); + Ext.callback(options.callback, scope, args); + + return instance; + } + }; + }, + + + read: function(record, reader, associationData){ + record[this.instanceName] = reader.read([associationData]).records[0]; + } +}); + + +Ext.define('Ext.util.Inflector', { + + + + singleton: true, + + + + + plurals: [ + [(/(quiz)$/i), "$1zes" ], + [(/^(ox)$/i), "$1en" ], + [(/([m|l])ouse$/i), "$1ice" ], + [(/(matr|vert|ind)ix|ex$/i), "$1ices" ], + [(/(x|ch|ss|sh)$/i), "$1es" ], + [(/([^aeiouy]|qu)y$/i), "$1ies" ], + [(/(hive)$/i), "$1s" ], + [(/(?:([^f])fe|([lr])f)$/i), "$1$2ves"], + [(/sis$/i), "ses" ], + [(/([ti])um$/i), "$1a" ], + [(/(buffal|tomat|potat)o$/i), "$1oes" ], + [(/(bu)s$/i), "$1ses" ], + [(/(alias|status|sex)$/i), "$1es" ], + [(/(octop|vir)us$/i), "$1i" ], + [(/(ax|test)is$/i), "$1es" ], + [(/^person$/), "people" ], + [(/^man$/), "men" ], + [(/^(child)$/), "$1ren" ], + [(/s$/i), "s" ], + [(/$/), "s" ] + ], + + + singulars: [ + [(/(quiz)zes$/i), "$1" ], + [(/(matr)ices$/i), "$1ix" ], + [(/(vert|ind)ices$/i), "$1ex" ], + [(/^(ox)en/i), "$1" ], + [(/(alias|status)es$/i), "$1" ], + [(/(octop|vir)i$/i), "$1us" ], + [(/(cris|ax|test)es$/i), "$1is" ], + [(/(shoe)s$/i), "$1" ], + [(/(o)es$/i), "$1" ], + [(/(bus)es$/i), "$1" ], + [(/([m|l])ice$/i), "$1ouse" ], + [(/(x|ch|ss|sh)es$/i), "$1" ], + [(/(m)ovies$/i), "$1ovie" ], + [(/(s)eries$/i), "$1eries"], + [(/([^aeiouy]|qu)ies$/i), "$1y" ], + [(/([lr])ves$/i), "$1f" ], + [(/(tive)s$/i), "$1" ], + [(/(hive)s$/i), "$1" ], + [(/([^f])ves$/i), "$1fe" ], + [(/(^analy)ses$/i), "$1sis" ], + [(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i), "$1$2sis"], + [(/([ti])a$/i), "$1um" ], + [(/(n)ews$/i), "$1ews" ], + [(/people$/i), "person" ], + [(/s$/i), "" ] + ], + + + uncountable: [ + "sheep", + "fish", + "series", + "species", + "money", + "rice", + "information", + "equipment", + "grass", + "mud", + "offspring", + "deer", + "means" + ], + + + singular: function(matcher, replacer) { + this.singulars.unshift([matcher, replacer]); + }, + + + plural: function(matcher, replacer) { + this.plurals.unshift([matcher, replacer]); + }, + + + clearSingulars: function() { + this.singulars = []; + }, + + + clearPlurals: function() { + this.plurals = []; + }, + + + isTransnumeral: function(word) { + return Ext.Array.indexOf(this.uncountable, word) != -1; + }, + + + pluralize: function(word) { + if (this.isTransnumeral(word)) { + return word; + } + + var plurals = this.plurals, + length = plurals.length, + tuple, regex, i; + + for (i = 0; i < length; i++) { + tuple = plurals[i]; + regex = tuple[0]; + + if (regex == word || (regex.test && regex.test(word))) { + return word.replace(regex, tuple[1]); + } + } + + return word; + }, + + + singularize: function(word) { + if (this.isTransnumeral(word)) { + return word; + } + + var singulars = this.singulars, + length = singulars.length, + tuple, regex, i; + + for (i = 0; i < length; i++) { + tuple = singulars[i]; + regex = tuple[0]; + + if (regex == word || (regex.test && regex.test(word))) { + return word.replace(regex, tuple[1]); + } + } + + return word; + }, + + + classify: function(word) { + return Ext.String.capitalize(this.singularize(word)); + }, + + + ordinalize: function(number) { + var parsed = parseInt(number, 10), + mod10 = parsed % 10, + mod100 = parsed % 100; + + + if (11 <= mod100 && mod100 <= 13) { + return number + "th"; + } else { + switch(mod10) { + case 1 : return number + "st"; + case 2 : return number + "nd"; + case 3 : return number + "rd"; + default: return number + "th"; + } + } + } +}, function() { + + var irregulars = { + alumnus: 'alumni', + cactus : 'cacti', + focus : 'foci', + nucleus: 'nuclei', + radius: 'radii', + stimulus: 'stimuli', + ellipsis: 'ellipses', + paralysis: 'paralyses', + oasis: 'oases', + appendix: 'appendices', + index: 'indexes', + beau: 'beaux', + bureau: 'bureaux', + tableau: 'tableaux', + woman: 'women', + child: 'children', + man: 'men', + corpus: 'corpora', + criterion: 'criteria', + curriculum: 'curricula', + genus: 'genera', + memorandum: 'memoranda', + phenomenon: 'phenomena', + foot: 'feet', + goose: 'geese', + tooth: 'teeth', + antenna: 'antennae', + formula: 'formulae', + nebula: 'nebulae', + vertebra: 'vertebrae', + vita: 'vitae' + }, + singular; + + for (singular in irregulars) { + this.plural(singular, irregulars[singular]); + this.singular(irregulars[singular], singular); + } +}); + + +Ext.define('Ext.data.association.HasMany', { + extend: Ext.data.association.Association , + alternateClassName: 'Ext.data.HasManyAssociation', + + + alias: 'association.hasmany', + + + + + + + + + + + + + + constructor: function(config) { + var me = this, + ownerProto, + name; + + me.callParent(arguments); + + me.name = me.name || Ext.util.Inflector.pluralize(me.associatedName.toLowerCase()); + + ownerProto = me.ownerModel.prototype; + name = me.name; + + Ext.applyIf(me, { + storeName : name + "Store", + foreignKey: me.ownerName.toLowerCase() + "_id" + }); + + ownerProto[name] = me.createStore(); + }, + + + createStore: function() { + var that = this, + associatedModel = that.associatedModel, + storeName = that.storeName, + foreignKey = that.foreignKey, + primaryKey = that.primaryKey, + filterProperty = that.filterProperty, + autoLoad = that.autoLoad, + storeConfig = that.storeConfig || {}; + + return function() { + var me = this, + config, filter, + modelDefaults = {}; + + if (me[storeName] === undefined) { + if (filterProperty) { + filter = { + property : filterProperty, + value : me.get(filterProperty), + exactMatch: true + }; + } else { + filter = { + property : foreignKey, + value : me.get(primaryKey), + exactMatch: true + }; + } + + modelDefaults[foreignKey] = me.get(primaryKey); + + config = Ext.apply({}, storeConfig, { + model : associatedModel, + filters : [filter], + remoteFilter : false, + modelDefaults: modelDefaults, + disableMetaChangeEvent: true + }); + + me[storeName] = Ext.data.AbstractStore.create(config); + if (autoLoad) { + me[storeName].load(); + } + } + + return me[storeName]; + }; + }, + + + read: function(record, reader, associationData){ + var store = record[this.name](), + inverse, + items, iLen, i; + + store.add(reader.read(associationData).records); + + + + inverse = this.associatedModel.prototype.associations.findBy(function(assoc){ + return assoc.type === 'belongsTo' && assoc.associatedName === record.$className; + }); + + + if (inverse) { + items = store.data.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + items[i][inverse.instanceName] = record; + } + } + } +}); + + +Ext.define('Ext.data.association.HasOne', { + extend: Ext.data.association.Association , + alternateClassName: 'Ext.data.HasOneAssociation', + + alias: 'association.hasone', + + + + + + + + + + constructor: function(config) { + this.callParent(arguments); + + var me = this, + ownerProto = me.ownerModel.prototype, + associatedName = me.associatedName, + getterName = me.getterName || 'get' + associatedName, + setterName = me.setterName || 'set' + associatedName; + + Ext.applyIf(me, { + name : associatedName, + foreignKey : associatedName.toLowerCase() + "_id", + instanceName: associatedName + 'HasOneInstance', + associationKey: associatedName.toLowerCase() + }); + + ownerProto[getterName] = me.createGetter(); + ownerProto[setterName] = me.createSetter(); + }, + + + createSetter: function() { + var me = this, + foreignKey = me.foreignKey, + instanceName = me.instanceName; + + + return function(value, options, scope) { + + var setByRecord = value && value.isModel, + valueToSet = setByRecord ? value.getId() : value; + + + if (setByRecord) { + this[instanceName] = value; + } + + + else if (this[instanceName] instanceof Ext.data.Model && !this.isEqual(this.get(foreignKey), valueToSet)) { + delete this[instanceName]; + } + + + this.set(foreignKey, valueToSet); + + if (Ext.isFunction(options)) { + options = { + callback: options, + scope: scope || this + }; + } + + if (Ext.isObject(options)) { + return this.save(options); + } + }; + }, + + + createGetter: function() { + var me = this, + ownerModel = me.ownerModel, + associatedName = me.associatedName, + associatedModel = me.associatedModel, + foreignKey = me.foreignKey, + primaryKey = me.primaryKey, + instanceName = me.instanceName; + + + return function(options, scope) { + options = options || {}; + + var model = this, + foreignKeyId = model.get(foreignKey), + success, + instance, + args; + + if (options.reload === true || model[instanceName] === undefined) { + instance = Ext.ModelManager.create({}, associatedName); + instance.set(primaryKey, foreignKeyId); + + if (typeof options == 'function') { + options = { + callback: options, + scope: scope || model + }; + } + + + success = options.success; + options.success = function(rec){ + model[instanceName] = rec; + if (success) { + success.apply(this, arguments); + } + }; + + associatedModel.load(foreignKeyId, options); + + model[instanceName] = instance; + return instance; + } else { + instance = model[instanceName]; + args = [instance]; + scope = scope || options.scope || model; + + + + + Ext.callback(options, scope, args); + Ext.callback(options.success, scope, args); + Ext.callback(options.failure, scope, args); + Ext.callback(options.callback, scope, args); + + return instance; + } + }; + }, + + + read: function(record, reader, associationData){ + var inverse = this.associatedModel.prototype.associations.findBy(function(assoc){ + return assoc.type === 'belongsTo' && assoc.associatedName === record.$className; + }), newRecord = reader.read([associationData]).records[0]; + + record[this.instanceName] = newRecord; + + + if (inverse) { + newRecord[inverse.instanceName] = record; + } + } +}); + + +Ext.define('Ext.data.proxy.WebStorage', { + extend: Ext.data.proxy.Client , + alternateClassName: 'Ext.data.WebStorageProxy', + + + + + + id: undefined, + + + + + + + constructor: function(config) { + this.callParent(arguments); + + + this.cache = {}; + + + + this.id = this.id || (this.store ? this.store.storeId : undefined); + + + this.initialize(); + }, + + + create: function(operation, callback, scope) { + var me = this, + records = operation.records, + length = records.length, + ids = me.getIds(), + id, record, i; + + operation.setStarted(); + + if(me.isHierarchical === undefined) { + + + me.isHierarchical = !!records[0].isNode; + if(me.isHierarchical) { + me.getStorageObject().setItem(me.getTreeKey(), true); + } + } + + for (i = 0; i < length; i++) { + record = records[i]; + + if (record.phantom) { + record.phantom = false; + id = me.getNextId(); + } else { + id = record.getId(); + } + + me.setRecord(record, id); + record.commit(); + ids.push(id); + } + + me.setIds(ids); + + operation.setCompleted(); + operation.setSuccessful(); + + if (typeof callback == 'function') { + callback.call(scope || me, operation); + } + }, + + + read: function(operation, callback, scope) { + + + var me = this, + records = [], + i = 0, + success = true, + Model = me.model, + ids, length, record, data, id; + + operation.setStarted(); + + if(me.isHierarchical) { + records = me.getTreeData(); + } else { + ids = me.getIds(); + length = ids.length; + id = operation.id; + + if (id) { + data = me.getRecord(id); + if (data !== null) { + record = new Model(data, id, data); + } + + if (record) { + records.push(record); + } else { + success = false; + } + } else { + for (; i < length; i++) { + id = ids[i]; + data = me.getRecord(id); + records.push(new Model(data, id, data)); + } + } + + } + + if(success) { + operation.setSuccessful(); + } + operation.setCompleted(); + + operation.resultSet = Ext.create('Ext.data.ResultSet', { + records: records, + total : records.length, + loaded : true + }); + + if (typeof callback == 'function') { + callback.call(scope || me, operation); + } + }, + + + update: function(operation, callback, scope) { + var records = operation.records, + length = records.length, + ids = this.getIds(), + record, id, i; + + operation.setStarted(); + + for (i = 0; i < length; i++) { + record = records[i]; + this.setRecord(record); + record.commit(); + + + + id = record.getId(); + if (id !== undefined && Ext.Array.indexOf(ids, id) == -1) { + ids.push(id); + } + } + this.setIds(ids); + + operation.setCompleted(); + operation.setSuccessful(); + + if (typeof callback == 'function') { + callback.call(scope || this, operation); + } + }, + + + destroy: function(operation, callback, scope) { + var me = this, + records = operation.records, + ids = me.getIds(), + idLength = ids.length, + newIds = [], + removedHash = {}, + i = records.length, + id; + + operation.setStarted(); + + for (; i--;) { + Ext.apply(removedHash, me.removeRecord(records[i])); + } + + for(i = 0; i < idLength; i++) { + id = ids[i]; + if(!removedHash[id]) { + newIds.push(id); + } + } + + me.setIds(newIds); + + operation.setCompleted(); + operation.setSuccessful(); + + if (typeof callback == 'function') { + callback.call(scope || me, operation); + } + }, + + + getRecord: function(id) { + var me = this, + cache = me.cache, + data = !cache[id] ? Ext.decode(me.getStorageObject().getItem(me.getRecordKey(id))) : cache[id]; + + if(!data) { + return null; + } + + cache[id] = data; + data[me.model.prototype.idProperty] = id; + + return data; + }, + + + setRecord: function(record, id) { + if (id) { + record.setId(id); + } else { + id = record.getId(); + } + + var me = this, + rawData = record.data, + data = {}, + model = me.model, + fields = model.prototype.fields.items, + length = fields.length, + i = 0, + field, name, obj, key; + + for (; i < length; i++) { + field = fields[i]; + name = field.name; + + if(field.persist) { + data[name] = rawData[name]; + } + } + + + delete data[me.model.prototype.idProperty]; + + + if(record.isNode && record.get('depth') === 1) { + delete data.parentId; + } + + obj = me.getStorageObject(); + key = me.getRecordKey(id); + + + me.cache[id] = data; + + + obj.removeItem(key); + obj.setItem(key, Ext.encode(data)); + }, + + + removeRecord: function(record) { + var me = this, + id = record.getId(), + records = {}, + i, childNodes; + + records[id] = record; + me.getStorageObject().removeItem(me.getRecordKey(id)); + delete me.cache[id]; + + if(record.childNodes) { + childNodes = record.childNodes; + for(i = childNodes.length; i--;) { + Ext.apply(records, me.removeRecord(childNodes[i])); + } + } + + return records; + }, + + + getRecordKey: function(id) { + if (id.isModel) { + id = id.getId(); + } + + return Ext.String.format("{0}-{1}", this.id, id); + }, + + + getRecordCounterKey: function() { + return Ext.String.format("{0}-counter", this.id); + }, + + + getTreeKey: function() { + return Ext.String.format("{0}-tree", this.id); + }, + + + getIds: function() { + var me = this, + ids = (me.getStorageObject().getItem(me.id) || "").split(","), + model = me.model, + length = ids.length, + isString = model.prototype.fields.get(model.prototype.idProperty).type.type === 'string', + i; + + if (length == 1 && ids[0] === "") { + ids = []; + } else { + for (i = 0; i < length; i++) { + ids[i] = isString ? ids[i] : +ids[i]; + } + } + + return ids; + }, + + + setIds: function(ids) { + var obj = this.getStorageObject(), + str = ids.join(","); + + obj.removeItem(this.id); + + if (!Ext.isEmpty(str)) { + obj.setItem(this.id, str); + } + }, + + + getNextId: function() { + var me = this, + obj = me.getStorageObject(), + key = me.getRecordCounterKey(), + model = me.model, + isString = model.prototype.fields.get(model.prototype.idProperty).type.type === 'string', + id; + + id = me.idGenerator.generate(); + + obj.setItem(key, id); + + if(!isString) { + id = +id; + } + + return id; + }, + + + getTreeData: function() { + var me = this, + ids = me.getIds(), + length = ids.length, + records = [], + recordHash = {}, + root = [], + i = 0, + Model = me.model, + idProperty = Model.prototype.idProperty, + rootLength, record, parent, parentId, children, id; + + for(; i < length; i++) { + id = ids[i]; + + record = me.getRecord(id); + + records.push(record); + + recordHash[id] = record; + if(!record.parentId) { + + root.push(record); + } + } + + rootLength = root.length; + + + Ext.Array.sort(records, me.sortByParentId); + + + for(i = rootLength; i < length; i++) { + record = records[i]; + parentId = record.parentId; + if(!parent || parent[idProperty] !== parentId) { + + parent = recordHash[parentId]; + parent.children = children = []; + } + + + children.push(record); + } + + for(i = length; i--;) { + record = records[i]; + if(!record.children && !record.leaf) { + + record.loaded = true; + } + } + + + for(i = rootLength; i--;) { + record = root[i]; + root[i] = new Model(record, record[idProperty], record); + } + + return root; + }, + + + sortByParentId: function(node1, node2) { + return (node1.parentId || 0) - (node2.parentId || 0); + }, + + + initialize: function() { + var me = this, + storageObject = me.getStorageObject(), + lastId = +storageObject.getItem(me.getRecordCounterKey()); + + storageObject.setItem(me.id, storageObject.getItem(me.id) || ""); + if(storageObject.getItem(me.getTreeKey())) { + me.isHierarchical = true; + } + + me.idGenerator = new Ext.data.SequentialIdGenerator({ + seed: lastId ? lastId + 1 : 1 + }); + }, + + + clear: function() { + var me = this, + obj = me.getStorageObject(), + ids = me.getIds(), + len = ids.length, + i; + + + for (i = 0; i < len; i++) { + obj.removeItem(me.getRecordKey(ids[i])); + } + + + obj.removeItem(me.getRecordCounterKey()); + obj.removeItem(me.getTreeKey()); + obj.removeItem(me.id); + + + me.cache = {}; + }, + + + getStorageObject: function() { + } +}); + + +Ext.define('Ext.data.proxy.LocalStorage', { + extend: Ext.data.proxy.WebStorage , + alias: 'proxy.localstorage', + alternateClassName: 'Ext.data.LocalStorageProxy', + + + getStorageObject: function() { + return window.localStorage; + } +}); + + +Ext.define('Ext.data.proxy.Rest', { + extend: Ext.data.proxy.Ajax , + alternateClassName: 'Ext.data.RestProxy', + alias : 'proxy.rest', + + + actionMethods: { + create : 'POST', + read : 'GET', + update : 'PUT', + destroy: 'DELETE' + }, + + + appendId: true, + + + + + batchActions: false, + + + buildUrl: function(request) { + var me = this, + operation = request.operation, + records = operation.records || [], + record = records[0], + format = me.format, + url = me.getUrl(request), + id = record ? record.getId() : operation.id; + + if (me.appendId && me.isValidId(id)) { + if (!url.match(/\/$/)) { + url += '/'; + } + + url += id; + } + + if (format) { + if (!url.match(/\.$/)) { + url += '.'; + } + + url += format; + } + + request.url = url; + + return me.callParent(arguments); + }, + + isValidId: function(id) { + return id || id === 0; + } +}); + + +Ext.define('Ext.data.proxy.SessionStorage', { + extend: Ext.data.proxy.WebStorage , + alias: 'proxy.sessionstorage', + alternateClassName: 'Ext.data.SessionStorageProxy', + + + getStorageObject: function() { + return window.sessionStorage; + } +}); + + + + + +Ext.define('Ext.dd.DDTarget', { + extend: Ext.dd.DragDrop , + + + constructor: function(id, sGroup, config) { + if (id) { + this.initTarget(id, sGroup, config); + } + }, + + + 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.define('Ext.dd.DragTracker', { + + + + mixins: { + observable: Ext.util.Observable + }, + + + active: false, + + + + + trackOver: false, + + + + + + + tolerance: 5, + + + autoStart: false, + + + + + + + + constructor : function(config){ + var me = this; + Ext.apply(me, config); + me.addEvents( + + 'mouseover', + + + 'mouseout', + + + 'mousedown', + + + 'mouseup', + + + 'mousemove', + + + 'beforedragstart', + + + 'dragstart', + + + 'dragend', + + + 'drag' + ); + + me.dragRegion = new Ext.util.Region(0,0,0,0); + + if (me.el) { + me.initEl(me.el); + } + + + me.mixins.observable.constructor.call(me); + if (me.disabled) { + me.disable(); + } + + }, + + + initEl: function(el) { + var me = this; + + me.el = Ext.get(el); + + + me.handle = Ext.get(me.delegate); + + + me.delegate = me.handle ? undefined : me.delegate; + + if (!me.handle) { + me.handle = me.el; + } + + + + me.handleListeners = { + scope: me, + delegate: me.delegate, + mousedown: me.onMouseDown + }; + + + + + if (me.trackOver || me.overCls) { + Ext.apply(me.handleListeners, { + mouseover: me.onMouseOver, + mouseout: me.onMouseOut + }); + } + me.mon(me.handle, me.handleListeners); + }, + + disable: function() { + this.disabled = true; + }, + + enable: function() { + this.disabled = false; + }, + + destroy : function() { + var me = this; + + if (me.active) { + + me.endDrag({}); + } + me.clearListeners(); + me.mun(me.handle, me.handleListeners); + me.el = me.handle = null; + }, + + + + onMouseOver: function(e, target) { + var me = this; + if (!me.disabled) { + if (Ext.EventManager.contains(e) || me.delegate) { + me.mouseIsOut = false; + if (me.overCls) { + me.el.addCls(me.overCls); + } + me.fireEvent('mouseover', me, e, me.delegate ? e.getTarget(me.delegate, target) : me.handle); + } + } + }, + + + + onMouseOut: function(e) { + var me = this; + + if (me.mouseIsDown) { + me.mouseIsOut = true; + } else { + if (me.overCls) { + me.el.removeCls(me.overCls); + } + me.fireEvent('mouseout', me, e); + } + }, + + onMouseDown: function(e, target){ + var me = this, + el; + + + if (me.disabled ||e.dragTracked) { + return; + } + + + me.dragTarget = me.delegate ? target : me.handle.dom; + me.startXY = me.lastXY = e.getXY(); + me.startRegion = Ext.fly(me.dragTarget).getRegion(); + + if (me.fireEvent('mousedown', me, e) === false || + me.fireEvent('beforedragstart', me, e) === false || + me.onBeforeStart(e) === false) { + return; + } + + + + me.mouseIsDown = true; + + + e.dragTracked = true; + + + el = me.el.dom; + if (Ext.isIE && el.setCapture) { + el.setCapture(); + } + + if (me.preventDefault !== false) { + e.preventDefault(); + } + Ext.getDoc().on({ + scope: me, + mouseup: me.onMouseUp, + mousemove: me.onMouseMove, + selectstart: me.stopSelect + }); + if (me.autoStart) { + me.timer = Ext.defer(me.triggerStart, me.autoStart === true ? 1000 : me.autoStart, me, [e]); + } + }, + + onMouseMove: function(e, target){ + var me = this, + xy = e.getXY(), + s = me.startXY; + + e.preventDefault(); + + me.lastXY = xy; + if (!me.active) { + if (Math.max(Math.abs(s[0]-xy[0]), Math.abs(s[1]-xy[1])) > me.tolerance) { + me.triggerStart(e); + } else { + return; + } + } + + + if (me.fireEvent('mousemove', me, e) === false) { + me.onMouseUp(e); + } else { + me.onDrag(e); + me.fireEvent('drag', me, e); + } + }, + + onMouseUp: function(e) { + var me = this; + + + me.mouseIsDown = false; + + + if (me.mouseIsOut) { + me.mouseIsOut = false; + me.onMouseOut(e); + } + e.preventDefault(); + + + if (Ext.isIE && document.releaseCapture) { + document.releaseCapture(); + } + + me.fireEvent('mouseup', me, e); + me.endDrag(e); + }, + + + endDrag: function(e) { + var me = this, + wasActive = me.active; + + Ext.getDoc().un({ + mousemove: me.onMouseMove, + mouseup: me.onMouseUp, + selectstart: me.stopSelect, + scope: me + }); + me.clearStart(); + me.active = false; + if (wasActive) { + me.onEnd(e); + me.fireEvent('dragend', me, e); + } + + + me._constrainRegion = Ext.EventObject.dragTracked = null + }, + + triggerStart: function(e) { + var me = this; + me.clearStart(); + me.active = true; + me.onStart(e); + me.fireEvent('dragstart', me, e); + }, + + clearStart : function() { + var timer = this.timer; + if (timer) { + clearTimeout(timer); + this.timer = null; + } + }, + + stopSelect : function(e) { + e.stopEvent(); + return false; + }, + + + onBeforeStart : function(e) { + + }, + + + onStart : function(xy) { + + }, + + + onDrag : function(e) { + + }, + + + onEnd : function(e) { + + }, + + + getDragTarget : function(){ + return this.dragTarget; + }, + + + getDragCt : function(){ + return this.el; + }, + + + getConstrainRegion: function() { + var me = this; + + if (me.constrainTo) { + if (me.constrainTo instanceof Ext.util.Region) { + return me.constrainTo; + } + if (!me._constrainRegion) { + me._constrainRegion = Ext.fly(me.constrainTo).getViewRegion(); + } + } else { + if (!me._constrainRegion) { + me._constrainRegion = me.getDragCt().getViewRegion(); + } + } + return me._constrainRegion; + }, + + getXY : function(constrain){ + return constrain ? this.constrainModes[constrain](this, this.lastXY) : this.lastXY; + }, + + + getOffset : function(constrain){ + var xy = this.getXY(constrain), + s = this.startXY; + + return [xy[0]-s[0], xy[1]-s[1]]; + }, + + constrainModes: { + + point: function(me, xy) { + var dr = me.dragRegion, + constrainTo = me.getConstrainRegion(); + + + if (!constrainTo) { + return xy; + } + + dr.x = dr.left = dr[0] = dr.right = xy[0]; + dr.y = dr.top = dr[1] = dr.bottom = xy[1]; + dr.constrainTo(constrainTo); + + return [dr.left, dr.top]; + }, + + + dragTarget: function(me, xy) { + var s = me.startXY, + dr = me.startRegion.copy(), + constrainTo = me.getConstrainRegion(), + adjust; + + + if (!constrainTo) { + return xy; + } + + + + + dr.translateBy(xy[0]-s[0], xy[1]-s[1]); + + + if (dr.right > constrainTo.right) { + xy[0] += adjust = (constrainTo.right - dr.right); + dr.left += adjust; + } + if (dr.left < constrainTo.left) { + xy[0] += (constrainTo.left - dr.left); + } + + + if (dr.bottom > constrainTo.bottom) { + xy[1] += adjust = (constrainTo.bottom - dr.bottom); + dr.top += adjust; + } + if (dr.top < constrainTo.top) { + xy[1] += (constrainTo.top - dr.top); + } + return xy; + } + } +}); + + +Ext.define('Ext.dd.DragZone', { + extend: Ext.dd.DragSource , + + + constructor : function(el, config){ + var me = this, + scroll = me.containerScroll; + + me.callParent([el, config]); + if (scroll) { + el = me.scrollEl || el; + el = Ext.get(el); + if (Ext.isObject(scroll)) { + el.ddScrollConfig = scroll; + } + Ext.dd.ScrollManager.register(el); + } + }, + + + + + + + getDragData : function(e){ + return Ext.dd.Registry.getHandleFromEvent(e); + }, + + + onInitDrag : function(x, y){ + this.proxy.update(this.dragData.ddel.cloneNode(true)); + this.onStartDrag(x, y); + return true; + }, + + + getRepairXY : function(e){ + return Ext.fly(this.dragData.ddel).getXY(); + }, + + destroy : function(){ + this.callParent(); + if (this.containerScroll) { + Ext.dd.ScrollManager.unregister(this.scrollEl || this.el); + } + } +}); + + +Ext.define('Ext.dd.ScrollManager', { + singleton: true, + + + + + constructor: function() { + var ddm = Ext.dd.DragDropManager; + ddm.fireEvents = Ext.Function.createSequence(ddm.fireEvents, this.onFire, this); + ddm.stopDrag = Ext.Function.createSequence(ddm.stopDrag, this.onStop, this); + this.doScroll = Ext.Function.bind(this.doScroll, this); + this.ddmInstance = ddm; + this.els = {}; + this.dragEl = null; + this.proc = {}; + }, + + onStop: function(e){ + var sm = Ext.dd.ScrollManager; + sm.dragEl = null; + sm.clearProc(); + }, + + triggerRefresh: function() { + if (this.ddmInstance.dragCurrent) { + this.ddmInstance.refreshCache(this.ddmInstance.dragCurrent.groups); + } + }, + + doScroll: function() { + if (this.ddmInstance.dragCurrent) { + var proc = this.proc, + procEl = proc.el, + ddScrollConfig = proc.el.ddScrollConfig, + inc = ddScrollConfig ? ddScrollConfig.increment : this.increment; + + if (!this.animate) { + if (procEl.scroll(proc.dir, inc)) { + this.triggerRefresh(); + } + } else { + procEl.scroll(proc.dir, inc, true, this.animDuration, this.triggerRefresh); + } + } + }, + + clearProc: function() { + var proc = this.proc; + if (proc.id) { + clearInterval(proc.id); + } + proc.id = 0; + proc.el = null; + proc.dir = ""; + }, + + startProc: function(el, dir) { + this.clearProc(); + this.proc.el = el; + this.proc.dir = dir; + var group = el.ddScrollConfig ? el.ddScrollConfig.ddGroup : undefined, + freq = (el.ddScrollConfig && el.ddScrollConfig.frequency) + ? el.ddScrollConfig.frequency + : this.frequency; + + if (group === undefined || this.ddmInstance.dragCurrent.ddGroup == group) { + this.proc.id = setInterval(this.doScroll, freq); + } + }, + + onFire: function(e, isDrop) { + if (isDrop || !this.ddmInstance.dragCurrent) { + return; + } + if (!this.dragEl || this.dragEl != this.ddmInstance.dragCurrent) { + this.dragEl = this.ddmInstance.dragCurrent; + + this.refreshCache(); + } + + var xy = e.getXY(), + pt = e.getPoint(), + proc = this.proc, + els = this.els, + id, el, r, c; + + for (id in els) { + el = els[id]; + r = el._region; + c = el.ddScrollConfig ? el.ddScrollConfig : this; + if (r && r.contains(pt) && el.isScrollable()) { + if (r.bottom - pt.y <= c.vthresh) { + if(proc.el != el){ + this.startProc(el, "down"); + } + return; + }else if (r.right - pt.x <= c.hthresh) { + if (proc.el != el) { + this.startProc(el, "left"); + } + return; + } else if(pt.y - r.top <= c.vthresh) { + if (proc.el != el) { + this.startProc(el, "up"); + } + return; + } else if(pt.x - r.left <= c.hthresh) { + if (proc.el != el) { + this.startProc(el, "right"); + } + return; + } + } + } + this.clearProc(); + }, + + + register : function(el){ + if (Ext.isArray(el)) { + for(var i = 0, len = el.length; i < len; i++) { + this.register(el[i]); + } + } else { + el = Ext.get(el); + this.els[el.id] = el; + } + }, + + + unregister : function(el){ + if(Ext.isArray(el)){ + for (var i = 0, len = el.length; i < len; i++) { + this.unregister(el[i]); + } + }else{ + el = Ext.get(el); + delete this.els[el.id]; + } + }, + + + vthresh : 25, + + + hthresh : 25, + + + increment : 100, + + + frequency : 500, + + + animate: true, + + + animDuration: 0.4, + + + ddGroup: undefined, + + + refreshCache : function(){ + var els = this.els, + id; + for (id in els) { + if(typeof els[id] == 'object'){ + els[id]._region = els[id].getRegion(); + } + } + } +}); + + +Ext.define('Ext.dd.DropTarget', { + extend: Ext.dd.DDTarget , + + + + constructor : function(el, config){ + this.el = Ext.get(el); + + Ext.apply(this, config); + + if(this.containerScroll){ + Ext.dd.ScrollManager.register(this.el); + } + + this.callParent([this.el.dom, this.ddGroup || this.group, + {isTarget: true}]); + }, + + + + + dropAllowed : Ext.baseCSSPrefix + 'dd-drop-ok', + + dropNotAllowed : Ext.baseCSSPrefix + 'dd-drop-nodrop', + + + isTarget : true, + + + isNotifyTarget : true, + + + notifyEnter : function(dd, e, data){ + if(this.overClass){ + this.el.addCls(this.overClass); + } + return this.dropAllowed; + }, + + + notifyOver : function(dd, e, data){ + return this.dropAllowed; + }, + + + notifyOut : function(dd, e, data){ + if(this.overClass){ + this.el.removeCls(this.overClass); + } + }, + + + notifyDrop : function(dd, e, data){ + return false; + }, + + destroy : function(){ + this.callParent(); + if(this.containerScroll){ + Ext.dd.ScrollManager.unregister(this.el); + } + } +}); + + +Ext.define('Ext.dd.Registry', { + singleton: true, + constructor: function() { + this.elements = {}; + this.handles = {}; + this.autoIdSeed = 0; + }, + + getId: function(el, autogen){ + if(typeof el == "string"){ + return el; + } + var id = el.id; + if(!id && autogen !== false){ + id = "extdd-" + (++this.autoIdSeed); + el.id = id; + } + return id; + }, + + + register : function(el, data){ + data = data || {}; + if (typeof el == "string") { + el = document.getElementById(el); + } + data.ddel = el; + this.elements[this.getId(el)] = data; + if (data.isHandle !== false) { + this.handles[data.ddel.id] = data; + } + if (data.handles) { + var hs = data.handles, + i, len; + for (i = 0, len = hs.length; i < len; i++) { + this.handles[this.getId(hs[i])] = data; + } + } + }, + + + unregister : function(el){ + var id = this.getId(el, false), + data = this.elements[id], + hs, i, len; + if(data){ + delete this.elements[id]; + if(data.handles){ + hs = data.handles; + for (i = 0, len = hs.length; i < len; i++) { + delete this.handles[this.getId(hs[i], false)]; + } + } + } + }, + + + getHandle : function(id){ + if(typeof id != "string"){ + id = id.id; + } + return this.handles[id]; + }, + + + getHandleFromEvent : function(e){ + var t = e.getTarget(); + return t ? this.handles[t.id] : null; + }, + + + getTarget : function(id){ + if(typeof id != "string"){ + id = id.id; + } + return this.elements[id]; + }, + + + getTargetFromEvent : function(e){ + var t = e.getTarget(); + return t ? this.elements[t.id] || this.handles[t.id] : null; + } +}); + + +Ext.define('Ext.dd.DropZone', { + extend: Ext.dd.DropTarget , + + + + getTargetFromEvent : function(e){ + return Ext.dd.Registry.getTargetFromEvent(e); + }, + + + onNodeEnter : function(n, dd, e, data){ + + }, + + + onNodeOver : function(n, dd, e, data){ + return this.dropAllowed; + }, + + + onNodeOut : function(n, dd, e, data){ + + }, + + + onNodeDrop : function(n, dd, e, data){ + return false; + }, + + + onContainerOver : function(dd, e, data){ + return this.dropNotAllowed; + }, + + + onContainerDrop : function(dd, e, data){ + return false; + }, + + + notifyEnter : function(dd, e, data){ + return this.dropNotAllowed; + }, + + + notifyOver : function(dd, e, data){ + var n = this.getTargetFromEvent(e); + if(!n) { + if(this.lastOverNode){ + this.onNodeOut(this.lastOverNode, dd, e, data); + this.lastOverNode = null; + } + return this.onContainerOver(dd, e, data); + } + if(this.lastOverNode != n){ + if(this.lastOverNode){ + this.onNodeOut(this.lastOverNode, dd, e, data); + } + this.onNodeEnter(n, dd, e, data); + this.lastOverNode = n; + } + return this.onNodeOver(n, dd, e, data); + }, + + + notifyOut : function(dd, e, data){ + if(this.lastOverNode){ + this.onNodeOut(this.lastOverNode, dd, e, data); + this.lastOverNode = null; + } + }, + + + notifyDrop : function(dd, e, data){ + var me = this, + n = me.getTargetFromEvent(e), + result = n ? + me.onNodeDrop(n, dd, e, data) : + me.onContainerDrop(dd, e, data); + + + + if (me.lastOverNode) { + me.onNodeOut(me.lastOverNode, dd, e, data); + me.lastOverNode = null; + } + return result; + }, + + + triggerCacheRefresh : function() { + Ext.dd.DDM.refreshCache(this.groups); + } +}); + + +Ext.define('Ext.direct.Event', { + alias: 'direct.event', + + status: true, + + + constructor: function(config) { + Ext.apply(this, config); + }, + + + getName: function() { + return this.name; + }, + + + getData: function() { + return this.data; + } +}); + + +Ext.define('Ext.direct.RemotingEvent', { + extend: Ext.direct.Event , + alias: 'direct.rpc', + + + getTransaction: function() { + var me = this; + + return me.transaction || Ext.direct.Manager.getTransaction(me.tid); + } +}); + + +Ext.define('Ext.direct.ExceptionEvent', { + extend: Ext.direct.RemotingEvent , + alias: 'direct.exception', + + status: false +}); + + + +Ext.define('Ext.direct.JsonProvider', { + extend: Ext.direct.Provider , + alias: 'direct.jsonprovider', + + + + + + + + parseResponse: function(response) { + if (!Ext.isEmpty(response.responseText)) { + if (Ext.isObject(response.responseText)) { + return response.responseText; + } + + return Ext.decode(response.responseText); + } + + return null; + }, + + + createEvents: function(response) { + var me = this, + data = null, + events = [], + event, i, len; + + try { + data = me.parseResponse(response); + } + catch (e) { + event = new Ext.direct.ExceptionEvent({ + data: e, + xhr: response, + code: Ext.direct.Manager.exceptions.PARSE, + message: 'Error parsing json response: \n\n ' + e + }); + + return [event]; + } + + if (Ext.isArray(data)) { + for (i = 0, len = data.length; i < len; ++i) { + events.push(me.createEvent(data[i])); + } + } + else if (Ext.isObject(data)) { + events.push(me.createEvent(data)); + } + + return events; + }, + + + createEvent: function(response) { + if (typeof response !== 'object'|| !('type' in response)) { + return new Ext.direct.ExceptionEvent({ + data: response, + code: Ext.direct.Manager.exceptions.DATA, + message: 'Invalid data: event type is not specified' + }); + } + + return Ext.create('direct.' + response.type, response); + } +}); + + +Ext.define('Ext.direct.PollingProvider', { + extend: Ext.direct.JsonProvider , + alias: 'direct.pollingprovider', + + + + + + + + + + + + + interval: 3000, + + + + + + constructor: function(config) { + var me = this; + + me.callParent(arguments); + + me.addEvents( + + 'beforepoll', + + + 'poll' + ); + }, + + + isConnected: function() { + return !!this.pollTask; + }, + + + connect: function() { + var me = this, + url = me.url; + + if (url && !me.pollTask) { + me.pollTask = Ext.TaskManager.start({ + run: me.runPoll, + interval: me.interval, + scope: me + }); + + me.fireEvent('connect', me); + } + }, + + + disconnect: function() { + var me = this; + + if (me.pollTask) { + Ext.TaskManager.stop(me.pollTask); + delete me.pollTask; + me.fireEvent('disconnect', me); + } + }, + + + runPoll: function() { + var me = this, + url = me.url; + + if (me.fireEvent('beforepoll', me) !== false) { + if (Ext.isFunction(url)) { + url(me.baseParams); + } + else { + Ext.Ajax.request({ + url: url, + callback: me.onData, + scope: me, + params: me.baseParams + }); + } + + me.fireEvent('poll', me); + } + }, + + + onData: function(opt, success, response) { + var me = this, + i, len, events; + + if (success) { + events = me.createEvents(response); + + for (i = 0, len = events.length; i < len; ++i) { + me.fireEvent('data', me, events[i]); + } + } + else { + events = new Ext.direct.ExceptionEvent({ + data: null, + code: Ext.direct.Manager.exceptions.TRANSPORT, + message: 'Unable to connect to the server.', + xhr: response + }); + + me.fireEvent('data', me, events); + } + } +}); + + +Ext.define('Ext.direct.RemotingMethod', { + + constructor: function(config) { + var me = this, + params = Ext.isDefined(config.params) ? config.params : config.len, + name, pLen, p, param; + + me.name = config.name; + me.formHandler = config.formHandler; + + if (Ext.isNumeric(params)) { + + me.len = params; + me.ordered = true; + } + else { + + me.params = {}; + pLen = params.length; + + for (p = 0; p < pLen; p++) { + param = params[p]; + name = Ext.isObject(param) ? param.name : param; + me.params[name] = true; + } + } + }, + + getArgs: function(params, paramOrder, paramsAsHash) { + var me = this, + args = [], + i, len; + + if (me.ordered) { + if (me.len > 0) { + + if (paramOrder) { + for (i = 0, len = paramOrder.length; i < len; i++) { + args.push(params[paramOrder[i]]); + } + } + else if (paramsAsHash) { + + args.push(params); + } + } + } + else { + args.push(params); + } + + return args; + }, + + + getCallData: function(args) { + var me = this, + data = null, + len = me.len, + params = me.params, + callback, scope, name, options; + + if (me.ordered) { + callback = args[len]; + scope = args[len + 1]; + options = args[len + 2]; + + if (len !== 0) { + data = args.slice(0, len); + } + } + else { + data = Ext.apply({}, args[0]); + callback = args[1]; + scope = args[2]; + options = args[3]; + + + for (name in data) { + if (data.hasOwnProperty(name) && !params[name]) { + delete data[name]; + } + } + } + + return { + data: data, + callback: callback, + scope: scope, + options: options + }; + } +}); + + +Ext.define('Ext.direct.Transaction', { + alias: 'direct.transaction', + alternateClassName: 'Ext.Direct.Transaction', + + statics: { + TRANSACTION_ID: 0 + }, + + + + + constructor: function(config) { + var me = this; + + Ext.apply(me, config); + + me.id = me.tid = ++me.self.TRANSACTION_ID; + me.retryCount = 0; + }, + + send: function() { + var me = this; + + me.provider.queueTransaction(me); + }, + + retry: function() { + var me = this; + + me.retryCount++; + me.send(); + }, + + getProvider: function() { + return this.provider; + } +}); + + +Ext.define('Ext.direct.RemotingProvider', { + extend: Ext.direct.JsonProvider , + alias: 'direct.remotingprovider', + + + + + + + + + + + + + + + + + + + + enableBuffer: 10, + + + maxRetries: 1, + + + + constructor: function(config) { + var me = this; + + me.callParent(arguments); + + me.addEvents( + + 'beforecall', + + + 'call', + + + 'beforecallback' + ); + + me.namespace = (Ext.isString(me.namespace)) ? Ext.ns(me.namespace) : me.namespace || Ext.global; + me.transactions = new Ext.util.MixedCollection(); + me.callBuffer = []; + }, + + + getNamespace: function(root, action) { + var parts, ns, i, l; + + root = root || Ext.global; + parts = action.toString().split('.'); + + for (i = 0, l = parts.length; i < l; i++) { + ns = parts[i]; + root = root[ns]; + + if (typeof root === 'undefined') { + return root; + } + } + + return root; + }, + + + createNamespaces: function(root, action) { + var parts, ns; + + root = root || Ext.global; + parts = action.toString().split('.'); + + for ( var i = 0, l = parts.length; i < l; i++ ) { + ns = parts[i]; + + root[ns] = root[ns] || {}; + root = root[ns]; + }; + + return root; + }, + + + initAPI: function() { + var me = this, + actions = me.actions, + namespace = me.namespace, + action, cls, methods, i, len, method; + + for (action in actions) { + if (actions.hasOwnProperty(action)) { + if (me.disableNestedActions) { + cls = namespace[action]; + + if (!cls) { + cls = namespace[action] = {}; + } + } + else { + cls = me.getNamespace(namespace, action); + + if (!cls) { + cls = me.createNamespaces(namespace, action); + } + } + + methods = actions[action]; + + for (i = 0, len = methods.length; i < len; ++i) { + method = new Ext.direct.RemotingMethod(methods[i]); + cls[method.name] = me.createHandler(action, method); + } + } + } + }, + + + createHandler: function(action, method) { + var me = this, + slice = Array.prototype.slice, + handler; + + if (!method.formHandler) { + handler = function() { + me.configureRequest(action, method, slice.call(arguments, 0)); + }; + } + else { + handler = function(form, callback, scope) { + me.configureFormRequest(action, method, form, callback, scope); + }; + } + + handler.directCfg = { + action: action, + method: method + }; + + return handler; + }, + + + isConnected: function() { + return !!this.connected; + }, + + + connect: function() { + var me = this; + + if (me.url) { + me.initAPI(); + me.connected = true; + me.fireEvent('connect', me); + } + }, + + + disconnect: function() { + var me = this; + + if (me.connected) { + me.connected = false; + me.fireEvent('disconnect', me); + } + }, + + + runCallback: function(transaction, event) { + var success = !!event.status, + funcName = success ? 'success' : 'failure', + callback, options, result; + + if (transaction && transaction.callback) { + callback = transaction.callback; + options = transaction.callbackOptions; + result = typeof event.result !== 'undefined' ? event.result : event.data; + + if (Ext.isFunction(callback)) { + callback(result, event, success, options); + } + else { + Ext.callback(callback[funcName], callback.scope, [result, event, success, options]); + Ext.callback(callback.callback, callback.scope, [result, event, success, options]); + } + } + }, + + + onData: function(options, success, response) { + var me = this, + i, len, events, event, transaction, transactions; + + if (success) { + events = me.createEvents(response); + + for (i = 0, len = events.length; i < len; ++i) { + event = events[i]; + transaction = me.getTransaction(event); + me.fireEvent('data', me, event); + + if (transaction && me.fireEvent('beforecallback', me, event, transaction) !== false) { + me.runCallback(transaction, event, true); + Ext.direct.Manager.removeTransaction(transaction); + } + } + } + else { + transactions = [].concat(options.transaction); + + for (i = 0, len = transactions.length; i < len; ++i) { + transaction = me.getTransaction(transactions[i]); + + if (transaction && transaction.retryCount < me.maxRetries) { + transaction.retry(); + } + else { + event = new Ext.direct.ExceptionEvent({ + data: null, + transaction: transaction, + code: Ext.direct.Manager.exceptions.TRANSPORT, + message: 'Unable to connect to the server.', + xhr: response + }); + + me.fireEvent('data', me, event); + + if (transaction && me.fireEvent('beforecallback', me, transaction) !== false) { + me.runCallback(transaction, event, false); + Ext.direct.Manager.removeTransaction(transaction); + } + } + } + } + }, + + + getTransaction: function(options) { + return options && options.tid ? Ext.direct.Manager.getTransaction(options.tid) : null; + }, + + + configureRequest: function(action, method, args) { + var me = this, + callData, data, callback, scope, opts, transaction, params; + + callData = method.getCallData(args); + data = callData.data; + callback = callData.callback; + scope = callData.scope; + opts = callData.options || {}; + + params = Ext.apply({}, { + provider: me, + args: args, + action: action, + method: method.name, + data: data, + callbackOptions: opts, + callback: scope && Ext.isFunction(callback) ? Ext.Function.bind(callback, scope) : callback + }); + + if (opts.timeout) { + Ext.applyIf(params, { + timeout: opts.timeout + }); + }; + + transaction = new Ext.direct.Transaction(params); + + if (me.fireEvent('beforecall', me, transaction, method) !== false) { + Ext.direct.Manager.addTransaction(transaction); + me.queueTransaction(transaction); + me.fireEvent('call', me, transaction, method); + } + }, + + + getCallData: function(transaction) { + return { + action: transaction.action, + method: transaction.method, + data: transaction.data, + type: 'rpc', + tid: transaction.id + }; + }, + + + sendRequest: function(data) { + var me = this, + request, callData, params, + enableUrlEncode = me.enableUrlEncode, + i, len; + + request = { + url: me.url, + callback: me.onData, + scope: me, + transaction: data, + timeout: me.timeout + }; + + + if (data.timeout) { + request.timeout = data.timeout; + } + + if (Ext.isArray(data)) { + callData = []; + + for (i = 0, len = data.length; i < len; ++i) { + callData.push(me.getCallData(data[i])); + } + } + else { + callData = me.getCallData(data); + } + + if (enableUrlEncode) { + params = {}; + params[Ext.isString(enableUrlEncode) ? enableUrlEncode : 'data'] = Ext.encode(callData); + request.params = params; + } + else { + request.jsonData = callData; + } + + Ext.Ajax.request(request); + }, + + + queueTransaction: function(transaction) { + var me = this, + enableBuffer = me.enableBuffer; + + if (transaction.form) { + me.sendFormRequest(transaction); + return; + } + + if (enableBuffer === false || typeof transaction.timeout !== 'undefined') { + me.sendRequest(transaction); + return; + } + + me.callBuffer.push(transaction); + + if (enableBuffer) { + if (!me.callTask) { + me.callTask = new Ext.util.DelayedTask(me.combineAndSend, me); + } + + me.callTask.delay(Ext.isNumber(enableBuffer) ? enableBuffer : 10); + } + else { + me.combineAndSend(); + } + }, + + + combineAndSend : function() { + var me = this, + buffer = me.callBuffer, + len = buffer.length; + + if (len > 0) { + me.sendRequest(len == 1 ? buffer[0] : buffer); + me.callBuffer = []; + } + }, + + + configureFormRequest: function(action, method, form, callback, scope) { + var me = this, + transaction, isUpload, params; + + transaction = new Ext.direct.Transaction({ + provider: me, + action: action, + method: method.name, + args: [form, callback, scope], + callback: scope && Ext.isFunction(callback) ? Ext.Function.bind(callback, scope) : callback, + isForm: true + }); + + if (me.fireEvent('beforecall', me, transaction, method) !== false) { + Ext.direct.Manager.addTransaction(transaction); + isUpload = String(form.getAttribute("enctype")).toLowerCase() == 'multipart/form-data'; + + params = { + extTID: transaction.id, + extAction: action, + extMethod: method.name, + extType: 'rpc', + extUpload: String(isUpload) + }; + + + + Ext.apply(transaction, { + form: Ext.getDom(form), + isUpload: isUpload, + params: callback && Ext.isObject(callback.params) ? Ext.apply(params, callback.params) : params + }); + + me.fireEvent('call', me, transaction, method); + me.sendFormRequest(transaction); + } + }, + + + sendFormRequest: function(transaction) { + var me = this; + + Ext.Ajax.request({ + url: me.url, + params: transaction.params, + callback: me.onData, + scope: me, + form: transaction.form, + isUpload: transaction.isUpload, + transaction: transaction + }); + } +}); + + +Ext.define('Ext.dom.Layer', { + extend: Ext.Element , + + alternateClassName: 'Ext.Layer', + + + + + + + + + + + + + + + + + + + + + + + statics: { + shims: [] + }, + + isLayer: true, + + localXYNames: { + get: 'getLocalXY', + set: 'setLocalXY' + }, + + + constructor: function(config, existingEl) { + config = config || {}; + var me = this, + dh = Ext.DomHelper, + cp = config.parentEl, + pel = cp ? Ext.getDom(cp) : document.body, + hm = config.hideMode, + cls = Ext.baseCSSPrefix + (config.fixed && !(Ext.isIE6 || Ext.isIEQuirks) ? 'fixed-layer' : 'layer'); + + + + + me.el = me; + + if (existingEl) { + me.dom = Ext.getDom(existingEl); + } + if (!me.dom) { + me.dom = dh.append(pel, config.dh || { + tag: 'div', + cls: cls + }); + } else { + me.addCls(cls); + if (!me.dom.parentNode) { + pel.appendChild(me.dom); + } + } + + if (config.preventSync) { + me.preventSync = true; + } + + if (config.id) { + me.id = me.dom.id = config.id; + } else { + me.id = Ext.id(me.dom); + } + + Ext.Element.addToCache(me); + + if (config.cls) { + me.addCls(config.cls); + } + me.constrain = config.constrain !== false; + + + + + if (hm) { + me.setVisibilityMode(Ext.Element[hm.toUpperCase()]); + if (me.visibilityMode == Ext.Element.ASCLASS) { + me.visibilityCls = config.visibilityCls; + } + } else if (config.useDisplay) { + me.setVisibilityMode(Ext.Element.DISPLAY); + } else { + me.setVisibilityMode(Ext.Element.VISIBILITY); + } + + if (config.shadow) { + me.shadowOffset = config.shadowOffset || 4; + me.shadow = new Ext.Shadow({ + offset: me.shadowOffset, + mode: config.shadow, + fixed: config.fixed + }); + me.disableShadow(); + } else { + me.shadowOffset = 0; + } + me.useShim = config.shim !== false && Ext.useShims; + if (config.hidden === true) { + me.hide(); + } else { + me.show(); + } + }, + + getZIndex: function() { + return parseInt((this.getShim() || this).getStyle('z-index'), 10); + }, + + getShim: function() { + var me = this, + shim, pn; + + if (!me.useShim) { + return null; + } + if (!me.shim) { + shim = me.self.shims.shift(); + if (!shim) { + shim = me.createShim(); + shim.enableDisplayMode('block'); + shim.hide(); + } + pn = me.dom.parentNode; + if (shim.dom.parentNode != pn) { + pn.insertBefore(shim.dom, me.dom); + } + me.shim = shim; + } + return me.shim; + }, + + hideShim: function() { + var me = this; + + if (me.shim) { + me.shim.setDisplayed(false); + me.self.shims.push(me.shim); + delete me.shim; + } + }, + + disableShadow: function() { + var me = this; + + if (me.shadow && !me.shadowDisabled) { + me.shadowDisabled = true; + me.shadow.hide(); + me.lastShadowOffset = me.shadowOffset; + me.shadowOffset = 0; + } + }, + + enableShadow: function(show) { + var me = this; + + if (me.shadow && me.shadowDisabled) { + me.shadowDisabled = false; + me.shadowOffset = me.lastShadowOffset; + delete me.lastShadowOffset; + if (show) { + me.sync(true); + } + } + }, + + + sync: function(doShow) { + var me = this, + shadow = me.shadow, + shadowPos, shimStyle, shadowSize, + shim, xy, x, y, w, h, shimIndex; + + if (me.preventSync) { + return; + } + + if (!me.updating && me.isVisible() && (shadow || me.useShim)) { + shim = me.getShim(); + xy = me[me.localXYNames.get](); + x = xy[0]; + y = xy[1]; + w = me.dom.offsetWidth; + h = me.dom.offsetHeight; + + if (shadow && !me.shadowDisabled) { + if (doShow && !shadow.isVisible()) { + shadow.show(me); + } else { + shadow.realign(x, y, w, h); + } + if (shim) { + + shimIndex = shim.getStyle('z-index'); + if (shimIndex > me.zindex) { + me.shim.setStyle('z-index', me.zindex - 2); + } + shim.show(); + + if (shadow.isVisible()) { + shadowPos = shadow.el.getXY(); + shimStyle = shim.dom.style; + shadowSize = shadow.el.getSize(); + if (Ext.supports.CSS3BoxShadow) { + shadowSize.height += 6; + shadowSize.width += 4; + shadowPos[0] -= 2; + shadowPos[1] -= 4; + } + shimStyle.left = (shadowPos[0]) + 'px'; + shimStyle.top = (shadowPos[1]) + 'px'; + shimStyle.width = (shadowSize.width) + 'px'; + shimStyle.height = (shadowSize.height) + 'px'; + } else { + shim.setSize(w, h); + shim[me.localXYNames.set](x, y); + } + } + } else if (shim) { + + shimIndex = shim.getStyle('z-index'); + if (shimIndex > me.zindex) { + me.shim.setStyle('z-index', me.zindex - 2); + } + shim.show(); + shim.setSize(w, h); + shim[me.localXYNames.set](x, y); + } + } + return me; + }, + + remove: function() { + this.hideUnders(); + this.callParent(); + }, + + + beginUpdate: function() { + this.updating = true; + }, + + + endUpdate: function() { + this.updating = false; + this.sync(true); + }, + + + hideUnders: function() { + if (this.shadow) { + this.shadow.hide(); + } + this.hideShim(); + }, + + + constrainXY: function() { + if (this.constrain) { + var vw = Ext.Element.getViewWidth(), + vh = Ext.Element.getViewHeight(), + s = Ext.getDoc().getScroll(), + xy = this.getXY(), + x = xy[0], + y = xy[1], + so = this.shadowOffset, + w = this.dom.offsetWidth + so, + h = this.dom.offsetHeight + so, + moved = false; + + if ((x + w) > vw + s.left) { + x = vw - w - so; + moved = true; + } + if ((y + h) > vh + s.top) { + y = vh - h - so; + moved = true; + } + + if (x < s.left) { + x = s.left; + moved = true; + } + if (y < s.top) { + y = s.top; + moved = true; + } + if (moved) { + Ext.Layer.superclass.setXY.call(this, [x, y]); + this.sync(); + } + } + return this; + }, + + getConstrainOffset: function() { + return this.shadowOffset; + }, + + + setVisible: function(visible, animate, duration, callback, easing) { + var me = this, + cb; + + + cb = function() { + if (visible) { + me.sync(true); + } + if (callback) { + callback(); + } + }; + + + if (!visible) { + me.hideUnders(true); + } + me.callParent([visible, animate, duration, callback, easing]); + if (!animate) { + cb(); + } + return me; + }, + + + beforeFx: function() { + this.beforeAction(); + return this.callParent(arguments); + }, + + + afterFx: function() { + this.callParent(arguments); + this.sync(this.isVisible()); + }, + + + beforeAction: function() { + if (!this.updating && this.shadow) { + this.shadow.hide(); + } + }, + + + setLeft: function(left) { + this.callParent(arguments); + return this.sync(); + }, + + setTop: function(top) { + this.callParent(arguments); + return this.sync(); + }, + + setLeftTop: function(left, top) { + this.callParent(arguments); + return this.sync(); + }, + + setLocalX: function() { + this.callParent(arguments); + return this.sync(); + }, + + setLocalXY: function() { + this.callParent(arguments); + return this.sync(); + }, + + setLocalY: function() { + this.callParent(arguments); + return this.sync(); + }, + + setXY: function(xy, animate, duration, callback, easing) { + var me = this; + + + callback = me.createCB(callback); + + me.fixDisplay(); + me.beforeAction(); + me.callParent([xy, animate, duration, callback, easing]); + if (!animate) { + callback(); + } + return me; + }, + + + createCB: function(callback) { + var me = this, + showShadow = me.shadow && me.shadow.isVisible(); + + return function() { + me.constrainXY(); + me.sync(showShadow); + if (callback) { + callback(); + } + }; + }, + + + setX: function(x, animate, duration, callback, easing) { + this.setXY([x, this.getY()], animate, duration, callback, easing); + return this; + }, + + + setY: function(y, animate, duration, callback, easing) { + this.setXY([this.getX(), y], animate, duration, callback, easing); + return this; + }, + + + setSize: function(w, h, animate, duration, callback, easing) { + var me = this; + + + callback = me.createCB(callback); + + me.beforeAction(); + me.callParent([w, h, animate, duration, callback, easing]); + if (!animate) { + callback(); + } + return me; + }, + + + setWidth: function(w, animate, duration, callback, easing) { + var me = this; + + + callback = me.createCB(callback); + + me.beforeAction(); + me.callParent([w, animate, duration, callback, easing]); + if (!animate) { + callback(); + } + return me; + }, + + + setHeight: function(h, animate, duration, callback, easing) { + var me = this; + + + callback = me.createCB(callback); + + me.beforeAction(); + me.callParent([h, animate, duration, callback, easing]); + if (!animate) { + callback(); + } + return me; + }, + + + setBounds: function(x, y, width, height, animate, duration, callback, easing) { + var me = this; + + + callback = me.createCB(callback); + + me.beforeAction(); + if (!animate) { + Ext.Layer.superclass.setXY.call(me, [x, y]); + Ext.Layer.superclass.setSize.call(me, width, height); + callback(); + } else { + me.callParent([x, y, width, height, animate, duration, callback, easing]); + } + return me; + }, + + + setZIndex: function(zindex) { + var me = this; + + me.zindex = zindex; + if (me.getShim()) { + me.shim.setStyle('z-index', zindex++); + } + if (me.shadow) { + me.shadow.setZIndex(zindex++); + } + return me.setStyle('z-index', zindex); + }, + + onOpacitySet: function(opacity){ + var shadow = this.shadow; + if (shadow) { + shadow.setOpacity(opacity); + } + } +}); + + +Ext.define('Ext.draw.Matrix', { + + + + + + + + constructor: function(a, b, c, d, e, f) { + if (a != null) { + this.matrix = [[a, c, e], [b, d, f], [0, 0, 1]]; + } + else { + this.matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; + } + }, + + add: function(a, b, c, d, e, f) { + var me = this, + out = [[], [], []], + matrix = [[a, c, e], [b, d, f], [0, 0, 1]], + x, + y, + z, + res; + + for (x = 0; x < 3; x++) { + for (y = 0; y < 3; y++) { + res = 0; + for (z = 0; z < 3; z++) { + res += me.matrix[x][z] * matrix[z][y]; + } + out[x][y] = res; + } + } + me.matrix = out; + }, + + prepend: function(a, b, c, d, e, f) { + var me = this, + out = [[], [], []], + matrix = [[a, c, e], [b, d, f], [0, 0, 1]], + x, + y, + z, + res; + + for (x = 0; x < 3; x++) { + for (y = 0; y < 3; y++) { + res = 0; + for (z = 0; z < 3; z++) { + res += matrix[x][z] * me.matrix[z][y]; + } + out[x][y] = res; + } + } + me.matrix = out; + }, + + invert: function() { + var matrix = this.matrix, + a = matrix[0][0], + b = matrix[1][0], + c = matrix[0][1], + d = matrix[1][1], + e = matrix[0][2], + f = matrix[1][2], + x = a * d - b * c; + return new Ext.draw.Matrix(d / x, -b / x, -c / x, a / x, (c * f - d * e) / x, (b * e - a * f) / x); + }, + + clone: function() { + var matrix = this.matrix, + a = matrix[0][0], + b = matrix[1][0], + c = matrix[0][1], + d = matrix[1][1], + e = matrix[0][2], + f = matrix[1][2]; + return new Ext.draw.Matrix(a, b, c, d, e, f); + }, + + translate: function(x, y) { + this.prepend(1, 0, 0, 1, x, y); + }, + + scale: function(x, y, cx, cy) { + var me = this; + if (y == null) { + y = x; + } + me.add(x, 0, 0, y, cx * (1 - x), cy * (1 - y)); + }, + + rotate: function(a, x, y) { + a = Ext.draw.Draw.rad(a); + var me = this, + cos = +Math.cos(a).toFixed(9), + sin = +Math.sin(a).toFixed(9); + me.add(cos, sin, -sin, cos, x - cos * x + sin * y, -(sin * x) + y - cos * y); + }, + + x: function(x, y) { + var matrix = this.matrix; + return x * matrix[0][0] + y * matrix[0][1] + matrix[0][2]; + }, + + y: function(x, y) { + var matrix = this.matrix; + return x * matrix[1][0] + y * matrix[1][1] + matrix[1][2]; + }, + + get: function(i, j) { + return + this.matrix[i][j].toFixed(4); + }, + + toString: function() { + var me = this; + return [me.get(0, 0), me.get(0, 1), me.get(1, 0), me.get(1, 1), 0, 0].join(); + }, + + toSvg: function() { + var me = this; + return "matrix(" + [me.get(0, 0), me.get(1, 0), me.get(0, 1), me.get(1, 1), me.get(0, 2), me.get(1, 2)].join() + ")"; + }, + + toFilter: function(dx, dy) { + var me = this; + dx = dx || 0; + dy = dy || 0; + return "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', filterType='bilinear', M11=" + me.get(0, 0) + + ", M12=" + me.get(0, 1) + ", M21=" + me.get(1, 0) + ", M22=" + me.get(1, 1) + + ", Dx=" + (me.get(0, 2) + dx) + ", Dy=" + (me.get(1, 2) + dy) + ")"; + }, + + offset: function() { + var matrix = this.matrix; + return [(matrix[0][2] || 0).toFixed(4), (matrix[1][2] || 0).toFixed(4)]; + }, + + + split: function () { + function norm(a) { + return a[0] * a[0] + a[1] * a[1]; + } + function normalize(a) { + var mag = Math.sqrt(norm(a)); + a[0] /= mag; + a[1] /= mag; + } + var matrix = this.matrix, + out = { + translateX: matrix[0][2], + translateY: matrix[1][2] + }, + row; + + + row = [[matrix[0][0], matrix[0][1]], [matrix[1][1], matrix[1][1]]]; + out.scaleX = Math.sqrt(norm(row[0])); + normalize(row[0]); + + out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1]; + row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear]; + + out.scaleY = Math.sqrt(norm(row[1])); + normalize(row[1]); + out.shear /= out.scaleY; + + + out.rotate = Math.asin(-row[0][1]); + + out.isSimple = !+out.shear.toFixed(9) && (out.scaleX.toFixed(9) == out.scaleY.toFixed(9) || !out.rotate); + + return out; + } +}); + + +Ext.define('Ext.draw.SpriteDD', { + extend: Ext.dd.DragSource , + + constructor : function(sprite, cfg){ + var me = this, + el = sprite.el; + me.sprite = sprite; + me.el = el; + me.dragData = {el: el, sprite: sprite}; + me.callParent([el, cfg]); + me.sprite.setStyle('cursor', 'move'); + }, + + showFrame: Ext.emptyFn, + createFrame : Ext.emptyFn, + + getDragEl : function(e){ + return this.el; + }, + + getRegion: function() { + var me = this, + el = me.el, + pos, x1, x2, y1, y2, t, r, b, l, bbox, sprite; + + sprite = me.sprite; + bbox = sprite.getBBox(); + + try { + pos = Ext.Element.getXY(el); + } catch (e) { } + + if (!pos) { + return null; + } + + x1 = pos[0]; + x2 = x1 + bbox.width; + y1 = pos[1]; + y2 = y1 + bbox.height; + + return new Ext.util.Region(y1, x2, y2, x1); + }, + + + + startDrag: function(x, y) { + var me = this, + attr = me.sprite.attr; + me.prev = me.sprite.surface.transformToViewBox(x, y); + }, + + onDrag: function(e) { + var xy = e.getXY(), + me = this, + sprite = me.sprite, + attr = sprite.attr, dx, dy; + xy = me.sprite.surface.transformToViewBox(xy[0], xy[1]); + dx = xy[0] - me.prev[0]; + dy = xy[1] - me.prev[1]; + sprite.setAttributes({ + translate: { + x: attr.translation.x + dx, + y: attr.translation.y + dy + } + }, true); + me.prev = xy; + }, + + setDragElPos: function () { + + return false; + } +}); + + +Ext.define('Ext.draw.Sprite', { + + + + mixins: { + observable: Ext.util.Observable , + animate: Ext.util.Animate + }, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dirty: false, + dirtyHidden: false, + dirtyTransform: false, + dirtyPath: true, + dirtyFont: true, + zIndexDirty: true, + + + isSprite: true, + zIndex: 0, + fontProperties: [ + 'font', + 'font-size', + 'font-weight', + 'font-style', + 'font-family', + 'text-anchor', + 'text' + ], + pathProperties: [ + 'x', + 'y', + 'd', + 'path', + 'height', + 'width', + 'radius', + 'r', + 'rx', + 'ry', + 'cx', + 'cy' + ], + constructor: function(config) { + var me = this; + config = Ext.merge({}, config || {}); + me.id = Ext.id(null, 'ext-sprite-'); + me.transformations = []; + Ext.copyTo(this, config, 'surface,group,type,draggable'); + + me.bbox = {}; + me.attr = { + zIndex: 0, + translation: { + x: null, + y: null + }, + rotation: { + degrees: null, + x: null, + y: null + }, + scaling: { + x: null, + y: null, + cx: null, + cy: null + } + }; + + delete config.surface; + delete config.group; + delete config.type; + delete config.draggable; + me.setAttributes(config); + me.addEvents( + + 'beforedestroy', + + 'destroy', + + 'render', + + 'mousedown', + + 'mouseup', + + 'mouseover', + + 'mouseout', + + 'mousemove', + + 'click' + ); + me.mixins.observable.constructor.apply(this, arguments); + }, + + + + initDraggable: function() { + var me = this; + + if (!me.el) { + me.surface.createSpriteElement(me); + } + me.dd = new Ext.draw.SpriteDD(me, Ext.isBoolean(me.draggable) ? null : me.draggable); + me.on('beforedestroy', me.dd.destroy, me.dd); + }, + + + setAttributes: function(attrs, redraw) { + var me = this, + fontProps = me.fontProperties, + fontPropsLength = fontProps.length, + pathProps = me.pathProperties, + pathPropsLength = pathProps.length, + hasSurface = !!me.surface, + custom = hasSurface && me.surface.customAttributes || {}, + spriteAttrs = me.attr, + dirtyBBox = false, + attr, i, newTranslation, translation, newRotate, rotation, newScaling, scaling; + + attrs = Ext.apply({}, attrs); + for (attr in custom) { + if (attrs.hasOwnProperty(attr) && typeof custom[attr] == "function") { + Ext.apply(attrs, custom[attr].apply(me, [].concat(attrs[attr]))); + } + } + + + if (!!attrs.hidden !== !!spriteAttrs.hidden) { + me.dirtyHidden = true; + } + + + for (i = 0; i < pathPropsLength; i++) { + attr = pathProps[i]; + if (attr in attrs && attrs[attr] !== spriteAttrs[attr]) { + me.dirtyPath = true; + dirtyBBox = true; + break; + } + } + + + if ('zIndex' in attrs) { + me.zIndexDirty = true; + } + + + if ('text' in attrs) { + me.dirtyFont = true; + dirtyBBox = true; + } + + for (i = 0; i < fontPropsLength; i++) { + attr = fontProps[i]; + if (attr in attrs && attrs[attr] !== spriteAttrs[attr]) { + me.dirtyFont = true; + dirtyBBox = true; + break; + } + } + + newTranslation = attrs.translation || attrs.translate; + delete attrs.translate; + delete attrs.translation; + translation = spriteAttrs.translation; + if (newTranslation) { + if (('x' in newTranslation && newTranslation.x !== translation.x) || + ('y' in newTranslation && newTranslation.y !== translation.y)) { + me.dirtyTransform = true; + translation.x = newTranslation.x; + translation.y = newTranslation.y; + } + } + + newRotate = attrs.rotation || attrs.rotate; + rotation = spriteAttrs.rotation; + delete attrs.rotate; + delete attrs.rotation; + if (newRotate) { + if (('x' in newRotate && newRotate.x !== rotation.x) || + ('y' in newRotate && newRotate.y !== rotation.y) || + ('degrees' in newRotate && newRotate.degrees !== rotation.degrees)) { + me.dirtyTransform = true; + rotation.x = newRotate.x; + rotation.y = newRotate.y; + rotation.degrees = newRotate.degrees; + } + } + + newScaling = attrs.scaling || attrs.scale; + scaling = spriteAttrs.scaling; + delete attrs.scale; + delete attrs.scaling; + if (newScaling) { + if (('x' in newScaling && newScaling.x !== scaling.x) || + ('y' in newScaling && newScaling.y !== scaling.y) || + ('cx' in newScaling && newScaling.cx !== scaling.cx) || + ('cy' in newScaling && newScaling.cy !== scaling.cy)) { + me.dirtyTransform = true; + scaling.x = newScaling.x; + scaling.y = newScaling.y; + scaling.cx = newScaling.cx; + scaling.cy = newScaling.cy; + } + } + + + if (!me.dirtyTransform && dirtyBBox) { + if (spriteAttrs.scaling.x === null || + spriteAttrs.scaling.y === null || + spriteAttrs.rotation.y === null || + spriteAttrs.rotation.y === null) { + me.dirtyTransform = true; + } + } + + Ext.apply(spriteAttrs, attrs); + me.dirty = true; + + if (redraw === true && hasSurface) { + me.redraw(); + } + return this; + }, + + + getBBox: function() { + return this.surface.getBBox(this); + }, + + setText: function(text) { + return this.surface.setText(this, text); + }, + + + hide: function(redraw) { + this.setAttributes({ + hidden: true + }, redraw); + return this; + }, + + + show: function(redraw) { + this.setAttributes({ + hidden: false + }, redraw); + return this; + }, + + + remove: function() { + if (this.surface) { + this.surface.remove(this); + return true; + } + return false; + }, + + onRemove: function() { + this.surface.onRemove(this); + }, + + + destroy: function() { + var me = this; + if (me.fireEvent('beforedestroy', me) !== false) { + me.remove(); + me.surface.onDestroy(me); + me.clearListeners(); + me.fireEvent('destroy'); + } + }, + + + redraw: function() { + this.surface.renderItem(this); + return this; + }, + + + setStyle: function() { + this.el.setStyle.apply(this.el, arguments); + return this; + }, + + + addCls: function(obj) { + this.surface.addCls(this, obj); + return this; + }, + + + removeCls: function(obj) { + this.surface.removeCls(this, obj); + return this; + } +}); + + +Ext.define('Ext.draw.Text', { + extend: Ext.draw.Component , + + alias: 'widget.text', + + + text: '', + + + + + + focusable: false, + viewBox: false, + autoSize: true, + baseCls: Ext.baseCSSPrefix + 'surface ' + Ext.baseCSSPrefix + 'draw-text', + + initComponent: function() { + var me = this; + + me.textConfig = Ext.apply({ + type: 'text', + text: me.text, + rotate: { + degrees: me.degrees || 0 + } + }, me.textStyle); + Ext.apply(me.textConfig, me.getStyles(me.styleSelectors || me.styleSelector)); + + + + me.initialConfig.items = [me.textConfig]; + me.callParent(arguments); + }, + + + getStyles: function(selectors) { + selectors = Ext.Array.from(selectors); + var i = 0, + len = selectors.length, + rule, + style, + prop, + result = {}; + + for (; i < len; i++) { + + rule = Ext.util.CSS.getRule(selectors[i]); + if (rule) { + style = rule.style; + if (style) { + Ext.apply(result, { + 'font-family': style.fontFamily, + 'font-weight': style.fontWeight, + 'line-height': style.lineHeight, + 'font-size': style.fontSize, + fill: style.color + }); + } + } + } + return result; + }, + + + setAngle: function(degrees) { + var me = this, + surface, + sprite; + + if (me.rendered) { + surface = me.surface; + sprite = surface.items.items[0]; + + me.degrees = degrees; + sprite.setAttributes({ + rotate: { + degrees: degrees + } + }, true); + if (me.autoSize || me.viewBox) { + me.updateLayout(); + } + } else { + me.degrees = degrees; + } + }, + + + setText: function(text) { + var me = this, + surface, + sprite; + + if (me.rendered) { + surface = me.surface; + sprite = surface.items.items[0]; + + me.text = text || ''; + surface.remove(sprite); + me.textConfig.type = 'text'; + me.textConfig.text = me.text; + sprite = surface.add(me.textConfig); + sprite.setAttributes({ + rotate: { + degrees: me.degrees + } + }, true); + if (me.autoSize || me.viewBox) { + me.updateLayout(); + } + } else { + me.on({ + render: function() { + me.setText(text); + }, + single: true + }); + } + } +}); + + +Ext.define('Ext.draw.engine.ImageExporter', { + singleton: true, + + + defaultUrl: 'http://svg.sencha.io', + + + supportedTypes: ['image/png', 'image/jpeg'], + + + widthParam: 'width', + + + heightParam: 'height', + + + typeParam: 'type', + + + svgParam: 'svg', + + formCls: Ext.baseCSSPrefix + 'hide-display', + + + generate: function(surface, config) { + config = config || {}; + var me = this, + type = config.type, + form; + + if (Ext.Array.indexOf(me.supportedTypes, type) === -1) { + return false; + } + + form = Ext.getBody().createChild({ + tag: 'form', + method: 'POST', + action: config.url || me.defaultUrl, + cls: me.formCls, + children: [{ + tag: 'input', + type: 'hidden', + name: config.widthParam || me.widthParam, + value: config.width || surface.width + }, { + tag: 'input', + type: 'hidden', + name: config.heightParam || me.heightParam, + value: config.height || surface.height + }, { + tag: 'input', + type: 'hidden', + name: config.typeParam || me.typeParam, + value: type + }, { + tag: 'input', + type: 'hidden', + name: config.svgParam || me.svgParam + }] + }); + + + form.last(null, true).value = Ext.draw.engine.SvgExporter.generate(surface); + + form.dom.submit(); + form.remove(); + return true; + } + +}); + + +Ext.define('Ext.draw.engine.Svg', { + + + + extend: Ext.draw.Surface , + + + + + + engine: 'Svg', + + trimRe: /^\s+|\s+$/g, + spacesRe: /\s+/, + xlink: "http:/" + "/www.w3.org/1999/xlink", + + translateAttrs: { + radius: "r", + radiusX: "rx", + radiusY: "ry", + path: "d", + lineWidth: "stroke-width", + fillOpacity: "fill-opacity", + strokeOpacity: "stroke-opacity", + strokeLinejoin: "stroke-linejoin" + }, + + parsers: {}, + + minDefaults: { + circle: { + cx: 0, + cy: 0, + r: 0, + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + ellipse: { + cx: 0, + cy: 0, + rx: 0, + ry: 0, + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + rect: { + x: 0, + y: 0, + width: 0, + height: 0, + rx: 0, + ry: 0, + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + text: { + x: 0, + y: 0, + "text-anchor": "start", + "font-family": null, + "font-size": null, + "font-weight": null, + "font-style": null, + fill: "#000", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + path: { + d: "M0,0", + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + image: { + x: 0, + y: 0, + width: 0, + height: 0, + preserveAspectRatio: "none", + opacity: null + } + }, + + createSvgElement: function(type, attrs) { + var el = this.domRef.createElementNS("http:/" + "/www.w3.org/2000/svg", type), + key; + if (attrs) { + for (key in attrs) { + el.setAttribute(key, String(attrs[key])); + } + } + return el; + }, + + createSpriteElement: function(sprite) { + + var el = this.createSvgElement(sprite.type); + el.id = sprite.id; + if (el.style) { + el.style.webkitTapHighlightColor = "rgba(0,0,0,0)"; + } + sprite.el = Ext.get(el); + this.applyZIndex(sprite); + sprite.matrix = new Ext.draw.Matrix(); + sprite.bbox = { + plain: 0, + transform: 0 + }; + this.applyAttrs(sprite); + this.applyTransformations(sprite); + sprite.fireEvent("render", sprite); + return el; + }, + + getBBoxText: function (sprite) { + var bbox = {}, + bb, height, width, i, ln, el; + + if (sprite && sprite.el) { + el = sprite.el.dom; + try { + bbox = el.getBBox(); + return bbox; + } catch(e) { + + } + bbox = {x: bbox.x, y: Infinity, width: 0, height: 0}; + ln = el.getNumberOfChars(); + for (i = 0; i < ln; i++) { + bb = el.getExtentOfChar(i); + bbox.y = Math.min(bb.y, bbox.y); + height = bb.y + bb.height - bbox.y; + bbox.height = Math.max(bbox.height, height); + width = bb.x + bb.width - bbox.x; + bbox.width = Math.max(bbox.width, width); + } + return bbox; + } + }, + + hide: function() { + Ext.get(this.el).hide(); + }, + + show: function() { + Ext.get(this.el).show(); + }, + + hidePrim: function(sprite) { + this.addCls(sprite, Ext.baseCSSPrefix + 'hide-visibility'); + }, + + showPrim: function(sprite) { + this.removeCls(sprite, Ext.baseCSSPrefix + 'hide-visibility'); + }, + + getDefs: function() { + return this._defs || (this._defs = this.createSvgElement("defs")); + }, + + transform: function(sprite, matrixOnly) { + var me = this, + matrix = new Ext.draw.Matrix(), + transforms = sprite.transformations, + transformsLength = transforms.length, + i = 0, + transform, type; + + for (; i < transformsLength; i++) { + transform = transforms[i]; + type = transform.type; + if (type == "translate") { + matrix.translate(transform.x, transform.y); + } + else if (type == "rotate") { + matrix.rotate(transform.degrees, transform.x, transform.y); + } + else if (type == "scale") { + matrix.scale(transform.x, transform.y, transform.centerX, transform.centerY); + } + } + sprite.matrix = matrix; + if (!matrixOnly) { + sprite.el.set({transform: matrix.toSvg()}); + } + }, + + setSize: function(width, height) { + var me = this, + el = me.el; + + width = +width || me.width; + height = +height || me.height; + me.width = width; + me.height = height; + + el.setSize(width, height); + el.set({ + width: width, + height: height + }); + me.callParent([width, height]); + }, + + + getRegion: function() { + + + var svgXY = this.el.getXY(), + rectXY = this.bgRect.getXY(), + max = Math.max, + x = max(svgXY[0], rectXY[0]), + y = max(svgXY[1], rectXY[1]); + return { + left: x, + top: y, + right: x + this.width, + bottom: y + this.height + }; + }, + + onRemove: function(sprite) { + if (sprite.el) { + sprite.el.destroy(); + delete sprite.el; + } + this.callParent(arguments); + }, + + setViewBox: function(x, y, width, height) { + if (isFinite(x) && isFinite(y) && isFinite(width) && isFinite(height)) { + this.callParent(arguments); + this.el.dom.setAttribute("viewBox", [x, y, width, height].join(" ")); + } + }, + + render: function (container) { + var me = this, + width, + height, + el, + defs, + bgRect, + webkitRect; + if (!me.el) { + width = me.width || 0; + height = me.height || 0; + el = me.createSvgElement('svg', { + xmlns: "http:/" + "/www.w3.org/2000/svg", + version: 1.1, + width: width, + height: height + }); + defs = me.getDefs(); + + + + + + bgRect = me.createSvgElement("rect", { + width: "100%", + height: "100%", + fill: "#000", + stroke: "none", + opacity: 0 + }); + + if (Ext.isSafari3) { + + webkitRect = me.createSvgElement("rect", { + x: -10, + y: -10, + width: "110%", + height: "110%", + fill: "none", + stroke: "#000" + }); + } + el.appendChild(defs); + if (Ext.isSafari3) { + el.appendChild(webkitRect); + } + el.appendChild(bgRect); + container.appendChild(el); + me.el = Ext.get(el); + me.bgRect = Ext.get(bgRect); + if (Ext.isSafari3) { + me.webkitRect = Ext.get(webkitRect); + me.webkitRect.hide(); + } + me.el.on({ + scope: me, + mouseup: me.onMouseUp, + mousedown: me.onMouseDown, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + mousemove: me.onMouseMove, + mouseenter: me.onMouseEnter, + mouseleave: me.onMouseLeave, + click: me.onClick, + dblclick: me.onDblClick + }); + } + me.renderAll(); + }, + + + onMouseEnter: function(e) { + if (this.el.parent().getRegion().contains(e.getPoint())) { + this.fireEvent('mouseenter', e); + } + }, + + + onMouseLeave: function(e) { + if (!this.el.parent().getRegion().contains(e.getPoint())) { + this.fireEvent('mouseleave', e); + } + }, + + processEvent: function(name, e) { + var target = e.getTarget(), + surface = this.surface, + sprite; + + this.fireEvent(name, e); + + if (target.nodeName == "tspan" && target.parentNode) { + target = target.parentNode; + } + sprite = this.items.get(target.id); + if (sprite) { + sprite.fireEvent(name, sprite, e); + } + }, + + + tuneText: function (sprite, attrs) { + var el = sprite.el.dom, + tspans = [], + height, tspan, text, i, ln, texts, factor, x; + + if (attrs.hasOwnProperty("text")) { + + + + + + text = sprite.tspans && Ext.Array.map(sprite.tspans, function(t) { return t.textContent; }).join(''); + + if (!sprite.tspans || attrs.text != text) { + tspans = this.setText(sprite, attrs.text); + sprite.tspans = tspans; + + } else { + tspans = sprite.tspans || []; + } + } + + if (tspans.length) { + height = this.getBBoxText(sprite).height; + x = sprite.el.dom.getAttribute("x"); + for (i = 0, ln = tspans.length; i < ln; i++) { + + + factor = (Ext.isFF3_0 || Ext.isFF3_5) ? 2 : 4; + tspans[i].setAttribute("x", x); + tspans[i].setAttribute("dy", i ? height * 1.2 : height / factor); + } + sprite.dirty = true; + } + }, + + setText: function(sprite, textString) { + var me = this, + el = sprite.el.dom, + tspans = [], + height, tspan, text, i, ln, texts; + + while (el.firstChild) { + el.removeChild(el.firstChild); + } + + texts = String(textString).split("\n"); + for (i = 0, ln = texts.length; i < ln; i++) { + text = texts[i]; + if (text) { + tspan = me.createSvgElement("tspan"); + tspan.appendChild(document.createTextNode(Ext.htmlDecode(text))); + el.appendChild(tspan); + tspans[i] = tspan; + } + } + return tspans; + }, + + renderAll: function() { + this.items.each(this.renderItem, this); + }, + + renderItem: function (sprite) { + if (!this.el) { + return; + } + if (!sprite.el) { + this.createSpriteElement(sprite); + } + if (sprite.zIndexDirty) { + this.applyZIndex(sprite); + } + if (sprite.dirty) { + this.applyAttrs(sprite); + if (sprite.dirtyTransform) { + this.applyTransformations(sprite); + } + } + }, + + redraw: function(sprite) { + sprite.dirty = sprite.zIndexDirty = true; + this.renderItem(sprite); + }, + + applyAttrs: function (sprite) { + var me = this, + el = sprite.el, + group = sprite.group, + sattr = sprite.attr, + parsers = me.parsers, + + + + gradientsMap = me.gradientsMap || {}, + safariFix = Ext.isSafari && !Ext.isStrict, + groups, i, ln, attrs, font, key, style, name, rect; + + if (group) { + groups = [].concat(group); + ln = groups.length; + for (i = 0; i < ln; i++) { + group = groups[i]; + me.getGroup(group).add(sprite); + } + delete sprite.group; + } + attrs = me.scrubAttrs(sprite) || {}; + + + sprite.bbox.plain = 0; + sprite.bbox.transform = 0; + if (sprite.type == "circle" || sprite.type == "ellipse") { + attrs.cx = attrs.cx || attrs.x; + attrs.cy = attrs.cy || attrs.y; + } + else if (sprite.type == "rect") { + attrs.rx = attrs.ry = attrs.r; + } + else if (sprite.type == "path" && attrs.d) { + attrs.d = Ext.draw.Draw.pathToString(Ext.draw.Draw.pathToAbsolute(attrs.d)); + } + sprite.dirtyPath = false; + + + + + + if (attrs['clip-rect']) { + me.setClip(sprite, attrs); + delete attrs['clip-rect']; + } + if (sprite.type == 'text' && attrs.font && sprite.dirtyFont) { + el.set({ style: "font: " + attrs.font}); + } + if (sprite.type == "image") { + el.dom.setAttributeNS(me.xlink, "href", attrs.src); + } + Ext.applyIf(attrs, me.minDefaults[sprite.type]); + + if (sprite.dirtyHidden) { + (sattr.hidden) ? me.hidePrim(sprite) : me.showPrim(sprite); + sprite.dirtyHidden = false; + } + for (key in attrs) { + if (attrs.hasOwnProperty(key) && attrs[key] != null) { + + + + + + if (safariFix && ('color|stroke|fill'.indexOf(key) > -1) && (attrs[key] in gradientsMap)) { + attrs[key] = gradientsMap[attrs[key]]; + } + + if (key == 'hidden' && sprite.type == 'text') { + continue; + } + if (key in parsers) { + el.dom.setAttribute(key, parsers[key](attrs[key], sprite, me)); + } else { + el.dom.setAttribute(key, attrs[key]); + } + } + } + + if (sprite.type == 'text') { + me.tuneText(sprite, attrs); + } + sprite.dirtyFont = false; + + + style = sattr.style; + if (style) { + el.setStyle(style); + } + + sprite.dirty = false; + + if (Ext.isSafari3) { + + me.webkitRect.show(); + setTimeout(function () { + me.webkitRect.hide(); + }); + } + }, + + setClip: function(sprite, params) { + var me = this, + rect = params["clip-rect"], + clipEl, clipPath; + if (rect) { + if (sprite.clip) { + sprite.clip.parentNode.parentNode.removeChild(sprite.clip.parentNode); + } + clipEl = me.createSvgElement('clipPath'); + clipPath = me.createSvgElement('rect'); + clipEl.id = Ext.id(null, 'ext-clip-'); + clipPath.setAttribute("x", rect.x); + clipPath.setAttribute("y", rect.y); + clipPath.setAttribute("width", rect.width); + clipPath.setAttribute("height", rect.height); + clipEl.appendChild(clipPath); + me.getDefs().appendChild(clipEl); + sprite.el.dom.setAttribute("clip-path", "url(#" + clipEl.id + ")"); + sprite.clip = clipPath; + } + + + + + + + }, + + + applyZIndex: function(sprite) { + var me = this, + items = me.items, + idx = items.indexOf(sprite), + el = sprite.el, + prevEl; + if (me.el.dom.childNodes[idx + 2] !== el.dom) { + if (idx > 0) { + + do { + prevEl = items.getAt(--idx).el; + } while (!prevEl && idx > 0); + } + el.insertAfter(prevEl || me.bgRect); + } + sprite.zIndexDirty = false; + }, + + createItem: function (config) { + var sprite = new Ext.draw.Sprite(config); + sprite.surface = this; + return sprite; + }, + + addGradient: function(gradient) { + gradient = Ext.draw.Draw.parseGradient(gradient); + var me = this, + ln = gradient.stops.length, + vector = gradient.vector, + + + + usePlain = Ext.isSafari && !Ext.isStrict, + gradientEl, stop, stopEl, i, gradientsMap; + + gradientsMap = me.gradientsMap || {}; + + if (!usePlain) { + if (gradient.type == "linear") { + gradientEl = me.createSvgElement("linearGradient"); + gradientEl.setAttribute("x1", vector[0]); + gradientEl.setAttribute("y1", vector[1]); + gradientEl.setAttribute("x2", vector[2]); + gradientEl.setAttribute("y2", vector[3]); + } + else { + gradientEl = me.createSvgElement("radialGradient"); + gradientEl.setAttribute("cx", gradient.centerX); + gradientEl.setAttribute("cy", gradient.centerY); + gradientEl.setAttribute("r", gradient.radius); + if (Ext.isNumber(gradient.focalX) && Ext.isNumber(gradient.focalY)) { + gradientEl.setAttribute("fx", gradient.focalX); + gradientEl.setAttribute("fy", gradient.focalY); + } + } + gradientEl.id = gradient.id; + me.getDefs().appendChild(gradientEl); + for (i = 0; i < ln; i++) { + stop = gradient.stops[i]; + stopEl = me.createSvgElement("stop"); + stopEl.setAttribute("offset", stop.offset + "%"); + stopEl.setAttribute("stop-color", stop.color); + stopEl.setAttribute("stop-opacity",stop.opacity); + gradientEl.appendChild(stopEl); + } + } else { + gradientsMap['url(#' + gradient.id + ')'] = gradient.stops[0].color; + } + me.gradientsMap = gradientsMap; + }, + + + hasCls: function(sprite, className) { + return className && (' ' + (sprite.el.dom.getAttribute('class') || '') + ' ').indexOf(' ' + className + ' ') != -1; + }, + + addCls: function(sprite, className) { + var el = sprite.el, + i, + len, + v, + cls = [], + curCls = el.getAttribute('class') || ''; + + if (!Ext.isArray(className)) { + if (typeof className == 'string' && !this.hasCls(sprite, className)) { + el.set({ 'class': curCls + ' ' + className }); + } + } + else { + for (i = 0, len = className.length; i < len; i++) { + v = className[i]; + if (typeof v == 'string' && (' ' + curCls + ' ').indexOf(' ' + v + ' ') == -1) { + cls.push(v); + } + } + if (cls.length) { + el.set({ 'class': ' ' + cls.join(' ') }); + } + } + }, + + removeCls: function(sprite, className) { + var me = this, + el = sprite.el, + curCls = el.getAttribute('class') || '', + i, idx, len, cls, elClasses; + if (!Ext.isArray(className)){ + className = [className]; + } + if (curCls) { + elClasses = curCls.replace(me.trimRe, ' ').split(me.spacesRe); + for (i = 0, len = className.length; i < len; i++) { + cls = className[i]; + if (typeof cls == 'string') { + cls = cls.replace(me.trimRe, ''); + idx = Ext.Array.indexOf(elClasses, cls); + if (idx != -1) { + Ext.Array.erase(elClasses, idx, 1); + } + } + } + el.set({ 'class': elClasses.join(' ') }); + } + }, + + destroy: function() { + var me = this; + + me.callParent(); + if (me.el) { + me.el.remove(); + } + if (me._defs) { + Ext.get(me._defs).destroy(); + } + if (me.bgRect) { + Ext.get(me.bgRect).destroy(); + } + if (me.webkitRect) { + Ext.get(me.webkitRect).destroy(); + } + delete me.el; + } +}); + + +Ext.define('Ext.draw.engine.SvgExporter', function(){ + var commaRe = /,/g, + fontRegex = /(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)\s('*.*'*)/, + rgbColorRe = /rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/g, + rgbaColorRe = /rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,([\d\.]+)\)/g, + surface, len, width, height, + + init = function(s){ + surface = s; + len = surface.length; + width = surface.width; + height = surface.height; + }, + spriteProcessor = { + path: function(sprite){ + + var attr = sprite.attr, + path = attr.path, + pathString = '', + props, p, pLen; + + if (Ext.isArray(path[0])) { + pLen = path.length; + for (p = 0; p < pLen; p++) { + pathString += path[p].join(' '); + } + } else if (Ext.isArray(path)) { + pathString = path.join(' '); + } else { + pathString = path.replace(commaRe,' '); + } + + props = toPropertyString({ + d: pathString, + fill: attr.fill || 'none', + stroke: attr.stroke, + 'fill-opacity': attr.opacity, + 'stroke-width': attr['stroke-width'], + 'stroke-opacity': attr['stroke-opacity'], + "z-index": attr.zIndex, + transform: sprite.matrix.toSvg() + }); + + return ''; + }, + text: function(sprite){ + + + + + var attr = sprite.attr, + match = fontRegex.exec(attr.font), + size = (match && match[1]) || "12", + + family = (match && match[3]) || 'Arial', + text = attr.text, + factor = (Ext.isFF3_0 || Ext.isFF3_5) ? 2 : 4, + tspanString = '', + props; + + sprite.getBBox(); + tspanString += ''; + tspanString += Ext.htmlEncode(text) + ''; + + + props = toPropertyString({ + x: attr.x, + y: attr.y, + 'font-size': size, + 'font-family': family, + 'font-weight': attr['font-weight'], + 'text-anchor': attr['text-anchor'], + + fill: attr.fill || '#000', + 'fill-opacity': attr.opacity, + transform: sprite.matrix.toSvg() + }); + + + + return '' + tspanString + ''; + }, + rect: function(sprite){ + + var attr = sprite.attr, + props = toPropertyString({ + x: attr.x, + y: attr.y, + rx: attr.rx, + ry: attr.ry, + width: attr.width, + height: attr.height, + fill: attr.fill || 'none', + 'fill-opacity': attr.opacity, + stroke: attr.stroke, + 'stroke-opacity': attr['stroke-opacity'], + 'stroke-width':attr['stroke-width'], + transform: sprite.matrix && sprite.matrix.toSvg() + }); + + return ''; + }, + circle: function(sprite){ + + var attr = sprite.attr, + props = toPropertyString({ + cx: attr.x, + cy: attr.y, + r: attr.radius, + fill: attr.translation.fill || attr.fill || 'none', + 'fill-opacity': attr.opacity, + stroke: attr.stroke, + 'stroke-opacity': attr['stroke-opacity'], + 'stroke-width':attr['stroke-width'], + transform: sprite.matrix.toSvg() + }); + + return ''; + }, + image: function(sprite){ + + var attr = sprite.attr, + props = toPropertyString({ + x: attr.x - (attr.width/2 >> 0), + y: attr.y - (attr.height/2 >> 0), + width: attr.width, + height: attr.height, + 'xlink:href': attr.src, + transform: sprite.matrix.toSvg() + }); + + return ''; + } + }, + svgHeader = function(){ + var svg = ''; + svg += ''; + return svg; + }, + svgContent = function(){ + var svg = '', + defs = '', item, itemsLen, items, gradient, + getSvgString, colorstops, stop, + coll, keys, colls, k, kLen, key, collI, i, j, stopsLen, sortedItems, za, zb; + + items = surface.items.items; + itemsLen = items.length; + + + getSvgString = function(node){ + + var childs = node.childNodes, + childLength = childs.length, + i = 0, + attrLength, + j, + svgString = '', child, attr, tagName, attrItem; + + for(; i < childLength; i++){ + child = childs[i]; + attr = child.attributes; + tagName = child.tagName; + + svgString += '<' +tagName; + + for(j = 0, attrLength = attr.length; j < attrLength; j++){ + attrItem = attr.item(j); + svgString += ' '+attrItem.name+'="'+attrItem.value+'"'; + } + + svgString += '>'; + + if(child.childNodes.length > 0){ + svgString += getSvgString(child); + } + + svgString += ''; + + } + return svgString; + }; + + + if(surface.getDefs){ + defs = getSvgString(surface.getDefs()); + }else{ + + coll = surface.gradientsColl; + if (coll) { + keys = coll.keys; + colls = coll.items; + k = 0; + kLen = keys.length; + } + + for (; k < kLen; k++) { + key = keys[k]; + collI = colls[k]; + + gradient = surface.gradientsColl.getByKey(key); + defs += ''; + + var color = gradient.colors.replace(rgbColorRe, 'rgb($1|$2|$3)'); + color = color.replace(rgbaColorRe, 'rgba($1|$2|$3|$4)') + colorstops = color.split(','); + for(i=0, stopsLen = colorstops.length; i < stopsLen; i++){ + stop = colorstops[i].split(' '); + color = Ext.draw.Color.fromString(stop[1].replace(/\|/g,',')); + defs += ''; + } + defs += ''; + } + } + + svg += '' + defs + ''; + + + svg += spriteProcessor.rect({ + attr: { + width: '100%', + height: '100%', + fill: '#fff', + stroke: 'none', + opacity: '0' + } + }); + + + sortedItems = new Array(itemsLen); + for(i = 0; i < itemsLen; i++){ + sortedItems[i] = i; + } + sortedItems.sort(function (a, b) { + za = items[a].attr.zIndex || 0; + zb = items[b].attr.zIndex || 0; + if (za == zb) { + return a - b; + } + return za - zb; + }); + + for(i = 0; i < itemsLen; i++){ + item = items[sortedItems[i]]; + if(!item.attr.hidden){ + svg += spriteProcessor[item.type](item); + } + } + + svg += ''; + + return svg; + }, + toPropertyString = function(obj){ + var propString = '', + key; + + for(key in obj){ + + if(obj.hasOwnProperty(key) && obj[key] != null){ + propString += key +'="'+ obj[key]+'" '; + } + + } + + return propString; + }; + + return { + singleton: true, + + + generate: function(surface, config){ + config = config || {}; + init(surface); + return svgHeader() + svgContent(); + } + }; +}); + + +Ext.define('Ext.draw.engine.Vml', { + + + + extend: Ext.draw.Surface , + + + + + + engine: 'Vml', + + map: {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"}, + bitesRe: /([clmz]),?([^clmz]*)/gi, + valRe: /-?[^,\s\-]+/g, + fillUrlRe: /^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i, + pathlike: /^(path|rect)$/, + NonVmlPathRe: /[ahqstv]/ig, // Non-VML Pathing ops + partialPathRe: /[clmz]/g, + fontFamilyRe: /^['"]+|['"]+$/g, + baseVmlCls: Ext.baseCSSPrefix + 'vml-base', + vmlGroupCls: Ext.baseCSSPrefix + 'vml-group', + spriteCls: Ext.baseCSSPrefix + 'vml-sprite', + measureSpanCls: Ext.baseCSSPrefix + 'vml-measure-span', + zoom: 21600, + coordsize: 1000, + coordorigin: '0 0', + zIndexShift: 0, + // VML uses CSS z-index and therefore doesn't need sprites to be kept in zIndex order + orderSpritesByZIndex: false, + + + + path2vml: function (path) { + var me = this, + nonVML = me.NonVmlPathRe, + map = me.map, + val = me.valRe, + zoom = me.zoom, + bites = me.bitesRe, + command = Ext.Function.bind(Ext.draw.Draw.pathToAbsolute, Ext.draw.Draw), + res, pa, p, r, i, ii, j, jj; + if (String(path).match(nonVML)) { + command = Ext.Function.bind(Ext.draw.Draw.path2curve, Ext.draw.Draw); + } else if (!String(path).match(me.partialPathRe)) { + res = String(path).replace(bites, function (all, command, args) { + var vals = [], + isMove = command.toLowerCase() == "m", + res = map[command]; + args.replace(val, function (value) { + if (isMove && vals.length === 2) { + res += vals + map[command == "m" ? "l" : "L"]; + vals = []; + } + vals.push(Math.round(value * zoom)); + }); + return res + vals; + }); + return res; + } + pa = command(path); + res = []; + for (i = 0, ii = pa.length; i < ii; i++) { + p = pa[i]; + r = pa[i][0].toLowerCase(); + if (r == "z") { + r = "x"; + } + for (j = 1, jj = p.length; j < jj; j++) { + r += Math.round(p[j] * me.zoom) + (j != jj - 1 ? "," : ""); + } + res.push(r); + } + return res.join(" "); + }, + + + translateAttrs: { + radius: "r", + radiusX: "rx", + radiusY: "ry", + lineWidth: "stroke-width", + fillOpacity: "fill-opacity", + strokeOpacity: "stroke-opacity", + strokeLinejoin: "stroke-linejoin" + }, + + + minDefaults: { + circle: { + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + ellipse: { + cx: 0, + cy: 0, + rx: 0, + ry: 0, + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + rect: { + x: 0, + y: 0, + width: 0, + height: 0, + rx: 0, + ry: 0, + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + text: { + x: 0, + y: 0, + "text-anchor": "start", + font: '10px "Arial"', + fill: "#000", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + path: { + d: "M0,0", + fill: "none", + stroke: null, + "stroke-width": null, + opacity: null, + "fill-opacity": null, + "stroke-opacity": null + }, + image: { + x: 0, + y: 0, + width: 0, + height: 0, + preserveAspectRatio: "none", + opacity: null + } + }, + + + onMouseEnter: function (e) { + this.fireEvent("mouseenter", e); + }, + + + onMouseLeave: function (e) { + this.fireEvent("mouseleave", e); + }, + + + processEvent: function (name, e) { + var target = e.getTarget(), + surface = this.surface, + sprite; + this.fireEvent(name, e); + sprite = this.items.get(target.id); + if (sprite) { + sprite.fireEvent(name, sprite, e); + } + }, + + + createSpriteElement: function (sprite) { + var me = this, + attr = sprite.attr, + type = sprite.type, + zoom = me.zoom, + vml = sprite.vml || (sprite.vml = {}), + round = Math.round, + el = (type === 'image') ? me.createNode('image') : me.createNode('shape'), + path, skew, textPath; + + el.coordsize = zoom + ' ' + zoom; + el.coordorigin = attr.coordorigin || "0 0"; + Ext.get(el).addCls(me.spriteCls); + if (type == "text") { + vml.path = path = me.createNode("path"); + path.textpathok = true; + vml.textpath = textPath = me.createNode("textpath"); + textPath.on = true; + el.appendChild(textPath); + el.appendChild(path); + } + el.id = sprite.id; + sprite.el = Ext.get(el); + sprite.el.setStyle('zIndex', -me.zIndexShift); + me.el.appendChild(el); + if (type !== 'image') { + skew = me.createNode("skew"); + skew.on = true; + el.appendChild(skew); + sprite.skew = skew; + } + sprite.matrix = new Ext.draw.Matrix(); + sprite.bbox = { + plain: null, + transform: null + }; + + this.applyAttrs(sprite); + this.applyTransformations(sprite); + sprite.fireEvent("render", sprite); + return sprite.el; + }, + + getBBoxText: function (sprite) { + var vml = sprite.vml; + return { + x: vml.X + (vml.bbx || 0) - vml.W / 2, + y: vml.Y - vml.H / 2, + width: vml.W, + height: vml.H + }; + }, + + applyAttrs: function (sprite) { + var me = this, + vml = sprite.vml, + group = sprite.group, + spriteAttr = sprite.attr, + el = sprite.el, + dom = el.dom, + style, name, groups, i, ln, scrubbedAttrs, font, key, + cx, cy, rx, ry; + + if (group) { + groups = [].concat(group); + ln = groups.length; + for (i = 0; i < ln; i++) { + group = groups[i]; + me.getGroup(group).add(sprite); + } + delete sprite.group; + } + scrubbedAttrs = me.scrubAttrs(sprite) || {}; + + if (sprite.zIndexDirty) { + me.setZIndex(sprite); + } + + + Ext.applyIf(scrubbedAttrs, me.minDefaults[sprite.type]); + + if (sprite.type == 'image') { + Ext.apply(sprite.attr, { + x: scrubbedAttrs.x, + y: scrubbedAttrs.y, + width: scrubbedAttrs.width, + height: scrubbedAttrs.height + }); + el.setStyle({ + width: scrubbedAttrs.width + 'px', + height: scrubbedAttrs.height + 'px' + }); + dom.src = scrubbedAttrs.src; + } + + if (dom.href) { + dom.href = scrubbedAttrs.href; + } + if (dom.title) { + dom.title = scrubbedAttrs.title; + } + if (dom.target) { + dom.target = scrubbedAttrs.target; + } + if (dom.cursor) { + dom.cursor = scrubbedAttrs.cursor; + } + + + if (sprite.dirtyHidden) { + (scrubbedAttrs.hidden) ? me.hidePrim(sprite) : me.showPrim(sprite); + sprite.dirtyHidden = false; + } + + + if (sprite.dirtyPath) { + if (sprite.type == "circle" || sprite.type == "ellipse") { + cx = scrubbedAttrs.x; + cy = scrubbedAttrs.y; + rx = scrubbedAttrs.rx || scrubbedAttrs.r || 0; + ry = scrubbedAttrs.ry || scrubbedAttrs.r || 0; + dom.path = Ext.String.format("ar{0},{1},{2},{3},{4},{1},{4},{1}", + Math.round((cx - rx) * me.zoom), + Math.round((cy - ry) * me.zoom), + Math.round((cx + rx) * me.zoom), + Math.round((cy + ry) * me.zoom), + Math.round(cx * me.zoom)); + sprite.dirtyPath = false; + } + else if (sprite.type !== "text" && sprite.type !== 'image') { + sprite.attr.path = scrubbedAttrs.path = me.setPaths(sprite, scrubbedAttrs) || scrubbedAttrs.path; + dom.path = me.path2vml(scrubbedAttrs.path); + sprite.dirtyPath = false; + } + } + + + if ("clip-rect" in scrubbedAttrs) { + me.setClip(sprite, scrubbedAttrs); + } + + + if (sprite.type == "text") { + me.setTextAttributes(sprite, scrubbedAttrs); + } + + + if (scrubbedAttrs.opacity || scrubbedAttrs['stroke-opacity'] || scrubbedAttrs.fill) { + me.setFill(sprite, scrubbedAttrs); + } + + + if (scrubbedAttrs.stroke || scrubbedAttrs['stroke-opacity'] || scrubbedAttrs.fill) { + me.setStroke(sprite, scrubbedAttrs); + } + + + style = spriteAttr.style; + if (style) { + el.setStyle(style); + } + + sprite.dirty = false; + }, + + setZIndex: function (sprite) { + var me = this, + zIndex = sprite.attr.zIndex, + shift = me.zIndexShift, + items, iLen, item, i; + + if (zIndex < shift) { + + + items = me.items.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + if ((zIndex = items[i].attr.zIndex) && zIndex < shift) { + shift = zIndex; + } + } + + me.zIndexShift = shift; + for (i = 0; i < iLen; i++) { + item = items[i]; + if (item.el) { + item.el.setStyle('zIndex', item.attr.zIndex - shift); + } + item.zIndexDirty = false; + } + } else if (sprite.el) { + sprite.el.setStyle('zIndex', zIndex - shift); + sprite.zIndexDirty = false; + } + }, + + + setPaths: function (sprite, params) { + var spriteAttr = sprite.attr, thickness = sprite.attr['stroke-width'] || 1; + + sprite.bbox.plain = null; + sprite.bbox.transform = null; + if (sprite.type == 'circle') { + spriteAttr.rx = spriteAttr.ry = params.r; + return Ext.draw.Draw.ellipsePath(sprite); + } + else if (sprite.type == 'ellipse') { + spriteAttr.rx = params.rx; + spriteAttr.ry = params.ry; + return Ext.draw.Draw.ellipsePath(sprite); + } + else if (sprite.type == 'rect') { + spriteAttr.rx = spriteAttr.ry = params.r; + return Ext.draw.Draw.rectPath(sprite); + } + else if (sprite.type == 'path' && spriteAttr.path) { + return Ext.draw.Draw.pathToAbsolute(spriteAttr.path); + } + return false; + }, + + setFill: function (sprite, params) { + var me = this, + el = sprite.el.dom, + fillEl = el.fill, + newfill = false, + opacity, gradient, fillUrl, rotation, angle; + + if (!fillEl) { + + fillEl = el.fill = me.createNode("fill"); + newfill = true; + } + if (Ext.isArray(params.fill)) { + params.fill = params.fill[0]; + } + if (params.fill == "none") { + fillEl.on = false; + } + else { + if (typeof params.opacity == "number") { + fillEl.opacity = params.opacity; + } + if (typeof params["fill-opacity"] == "number") { + fillEl.opacity = params["fill-opacity"]; + } + fillEl.on = true; + if (typeof params.fill == "string") { + fillUrl = params.fill.match(me.fillUrlRe); + if (fillUrl) { + fillUrl = fillUrl[1]; + + if (fillUrl.charAt(0) == "#") { + gradient = me.gradientsColl.getByKey(fillUrl.substring(1)); + } + if (gradient) { + + rotation = params.rotation; + angle = -(gradient.angle + 270 + (rotation ? rotation.degrees : 0)) % 360; + + if (angle === 0) { + angle = 180; + } + fillEl.angle = angle; + fillEl.type = "gradient"; + fillEl.method = "sigma"; + if (fillEl.colors) { + fillEl.colors.value = gradient.colors; + } else { + fillEl.colors = gradient.colors; + } + } + + else { + fillEl.src = fillUrl; + fillEl.type = "tile"; + } + } + else { + fillEl.color = Ext.draw.Color.toHex(params.fill); + fillEl.src = ""; + fillEl.type = "solid"; + } + } + } + if (newfill) { + el.appendChild(fillEl); + } + }, + + setStroke: function (sprite, params) { + var me = this, + el = sprite.el.dom, + strokeEl = sprite.strokeEl, + newStroke = false, + width, opacity; + + if (!strokeEl) { + strokeEl = sprite.strokeEl = me.createNode("stroke"); + newStroke = true; + } + if (Ext.isArray(params.stroke)) { + params.stroke = params.stroke[0]; + } + if (!params.stroke || params.stroke == "none" || params.stroke == 0 || params["stroke-width"] == 0) { + strokeEl.on = false; + } + else { + strokeEl.on = true; + if (params.stroke && !params.stroke.match(me.fillUrlRe)) { + + strokeEl.color = Ext.draw.Color.toHex(params.stroke); + } + strokeEl.dashstyle = params["stroke-dasharray"] ? "dash" : "solid"; + strokeEl.joinstyle = params["stroke-linejoin"]; + strokeEl.endcap = params["stroke-linecap"] || "round"; + strokeEl.miterlimit = params["stroke-miterlimit"] || 8; + width = parseFloat(params["stroke-width"] || 1) * 0.75; + opacity = params["stroke-opacity"] || 1; + + if (Ext.isNumber(width) && width < 1) { + strokeEl.weight = 1; + strokeEl.opacity = opacity * width; + } + else { + strokeEl.weight = width; + strokeEl.opacity = opacity; + } + } + if (newStroke) { + el.appendChild(strokeEl); + } + }, + + setClip: function (sprite, params) { + var me = this, + el = sprite.el, + clipEl = sprite.clipEl, + rect = String(params["clip-rect"]).split(me.separatorRe); + if (!clipEl) { + clipEl = sprite.clipEl = me.el.insertFirst(Ext.getDoc().dom.createElement("div")); + clipEl.addCls(Ext.baseCSSPrefix + 'vml-sprite'); + } + if (rect.length == 4) { + rect[2] = +rect[2] + (+rect[0]); + rect[3] = +rect[3] + (+rect[1]); + clipEl.setStyle("clip", Ext.String.format("rect({1}px {2}px {3}px {0}px)", rect[0], rect[1], rect[2], rect[3])); + clipEl.setSize(me.el.width, me.el.height); + } + else { + clipEl.setStyle("clip", ""); + } + }, + + setTextAttributes: function (sprite, params) { + var me = this, + vml = sprite.vml, + textStyle = vml.textpath.style, + spanCacheStyle = me.span.style, + zoom = me.zoom, + round = Math.round, + fontObj = { + fontSize: "font-size", + fontWeight: "font-weight", + fontStyle: "font-style" + }, + fontProp, + paramProp; + if (sprite.dirtyFont) { + if (params.font) { + textStyle.font = spanCacheStyle.font = params.font; + } + if (params["font-family"]) { + textStyle.fontFamily = '"' + params["font-family"].split(",")[0].replace(me.fontFamilyRe, "") + '"'; + spanCacheStyle.fontFamily = params["font-family"]; + } + + for (fontProp in fontObj) { + paramProp = params[fontObj[fontProp]]; + if (paramProp) { + textStyle[fontProp] = spanCacheStyle[fontProp] = paramProp; + } + } + + me.setText(sprite, params.text); + + if (vml.textpath.string) { + me.span.innerHTML = String(vml.textpath.string).replace(/"); + } + vml.W = me.span.offsetWidth; + vml.H = me.span.offsetHeight + 2; + + + if (params["text-anchor"] == "middle") { + textStyle["v-text-align"] = "center"; + } + else if (params["text-anchor"] == "end") { + textStyle["v-text-align"] = "right"; + vml.bbx = -Math.round(vml.W / 2); + } + else { + textStyle["v-text-align"] = "left"; + vml.bbx = Math.round(vml.W / 2); + } + } + vml.X = params.x; + vml.Y = params.y; + vml.path.v = Ext.String.format("m{0},{1}l{2},{1}", Math.round(vml.X * zoom), Math.round(vml.Y * zoom), Math.round(vml.X * zoom) + 1); + + sprite.bbox.plain = null; + sprite.bbox.transform = null; + sprite.dirtyFont = false; + }, + + setText: function (sprite, text) { + sprite.vml.textpath.string = Ext.htmlDecode(text); + }, + + hide: function () { + this.el.hide(); + }, + + show: function () { + this.el.show(); + }, + + hidePrim: function (sprite) { + sprite.el.addCls(Ext.baseCSSPrefix + 'hide-visibility'); + }, + + showPrim: function (sprite) { + sprite.el.removeCls(Ext.baseCSSPrefix + 'hide-visibility'); + }, + + setSize: function (width, height) { + var me = this; + width = width || me.width; + height = height || me.height; + me.width = width; + me.height = height; + + if (me.el) { + + if (width != undefined) { + me.el.setWidth(width); + } + if (height != undefined) { + me.el.setHeight(height); + } + } + + me.callParent(arguments); + }, + + + applyViewBox: function () { + var me = this, + viewBox = me.viewBox, + width = me.width, + height = me.height, + items, + iLen, + i; + + me.callParent(); + + if (viewBox && (width || height)) { + items = me.items.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + me.applyTransformations(items[i]); + } + } + }, + + onAdd: function (item) { + this.callParent(arguments); + if (this.el) { + this.renderItem(item); + } + }, + + onRemove: function (sprite) { + if (sprite.el) { + sprite.el.remove(); + delete sprite.el; + } + this.callParent(arguments); + }, + + render: function (container) { + var me = this, + doc = Ext.getDoc().dom, + el; + + if (!me.createNode) { + try { + if (!doc.namespaces.rvml) { + doc.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"); + } + me.createNode = function (tagName) { + return doc.createElement("'); + }; + } catch (e) { + me.createNode = function (tagName) { + return doc.createElement("<" + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); + }; + } + } + + if (!me.el) { + el = doc.createElement("div"); + me.el = Ext.get(el); + me.el.addCls(me.baseVmlCls); + + + me.span = doc.createElement("span"); + Ext.get(me.span).addCls(me.measureSpanCls); + el.appendChild(me.span); + me.el.setSize(me.width || 0, me.height || 0); + container.appendChild(el); + me.el.on({ + scope: me, + mouseup: me.onMouseUp, + mousedown: me.onMouseDown, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + mousemove: me.onMouseMove, + mouseenter: me.onMouseEnter, + mouseleave: me.onMouseLeave, + click: me.onClick, + dblclick: me.onDblClick + }); + } + me.renderAll(); + }, + + renderAll: function () { + this.items.each(this.renderItem, this); + }, + + redraw: function (sprite) { + sprite.dirty = true; + this.renderItem(sprite); + }, + + renderItem: function (sprite) { + + if (!this.el) { + return; + } + + + if (!sprite.el) { + this.createSpriteElement(sprite); + } + + if (sprite.dirty) { + this.applyAttrs(sprite); + if (sprite.dirtyTransform) { + this.applyTransformations(sprite); + } + } + }, + + rotationCompensation: function (deg, dx, dy) { + var matrix = new Ext.draw.Matrix(); + matrix.rotate(-deg, 0.5, 0.5); + return { + x: matrix.x(dx, dy), + y: matrix.y(dx, dy) + }; + }, + + transform: function (sprite, matrixOnly) { + var me = this, + bbox = me.getBBox(sprite, true), + cx = bbox.x + bbox.width * 0.5, + cy = bbox.y + bbox.height * 0.5, + matrix = new Ext.draw.Matrix(), + transforms = sprite.transformations, + transformsLength = transforms.length, + i = 0, + deltaDegrees = 0, + deltaScaleX = 1, + deltaScaleY = 1, + flip = "", + el = sprite.el, + dom = el.dom, + domStyle = dom.style, + zoom = me.zoom, + skew = sprite.skew, + shift = me.viewBoxShift, + deltaX, deltaY, transform, type, compensate, y, fill, newAngle, zoomScaleX, zoomScaleY, newOrigin, offset; + + + for (; i < transformsLength; i++) { + transform = transforms[i]; + type = transform.type; + if (type == "translate") { + matrix.translate(transform.x, transform.y); + } + else if (type == "rotate") { + matrix.rotate(transform.degrees, transform.x, transform.y); + deltaDegrees += transform.degrees; + } + else if (type == "scale") { + matrix.scale(transform.x, transform.y, transform.centerX, transform.centerY); + deltaScaleX *= transform.x; + deltaScaleY *= transform.y; + } + } + + sprite.matrix = matrix.clone(); + + if (matrixOnly) { + return; + } + + if (shift) { + matrix.prepend(shift.scale, 0, 0, shift.scale, shift.dx * shift.scale, shift.dy * shift.scale); + } + + + if (sprite.type != "image" && skew) { + skew.origin = "0,0"; + + skew.matrix = matrix.toString(); + + + + offset = matrix.offset(); + if (offset[0] > 32767) { + offset[0] = 32767; + } else if (offset[0] < -32768) { + offset[0] = -32768; + } + if (offset[1] > 32767) { + offset[1] = 32767; + } else if (offset[1] < -32768) { + offset[1] = -32768; + } + skew.offset = offset; + } + else { + domStyle.filter = matrix.toFilter(); + domStyle.left = Math.min( + matrix.x(bbox.x, bbox.y), + matrix.x(bbox.x + bbox.width, bbox.y), + matrix.x(bbox.x, bbox.y + bbox.height), + matrix.x(bbox.x + bbox.width, bbox.y + bbox.height)) + 'px'; + domStyle.top = Math.min( + matrix.y(bbox.x, bbox.y), + matrix.y(bbox.x + bbox.width, bbox.y), + matrix.y(bbox.x, bbox.y + bbox.height), + matrix.y(bbox.x + bbox.width, bbox.y + bbox.height)) + 'px'; + } + }, + + createItem: function (config) { + return Ext.create('Ext.draw.Sprite', config); + }, + + getRegion: function () { + return this.el.getRegion(); + }, + + addCls: function (sprite, className) { + if (sprite && sprite.el) { + sprite.el.addCls(className); + } + }, + + removeCls: function (sprite, className) { + if (sprite && sprite.el) { + sprite.el.removeCls(className); + } + }, + + + addGradient: function (gradient) { + var gradients = this.gradientsColl || (this.gradientsColl = Ext.create('Ext.util.MixedCollection')), + colors = [], + stops = Ext.create('Ext.util.MixedCollection'), + keys, + items, + iLen, + key, + item, + i; + + + stops.addAll(gradient.stops); + stops.sortByKey("ASC", function (a, b) { + a = parseInt(a, 10); + b = parseInt(b, 10); + return a > b ? 1 : (a < b ? -1 : 0); + }); + + keys = stops.keys; + items = stops.items; + iLen = keys.length; + + for (i = 0; i < iLen; i++) { + key = keys[i]; + item = items[i]; + colors.push(key + '% ' + item.color); + } + + gradients.add(gradient.id, { + colors: colors.join(","), + angle: gradient.angle + }); + }, + + destroy: function () { + var me = this; + + me.callParent(arguments); + if (me.el) { + me.el.remove(); + } + delete me.el; + } +}); + + + + + + + + + + + + + + + +Ext.define('Ext.flash.Component', { + extend: Ext.Component , + alternateClassName: 'Ext.FlashComponent', + alias: 'widget.flash', + + + flashVersion : '9.0.115', + + + backgroundColor: '#ffffff', + + + wmode: 'opaque', + + + + + + + + + + + swfWidth: '100%', + + + swfHeight: '100%', + + + expressInstall: false, + + + + + renderTpl: ['
'], + + initComponent: function() { + + this.callParent(); + this.addEvents( + + 'success', + + + 'failure' + ); + }, + + beforeRender: function(){ + this.callParent(); + + Ext.applyIf(this.renderData, { + swfId: this.getSwfId() + }); + }, + + afterRender: function() { + var me = this, + flashParams = Ext.apply({}, me.flashParams), + flashVars = Ext.apply({}, me.flashVars); + + me.callParent(); + + flashParams = Ext.apply({ + allowScriptAccess: 'always', + bgcolor: me.backgroundColor, + wmode: me.wmode + }, flashParams); + + flashVars = Ext.apply({ + allowedDomain: document.location.hostname + }, flashVars); + + new swfobject.embedSWF( + me.url, + me.getSwfId(), + me.swfWidth, + me.swfHeight, + me.flashVersion, + me.expressInstall ? me.statics.EXPRESS_INSTALL_URL : undefined, + flashVars, + flashParams, + me.flashAttributes, + Ext.bind(me.swfCallback, me) + ); + }, + + + swfCallback: function(e) { + var me = this; + if (e.success) { + me.swf = Ext.get(e.ref); + me.onSuccess(); + me.fireEvent('success', me); + } else { + me.onFailure(); + me.fireEvent('failure', me); + } + }, + + + getSwfId: function() { + return this.swfId || (this.swfId = "extswf" + this.getAutoId()); + }, + + onSuccess: function() { + + + this.swf.setStyle('visibility', 'inherit'); + }, + + onFailure: Ext.emptyFn, + + beforeDestroy: function() { + var me = this, + swf = me.swf; + if (swf) { + swfobject.removeSWF(me.getSwfId()); + Ext.destroy(swf); + delete me.swf; + } + me.callParent(); + }, + + statics: { + + EXPRESS_INSTALL_URL: 'http:/' + '/swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf' + } +}); + + +Ext.define('Ext.form.action.Action', { + alternateClassName: 'Ext.form.Action', + + + + + + + + + + + + + + + + + + + + + + + + + + + submitEmptyText : true, + + + + + + + + + + + constructor: function(config) { + if (config) { + Ext.apply(this, config); + } + + + var params = config.params; + if (Ext.isString(params)) { + this.params = Ext.Object.fromQueryString(params); + } + }, + + + run: Ext.emptyFn, + + + + + + + onFailure : function(response){ + this.response = response; + this.failureType = Ext.form.action.Action.CONNECT_FAILURE; + this.form.afterAction(this, false); + }, + + + processResponse : function(response){ + this.response = response; + if (!response.responseText && !response.responseXML) { + return true; + } + return (this.result = this.handleResponse(response)); + }, + + + getUrl: function() { + return this.url || this.form.url; + }, + + + getMethod: function() { + return (this.method || this.form.method || 'POST').toUpperCase(); + }, + + + getParams: function() { + return Ext.apply({}, this.params, this.form.baseParams); + }, + + + createCallback: function() { + var me = this, + undef, + form = me.form; + return { + success: me.onSuccess, + failure: me.onFailure, + scope: me, + timeout: (this.timeout * 1000) || (form.timeout * 1000), + upload: form.fileUpload ? me.onSuccess : undef + }; + }, + + statics: { + + CLIENT_INVALID: 'client', + + + SERVER_INVALID: 'server', + + + CONNECT_FAILURE: 'connect', + + + LOAD_FAILURE: 'load' + + + } +}); + + +Ext.define('Ext.form.action.Load', { + extend: Ext.form.action.Action , + + alternateClassName: 'Ext.form.Action.Load', + alias: 'formaction.load', + + type: 'load', + + + run: function() { + Ext.Ajax.request(Ext.apply( + this.createCallback(), + { + method: this.getMethod(), + url: this.getUrl(), + headers: this.headers, + params: this.getParams() + } + )); + }, + + + onSuccess: function(response){ + var result = this.processResponse(response), + form = this.form; + if (result === true || !result.success || !result.data) { + this.failureType = Ext.form.action.Action.LOAD_FAILURE; + form.afterAction(this, false); + return; + } + form.clearInvalid(); + form.setValues(result.data); + form.afterAction(this, true); + }, + + + handleResponse: function(response) { + var reader = this.form.reader, + rs, data; + if (reader) { + rs = reader.read(response); + data = rs.records && rs.records[0] ? rs.records[0].data : null; + return { + success : rs.success, + data : data + }; + } + return Ext.decode(response.responseText); + } +}); + + + +Ext.define('Ext.form.action.Submit', { + extend: Ext.form.action.Action , + alternateClassName: 'Ext.form.Action.Submit', + alias: 'formaction.submit', + + type: 'submit', + + + + + run : function(){ + var me = this, + form = me.form; + + if (me.clientValidation === false || form.isValid()) { + me.doSubmit(); + } else { + + me.failureType = Ext.form.action.Action.CLIENT_INVALID; + form.afterAction(me, false); + } + }, + + + doSubmit: function() { + var me = this, + ajaxOptions = Ext.apply(me.createCallback(), { + url: me.getUrl(), + method: me.getMethod(), + headers: me.headers + }), + form = me.form, + jsonSubmit = me.jsonSubmit || form.jsonSubmit, + paramsProp = jsonSubmit ? 'jsonData' : 'params', + formEl, formInfo; + + + + if (form.hasUpload()) { + formInfo = me.buildForm(); + ajaxOptions.form = formInfo.formEl; + ajaxOptions.isUpload = true; + } else { + ajaxOptions[paramsProp] = me.getParams(jsonSubmit); + } + + Ext.Ajax.request(ajaxOptions); + if (formInfo) { + me.cleanup(formInfo); + } + }, + + cleanup: function(formInfo) { + var formEl = formInfo.formEl, + uploadEls = formInfo.uploadEls, + uploadFields = formInfo.uploadFields, + len = uploadFields.length, + i, field; + + for (i = 0; i < len; ++i) { + field = uploadFields[i]; + if (!field.clearOnSubmit) { + field.restoreInput(uploadEls[i]); + } + } + + if (formEl) { + Ext.removeNode(formEl); + } + }, + + + getParams: function(useModelValues) { + var falseVal = false, + configParams = this.callParent(), + fieldParams = this.form.getValues(falseVal, falseVal, this.submitEmptyText !== falseVal, useModelValues); + return Ext.apply({}, fieldParams, configParams); + }, + + + buildForm: function() { + var me = this, + fieldsSpec = [], + formSpec, + formEl, + basicForm = me.form, + params = me.getParams(), + uploadFields = [], + uploadEls = [], + fields = basicForm.getFields().items, + i, + len = fields.length, + field, key, value, v, vLen, + el; + + for (i = 0; i < len; ++i) { + field = fields[i]; + + + if (field.rendered && field.isFileUpload()) { + uploadFields.push(field); + } + } + + for (key in params) { + if (params.hasOwnProperty(key)) { + value = params[key]; + + if (Ext.isArray(value)) { + vLen = value.length; + for (v = 0; v < vLen; v++) { + fieldsSpec.push(me.getFieldConfig(key, value[v])); + } + } else { + fieldsSpec.push(me.getFieldConfig(key, value)); + } + } + } + + formSpec = { + tag: 'form', + action: me.getUrl(), + method: me.getMethod(), + target: me.target || '_self', + style: 'display:none', + cn: fieldsSpec + }; + + + if (uploadFields.length) { + formSpec.encoding = formSpec.enctype = 'multipart/form-data'; + } + + + formEl = Ext.DomHelper.append(Ext.getBody(), formSpec); + + + + + len = uploadFields.length; + + for (i = 0; i < len; ++i) { + el = uploadFields[i].extractFileInput(); + formEl.appendChild(el); + uploadEls.push(el); + } + + return { + formEl: formEl, + uploadFields: uploadFields, + uploadEls: uploadEls + }; + }, + + getFieldConfig: function(name, value) { + return { + tag: 'input', + type: 'hidden', + name: name, + value: Ext.String.htmlEncode(value) + }; + }, + + + onSuccess: function(response) { + var form = this.form, + success = true, + result = this.processResponse(response); + if (result !== true && !result.success) { + if (result.errors) { + form.markInvalid(result.errors); + } + this.failureType = Ext.form.action.Action.SERVER_INVALID; + success = false; + } + form.afterAction(this, success); + }, + + + handleResponse: function(response) { + var form = this.form, + errorReader = form.errorReader, + rs, errors, i, len, records, result; + + if (errorReader) { + rs = errorReader.read(response); + records = rs.records; + errors = []; + if (records) { + for(i = 0, len = records.length; i < len; i++) { + errors[i] = records[i].data; + } + } + if (errors.length < 1) { + errors = null; + } + result = { + success : rs.success, + errors : errors + }; + } else { + try { + result = Ext.decode(response.responseText); + } catch (e) { + result = { + success: false, + errors: [] + }; + } + + } + return result; + } +}); + + +Ext.define('Ext.util.ComponentDragger', { + extend: Ext.dd.DragTracker , + + + + + + + + autoStart: 500, + + + constructor: function(comp, config) { + this.comp = comp; + this.initialConstrainTo = config.constrainTo; + this.callParent([ config ]); + }, + + onStart: function(e) { + var me = this, + comp = me.comp; + + + me.startPosition = comp.getXY(); + + + + if (comp.ghost && !comp.liveDrag) { + me.proxy = comp.ghost(); + me.dragTarget = me.proxy.header.el; + } + + + if (me.constrain || me.constrainDelegate) { + me.constrainTo = me.calculateConstrainRegion(); + } + + if (comp.beginDrag) { + comp.beginDrag(); + } + }, + + calculateConstrainRegion: function() { + var me = this, + comp = me.comp, + constrainTo = me.initialConstrainTo, + constraintInsets = comp.constraintInsets, + constrainEl, + delegateRegion, + elRegion, + dragEl = me.proxy ? me.proxy.el : comp.el, + shadowSize = (!me.constrainDelegate && dragEl.shadow && comp.constrainShadow && !dragEl.shadowDisabled) ? dragEl.shadow.getShadowSize() : 0; + + + if (!(constrainTo instanceof Ext.util.Region)) { + constrainEl = Ext.fly(constrainTo); + constrainTo = constrainEl.getViewRegion(); + + + constrainTo.right = constrainTo.left + constrainEl.dom.clientWidth; + } else { + + constrainTo = constrainTo.copy(); + } + + + if (constraintInsets) { + constraintInsets = Ext.isObject(constraintInsets) ? constraintInsets : Ext.Element.parseBox(constraintInsets); + constrainTo.adjust(constraintInsets.top, constraintInsets.right, constraintInsets.bottom, constraintInsets.length); + } + + + if (shadowSize) { + constrainTo.adjust(shadowSize[0], -shadowSize[1], -shadowSize[2], shadowSize[3]); + } + + + + + if (!me.constrainDelegate) { + delegateRegion = Ext.fly(me.dragTarget).getRegion(); + elRegion = dragEl.getRegion(); + + constrainTo.adjust( + delegateRegion.top - elRegion.top, + delegateRegion.right - elRegion.right, + delegateRegion.bottom - elRegion.bottom, + delegateRegion.left - elRegion.left + ); + } + return constrainTo; + }, + + + onDrag: function(e) { + var me = this, + comp = (me.proxy && !me.comp.liveDrag) ? me.proxy : me.comp, + offset = me.getOffset(me.constrain || me.constrainDelegate ? 'dragTarget' : null); + + comp.setPagePosition(me.startPosition[0] + offset[0], me.startPosition[1] + offset[1]); + }, + + onEnd: function(e) { + var comp = this.comp; + if (comp.isDestroyed || comp.destroying) { + return; + } + + if (this.proxy && !comp.liveDrag) { + comp.unghost(); + } + if (comp.endDrag) { + comp.endDrag(); + } + } +}); + + +Ext.define('Ext.window.Window', { + extend: Ext.panel.Panel , + + alternateClassName: 'Ext.Window', + + + + alias: 'widget.window', + + + + + + + + + + + + + + + + + + + + + + + baseCls: Ext.baseCSSPrefix + 'window', + + + resizable: true, + + + draggable: true, + + + constrain: false, + + + constrainHeader: false, + + + + + plain: false, + + + minimizable: false, + + + maximizable: false, + + + minHeight: 50, + + + minWidth: 50, + + + expandOnShow: true, + + + collapsible: false, + + + closable: true, + + + hidden: true, + + + autoRender: true, + + + hideMode: 'offsets', + + + floating: true, + + itemCls: Ext.baseCSSPrefix + 'window-item', + + initialAlphaNum: /^[a-z0-9]/, + + overlapHeader: true, + + ignoreHeaderBorderManagement: true, + + + alwaysFramed: true, + + + isRootCfg: { + isRoot: true + }, + + + isWindow: true, + + + initComponent: function() { + var me = this; + + + me.frame = false; + me.callParent(); + me.addEvents( + + + + + + 'resize', + + + 'maximize', + + + 'minimize', + + + 'restore' + ); + + if (me.plain) { + me.addClsWithUI('plain'); + } + + if (me.modal) { + me.ariaRole = 'dialog'; + } + + me.addStateEvents(['maximize', 'restore', 'resize', 'dragend']); + }, + + getElConfig: function () { + var me = this, + elConfig; + + elConfig = me.callParent(); + elConfig.tabIndex = -1; + return elConfig; + }, + + + + + getState: function() { + var me = this, + state = me.callParent() || {}, + maximized = !!me.maximized, + ghostBox = me.ghostBox, + pos; + + + state.maximized = maximized; + if (maximized) { + pos = me.restorePos; + } else if (ghostBox) { + + + pos = [ghostBox.x, ghostBox.y]; + } else { + pos = me.getPosition(); + } + Ext.apply(state, { + size: maximized ? me.restoreSize : me.getSize(), + pos: pos + }); + return state; + }, + + applyState: function(state){ + var me = this; + + if (state) { + me.maximized = state.maximized; + if (me.maximized) { + me.hasSavedRestore = true; + me.restoreSize = state.size; + me.restorePos = state.pos; + } else { + Ext.apply(me, { + width: state.size.width, + height: state.size.height, + x: state.pos[0], + y: state.pos[1] + }); + } + } + }, + + + onRender: function(ct, position) { + var me = this; + me.callParent(arguments); + me.focusEl = me.el; + + + if (me.maximizable) { + me.header.on({ + scope: me, + dblclick: me.toggleMaximize + }); + } + }, + + + afterRender: function() { + var me = this, + header = me.header, + keyMap; + + me.callParent(); + + + if (me.maximized) { + me.maximized = false; + me.maximize(); + if (header) { + header.removeCls(header.indicateDragCls) + } + } + + if (me.closable) { + keyMap = me.getKeyMap(); + keyMap.on(27, me.onEsc, me); + } else { + keyMap = me.keyMap; + } + if (keyMap && me.hidden) { + keyMap.disable(); + } + }, + + + + initDraggable: function() { + + this.initSimpleDraggable(); + }, + + initResizable: function(){ + this.callParent(arguments); + if (this.maximized) { + this.resizer.disable(); + } + }, + + + onEsc: function(k, e) { + + if (!Ext.FocusManager || !Ext.FocusManager.enabled || Ext.FocusManager.focusedCmp === this) { + e.stopEvent(); + this.close(); + } + }, + + + beforeDestroy: function() { + var me = this; + if (me.rendered) { + delete this.animateTarget; + me.hide(); + Ext.destroy( + me.keyMap + ); + } + me.callParent(); + }, + + + addTools: function() { + var me = this; + + + me.callParent(); + + if (me.minimizable) { + me.addTool({ + type: 'minimize', + handler: Ext.Function.bind(me.minimize, me, []) + }); + } + if (me.maximizable) { + me.addTool({ + type: 'maximize', + handler: Ext.Function.bind(me.maximize, me, []) + }); + me.addTool({ + type: 'restore', + handler: Ext.Function.bind(me.restore, me, []), + hidden: true + }); + } + }, + + + getFocusEl: function() { + return this.getDefaultFocus(); + }, + + + getDefaultFocus: function() { + var me = this, + result, + defaultComp = me.defaultButton || me.defaultFocus, + selector; + + if (defaultComp !== undefined) { + + if (Ext.isNumber(defaultComp)) { + result = me.query('button')[defaultComp]; + } + + else if (Ext.isString(defaultComp)) { + selector = defaultComp; + + + if (selector.match(me.initialAlphaNum)) { + result = me.down('#' + selector); + } + + if (!result) { + result = me.down(selector); + } + } + + else if (defaultComp.focus) { + result = defaultComp; + } + } + return result || me.el; + }, + + + onFocus: function() { + var me = this, + focusDescendant; + + + if ((Ext.FocusManager && Ext.FocusManager.enabled) || ((focusDescendant = me.getDefaultFocus()) === me)) { + me.callParent(arguments); + } else { + focusDescendant.focus(); + } + }, + + onShow: function() { + var me = this; + + me.callParent(arguments); + if (me.expandOnShow) { + me.expand(false); + } + me.syncMonitorWindowResize(); + + if (me.keyMap) { + me.keyMap.enable(); + } + }, + + + doClose: function() { + var me = this; + + + if (me.hidden) { + me.fireEvent('close', me); + if (me.closeAction == 'destroy') { + this.destroy(); + } + } else { + + me.hide(me.animateTarget, me.doClose, me); + } + }, + + + afterHide: function() { + var me = this; + + + me.syncMonitorWindowResize(); + + + if (me.keyMap) { + me.keyMap.disable(); + } + + + me.callParent(arguments); + }, + + + onWindowResize: function() { + var me = this, + sizeModel; + + if (me.maximized) { + me.fitContainer(); + } else { + sizeModel = me.getSizeModel(); + if (sizeModel.width.natural || sizeModel.height.natural) { + me.updateLayout(); + } + me.doConstrain(); + } + + }, + + + minimize: function() { + this.fireEvent('minimize', this); + return this; + }, + + resumeHeaderLayout: function(changed) { + this.header.resumeLayouts(changed ? this.isRootCfg : null); + }, + + afterCollapse: function() { + var me = this, + header = me.header, + tools = me.tools; + + if (header && me.maximizable) { + header.suspendLayouts(); + tools.maximize.hide(); + tools.restore.hide(); + this.resumeHeaderLayout(true); + } + if (me.resizer) { + me.resizer.disable(); + } + me.callParent(arguments); + }, + + afterExpand: function() { + var me = this, + header = me.header, + tools = me.tools, + changed; + + + if (header) { + header.suspendLayouts(); + if (me.maximized) { + tools.restore.show(); + changed = true; + } else if (me.maximizable) { + tools.maximize.show(); + changed = true; + } + this.resumeHeaderLayout(changed); + } + if (me.resizer) { + me.resizer.enable(); + } + me.callParent(arguments); + }, + + + maximize: function(animate) { + var me = this, + header = me.header, + tools = me.tools, + changed; + + if (!me.maximized) { + me.expand(false); + if (!me.hasSavedRestore) { + me.restoreSize = me.getSize(); + me.restorePos = me.getPosition(true); + } + + + if (header) { + header.suspendLayouts(); + if (tools.maximize) { + tools.maximize.hide(); + changed = true; + } + if (tools.restore) { + tools.restore.show(); + changed = true; + } + if (me.collapseTool) { + me.collapseTool.hide(); + changed = true; + } + me.resumeHeaderLayout(changed); + } + + me.maximized = true; + me.el.disableShadow(); + + if (me.dd) { + me.dd.disable(); + if (header) { + header.removeCls(header.indicateDragCls) + } + } + if (me.resizer) { + me.resizer.disable(); + } + + me.el.addCls(Ext.baseCSSPrefix + 'window-maximized'); + me.container.addCls(Ext.baseCSSPrefix + 'window-maximized-ct'); + + me.syncMonitorWindowResize(); + me.fitContainer(animate = (animate || !!me.animateTarget) ? { + callback: function() { + me.fireEvent('maximize', me); + } + } : null); + if (!animate) { + me.fireEvent('maximize', me); + } + } + return me; + }, + + + restore: function(animate) { + var me = this, + tools = me.tools, + header = me.header, + newBox = me.restoreSize, + changed; + + if (me.maximized) { + me.hasSavedRestore = null; + me.removeCls(Ext.baseCSSPrefix + 'window-maximized'); + + + if (header) { + header.suspendLayouts(); + if (tools.restore) { + tools.restore.hide(); + changed = true; + } + if (tools.maximize) { + tools.maximize.show(); + changed = true; + } + if (me.collapseTool) { + me.collapseTool.show(); + changed = true; + } + me.resumeHeaderLayout(changed); + } + + me.maximized = false; + + + newBox.x = me.restorePos[0]; + newBox.y = me.restorePos[1]; + me.setBox(newBox, animate = (animate || !!me.animateTarget) ? { + callback: function() { + me.el.enableShadow(true); + me.fireEvent('restore', me); + } + } : null); + + + me.restorePos = me.restoreSize = null; + + + if (me.dd) { + me.dd.enable(); + if (header) { + header.addCls(header.indicateDragCls) + } + } + + if (me.resizer) { + me.resizer.enable(); + } + + me.container.removeCls(Ext.baseCSSPrefix + 'window-maximized-ct'); + + me.syncMonitorWindowResize(); + + if (!animate) { + me.el.enableShadow(true); + me.fireEvent('restore', me); + } + } + return me; + }, + + + syncMonitorWindowResize: function () { + var me = this, + currentlyMonitoring = me._monitoringResize, + + yes = me.monitorResize || me.constrain || me.constrainHeader || me.maximized, + + veto = me.hidden || me.destroying || me.isDestroyed; + + if (yes && !veto) { + + if (!currentlyMonitoring) { + + + Ext.EventManager.onWindowResize(me.onWindowResize, me, {delay: 1}); + me._monitoringResize = true; + } + } else if (currentlyMonitoring) { + + Ext.EventManager.removeResizeListener(me.onWindowResize, me); + me._monitoringResize = false; + } + }, + + + toggleMaximize: function() { + return this[this.maximized ? 'restore': 'maximize'](); + } + +}); + + +Ext.define("Ext.form.Labelable", { + + + autoEl: { + tag: 'table', + cellpadding: 0 + }, + + childEls: [ + + 'labelCell', + + + 'labelEl', + + + 'bodyEl', + + + 'sideErrorCell', + + + 'errorEl', + + 'inputRow' + ], + + + labelableRenderTpl: [ + + + 'id="{id}"
class="{inputRowCls}">', + + + '', + '', + '{beforeLabelTpl}', + ' class="{labelCls}"', + ' style="{labelStyle}"', + + ' unselectable="on"', + '>', + '{beforeLabelTextTpl}', + '{fieldLabel}{labelSeparator}', + '{afterLabelTextTpl}', + '', + '{afterLabelTpl}', + '', + '
', + + + '', + '{beforeBodyEl}', + + + '', + '{beforeLabelTpl}', + '', + '{afterLabelTpl}', + '', + + '{beforeSubTpl}', + '{[values.$comp.getSubTplMarkup(values)]}', + '{afterSubTpl}', + + + '', + '{afterBodyEl}', + '', + '', + '', + '', + '', + '', + '{afterBodyEl}', + '', + '', + '', + { + disableFormats: true + } + ], + + + activeErrorsTpl: undefined, + + htmlActiveErrorsTpl: [ + '', + '
  • {.}
', + '
' + ], + + plaintextActiveErrorsTpl: [ + '', + '\n{.}', + '' + ], + + + isFieldLabelable: true, + + + formItemCls: Ext.baseCSSPrefix + 'form-item', + + + labelCls: Ext.baseCSSPrefix + 'form-item-label', + + + + + errorMsgCls: Ext.baseCSSPrefix + 'form-error-msg', + + + baseBodyCls: Ext.baseCSSPrefix + 'form-item-body', + + + inputRowCls: Ext.baseCSSPrefix + 'form-item-input-row', + + + fieldBodyCls: '', + + + clearCls: Ext.baseCSSPrefix + 'clear', + + + invalidCls : Ext.baseCSSPrefix + 'form-invalid', + + + fieldLabel: undefined, + + + labelAlign : 'left', + + + labelWidth: 100, + + + labelPad : 5, + + + + labelSeparator : ':', + + + + + + hideLabel: false, + + + hideEmptyLabel: true, + + + preventMark: false, + + + autoFitErrors: true, + + + msgTarget: 'qtip', + + + + + noWrap: true, + + labelableInsertions: [ + + + 'beforeBodyEl', + + + 'afterBodyEl', + + + 'beforeLabelTpl', + + + 'afterLabelTpl', + + + 'beforeSubTpl', + + + 'afterSubTpl', + + + 'beforeLabelTextTpl', + + + 'afterLabelTextTpl', + + + 'labelAttrTpl' + ], + + + labelableRenderProps: ['allowBlank', 'id', 'labelAlign', 'fieldBodyCls', 'extraFieldBodyCls', + 'baseBodyCls', 'clearCls', 'labelSeparator', 'msgTarget', 'inputRowCls'], + + + initLabelable: function() { + var me = this, + padding = me.padding; + + + + + if (padding) { + me.padding = undefined; + me.extraMargins = Ext.Element.parseBox(padding); + } + + if (!me.activeErrorsTpl) { + if (me.msgTarget == 'title') { + me.activeErrorsTpl = me.plaintextActiveErrorsTpl; + } else { + me.activeErrorsTpl = me.htmlActiveErrorsTpl; + } + } + + me.addCls(Ext.plainTableCls); + me.addCls(me.formItemCls); + + + me.lastActiveError = ''; + + me.addEvents( + + 'errorchange' + ); + + + me.enableBubble('errorchange'); + }, + + + trimLabelSeparator: function() { + var me = this, + separator = me.labelSeparator, + label = me.fieldLabel || '', + lastChar = label.substr(label.length - 1); + + + return lastChar === separator ? label.slice(0, -1) : label; + }, + + + getFieldLabel: function() { + return this.trimLabelSeparator(); + }, + + + setFieldLabel: function(label){ + label = label || ''; + + var me = this, + separator = me.labelSeparator, + labelEl = me.labelEl; + + me.fieldLabel = label; + if (me.rendered) { + if (Ext.isEmpty(label) && me.hideEmptyLabel) { + labelEl.parent().setDisplayed('none'); + } else { + if (separator) { + label = me.trimLabelSeparator() + separator; + } + labelEl.update(label); + labelEl.parent().setDisplayed(''); + } + me.updateLayout(); + } + }, + + getInsertionRenderData: function (data, names) { + var i = names.length, + name, value; + + while (i--) { + name = names[i]; + value = this[name]; + + if (value) { + if (typeof value != 'string') { + if (!value.isTemplate) { + value = Ext.XTemplate.getTpl(this, name); + } + value = value.apply(data); + } + } + + data[name] = value || ''; + } + + return data; + }, + + + getLabelableRenderData: function() { + var me = this, + data, + tempEl, + topLabel = me.labelAlign === 'top'; + + if (!Ext.form.Labelable.errorIconWidth) { + tempEl = Ext.getBody().createChild({style: 'position:absolute', cls: Ext.baseCSSPrefix + 'form-invalid-icon'}); + Ext.form.Labelable.errorIconWidth = tempEl.getWidth() + tempEl.getMargin('l'); + tempEl.remove(); + } + + data = Ext.copyTo({ + inFormLayout : me.ownerLayout && me.ownerLayout.type === 'form', + inputId : me.getInputId(), + labelOnLeft : !topLabel, + hideLabel : !me.hasVisibleLabel(), + fieldLabel : me.getFieldLabel(), + labelCellStyle : me.getLabelCellStyle(), + labelCellAttrs : me.getLabelCellAttrs(), + labelCls : me.getLabelCls(), + labelStyle : me.getLabelStyle(), + bodyColspan : me.getBodyColspan(), + externalError : !me.autoFitErrors, + errorMsgCls : me.getErrorMsgCls(), + errorIconWidth : Ext.form.Labelable.errorIconWidth + }, + me, me.labelableRenderProps, true); + + me.getInsertionRenderData(data, me.labelableInsertions); + + return data; + }, + + xhooks: { + beforeRender: function() { + var me = this; + me.setFieldDefaults(me.getHierarchyState().fieldDefaults); + if (me.ownerLayout) { + me.addCls(Ext.baseCSSPrefix + me.ownerLayout.type + '-form-item'); + } + }, + + onRender: function() { + var me = this, + margins, + side, + style = {}; + + if (me.extraMargins) { + margins = me.el.getMargin(); + for (side in margins) { + if (margins.hasOwnProperty(side)) { + style['margin-' + side] = (margins[side] + me.extraMargins[side]) + 'px'; + } + } + me.el.setStyle(style); + } + } + }, + + + hasVisibleLabel: function(){ + if (this.hideLabel) { + return false; + } + return !(this.hideEmptyLabel && !this.getFieldLabel()); + }, + + + getLabelWidth: function(){ + var me = this; + if (!me.hasVisibleLabel()) { + return 0; + } + return me.labelWidth + me.labelPad; + }, + + + getBodyColspan: function() { + var me = this, + result; + + if (me.msgTarget === 'side' && (!me.autoFitErrors || me.hasActiveError())) { + result = 1; + } else { + result = 2; + } + if (me.labelAlign !== 'top' && !me.hasVisibleLabel()) { + result++; + } + return result; + }, + + getLabelCls: function() { + var labelCls = this.labelCls + ' ' + Ext.dom.Element.unselectableCls, + labelClsExtra = this.labelClsExtra; + + return labelClsExtra ? labelCls + ' ' + labelClsExtra : labelCls; + }, + + getLabelCellStyle: function() { + var me = this, + hideLabelCell = me.hideLabel || (!me.getFieldLabel() && me.hideEmptyLabel); + + return hideLabelCell ? 'display:none;' : ''; + }, + + getErrorMsgCls: function() { + var me = this, + hideLabelCell = (me.hideLabel || (!me.fieldLabel && me.hideEmptyLabel)); + + return me.errorMsgCls + (!hideLabelCell && me.labelAlign === 'top' ? ' ' + Ext.baseCSSPrefix + 'lbl-top-err-icon' : ''); + }, + + getLabelCellAttrs: function() { + var me = this, + labelAlign = me.labelAlign, + result = ''; + + if (labelAlign !== 'top') { + result = 'valign="top" halign="' + labelAlign + '" width="' + (me.labelWidth + me.labelPad) + '"'; + } + return result + ' class="' + Ext.baseCSSPrefix + 'field-label-cell"'; + }, + + + getLabelStyle: function(){ + var me = this, + labelPad = me.labelPad, + labelStyle = ''; + + + + if (me.labelAlign !== 'top') { + if (me.labelWidth) { + labelStyle = 'width:' + me.labelWidth + 'px;'; + } + if (labelPad) { + labelStyle += 'margin-right:' + labelPad + 'px;'; + } + } + + return labelStyle + (me.labelStyle || ''); + }, + + + getSubTplMarkup: function() { + return ''; + }, + + + getInputId: function() { + return ''; + }, + + + getActiveError : function() { + return this.activeError || ''; + }, + + + hasActiveError: function() { + return !!this.getActiveError(); + }, + + + setActiveError: function(msg) { + this.setActiveErrors(msg); + }, + + + getActiveErrors: function() { + return this.activeErrors || []; + }, + + + setActiveErrors: function(errors) { + errors = Ext.Array.from(errors); + this.activeError = errors[0]; + this.activeErrors = errors; + this.activeError = this.getTpl('activeErrorsTpl').apply({ + errors: errors, + listCls: Ext.plainListCls + }); + this.renderActiveError(); + }, + + + unsetActiveError: function() { + delete this.activeError; + delete this.activeErrors; + this.renderActiveError(); + }, + + + renderActiveError: function() { + var me = this, + activeError = me.getActiveError(), + hasError = !!activeError; + + if (activeError !== me.lastActiveError) { + me.fireEvent('errorchange', me, activeError); + me.lastActiveError = activeError; + } + + if (me.rendered && !me.isDestroyed && !me.preventMark) { + + me.el[hasError ? 'addCls' : 'removeCls'](me.invalidCls); + + + me.getActionEl().dom.setAttribute('aria-invalid', hasError); + + + if (me.errorEl) { + me.errorEl.dom.innerHTML = activeError; + } + } + }, + + + setFieldDefaults: function(defaults) { + var key; + + for (key in defaults) { + if (!this.hasOwnProperty(key)) { + this[key] = defaults[key]; + } + } + } +}); + + +Ext.define('Ext.form.field.Field', { + + isFormField : true, + + + + + + + disabled : false, + + + submitValue: true, + + + validateOnChange: true, + + + suspendCheckChange: 0, + + + initField: function() { + this.addEvents( + + 'change', + + 'validitychange', + + 'dirtychange' + ); + + this.initValue(); + + }, + + + initValue: function() { + var me = this; + + me.value = me.transformOriginalValue(me.value); + + me.originalValue = me.lastValue = me.value; + + + me.suspendCheckChange++; + me.setValue(me.value); + me.suspendCheckChange--; + }, + + + transformOriginalValue: Ext.identityFn, + + + getName: function() { + return this.name; + }, + + + getValue: function() { + return this.value; + }, + + + setValue: function(value) { + var me = this; + me.value = value; + me.checkChange(); + return me; + }, + + + isEqual: function(value1, value2) { + return String(value1) === String(value2); + }, + + + isEqualAsString: function(value1, value2){ + return String(Ext.value(value1, '')) === String(Ext.value(value2, '')); + }, + + + getSubmitData: function() { + var me = this, + data = null; + if (!me.disabled && me.submitValue && !me.isFileUpload()) { + data = {}; + data[me.getName()] = '' + me.getValue(); + } + return data; + }, + + + getModelData: function() { + var me = this, + data = null; + if (!me.disabled && !me.isFileUpload()) { + data = {}; + data[me.getName()] = me.getValue(); + } + return data; + }, + + + reset : function(){ + var me = this; + + me.beforeReset(); + me.setValue(me.originalValue); + me.clearInvalid(); + + delete me.wasValid; + }, + + + beforeReset: Ext.emptyFn, + + + resetOriginalValue: function() { + this.originalValue = this.getValue(); + this.checkDirty(); + }, + + + checkChange: function() { + if (!this.suspendCheckChange) { + var me = this, + newVal = me.getValue(), + oldVal = me.lastValue; + if (!me.isEqual(newVal, oldVal) && !me.isDestroyed) { + me.lastValue = newVal; + me.fireEvent('change', me, newVal, oldVal); + me.onChange(newVal, oldVal); + } + } + }, + + + onChange: function(newVal, oldVal) { + if (this.validateOnChange) { + this.validate(); + } + this.checkDirty(); + }, + + + isDirty : function() { + var me = this; + return !me.disabled && !me.isEqual(me.getValue(), me.originalValue); + }, + + + checkDirty: function() { + var me = this, + isDirty = me.isDirty(); + if (isDirty !== me.wasDirty) { + me.fireEvent('dirtychange', me, isDirty); + me.onDirtyChange(isDirty); + me.wasDirty = isDirty; + } + }, + + + onDirtyChange: Ext.emptyFn, + + + getErrors: function(value) { + return []; + }, + + + isValid : function() { + var me = this; + return me.disabled || Ext.isEmpty(me.getErrors()); + }, + + + validate : function() { + var me = this, + isValid = me.isValid(); + if (isValid !== me.wasValid) { + me.wasValid = isValid; + me.fireEvent('validitychange', me, isValid); + } + return isValid; + }, + + + batchChanges: function(fn) { + try { + this.suspendCheckChange++; + fn(); + } catch(e){ + throw e; + } finally { + this.suspendCheckChange--; + } + this.checkChange(); + }, + + + isFileUpload: function() { + return false; + }, + + + extractFileInput: function() { + return null; + }, + + + markInvalid: Ext.emptyFn, + + + clearInvalid: Ext.emptyFn + +}); + + +Ext.define('Ext.layout.component.field.Field', { + + + + extend: Ext.layout.component.Auto , + + alias: 'layout.field', + + + + + + type: 'field', + + naturalSizingProp: 'size', + + beginLayout: function(ownerContext) { + var me = this, + owner = me.owner; + + me.callParent(arguments); + + ownerContext.labelStrategy = me.getLabelStrategy(); + ownerContext.errorStrategy = me.getErrorStrategy(); + + ownerContext.labelContext = ownerContext.getEl('labelEl'); + ownerContext.bodyCellContext = ownerContext.getEl('bodyEl'); + ownerContext.inputContext = ownerContext.getEl('inputEl'); + ownerContext.errorContext = ownerContext.getEl('errorEl'); + + + + if (Ext.isIE7m && Ext.isStrict && ownerContext.inputContext) { + me.ieInputWidthAdjustment = ownerContext.inputContext.getPaddingInfo().width + ownerContext.inputContext.getBorderInfo().width; + } + + + ownerContext.labelStrategy.prepare(ownerContext, owner); + ownerContext.errorStrategy.prepare(ownerContext, owner); + }, + + beginLayoutCycle: function(ownerContext){ + var me = this, + owner = me.owner, + widthModel = ownerContext.widthModel, + ownerNaturalSize = owner[me.naturalSizingProp], + width; + + me.callParent(arguments); + + if (widthModel.shrinkWrap) { + + me.beginLayoutShrinkWrap(ownerContext); + } else if (widthModel.natural) { + + + if (typeof ownerNaturalSize == 'number' && !owner.inputWidth) { + me.beginLayoutFixed(ownerContext, (width = ownerNaturalSize * 6.5 + 20), 'px'); + } + + + else { + me.beginLayoutShrinkWrap(ownerContext); + } + ownerContext.setWidth(width, false); + } else { + me.beginLayoutFixed(ownerContext, '100', '%'); + } + }, + + beginLayoutFixed: function (ownerContext, width, suffix) { + var owner = ownerContext.target, + inputEl = owner.inputEl, + inputWidth = owner.inputWidth; + + owner.el.setStyle('table-layout', 'fixed'); + owner.bodyEl.setStyle('width', width + suffix); + if (inputEl) { + if (inputWidth) { + inputEl.setStyle('width', inputWidth + 'px'); + } else { + inputEl.setStyle('width', owner.stretchInputElFixed ? '100%' : ''); + } + } + ownerContext.isFixed = true; + }, + + beginLayoutShrinkWrap: function (ownerContext) { + var owner = ownerContext.target, + inputEl = owner.inputEl, + inputWidth = owner.inputWidth; + + if (inputEl && inputEl.dom) { + inputEl.dom.removeAttribute('size'); + if (inputWidth) { + inputEl.setStyle('width', inputWidth + 'px'); + } else { + inputEl.setStyle('width', ''); + } + } + owner.el.setStyle('table-layout', 'auto'); + owner.bodyEl.setStyle('width', ''); + }, + + finishedLayout: function(ownerContext){ + var owner = this.owner; + + this.callParent(arguments); + ownerContext.labelStrategy.finishedLayout(ownerContext, owner); + ownerContext.errorStrategy.finishedLayout(ownerContext, owner); + }, + + calculateOwnerHeightFromContentHeight: function(ownerContext, contentHeight) { + return contentHeight; + }, + + measureContentHeight: function (ownerContext) { + return ownerContext.el.getHeight(); + }, + + measureContentWidth: function (ownerContext) { + return ownerContext.el.getWidth(); + }, + + measureLabelErrorHeight: function (ownerContext) { + return ownerContext.labelStrategy.getHeight(ownerContext) + + ownerContext.errorStrategy.getHeight(ownerContext); + }, + + onFocus: function() { + this.getErrorStrategy().onFocus(this.owner); + }, + + + getLabelStrategy: function() { + var me = this, + strategies = me.labelStrategies, + labelAlign = me.owner.labelAlign; + return strategies[labelAlign] || strategies.base; + }, + + + getErrorStrategy: function() { + var me = this, + owner = me.owner, + strategies = me.errorStrategies, + msgTarget = owner.msgTarget; + return !owner.preventMark && Ext.isString(msgTarget) ? + (strategies[msgTarget] || strategies.elementId) : + strategies.none; + }, + + + labelStrategies: (function() { + var base = { + prepare: function(ownerContext, owner) { + var cls = owner.labelCls + '-' + owner.labelAlign, + labelEl = owner.labelEl; + + if (labelEl) { + labelEl.addCls(cls); + } + }, + + getHeight: function () { + return 0; + }, + + finishedLayout: Ext.emptyFn + }; + + return { + base: base, + + + top: Ext.applyIf({ + + getHeight: function (ownerContext) { + var labelContext = ownerContext.labelContext, + props = labelContext.props, + height = props.height; + + if (height === undefined) { + props.height = height = labelContext.el.getHeight(); + } + + return height; + } + }, base), + + + left: base, + + + right: base + }; + }()), + + + errorStrategies: (function() { + function showTip(owner) { + var tip = Ext.layout.component.field.Field.tip, + target; + + if (tip && tip.isVisible()) { + target = tip.activeTarget; + if (target && target.el === owner.getActionEl().dom) { + tip.toFront(true); + } + } + } + + var applyIf = Ext.applyIf, + emptyFn = Ext.emptyFn, + iconCls = Ext.baseCSSPrefix + 'form-invalid-icon', + iconWidth, + base = { + prepare: function(ownerContext, owner) { + var el = owner.errorEl; + if (el) { + el.setDisplayed(false); + } + }, + getHeight: function () { + return 0; + }, + onFocus: emptyFn, + finishedLayout: emptyFn + }; + + return { + none: base, + + + side: applyIf({ + prepare: function(ownerContext, owner) { + var errorEl = owner.errorEl, + sideErrorCell = owner.sideErrorCell, + displayError = owner.hasActiveError(), + tempEl; + + + if (!iconWidth) { + iconWidth = (tempEl = Ext.getBody().createChild({style: 'position:absolute', cls: iconCls})).getWidth(); + tempEl.remove(); + } + + errorEl.addCls(iconCls); + errorEl.set({'data-errorqtip': owner.getActiveError() || ''}); + if (owner.autoFitErrors) { + errorEl.setDisplayed(displayError); + } + + else { + errorEl.setVisible(displayError); + } + + + if (sideErrorCell && owner.autoFitErrors) { + sideErrorCell.setDisplayed(displayError); + } + owner.bodyEl.dom.colSpan = owner.getBodyColspan(); + + + Ext.layout.component.field.Field.initTip(); + }, + onFocus: showTip + }, base), + + + under: applyIf({ + prepare: function(ownerContext, owner) { + var errorEl = owner.errorEl, + cls = Ext.baseCSSPrefix + 'form-invalid-under'; + + errorEl.addCls(cls); + errorEl.setDisplayed(owner.hasActiveError()); + }, + getHeight: function (ownerContext) { + var height = 0, + errorContext, props; + + if (ownerContext.target.hasActiveError()) { + errorContext = ownerContext.errorContext; + props = errorContext.props; + height = props.height; + + if (height === undefined) { + props.height = height = errorContext.el.getHeight(); + } + } + + return height; + } + }, base), + + + qtip: applyIf({ + prepare: function(ownerContext, owner) { + Ext.layout.component.field.Field.initTip(); + owner.getActionEl().dom.setAttribute('data-errorqtip', owner.getActiveError() || ''); + }, + onFocus: showTip + }, base), + + + title: applyIf({ + prepare: function(ownerContext, owner) { + owner.getActionEl().dom.setAttribute('title', owner.getActiveError() || ''); + } + }, base), + + + elementId: applyIf({ + prepare: function(ownerContext, owner) { + var targetEl = Ext.fly(owner.msgTarget); + if (targetEl) { + targetEl.dom.innerHTML = owner.getActiveError() || ''; + targetEl.setDisplayed(owner.hasActiveError()); + } + } + }, base) + }; + }()), + + statics: { + + initTip: function() { + var tip = this.tip; + if (!tip) { + tip = this.tip = Ext.create('Ext.tip.QuickTip', { + ui: 'form-invalid' + }); + tip.tagConfig = Ext.apply({}, {attribute: 'errorqtip'}, tip.tagConfig); + } + }, + + + destroyTip: function() { + var tip = this.tip; + if (tip) { + tip.destroy(); + delete this.tip; + } + } + } +}); + + +Ext.define('Ext.form.field.Base', { + extend: Ext.Component , + mixins: { + labelable: Ext.form.Labelable , + field: Ext.form.field.Field + }, + alias: 'widget.field', + alternateClassName: ['Ext.form.Field', 'Ext.form.BaseField'], + + + + fieldSubTpl: [ + ' name="{name}"
', + ' value="{[Ext.util.Format.htmlEncode(values.value)]}"', + ' placeholder="{placeholder}"', + '{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}', + ' readonly="readonly"', + ' disabled="disabled"', + ' tabIndex="{tabIdx}"', + ' style="{fieldStyle}"', + ' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>', + { + disableFormats: true + } + ], + + subTplInsertions: [ + + 'inputAttrTpl' + ], + + + + + inputType: 'text', + + + + + + invalidText : 'The value in this field is invalid', + + + + fieldCls : Ext.baseCSSPrefix + 'form-field', + + + + + focusCls : 'form-focus', + + + dirtyCls : Ext.baseCSSPrefix + 'form-dirty', + + + checkChangeEvents: Ext.isIE && (!document.documentMode || document.documentMode < 9) ? + ['change', 'propertychange', 'keyup'] : + ['change', 'input', 'textInput', 'keyup', 'dragdrop'], + + + checkChangeBuffer: 50, + + componentLayout: 'field', + + + readOnly : false, + + + readOnlyCls: Ext.baseCSSPrefix + 'form-readonly', + + + + + validateOnBlur: true, + + + hasFocus : false, + + baseCls: Ext.baseCSSPrefix + 'field', + + maskOnDisable: false, + + + + + stretchInputElFixed: true, + + + initComponent : function() { + var me = this; + + me.callParent(); + + me.subTplData = me.subTplData || {}; + + me.addEvents( + + 'specialkey', + + + 'writeablechange' + ); + + + me.initLabelable(); + me.initField(); + + + if (!me.name) { + me.name = me.getInputId(); + } + + if (me.readOnly) { + me.addCls(me.readOnlyCls); + } + + me.addCls(Ext.baseCSSPrefix + 'form-type-' + me.inputType); + }, + + + getInputId: function() { + return this.inputId || (this.inputId = this.id + '-inputEl'); + }, + + + getSubTplData: function() { + var me = this, + type = me.inputType, + inputId = me.getInputId(), + data; + + data = Ext.apply({ + id : inputId, + cmpId : me.id, + name : me.name || inputId, + disabled : me.disabled, + readOnly : me.readOnly, + value : me.getRawValue(), + type : type, + fieldCls : me.fieldCls, + fieldStyle : me.getFieldStyle(), + tabIdx : me.tabIndex, + inputCls : me.inputCls, + typeCls : Ext.baseCSSPrefix + 'form-' + (type === 'password' ? 'text' : type) + }, me.subTplData); + + me.getInsertionRenderData(data, me.subTplInsertions); + + return data; + }, + + applyRenderSelectors: function() { + var me = this; + + me.callParent(); + + + + me.addChildEls('inputEl'); + + + me.inputEl = me.el.getById(me.getInputId()); + }, + + + getSubTplMarkup: function() { + return this.getTpl('fieldSubTpl').apply(this.getSubTplData()); + }, + + initRenderTpl: function() { + var me = this; + if (!me.hasOwnProperty('renderTpl')) { + me.renderTpl = me.getTpl('labelableRenderTpl'); + } + return me.callParent(); + }, + + initRenderData: function() { + return Ext.applyIf(this.callParent(), this.getLabelableRenderData()); + }, + + + setFieldStyle: function(style) { + var me = this, + inputEl = me.inputEl; + if (inputEl) { + inputEl.applyStyles(style); + } + me.fieldStyle = style; + }, + + getFieldStyle: function() { + return Ext.isObject(this.fieldStyle) ? Ext.DomHelper.generateStyles(this.fieldStyle) : this.fieldStyle ||''; + }, + + + onRender : function() { + this.callParent(arguments); + this.renderActiveError(); + }, + + getFocusEl: function() { + return this.inputEl; + }, + + isFileUpload: function() { + return this.inputType === 'file'; + }, + + + getSubmitData: function() { + var me = this, + data = null, + val; + if (!me.disabled && me.submitValue && !me.isFileUpload()) { + val = me.getSubmitValue(); + if (val !== null) { + data = {}; + data[me.getName()] = val; + } + } + return data; + }, + + + getSubmitValue: function() { + return this.processRawValue(this.getRawValue()); + }, + + + getRawValue: function() { + var me = this, + v = (me.inputEl ? me.inputEl.getValue() : Ext.value(me.rawValue, '')); + me.rawValue = v; + return v; + }, + + + setRawValue: function(value) { + var me = this; + value = Ext.value(me.transformRawValue(value), ''); + me.rawValue = value; + + + if (me.inputEl) { + me.inputEl.dom.value = value; + } + return value; + }, + + + transformRawValue: Ext.identityFn, + + + valueToRaw: function(value) { + return '' + Ext.value(value, ''); + }, + + + rawToValue: Ext.identityFn, + + + processRawValue: Ext.identityFn, + + + getValue: function() { + var me = this, + val = me.rawToValue(me.processRawValue(me.getRawValue())); + me.value = val; + return val; + }, + + + setValue: function(value) { + var me = this; + me.setRawValue(me.valueToRaw(value)); + return me.mixins.field.setValue.call(me, value); + }, + + onBoxReady: function() { + var me = this; + me.callParent(); + + if (me.setReadOnlyOnBoxReady) { + me.setReadOnly(me.readOnly); + } + + }, + + + onDisable: function() { + var me = this, + inputEl = me.inputEl; + + me.callParent(); + if (inputEl) { + inputEl.dom.disabled = true; + if (me.hasActiveError()) { + + me.clearInvalid(); + me.needsValidateOnEnable = true; + } + } + }, + + + onEnable: function() { + var me = this, + inputEl = me.inputEl; + + me.callParent(); + if (inputEl) { + inputEl.dom.disabled = false; + if (me.needsValidateOnEnable) { + delete me.needsValidateOnEnable; + + me.forceValidation = true; + me.isValid(); + delete me.forceValidation; + } + } + }, + + + setReadOnly: function(readOnly) { + var me = this, + inputEl = me.inputEl; + readOnly = !!readOnly; + me[readOnly ? 'addCls' : 'removeCls'](me.readOnlyCls); + me.readOnly = readOnly; + if (inputEl) { + inputEl.dom.readOnly = readOnly; + } else if (me.rendering) { + me.setReadOnlyOnBoxReady = true; + } + me.fireEvent('writeablechange', me, readOnly); + }, + + + fireKey: function(e){ + if(e.isSpecialKey()){ + this.fireEvent('specialkey', this, new Ext.EventObjectImpl(e)); + } + }, + + + initEvents : function(){ + var me = this, + inputEl = me.inputEl, + onChangeTask, + onChangeEvent, + events = me.checkChangeEvents, + e, + eLen = events.length, + event; + + if (inputEl) { + me.mon(inputEl, Ext.EventManager.getKeyEvent(), me.fireKey, me); + + + onChangeTask = new Ext.util.DelayedTask(me.checkChange, me); + me.onChangeEvent = onChangeEvent = function() { + onChangeTask.delay(me.checkChangeBuffer); + }; + + for (e = 0; e < eLen; e++) { + event = events[e]; + + if (event === 'propertychange') { + me.usesPropertychange = true; + } + + me.mon(inputEl, event, onChangeEvent); + } + } + me.callParent(); + }, + + doComponentLayout: function() { + var me = this, + inputEl = me.inputEl, + usesPropertychange = me.usesPropertychange, + ename = 'propertychange', + onChangeEvent = me.onChangeEvent; + + + + + if (usesPropertychange) { + me.mun(inputEl, ename, onChangeEvent); + } + me.callParent(arguments); + if (usesPropertychange) { + me.mon(inputEl, ename, onChangeEvent); + } + }, + + + onDirtyChange: function(isDirty) { + this[isDirty ? 'addCls' : 'removeCls'](this.dirtyCls); + }, + + + + isValid : function() { + var me = this, + disabled = me.disabled, + validate = me.forceValidation || !disabled; + + + return validate ? me.validateValue(me.processRawValue(me.getRawValue())) : disabled; + }, + + + + validateValue: function(value) { + var me = this, + errors = me.getErrors(value), + isValid = Ext.isEmpty(errors); + if (!me.preventMark) { + if (isValid) { + me.clearInvalid(); + } else { + me.markInvalid(errors); + } + } + + return isValid; + }, + + + markInvalid : function(errors) { + + var me = this, + oldMsg = me.getActiveError(), + active; + + me.setActiveErrors(Ext.Array.from(errors)); + active = me.getActiveError(); + if (oldMsg !== active) { + me.setError(active); + } + }, + + + clearInvalid : function() { + + var me = this, + hadError = me.hasActiveError(); + + delete me.needsValidateOnEnable; + me.unsetActiveError(); + if (hadError) { + me.setError(''); + } + }, + + + setError: function(active){ + var me = this, + msgTarget = me.msgTarget, + prop; + + if (me.rendered) { + if (msgTarget == 'title' || msgTarget == 'qtip') { + if (me.rendered) { + prop = msgTarget == 'qtip' ? 'data-errorqtip' : 'title'; + } + me.getActionEl().dom.setAttribute(prop, active || ''); + } else { + me.updateLayout(); + } + } + }, + + + renderActiveError: function() { + var me = this, + hasError = me.hasActiveError(); + if (me.inputEl) { + + me.inputEl[hasError ? 'addCls' : 'removeCls'](me.invalidCls + '-field'); + } + me.mixins.labelable.renderActiveError.call(me); + }, + + + getActionEl: function() { + return this.inputEl || this.el; + } + +}); + + +Ext.define('Ext.form.field.VTypes', (function(){ + + var alpha = /^[a-zA-Z_]+$/, + alphanum = /^[a-zA-Z0-9_]+$/, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + email = /^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/, + url = /(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST))\/?)/i; + + + return { + singleton: true, + alternateClassName: 'Ext.form.VTypes', + + + 'email' : function(v){ + return email.test(v); + }, + + + 'emailText' : 'This field should be an e-mail address in the format "user@example.com"', + + + 'emailMask' : /[\w.\-@'"!#$%&'*+/=?^_`{|}~]/i, + + + 'url' : function(v){ + return url.test(v); + }, + + + 'urlText' : 'This field should be a URL in the format "http:/'+'/www.example.com"', + + + + 'alpha' : function(v){ + return alpha.test(v); + }, + + + 'alphaText' : 'This field should only contain letters and _', + + + 'alphaMask' : /[a-z_]/i, + + + 'alphanum' : function(v){ + return alphanum.test(v); + }, + + + 'alphanumText' : 'This field should only contain letters, numbers and _', + + + 'alphanumMask' : /[a-z0-9_]/i + }; +}())); + + +Ext.define('Ext.layout.component.field.Text', { + extend: Ext.layout.component.field.Field , + alias: 'layout.textfield', + + + type: 'textfield', + + canGrowWidth: true, + + beginLayoutCycle: function(ownerContext) { + this.callParent(arguments); + + + if (ownerContext.heightModel.shrinkWrap) { + ownerContext.inputContext.el.setStyle('height', ''); + } + }, + + measureContentWidth: function (ownerContext) { + var me = this, + owner = me.owner, + width = me.callParent(arguments), + inputContext = ownerContext.inputContext, + inputEl, value, calcWidth, max, min; + + if (owner.grow && me.canGrowWidth && !ownerContext.state.growHandled) { + inputEl = owner.inputEl; + + + value = Ext.util.Format.htmlEncode(inputEl.dom.value || (owner.hasFocus ? '' : owner.emptyText) || ''); + value += owner.growAppend; + calcWidth = inputEl.getTextWidth(value) + inputContext.getFrameInfo().width; + + max = owner.growMax; + min = Math.min(max, width); + max = Math.max(owner.growMin, max, min); + + + calcWidth = Ext.Number.constrain(calcWidth, owner.growMin, max); + inputContext.setWidth(calcWidth); + ownerContext.state.growHandled = true; + + + inputContext.domBlock(me, 'width'); + width = NaN; + } + return width; + }, + + publishInnerHeight: function(ownerContext, height) { + ownerContext.inputContext.setHeight(height - this.measureLabelErrorHeight(ownerContext)); + }, + + beginLayoutFixed: function(ownerContext, width, suffix) { + var me = this, + ieInputWidthAdjustment = me.ieInputWidthAdjustment; + + if (ieInputWidthAdjustment) { + me.adjustIEInputPadding(ownerContext); + if(suffix === 'px') { + width -= ieInputWidthAdjustment; + } + } + + me.callParent(arguments); + }, + + adjustIEInputPadding: function(ownerContext) { + + this.owner.bodyEl.setStyle('padding-right', this.ieInputWidthAdjustment + 'px'); + } +}); + + +Ext.define('Ext.form.field.Text', { + extend: Ext.form.field.Base , + alias: 'widget.textfield', + + alternateClassName: ['Ext.form.TextField', 'Ext.form.Text'], + + + + + + + size: 20, + + + + + growMin : 30, + + + growMax : 800, + + + + growAppend: 'W', + + + + + + + + + + allowBlank : true, + + + validateBlank: false, + + + allowOnlyWhitespace: 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}', + + + + + + + blankText : 'This field is required', + + + + + + + + regexText : '', + + + + + emptyCls : Ext.baseCSSPrefix + 'form-empty-field', + + + requiredCls : Ext.baseCSSPrefix + 'form-required-field', + + + + componentLayout: 'textfield', + + + valueContainsPlaceholder : false, + + + initComponent: function () { + var me = this; + + if (me.allowOnlyWhitespace === false) { + me.allowBlank = false; + } + + me.callParent(); + + me.addEvents( + + 'autosize', + + + 'keydown', + + 'keyup', + + 'keypress' + ); + me.addStateEvents('change'); + me.setGrowSizePolicy(); + }, + + + setGrowSizePolicy: function(){ + if (this.grow) { + this.shrinkWrap |= 1; + } + }, + + + initEvents : function(){ + var me = this, + el = me.inputEl; + + me.callParent(); + if(me.selectOnFocus || me.emptyText){ + me.mon(el, 'mousedown', me.onMouseDown, me); + } + if(me.maskRe || (me.vtype && me.disableKeyFilter !== true && (me.maskRe = Ext.form.field.VTypes[me.vtype+'Mask']))){ + me.mon(el, 'keypress', me.filterKeys, me); + } + + if (me.enableKeyEvents) { + me.mon(el, { + scope: me, + keyup: me.onKeyUp, + keydown: me.onKeyDown, + keypress: me.onKeyPress + }); + } + }, + + + isEqual: function(value1, value2) { + return this.isEqualAsString(value1, value2); + }, + + + onChange: function(newVal, oldVal) { + this.callParent(arguments); + this.autoSize(); + }, + + getSubTplData: function() { + var me = this, + value = me.getRawValue(), + isEmpty = me.emptyText && value.length < 1, + maxLength = me.maxLength, + placeholder; + + + + + if (me.enforceMaxLength) { + if (maxLength === Number.MAX_VALUE) { + maxLength = undefined; + } + } else { + maxLength = undefined; + } + + if (isEmpty) { + if (Ext.supports.Placeholder) { + placeholder = me.emptyText; + } else { + value = me.emptyText; + me.valueContainsPlaceholder = true; + } + } + + return Ext.apply(me.callParent(), { + maxLength : maxLength, + readOnly : me.readOnly, + placeholder : placeholder, + value : value, + fieldCls : me.fieldCls + ((isEmpty && (placeholder || value)) ? ' ' + me.emptyCls : '') + (me.allowBlank ? '' : ' ' + me.requiredCls) + }); + }, + + afterRender: function(){ + this.autoSize(); + this.callParent(); + }, + + onMouseDown: function(e){ + var me = this; + if(!me.hasFocus){ + me.mon(me.inputEl, 'mouseup', Ext.emptyFn, me, { single: true, preventDefault: true }); + } + }, + + + processRawValue: function(value) { + var me = this, + stripRe = me.stripCharsRe, + newValue; + + if (stripRe) { + newValue = value.replace(stripRe, ''); + if (newValue !== value) { + me.setRawValue(newValue); + value = newValue; + } + } + return value; + }, + + + onDisable: function(){ + this.callParent(); + if (Ext.isIE) { + this.inputEl.dom.unselectable = 'on'; + } + }, + + + onEnable: function(){ + this.callParent(); + if (Ext.isIE) { + this.inputEl.dom.unselectable = ''; + } + }, + + onKeyDown: function(e) { + this.fireEvent('keydown', this, e); + }, + + onKeyUp: function(e) { + this.fireEvent('keyup', this, e); + }, + + onKeyPress: function(e) { + this.fireEvent('keypress', this, e); + }, + + + reset : function(){ + this.callParent(); + this.applyEmptyText(); + }, + + applyEmptyText : function(){ + var me = this, + emptyText = me.emptyText, + isEmpty; + + if (me.rendered && emptyText) { + isEmpty = me.getRawValue().length < 1 && !me.hasFocus; + + if (Ext.supports.Placeholder) { + me.inputEl.dom.placeholder = emptyText; + } else if (isEmpty) { + me.setRawValue(emptyText); + me.valueContainsPlaceholder = true; + } + + + + if (isEmpty) { + me.inputEl.addCls(me.emptyCls); + } + + me.autoSize(); + } + }, + + afterFirstLayout: function() { + this.callParent(); + if (Ext.isIE && this.disabled) { + var el = this.inputEl; + if (el) { + el.dom.unselectable = 'on'; + } + } + }, + + + beforeFocus : function(){ + var me = this, + inputEl = me.inputEl, + emptyText = me.emptyText, + isEmpty; + + me.callParent(arguments); + if ((emptyText && !Ext.supports.Placeholder) && (inputEl.dom.value === me.emptyText && me.valueContainsPlaceholder)) { + me.setRawValue(''); + isEmpty = true; + inputEl.removeCls(me.emptyCls); + me.valueContainsPlaceholder = false; + } else if (Ext.supports.Placeholder) { + me.inputEl.removeCls(me.emptyCls); + } + if (me.selectOnFocus || isEmpty) { + + if (Ext.isWebKit) { + if (!me.inputFocusTask) { + me.inputFocusTask = new Ext.util.DelayedTask(me.focusInput, me); + } + me.inputFocusTask.delay(1); + } else { + inputEl.dom.select(); + } + } + }, + + focusInput: function(){ + var input = this.inputEl; + if (input) { + input = input.dom; + if (input) { + input.select(); + } + } + }, + + onFocus: function() { + var me = this; + me.callParent(arguments); + if (me.emptyText) { + me.autoSize(); + } + }, + + + postBlur : function(){ + this.callParent(arguments); + this.applyEmptyText(); + }, + + + filterKeys : function(e){ + + if (e.ctrlKey && !e.altKey) { + return; + } + var key = e.getKey(), + charCode = String.fromCharCode(e.getCharCode()); + + if((Ext.isGecko || Ext.isOpera) && (e.isNavKeyPress() || key === e.BACKSPACE || (key === e.DELETE && e.button === -1))){ + return; + } + + if((!Ext.isGecko && !Ext.isOpera) && e.isSpecialKey() && !charCode){ + return; + } + if(!this.maskRe.test(charCode)){ + e.stopEvent(); + } + }, + + getState: function() { + return this.addPropertyToState(this.callParent(), 'value'); + }, + + applyState: function(state) { + this.callParent(arguments); + if(state.hasOwnProperty('value')) { + this.setValue(state.value); + } + }, + + + getRawValue: function() { + var me = this, + v = me.callParent(); + if (v === me.emptyText && me.valueContainsPlaceholder) { + v = ''; + } + return v; + }, + + + setValue: function(value) { + var me = this, + inputEl = me.inputEl; + + if (inputEl && me.emptyText && !Ext.isEmpty(value)) { + inputEl.removeCls(me.emptyCls); + me.valueContainsPlaceholder = false; + } + + me.callParent(arguments); + + me.applyEmptyText(); + return me; + }, + + + getErrors: function(value) { + var me = this, + errors = me.callParent(arguments), + validator = me.validator, + vtype = me.vtype, + vtypes = Ext.form.field.VTypes, + regex = me.regex, + format = Ext.String.format, + msg, trimmed, isBlank; + + value = value || me.processRawValue(me.getRawValue()); + + if (Ext.isFunction(validator)) { + msg = validator.call(me, value); + if (msg !== true) { + errors.push(msg); + } + } + + trimmed = me.allowOnlyWhitespace ? value : Ext.String.trim(value); + + if (trimmed.length < 1 || (value === me.emptyText && me.valueContainsPlaceholder)) { + if (!me.allowBlank) { + errors.push(me.blankText); + } + + if (!me.validateBlank) { + return errors; + } + isBlank = true; + } + + + + if (!isBlank && value.length < me.minLength) { + errors.push(format(me.minLengthText, me.minLength)); + } + + if (value.length > me.maxLength) { + errors.push(format(me.maxLengthText, me.maxLength)); + } + + if (vtype) { + if (!vtypes[vtype](value, me)) { + errors.push(me.vtypeText || vtypes[vtype +'Text']); + } + } + + if (regex && !regex.test(value)) { + errors.push(me.regexText || me.invalidText); + } + + return errors; + }, + + + selectText : function(start, end){ + var me = this, + v = me.getRawValue(), + doFocus = true, + el = me.inputEl.dom, + undef, + range; + + if (v.length > 0) { + start = start === undef ? 0 : start; + end = end === undef ? v.length : end; + if (el.setSelectionRange) { + el.setSelectionRange(start, end); + } + else if(el.createTextRange) { + range = el.createTextRange(); + range.moveStart('character', start); + range.moveEnd('character', end - v.length); + range.select(); + } + doFocus = Ext.isGecko || Ext.isOpera; + } + if (doFocus) { + me.focus(); + } + }, + + + autoSize: function() { + var me = this; + if (me.grow && me.rendered) { + me.autoSizing = true; + me.updateLayout(); + } + }, + + afterComponentLayout: function() { + var me = this, + width; + + me.callParent(arguments); + if (me.autoSizing) { + width = me.inputEl.getWidth(); + if (width !== me.lastInputWidth) { + me.fireEvent('autosize', me, width); + me.lastInputWidth = width; + delete me.autoSizing; + } + } + }, + + onDestroy: function(){ + var me = this; + me.callParent(); + + if (me.inputFocusTask) { + me.inputFocusTask.cancel(); + me.inputFocusTask = null; + } + } +}); + + +Ext.define('Ext.layout.component.field.TextArea', { + extend: Ext.layout.component.field.Text , + alias: 'layout.textareafield', + + type: 'textareafield', + + canGrowWidth: false, + + naturalSizingProp: 'cols', + + beginLayout: function(ownerContext){ + this.callParent(arguments); + ownerContext.target.inputEl.setStyle('height', ''); + }, + + measureContentHeight: function (ownerContext) { + var me = this, + owner = me.owner, + height = me.callParent(arguments), + inputContext, inputEl, value, max, curWidth, calcHeight; + + if (owner.grow && !ownerContext.state.growHandled) { + inputContext = ownerContext.inputContext; + inputEl = owner.inputEl; + curWidth = inputEl.getWidth(true); + + + value = Ext.util.Format.htmlEncode(inputEl.dom.value) || ' '; + value += owner.growAppend; + + + value = value.replace(/\n/g, '
'); + + + calcHeight = Ext.util.TextMetrics.measure(inputEl, value, curWidth).height + + inputContext.getBorderInfo().height + inputContext.getPaddingInfo().height; + + + calcHeight = Ext.Number.constrain(calcHeight, owner.growMin, owner.growMax); + inputContext.setHeight(calcHeight); + ownerContext.state.growHandled = true; + + + inputContext.domBlock(me, 'height'); + height = NaN; + } + return height; + } +}); + + +Ext.define('Ext.form.field.TextArea', { + extend: Ext.form.field.Text , + alias: ['widget.textareafield', 'widget.textarea'], + alternateClassName: 'Ext.form.TextArea', + + + + + + + + + + + + + + + + + fieldSubTpl: [ + '', + { + disableFormats: true + } + ], + + + growMin: 60, + + + growMax: 1000, + + + growAppend: '\n-', + + + cols: 20, + + + rows: 4, + + + enterIsSpecial: false, + + + preventScrollbars: false, + + + componentLayout: 'textareafield', + + setGrowSizePolicy: Ext.emptyFn, + + returnRe: /\r/g, + + inputCls: Ext.baseCSSPrefix + 'form-textarea', + + + getSubTplData: function() { + var me = this, + fieldStyle = me.getFieldStyle(), + ret = me.callParent(); + + if (me.grow) { + if (me.preventScrollbars) { + ret.fieldStyle = (fieldStyle||'') + ';overflow:hidden;height:' + me.growMin + 'px'; + } + } + + Ext.applyIf(ret, { + cols: me.cols, + rows: me.rows + }); + + return ret; + }, + + afterRender: function () { + var me = this; + + me.callParent(arguments); + + me.needsMaxCheck = me.enforceMaxLength && me.maxLength !== Number.MAX_VALUE && !Ext.supports.TextAreaMaxLength; + if (me.needsMaxCheck) { + me.inputEl.on('paste', me.onPaste, me); + } + }, + + + + + + + + transformRawValue: function(value){ + return this.stripReturns(value); + }, + + transformOriginalValue: function(value){ + return this.stripReturns(value); + }, + + getValue: function(){ + return this.stripReturns(this.callParent()); + }, + + valueToRaw: function(value){ + value = this.stripReturns(value); + return this.callParent([value]); + }, + + stripReturns: function(value){ + if (value && typeof value === 'string') { + value = value.replace(this.returnRe, ''); + } + return value; + }, + + onPaste: function(e){ + var me = this; + if (!me.pasteTask) { + me.pasteTask = new Ext.util.DelayedTask(me.pasteCheck, me); + } + + me.pasteTask.delay(1); + }, + + pasteCheck: function(){ + var me = this, + value = me.getValue(), + max = me.maxLength; + + if (value.length > max) { + value = value.substr(0, max); + me.setValue(value); + } + }, + + + fireKey: function(e) { + var me = this, + key = e.getKey(), + value; + + if (e.isSpecialKey() && (me.enterIsSpecial || (key !== e.ENTER || e.hasModifier()))) { + me.fireEvent('specialkey', me, e); + } + + if (me.needsMaxCheck && key !== e.BACKSPACE && key !== e.DELETE && !e.isNavKeyPress() && !me.isCutCopyPasteSelectAll(e, key)) { + value = me.getValue(); + if (value.length >= me.maxLength) { + e.stopEvent(); + } + } + }, + + isCutCopyPasteSelectAll: function(e, key) { + if (e.ctrlKey) { + return key === e.A || key === e.C || key === e.V || key === e.X; + } + return false; + }, + + + autoSize: function() { + var me = this, + height; + + if (me.grow && me.rendered) { + me.updateLayout(); + height = me.inputEl.getHeight(); + if (height !== me.lastInputHeight) { + + me.fireEvent('autosize', me, height); + me.lastInputHeight = height; + } + } + }, + + + initAria: function() { + this.callParent(arguments); + this.getActionEl().dom.setAttribute('aria-multiline', true); + }, + + beforeDestroy: function(){ + var task = this.pasteTask; + if (task) { + task.cancel(); + this.pasteTask = null; + } + this.callParent(); + } +}); + + +Ext.define('Ext.form.field.Display', { + extend: Ext.form.field.Base , + alias: 'widget.displayfield', + + alternateClassName: ['Ext.form.DisplayField', 'Ext.form.Display'], + fieldSubTpl: [ + '
style="{fieldStyle}"', + ' class="{fieldCls}">{value}
', + { + compiled: true, + disableFormats: true + } + ], + + + readOnly: true, + + + fieldCls: Ext.baseCSSPrefix + 'form-display-field', + + fieldBodyCls: Ext.baseCSSPrefix + 'form-display-field-body', + + + htmlEncode: false, + + + + + + noWrap: false, + + + validateOnChange: false, + + initEvents: Ext.emptyFn, + + submitValue: false, + + isDirty: function(){ + return false; + }, + + isValid: function() { + return true; + }, + + validate: function() { + return true; + }, + + getRawValue: function() { + return this.rawValue; + }, + + setRawValue: function(value) { + var me = this; + + value = Ext.value(value, ''); + me.rawValue = value; + if (me.rendered) { + me.inputEl.dom.innerHTML = me.getDisplayValue(); + me.updateLayout(); + } + return value; + }, + + + getDisplayValue: function() { + var me = this, + value = this.getRawValue(), + display; + if (me.renderer) { + display = me.renderer.call(me.scope || me, value, me); + } else { + display = me.htmlEncode ? Ext.util.Format.htmlEncode(value) : value; + } + return display; + }, + + getSubTplData: function() { + var ret = this.callParent(arguments); + + ret.value = this.getDisplayValue(); + + return ret; + } + + + + + +}); + + +Ext.define('Ext.layout.container.Anchor', { + + + + alias: 'layout.anchor', + extend: Ext.layout.container.Auto , + alternateClassName: 'Ext.layout.AnchorLayout', + + + + type: 'anchor', + + + + + defaultAnchor: '100%', + + parseAnchorRE: /^(r|right|b|bottom)$/i, + + manageOverflow: true, + + beginLayoutCycle: function (ownerContext) { + var me = this, + dimensions = 0, + anchorSpec, childContext, childItems, i, length, target; + + me.callParent(arguments); + + childItems = ownerContext.childItems; + length = childItems.length; + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + anchorSpec = childContext.target.anchorSpec; + + if (anchorSpec) { + if (childContext.widthModel.calculated && anchorSpec.right) { + dimensions |= 1; + } + if (childContext.heightModel.calculated && anchorSpec.bottom) { + dimensions |= 2; + } + + if (dimensions == 3) { + break; + } + } + } + + ownerContext.anchorDimensions = dimensions; + + }, + + calculateItems: function (ownerContext, containerSize) { + var me = this, + childItems = ownerContext.childItems, + length = childItems.length, + gotHeight = containerSize.gotHeight, + gotWidth = containerSize.gotWidth, + ownerHeight = containerSize.height, + ownerWidth = containerSize.width, + knownDimensions = (gotWidth ? 1 : 0) | (gotHeight ? 2 : 0), + anchorDimensions = ownerContext.anchorDimensions, + anchorSpec, childContext, childMargins, height, i, width; + + if (!anchorDimensions) { + return true; + } + + for (i = 0; i < length; i++) { + childContext = childItems[i]; + childMargins = childContext.getMarginInfo(); + anchorSpec = childContext.target.anchorSpec; + + + + + + if (gotWidth && childContext.widthModel.calculated) { + width = anchorSpec.right(ownerWidth) - childMargins.width; + width = me.adjustWidthAnchor(width, childContext); + + childContext.setWidth(width); + } + + + if (gotHeight && childContext.heightModel.calculated) { + height = anchorSpec.bottom(ownerHeight) - childMargins.height; + height = me.adjustHeightAnchor(height, childContext); + + childContext.setHeight(height); + } + } + + + return (knownDimensions & anchorDimensions) === anchorDimensions; + }, + + + + anchorFactory: { + offset: function (delta) { + return function(v) { + return v + delta; + }; + }, + ratio: function (ratio) { + return function(v) { + return Math.floor(v * ratio); + }; + }, + standard: function (diff) { + return function(v) { + return v - diff; + }; + } + }, + + parseAnchor: function(a, start, cstart) { + if (a && a != 'none') { + var factory = this.anchorFactory, + delta; + + if (this.parseAnchorRE.test(a)) { + return factory.standard(cstart - start); + } + if (a.indexOf('%') != -1) { + return factory.ratio(parseFloat(a.replace('%', '')) * 0.01); + } + delta = parseInt(a, 10); + if (!isNaN(delta)) { + return factory.offset(delta); + } + } + return null; + }, + + + adjustWidthAnchor: function(value, childContext) { + return value; + }, + + + adjustHeightAnchor: function(value, childContext) { + return value; + }, + + configureItem: function(item) { + var me = this, + owner = me.owner, + anchor= item.anchor, + anchorsArray, + anchorWidth, + anchorHeight; + + me.callParent(arguments); + + if (!item.anchor && item.items && !Ext.isNumber(item.width) && !(Ext.isIE6 && Ext.isStrict)) { + item.anchor = anchor = me.defaultAnchor; + } + + + if (owner.anchorSize) { + if (typeof owner.anchorSize == 'number') { + anchorWidth = owner.anchorSize; + } else { + anchorWidth = owner.anchorSize.width; + anchorHeight = owner.anchorSize.height; + } + } else { + anchorWidth = owner.initialConfig.width; + anchorHeight = owner.initialConfig.height; + } + + if (anchor) { + + anchorsArray = anchor.split(' '); + item.anchorSpec = { + right: me.parseAnchor(anchorsArray[0], item.initialConfig.width, anchorWidth), + bottom: me.parseAnchor(anchorsArray[1], item.initialConfig.height, anchorHeight) + }; + } + }, + + sizePolicy: { + $: { + readsWidth: 1, + readsHeight: 1, + setsWidth: 0, + setsHeight: 0 + }, + b: { + readsWidth: 1, + readsHeight: 0, + setsWidth: 0, + setsHeight: 1 + }, + r: { + $: { + readsWidth: 0, + readsHeight: 1, + setsWidth: 1, + setsHeight: 0 + }, + b: { + readsWidth: 0, + readsHeight: 0, + setsWidth: 1, + setsHeight: 1 + } + } + }, + + getItemSizePolicy: function (item) { + var anchorSpec = item.anchorSpec, + key = '$', + policy = this.sizePolicy, + sizeModel; + + if (anchorSpec) { + sizeModel = this.owner.getSizeModel(); + if (anchorSpec.right && !sizeModel.width.shrinkWrap) { + policy = policy.r; + } + if (anchorSpec.bottom && !sizeModel.height.shrinkWrap) { + key = 'b'; + } + } + + return policy[key]; + } +}); + + + + +Ext.define('Ext.window.MessageBox', { + extend: Ext.window.Window , + + + + + + + + + + + + + alias: 'widget.messagebox', + + + OK : 1, + + YES : 2, + + NO : 4, + + CANCEL : 8, + + OKCANCEL : 9, + + YESNO : 6, + + YESNOCANCEL : 14, + + INFO : Ext.baseCSSPrefix + 'message-box-info', + + WARNING : Ext.baseCSSPrefix + 'message-box-warning', + + QUESTION : Ext.baseCSSPrefix + 'message-box-question', + + ERROR : Ext.baseCSSPrefix + 'message-box-error', + + + hideMode: 'offsets', + closeAction: 'hide', + resizable: false, + title: ' ', + + defaultMinWidth: 250, + defaultMaxWidth: 600, + defaultMinHeight: 110, + defaultMaxHeight: 500, + + + + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + constrain: true, + + cls: [Ext.baseCSSPrefix + 'message-box', Ext.baseCSSPrefix + 'hide-offsets'], + + layout: { + type: 'vbox', + align: 'stretch' + }, + + + shrinkWrapDock: true, + + + defaultTextHeight : 75, + + minProgressWidth : 250, + + minPromptWidth: 250, + + + buttonText: { + ok: 'OK', + yes: 'Yes', + no: 'No', + cancel: 'Cancel' + }, + + + buttonIds: [ + 'ok', 'yes', 'no', 'cancel' + ], + + + titleText: { + confirm: 'Confirm', + prompt: 'Prompt', + wait: 'Loading...', + alert: 'Attention' + }, + + + iconHeight: 35, + iconWidth: 50, + + makeButton: function(btnIdx) { + var btnId = this.buttonIds[btnIdx]; + return new Ext.button.Button({ + handler: this.btnCallback, + itemId: btnId, + scope: this, + text: this.buttonText[btnId], + minWidth: 75 + }); + }, + + btnCallback: function(btn) { + var me = this, + value, + field; + + if (me.cfg.prompt || me.cfg.multiline) { + if (me.cfg.multiline) { + field = me.textArea; + } else { + field = me.textField; + } + value = field.getValue(); + field.reset(); + } + + + me.hide(); + me.userCallback(btn.itemId, value, me.cfg); + }, + + hide: function() { + var me = this, + cls = me.cfg.cls; + + me.dd.endDrag(); + me.progressBar.reset(); + if (cls) { + me.removeCls(cls); + } + me.callParent(arguments); + }, + + constructor: function(cfg) { + var me = this; + + me.callParent(arguments); + + + + me.minWidth = me.defaultMinWidth = (me.minWidth || me.defaultMinWidth); + me.maxWidth = me.defaultMaxWidth = (me.maxWidth || me.defaultMaxWidth); + me.minHeight = me.defaultMinHeight = (me.minHeight || me.defaultMinHeight); + me.maxHeight = me.defaultMaxHeight = (me.maxHeight || me.defaultMaxHeight); + }, + + initComponent: function(cfg) { + var me = this, + baseId = me.id, + i, button; + + me.title = ' '; + + me.topContainer = new Ext.container.Container({ + layout: 'hbox', + padding: 10, + style: { + overflow: 'hidden' + }, + items: [ + me.iconComponent = new Ext.Component({ + width: me.iconWidth, + height: me.iconHeight + }), + me.promptContainer = new Ext.container.Container({ + flex: 1, + layout: 'anchor', + items: [ + me.msg = new Ext.form.field.Display({ + id: baseId + '-displayfield', + cls: me.baseCls + '-text' + }), + me.textField = new Ext.form.field.Text({ + id: baseId + '-textfield', + anchor: '100%', + enableKeyEvents: true, + listeners: { + keydown: me.onPromptKey, + scope: me + } + }), + me.textArea = new Ext.form.field.TextArea({ + id: baseId + '-textarea', + anchor: '100%', + height: 75 + }) + ] + }) + ] + }); + me.progressBar = new Ext.ProgressBar({ + id: baseId + '-progressbar', + margins: '0 10 10 10' + }); + + me.items = [me.topContainer, me.progressBar]; + + + me.msgButtons = []; + for (i = 0; i < 4; i++) { + button = me.makeButton(i); + me.msgButtons[button.itemId] = button; + me.msgButtons.push(button); + } + me.bottomTb = new Ext.toolbar.Toolbar({ + id: baseId + '-toolbar', + ui: 'footer', + dock: 'bottom', + layout: { + pack: 'center' + }, + items: [ + me.msgButtons[0], + me.msgButtons[1], + me.msgButtons[2], + me.msgButtons[3] + ] + }); + me.dockedItems = [me.bottomTb]; + me.on('close', me.onClose, me); + me.callParent(); + }, + + onClose: function(){ + var btn = this.header.child('[type=close]'); + + btn.itemId = 'cancel'; + this.btnCallback(btn); + delete btn.itemId; + }, + + onPromptKey: function(textField, e) { + var me = this; + + if (e.keyCode === e.RETURN || e.keyCode === 10) { + if (me.msgButtons.ok.isVisible()) { + me.msgButtons.ok.handler.call(me, me.msgButtons.ok); + } else if (me.msgButtons.yes.isVisible()) { + me.msgButtons.yes.handler.call(me, me.msgButtons.yes); + } + } + }, + + reconfigure: function(cfg) { + var me = this, + buttons = 0, + hideToolbar = true, + oldButtonText = me.buttonText, + resizer = me.resizer, + resizeTracker, width, height, i, textArea, textField, + msg, progressBar, msgButtons; + + + me.updateButtonText(); + + cfg = cfg || {}; + me.cfg = cfg; + if (cfg.width) { + width = cfg.width; + } + + if (cfg.height) { + height = cfg.height; + } + + me.minWidth = cfg.minWidth || me.defaultMinWidth; + me.maxWidth = cfg.maxWidth || me.defaultMaxWidth; + me.minHeight = cfg.minHeight || me.defaultMinHeight; + me.maxHeight = cfg.maxHeight || me.defaultMaxHeight; + + if (resizer) { + resizeTracker = resizer.resizeTracker; + resizer.minWidth = resizeTracker.minWidth = me.minWidth; + resizer.maxWidth = resizeTracker.maxWidth = me.maxWidth; + resizer.minHeight = resizeTracker.minHeight = me.minHeight; + resizer.maxHeight = resizeTracker.maxHeight = me.maxHeight; + } + + + delete me.defaultFocus; + if (cfg.defaultFocus) { + me.defaultFocus = cfg.defaultFocus; + } + + + me.animateTarget = cfg.animateTarget || undefined; + + + me.modal = cfg.modal !== false; + + + me.setTitle(cfg.title || ''); + me.setIconCls(cfg.iconCls || ''); + + + if (Ext.isObject(cfg.buttons)) { + me.buttonText = cfg.buttons; + buttons = 0; + } else { + me.buttonText = cfg.buttonText || me.buttonText; + buttons = Ext.isNumber(cfg.buttons) ? cfg.buttons : 0; + } + + + + buttons = buttons | me.updateButtonText(); + + + me.buttonText = oldButtonText; + + + + Ext.suspendLayouts(); + delete me.width; + delete me.height; + if (width || height) { + if (width) { + me.setWidth(width); + } + + if (height) { + me.setHeight(height); + } + } + me.hidden = false; + if (!me.rendered) { + me.render(Ext.getBody()); + } + + + me.closable = cfg.closable !== false && !cfg.wait; + me.header.child('[type=close]').setVisible(me.closable); + + + if (!cfg.title && !me.closable && !cfg.iconCls) { + me.header.hide(); + } else { + me.header.show(); + } + + + me.liveDrag = !cfg.proxyDrag; + + + me.userCallback = Ext.Function.bind(cfg.callback ||cfg.fn || Ext.emptyFn, cfg.scope || Ext.global); + + + me.setIcon(cfg.icon, cfg.iconWidth, cfg.iconHeight); + + + msg = me.msg; + if (cfg.msg) { + msg.setValue(cfg.msg); + msg.show(); + } else { + msg.hide(); + } + + + textArea = me.textArea; + textField = me.textField; + if (cfg.prompt || cfg.multiline) { + me.multiline = cfg.multiline; + if (cfg.multiline) { + textArea.setValue(cfg.value); + textArea.setHeight(cfg.defaultTextHeight || me.defaultTextHeight); + textArea.show(); + textField.hide(); + me.defaultFocus = textArea; + } else { + textField.setValue(cfg.value); + textArea.hide(); + textField.show(); + me.defaultFocus = textField; + } + } else { + textArea.hide(); + textField.hide(); + } + + + progressBar = me.progressBar; + if (cfg.progress || cfg.wait) { + progressBar.show(); + me.updateProgress(0, cfg.progressText); + if(cfg.wait === true){ + progressBar.wait(cfg.waitConfig); + } + } else { + progressBar.hide(); + } + + + msgButtons = me.msgButtons; + for (i = 0; i < 4; i++) { + if (buttons & Math.pow(2, i)) { + + + if (!me.defaultFocus) { + me.defaultFocus = msgButtons[i]; + } + msgButtons[i].show(); + hideToolbar = false; + } else { + msgButtons[i].hide(); + } + } + + + if (hideToolbar) { + me.bottomTb.hide(); + } else { + me.bottomTb.show(); + } + Ext.resumeLayouts(true); + }, + + + updateButtonText: function() { + var me = this, + buttonText = me.buttonText, + buttons = 0, + btnId, + btn; + + for (btnId in buttonText) { + if (buttonText.hasOwnProperty(btnId)) { + btn = me.msgButtons[btnId]; + if (btn) { + if (me.cfg && me.cfg.buttonText) { + buttons = buttons | Math.pow(2, Ext.Array.indexOf(me.buttonIds, btnId)); + } + if (btn.text != buttonText[btnId]) { + btn.setText(buttonText[btnId]); + } + } + } + } + return buttons; + }, + + + show: function(cfg) { + var me = this, + visibleFocusables; + + + if (Ext.AbstractComponent.layoutSuspendCount) { + Ext.on({ + resumelayouts: function() { + me.show(cfg); + }, + single: true + }); + return me; + } + + me.reconfigure(cfg); + if (cfg.cls) { + me.addCls(cfg.cls); + } + + + + visibleFocusables = me.query('textfield:not([hidden]),textarea:not([hidden]),button:not([hidden])'); + me.preventFocusOnActivate = !visibleFocusables.length; + + + + me.hidden = true; + me.callParent(); + return me; + }, + + onShow: function() { + this.callParent(arguments); + this.center(); + }, + + updateText: function(text) { + this.msg.setValue(text); + }, + + + setIcon : function(icon, width, height) { + var me = this, + iconCmp = me.iconComponent, + cls = me.messageIconCls; + + if (cls) { + iconCmp.removeCls(cls); + } + + if (icon) { + iconCmp.show(); + iconCmp.setSize(width || me.iconWidth, height || me.iconHeight); + iconCmp.addCls(Ext.baseCSSPrefix + 'dlg-icon'); + iconCmp.addCls(me.messageIconCls = icon); + } else { + iconCmp.removeCls(Ext.baseCSSPrefix + 'dlg-icon'); + iconCmp.hide(); + } + return me; + }, + + + updateProgress : function(value, progressText, msg){ + this.progressBar.updateProgress(value, progressText); + if (msg){ + this.updateText(msg); + } + return this; + }, + + onEsc: function() { + if (this.closable !== false) { + this.callParent(arguments); + } + }, + + + confirm: function(cfg, msg, fn, scope) { + if (Ext.isString(cfg)) { + cfg = { + title: cfg, + icon: this.QUESTION, + msg: msg, + buttons: this.YESNO, + callback: fn, + scope: scope + }; + } + return this.show(cfg); + }, + + + prompt : function(cfg, msg, fn, scope, multiline, value){ + if (Ext.isString(cfg)) { + cfg = { + prompt: true, + title: cfg, + minWidth: this.minPromptWidth, + msg: msg, + buttons: this.OKCANCEL, + callback: fn, + scope: scope, + multiline: multiline, + value: value + }; + } + return this.show(cfg); + }, + + + wait : function(cfg, title, config){ + if (Ext.isString(cfg)) { + cfg = { + title : title, + msg : cfg, + closable: false, + wait: true, + modal: true, + minWidth: this.minProgressWidth, + waitConfig: config + }; + } + return this.show(cfg); + }, + + + alert: function(cfg, msg, fn, scope) { + if (Ext.isString(cfg)) { + cfg = { + title : cfg, + msg : msg, + buttons: this.OK, + fn: fn, + scope : scope, + minWidth: this.minWidth + }; + } + return this.show(cfg); + }, + + + progress : function(cfg, msg, progressText){ + if (Ext.isString(cfg)) { + cfg = { + title: cfg, + msg: msg, + progress: true, + progressText: progressText + }; + } + return this.show(cfg); + } +}, function() { + + Ext.MessageBox = Ext.Msg = new this(); +}); + + +Ext.define('Ext.form.Basic', { + extend: Ext.util.Observable , + alternateClassName: 'Ext.form.BasicForm', + + + + + constructor: function(owner, config) { + var me = this, + reader; + + + me.owner = owner; + + me.checkValidityTask = new Ext.util.DelayedTask(me.checkValidity, me); + me.checkDirtyTask = new Ext.util.DelayedTask(me.checkDirty, me); + + + + + me.monitor = new Ext.container.Monitor({ + selector: '[isFormField]', + scope: me, + addHandler: me.onFieldAdd, + removeHandler: me.onFieldRemove + }); + me.monitor.bind(owner); + + Ext.apply(me, config); + + + if (Ext.isString(me.paramOrder)) { + me.paramOrder = me.paramOrder.split(/[\s,|]/); + } + + reader = me.reader; + if (reader && !reader.isReader) { + if (typeof reader === 'string') { + reader = { + type: reader + }; + } + me.reader = Ext.createByAlias('reader.' + reader.type, reader); + } + + reader = me.errorReader; + if (reader && !reader.isReader) { + if (typeof reader === 'string') { + reader = { + type: reader + }; + } + me.errorReader = Ext.createByAlias('reader.' + reader.type, reader); + } + + me.addEvents( + + 'beforeaction', + + 'actionfailed', + + 'actioncomplete', + + 'validitychange', + + 'dirtychange' + ); + me.callParent(); + }, + + + initialize : function() { + this.initialized = true; + this.onValidityChange(!this.hasInvalidField()); + }, + + + + + + + + + + + + + + timeout: 30, + + + + + + + paramsAsHash: false, + + + + waitTitle: 'Please Wait...', + + + + trackResetOnLoad: false, + + + + + + + + + + wasDirty: false, + + + + destroy: function() { + var me = this, + mon = me.monitor; + + if (mon) { + mon.unbind(); + me.monitor = null; + } + me.clearListeners(); + me.checkValidityTask.cancel(); + me.checkDirtyTask.cancel(); + }, + + onFieldAdd: function(field){ + var me = this; + + me.mon(field, 'validitychange', me.checkValidityDelay, me); + me.mon(field, 'dirtychange', me.checkDirtyDelay, me); + if (me.initialized) { + me.checkValidityDelay(); + } + }, + + onFieldRemove: function(field){ + var me = this; + + me.mun(field, 'validitychange', me.checkValidityDelay, me); + me.mun(field, 'dirtychange', me.checkDirtyDelay, me); + if (me.initialized) { + me.checkValidityDelay(); + } + }, + + + getFields: function() { + return this.monitor.getItems(); + }, + + + getBoundItems: function() { + var boundItems = this._boundItems; + + if (!boundItems || boundItems.getCount() === 0) { + boundItems = this._boundItems = new Ext.util.MixedCollection(); + boundItems.addAll(this.owner.query('[formBind]')); + } + + return boundItems; + }, + + + hasInvalidField: function() { + return !!this.getFields().findBy(function(field) { + var preventMark = field.preventMark, + isValid; + field.preventMark = true; + isValid = field.isValid(); + field.preventMark = preventMark; + return !isValid; + }); + }, + + + isValid: function() { + var me = this, + invalid; + Ext.suspendLayouts(); + invalid = me.getFields().filterBy(function(field) { + return !field.validate(); + }); + Ext.resumeLayouts(true); + return invalid.length < 1; + }, + + + checkValidity: function() { + var me = this, + valid = !me.hasInvalidField(); + if (valid !== me.wasValid) { + me.onValidityChange(valid); + me.fireEvent('validitychange', me, valid); + me.wasValid = valid; + } + }, + + checkValidityDelay: function(){ + this.checkValidityTask.delay(10); + }, + + + onValidityChange: function(valid) { + var boundItems = this.getBoundItems(), + items, i, iLen, cmp; + + if (boundItems) { + items = boundItems.items; + iLen = items.length; + + for (i = 0; i < iLen; i++) { + cmp = items[i]; + + if (cmp.disabled === valid) { + cmp.setDisabled(!valid); + } + } + } + }, + + + isDirty: function() { + return !!this.getFields().findBy(function(f) { + return f.isDirty(); + }); + }, + + checkDirtyDelay: function(){ + this.checkDirtyTask.delay(10); + }, + + + checkDirty: function() { + var dirty = this.isDirty(); + if (dirty !== this.wasDirty) { + this.fireEvent('dirtychange', this, dirty); + this.wasDirty = dirty; + } + }, + + + hasUpload: function() { + return !!this.getFields().findBy(function(f) { + return f.isFileUpload(); + }); + }, + + + doAction: function(action, options) { + if (Ext.isString(action)) { + action = Ext.ClassManager.instantiateByAlias('formaction.' + action, Ext.apply({}, options, {form: this})); + } + if (this.fireEvent('beforeaction', this, action) !== false) { + this.beforeAction(action); + Ext.defer(action.run, 100, action); + } + return this; + }, + + + submit: function(options) { + options = options || {}; + var me = this, + action; + + if (options.standardSubmit || me.standardSubmit) { + action = 'standardsubmit'; + } else { + action = me.api ? 'directsubmit' : 'submit'; + } + + return me.doAction(action, options); + }, + + + load: function(options) { + return this.doAction(this.api ? 'directload' : 'load', options); + }, + + + updateRecord: function(record) { + record = record || this._record; + if (!record) { + return this; + } + + var fields = record.fields.items, + values = this.getFieldValues(), + obj = {}, + i = 0, + len = fields.length, + name; + + for (; i < len; ++i) { + name = fields[i].name; + + if (values.hasOwnProperty(name)) { + obj[name] = values[name]; + } + } + + record.beginEdit(); + record.set(obj); + record.endEdit(); + + return this; + }, + + + loadRecord: function(record) { + this._record = record; + return this.setValues(record.getData()); + }, + + + getRecord: function() { + return this._record; + }, + + + beforeAction: function(action) { + var me = this, + waitMsg = action.waitMsg, + maskCls = Ext.baseCSSPrefix + 'mask-loading', + fields = me.getFields().items, + f, + fLen = fields.length, + field, waitMsgTarget; + + + for (f = 0; f < fLen; f++) { + field = fields[f]; + + if (field.isFormField && field.syncValue) { + field.syncValue(); + } + } + + if (waitMsg) { + waitMsgTarget = me.waitMsgTarget; + if (waitMsgTarget === true) { + me.owner.el.mask(waitMsg, maskCls); + } else if (waitMsgTarget) { + waitMsgTarget = me.waitMsgTarget = Ext.get(waitMsgTarget); + waitMsgTarget.mask(waitMsg, maskCls); + } else { + me.floatingAncestor = me.owner.up('[floating]'); + + + + + + + + + if (me.floatingAncestor) { + me.savePreventFocusOnActivate = me.floatingAncestor.preventFocusOnActivate; + me.floatingAncestor.preventFocusOnActivate = true; + } + Ext.MessageBox.wait(waitMsg, action.waitTitle || me.waitTitle); + } + } + }, + + + afterAction: function(action, success) { + var me = this; + if (action.waitMsg) { + var messageBox = Ext.MessageBox, + waitMsgTarget = me.waitMsgTarget; + if (waitMsgTarget === true) { + me.owner.el.unmask(); + } else if (waitMsgTarget) { + waitMsgTarget.unmask(); + } else { + messageBox.hide(); + } + } + + if (me.floatingAncestor) { + me.floatingAncestor.preventFocusOnActivate = me.savePreventFocusOnActivate; + } + if (success) { + if (action.reset) { + me.reset(); + } + Ext.callback(action.success, action.scope || action, [me, action]); + me.fireEvent('actioncomplete', me, action); + } else { + Ext.callback(action.failure, action.scope || action, [me, action]); + me.fireEvent('actionfailed', me, action); + } + }, + + + + findField: function(id) { + return this.getFields().findBy(function(f) { + return f.id === id || f.getName() === id; + }); + }, + + + + markInvalid: function(errors) { + var me = this, + e, eLen, error, value, + key; + + function mark(fieldId, msg) { + var field = me.findField(fieldId); + if (field) { + field.markInvalid(msg); + } + } + + if (Ext.isArray(errors)) { + eLen = errors.length; + + for (e = 0; e < eLen; e++) { + error = errors[e]; + mark(error.id, error.msg); + } + } else if (errors instanceof Ext.data.Errors) { + eLen = errors.items.length; + for (e = 0; e < eLen; e++) { + error = errors.items[e]; + + mark(error.field, error.message); + } + } else { + for (key in errors) { + if (errors.hasOwnProperty(key)) { + value = errors[key]; + mark(key, value, errors); + } + } + } + return this; + }, + + + setValues: function(values) { + var me = this, + v, vLen, val, field; + + function setVal(fieldId, val) { + var field = me.findField(fieldId); + if (field) { + field.setValue(val); + if (me.trackResetOnLoad) { + field.resetOriginalValue(); + } + } + } + + + + Ext.suspendLayouts(); + if (Ext.isArray(values)) { + + vLen = values.length; + + for (v = 0; v < vLen; v++) { + val = values[v]; + + setVal(val.id, val.value); + } + } else { + + Ext.iterate(values, setVal); + } + Ext.resumeLayouts(true); + return this; + }, + + + getValues: function(asString, dirtyOnly, includeEmptyText, useDataValues) { + var values = {}, + fields = this.getFields().items, + f, + fLen = fields.length, + isArray = Ext.isArray, + field, data, val, bucket, name; + + for (f = 0; f < fLen; f++) { + field = fields[f]; + + if (!dirtyOnly || field.isDirty()) { + data = field[useDataValues ? 'getModelData' : 'getSubmitData'](includeEmptyText); + + if (Ext.isObject(data)) { + for (name in data) { + if (data.hasOwnProperty(name)) { + val = data[name]; + + if (includeEmptyText && val === '') { + val = field.emptyText || ''; + } + + if (values.hasOwnProperty(name)) { + bucket = values[name]; + + if (!isArray(bucket)) { + bucket = values[name] = [bucket]; + } + + if (isArray(val)) { + values[name] = bucket.concat(val); + } else { + bucket.push(val); + } + } else { + values[name] = val; + } + } + } + } + } + } + + if (asString) { + values = Ext.Object.toQueryString(values); + } + return values; + }, + + + getFieldValues: function(dirtyOnly) { + return this.getValues(false, dirtyOnly, false, true); + }, + + + clearInvalid: function() { + Ext.suspendLayouts(); + + var me = this, + fields = me.getFields().items, + f, + fLen = fields.length; + + for (f = 0; f < fLen; f++) { + fields[f].clearInvalid(); + } + + Ext.resumeLayouts(true); + return me; + }, + + + reset: function(resetRecord) { + Ext.suspendLayouts(); + + var me = this, + fields = me.getFields().items, + f, + fLen = fields.length; + + for (f = 0; f < fLen; f++) { + fields[f].reset(); + } + + Ext.resumeLayouts(true); + + if (resetRecord === true) { + delete me._record; + } + return me; + }, + + + applyToFields: function(obj) { + var fields = this.getFields().items, + f, + fLen = fields.length; + + for (f = 0; f < fLen; f++) { + Ext.apply(fields[f], obj); + } + + return this; + }, + + + applyIfToFields: function(obj) { + var fields = this.getFields().items, + f, + fLen = fields.length; + + for (f = 0; f < fLen; f++) { + Ext.applyIf(fields[f], obj); + } + + return this; + } +}); + + +Ext.define('Ext.form.FieldAncestor', { + + + + + + + + + xhooks: { + initHierarchyState: function(hierarchyState) { + if (this.fieldDefaults) { + if (hierarchyState.fieldDefaults) { + hierarchyState.fieldDefaults = Ext.apply(Ext.Object.chain(hierarchyState.fieldDefaults), this.fieldDefaults); + } else { + hierarchyState.fieldDefaults = this.fieldDefaults; + } + } + } + }, + + + initFieldAncestor: function() { + var me = this; + + me.addEvents( + + 'fieldvaliditychange', + + + 'fielderrorchange' + ); + + + + + me.monitor = new Ext.container.Monitor({ + scope: me, + selector: '[isFormField]', + addHandler: me.onChildFieldAdd, + removeHandler: me.onChildFieldRemove + }); + me.initFieldDefaults(); + }, + + initMonitor: function() { + this.monitor.bind(this); + }, + + onChildFieldAdd: function(field) { + var me = this; + me.mon(field, 'errorchange', me.handleFieldErrorChange, me); + me.mon(field, 'validitychange', me.handleFieldValidityChange, me); + }, + + onChildFieldRemove: function(field) { + var me = this; + me.mun(field, 'errorchange', me.handleFieldErrorChange, me); + me.mun(field, 'validitychange', me.handleFieldValidityChange, me); + }, + + + initFieldDefaults: function() { + if (!this.fieldDefaults) { + this.fieldDefaults = {}; + } + }, + + + handleFieldValidityChange: function(field, isValid) { + var me = this; + if (field !== me) { + me.fireEvent('fieldvaliditychange', me, field, isValid); + me.onFieldValidityChange(field, isValid); + } + }, + + + handleFieldErrorChange: function(labelable, activeError) { + var me = this; + if (labelable !== me) { + me.fireEvent('fielderrorchange', me, labelable, activeError); + me.onFieldErrorChange(labelable, activeError); + } + }, + + + onFieldValidityChange: Ext.emptyFn, + + + onFieldErrorChange: Ext.emptyFn, + + beforeDestroy: function(){ + this.monitor.unbind(); + this.callParent(); + } + +}); + + +Ext.define('Ext.layout.component.field.FieldContainer', { + + + + extend: Ext.layout.component.field.Field , + + alias: 'layout.fieldcontainer', + + + + type: 'fieldcontainer', + + waitForOuterHeightInDom: true, + waitForOuterWidthInDom: true, + + beginLayout: function(ownerContext) { + var owner = this.owner; + this.callParent(arguments); + + + ownerContext.hasRawContent = true; + owner.bodyEl.setStyle('height', ''); + owner.containerEl.setStyle('height', ''); + ownerContext.containerElContext = ownerContext.getEl('containerEl'); + }, + + measureContentHeight: function (ownerContext) { + + + + return ownerContext.hasDomProp('containerLayoutDone') ? this.callParent(arguments) : NaN; + }, + + measureContentWidth: function (ownerContext) { + + return ownerContext.hasDomProp('containerLayoutDone') ? this.callParent(arguments) : NaN; + }, + + publishInnerWidth: function (ownerContext, width) { + var bodyContext = ownerContext.bodyCellContext, + innerWidth = bodyContext.el.getWidth(); + + bodyContext.setWidth(innerWidth, false); + ownerContext.containerElContext.setWidth(innerWidth, false); + }, + + publishInnerHeight: function (ownerContext, height) { + var bodyContext = ownerContext.bodyCellContext, + containerElContext = ownerContext.containerElContext; + + height -= this.measureLabelErrorHeight(ownerContext); + bodyContext.setHeight(height); + containerElContext.setHeight(height); + } +}); + + +Ext.define('Ext.form.FieldContainer', { + extend: Ext.container.Container , + mixins: { + labelable: Ext.form.Labelable , + fieldAncestor: Ext.form.FieldAncestor + }, + + + alias: 'widget.fieldcontainer', + + componentLayout: 'fieldcontainer', + + componentCls: Ext.baseCSSPrefix + 'form-fieldcontainer', + + + + customOverflowEl: 'containerEl', + + childEls: [ + 'containerEl' + ], + + + + + combineLabels: false, + + + + labelConnector: ', ', + + + + combineErrors: false, + + maskOnDisable: false, + + + invalidCls: '', + + fieldSubTpl: '
{%this.renderContainer(out,values)%}
', + + initComponent: function() { + var me = this; + + + me.initLabelable(); + me.initFieldAncestor(); + + me.callParent(); + me.initMonitor(); + }, + + getOverflowEl: function(){ + return this.containerEl; + }, + + + onAdd: function(labelable) { + var me = this; + + + + + if (Ext.isGecko && me.layout.type === 'absolute' && !me.hideLabel && me.labelAlign !== 'top') { + labelable.x += (me.labelWidth + me.labelPad); + } + me.callParent(arguments); + if (me.combineLabels) { + labelable.oldHideLabel = labelable.hideLabel; + labelable.hideLabel = true; + } + me.updateLabel(); + }, + + + onRemove: function(labelable, isDestroying) { + var me = this; + me.callParent(arguments); + if (!isDestroying) { + if (me.combineLabels) { + labelable.hideLabel = labelable.oldHideLabel; + } + me.updateLabel(); + } + }, + + initRenderTpl: function() { + var me = this; + if (!me.hasOwnProperty('renderTpl')) { + me.renderTpl = me.getTpl('labelableRenderTpl'); + } + return me.callParent(); + }, + + initRenderData: function() { + var me = this, + data = me.callParent(); + + data.containerElCls = me.containerElCls; + return Ext.applyIf(data, me.getLabelableRenderData()); + }, + + + getFieldLabel: function() { + var label = this.fieldLabel || ''; + if (!label && this.combineLabels) { + label = Ext.Array.map(this.query('[isFieldLabelable]'), function(field) { + return field.getFieldLabel(); + }).join(this.labelConnector); + } + return label; + }, + + getSubTplData: function() { + var ret = this.initRenderData(); + + Ext.apply(ret, this.subTplData); + return ret; + }, + + getSubTplMarkup: function() { + var me = this, + tpl = me.getTpl('fieldSubTpl'), + html; + + if (!tpl.renderContent) { + me.setupRenderTpl(tpl); + } + + html = tpl.apply(me.getSubTplData()); + return html; + }, + + + updateLabel: function() { + var me = this, + label = me.labelEl; + + if (label) { + me.setFieldLabel(me.getFieldLabel()); + } + }, + + + + onFieldErrorChange: function(field, activeError) { + if (this.combineErrors) { + var me = this, + oldError = me.getActiveError(), + invalidFields = Ext.Array.filter(me.query('[isFormField]'), function(field) { + return field.hasActiveError(); + }), + newErrors = me.getCombinedErrors(invalidFields); + + if (newErrors) { + me.setActiveErrors(newErrors); + } else { + me.unsetActiveError(); + } + + if (oldError !== me.getActiveError()) { + me.doComponentLayout(); + } + } + }, + + + getCombinedErrors: function(invalidFields) { + var errors = [], + f, + fLen = invalidFields.length, + field, + activeErrors, a, aLen, + error, label; + + for (f = 0; f < fLen; f++) { + field = invalidFields[f]; + activeErrors = field.getActiveErrors(); + aLen = activeErrors.length; + + for (a = 0; a < aLen; a++) { + error = activeErrors[a]; + label = field.getFieldLabel(); + + errors.push((label ? label + ': ' : '') + error); + } + } + + return errors; + }, + + getTargetEl: function() { + return this.containerEl; + }, + + applyTargetCls: function(targetCls) { + var containerElCls = this.containerElCls; + + this.containerElCls = containerElCls ? containerElCls + ' ' + targetCls : targetCls; + } +}); + + +Ext.define('Ext.layout.container.CheckboxGroup', { + extend: Ext.layout.container.Container , + alias: ['layout.checkboxgroup'], + + + autoFlex: true, + + type: 'checkboxgroup', + + createsInnerCt: true, + + childEls: [ + 'innerCt' + ], + + renderTpl: [ + '', + '', + '', + '', + '
', + '{% this.renderColumn(out,parent,xindex-1) %}', + '
' + ], + + lastOwnerItemsGeneration : null, + + beginLayout: function(ownerContext) { + var me = this, + columns, + numCols, + i, width, cwidth, + totalFlex = 0, flexedCols = 0, + autoFlex = me.autoFlex, + innerCtStyle = me.innerCt.dom.style; + + me.callParent(arguments); + + columns = me.columnNodes; + ownerContext.innerCtContext = ownerContext.getEl('innerCt', me); + + + if (!ownerContext.widthModel.shrinkWrap) { + numCols = columns.length; + + + if (me.columnsArray) { + + + for (i = 0; i < numCols; i++) { + width = me.owner.columns[i]; + if (width < 1) { + totalFlex += width; + flexedCols++; + } + } + + + for (i = 0; i < numCols; i++) { + width = me.owner.columns[i]; + if (width < 1) { + cwidth = ((width / totalFlex) * 100) + '%'; + } else { + cwidth = width + 'px'; + } + columns[i].style.width = cwidth; + } + } + + + else { + for (i = 0; i < numCols; i++) { + + + + cwidth = autoFlex + ? (1 / numCols * 100) + '%' + : ''; + columns[i].style.width = cwidth; + flexedCols++; + } + } + + + if (!flexedCols) { + innerCtStyle.tableLayout = 'fixed'; + innerCtStyle.width = ''; + + } else if (flexedCols < numCols) { + innerCtStyle.tableLayout = 'fixed'; + innerCtStyle.width = '100%'; + + } else { + innerCtStyle.tableLayout = 'auto'; + + if (autoFlex) { + innerCtStyle.width = '100%'; + } else { + innerCtStyle.width = ''; + } + } + + } else { + innerCtStyle.tableLayout = 'auto'; + innerCtStyle.width = ''; + } + }, + + cacheElements: function () { + var me = this; + + + me.callParent(); + + me.rowEl = me.innerCt.down('tr'); + + + me.columnNodes = me.rowEl.dom.childNodes; + }, + + + calculate: function(ownerContext) { + var me = this, + targetContext, widthShrinkWrap, heightShrinkWrap, shrinkWrap, table, targetPadding; + + + + if (!ownerContext.getDomProp('containerChildrenSizeDone')) { + me.done = false; + } else { + targetContext = ownerContext.innerCtContext; + widthShrinkWrap = ownerContext.widthModel.shrinkWrap; + heightShrinkWrap = ownerContext.heightModel.shrinkWrap; + shrinkWrap = heightShrinkWrap || widthShrinkWrap; + table = targetContext.el.dom; + targetPadding = shrinkWrap && targetContext.getPaddingInfo(); + + if (widthShrinkWrap) { + ownerContext.setContentWidth(table.offsetWidth + targetPadding.width, true); + } + + if (heightShrinkWrap) { + ownerContext.setContentHeight(table.offsetHeight + targetPadding.height, true); + } + } + }, + + doRenderColumn: function (out, renderData, columnIndex) { + + + + var me = renderData.$layout, + owner = me.owner, + columnCount = renderData.columnCount, + items = owner.items.items, + itemCount = items.length, + item, itemIndex, rowCount, increment, tree; + + + + + + if (owner.vertical) { + + + + + + + + + + + + rowCount = Math.ceil(itemCount / columnCount); + itemIndex = columnIndex * rowCount; + itemCount = Math.min(itemCount, itemIndex + rowCount); + increment = 1; + } else { + + + + + + + + + + + + itemIndex = columnIndex; + increment = columnCount; + } + + for ( ; itemIndex < itemCount; itemIndex += increment) { + item = items[itemIndex]; + me.configureItem(item); + tree = item.getRenderTree(); + Ext.DomHelper.generateMarkup(tree, out); + } + }, + + + getColumnCount: function() { + var me = this, + owner = me.owner, + ownerColumns = owner.columns; + + + + if (me.columnsArray) { + return ownerColumns.length; + } + + if (Ext.isNumber(ownerColumns)) { + return ownerColumns; + } + return owner.items.length; + }, + + getItemSizePolicy: function (item) { + return this.autoSizePolicy; + }, + + getRenderData: function () { + var me = this, + data = me.callParent(), + owner = me.owner, + i, columns = me.getColumnCount(), + width, column, cwidth, + autoFlex = me.autoFlex, + totalFlex = 0, flexedCols = 0; + + + if (me.columnsArray) { + for (i=0; i < columns; i++) { + width = me.owner.columns[i]; + if (width < 1) { + totalFlex += width; + flexedCols++; + } + } + } + + data.colCls = owner.groupCls; + data.columnCount = columns; + + data.columns = []; + for (i = 0; i < columns; i++) { + column = (data.columns[i] = {}); + + if (me.columnsArray) { + width = me.owner.columns[i]; + if (width < 1) { + cwidth = ((width / totalFlex) * 100) + '%'; + } else { + cwidth = width + 'px'; + } + column.style = 'width:' + cwidth; + } else { + column.style = 'width:' + (1 / columns * 100) + '%'; + flexedCols++; + } + } + + + data.tableStyle = + !flexedCols ? 'table-layout:fixed;' : + (flexedCols < columns) ? 'table-layout:fixed;width:100%' : + (autoFlex) ? 'table-layout:auto;width:100%' : 'table-layout:auto;'; + + return data; + }, + + initLayout: function () { + var me = this, + owner = me.owner; + + me.columnsArray = Ext.isArray(owner.columns); + me.autoColumns = !owner.columns || owner.columns === 'auto'; + me.vertical = owner.vertical; + + me.callParent(); + }, + + + isValidParent: function() { + return true; + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + + renderTpl.renderColumn = this.doRenderColumn; + }, + + renderChildren: function () { + var me = this, + generation = me.owner.items.generation; + + if (me.lastOwnerItemsGeneration !== generation) { + me.lastOwnerItemsGeneration = generation; + me.renderItems(me.getLayoutItems()); + } + }, + + + renderItems : function(items) { + var me = this, + itemCount = items.length, + i, + item, + rowCount, + columnCount, + rowIndex, + columnIndex; + + if (itemCount) { + Ext.suspendLayouts(); + + if (me.autoColumns) { + me.addMissingColumns(itemCount); + } + + columnCount = me.columnNodes.length; + rowCount = Math.ceil(itemCount / columnCount); + + for (i = 0; i < itemCount; i++) { + item = items[i]; + rowIndex = me.getRenderRowIndex(i, rowCount, columnCount); + columnIndex = me.getRenderColumnIndex(i, rowCount, columnCount); + + if (!item.rendered) { + me.renderItem(item, rowIndex, columnIndex); + } else if (!me.isItemAtPosition(item, rowIndex, columnIndex)) { + me.moveItem(item, rowIndex, columnIndex); + } + } + + if (me.autoColumns) { + me.removeExceedingColumns(itemCount); + } + + Ext.resumeLayouts(true); + } + }, + + isItemAtPosition : function(item, rowIndex, columnIndex) { + return item.el.dom === this.getNodeAt(rowIndex, columnIndex); + }, + + getRenderColumnIndex : function(itemIndex, rowCount, columnCount) { + if (this.vertical) { + return Math.floor(itemIndex / rowCount); + } else { + return itemIndex % columnCount; + } + }, + + getRenderRowIndex : function(itemIndex, rowCount, columnCount) { + var me = this; + if (me.vertical) { + return itemIndex % rowCount; + } else { + return Math.floor(itemIndex / columnCount); + } + }, + + getNodeAt : function(rowIndex, columnIndex) { + return this.columnNodes[columnIndex].childNodes[rowIndex]; + }, + + addMissingColumns : function(itemsCount) { + var me = this, + existingColumnsCount = me.columnNodes.length, + missingColumnsCount, + row, + cls, + i; + if (existingColumnsCount < itemsCount) { + missingColumnsCount = itemsCount - existingColumnsCount; + row = me.rowEl; + cls = me.owner.groupCls; + for (i = 0; i < missingColumnsCount; i++) { + row.createChild({ + cls: cls, + tag: 'td', + vAlign: 'top' + }); + } + } + }, + + removeExceedingColumns : function(itemsCount) { + var me = this, + existingColumnsCount = me.columnNodes.length, + exceedingColumnsCount, + row, + i; + if (existingColumnsCount > itemsCount) { + exceedingColumnsCount = existingColumnsCount - itemsCount; + row = me.rowEl; + for (i = 0; i < exceedingColumnsCount; i++) { + row.last().remove(); + } + } + }, + + + renderItem : function(item, rowIndex, columnIndex) { + var me = this; + + me.configureItem(item); + item.render(Ext.get(me.columnNodes[columnIndex]), rowIndex); + me.afterRenderItem(item); + }, + + + moveItem : function(item, rowIndex, columnIndex) { + var me = this, + column = me.columnNodes[columnIndex], + targetNode = column.childNodes[rowIndex]; + column.insertBefore(item.el.dom, targetNode || null); + } + +}); + + +Ext.define('Ext.form.CheckboxManager', { + extend: Ext.util.MixedCollection , + singleton: true, + + getByName: function(name, formId) { + return this.filterBy(function(item) { + return item.name == name && item.getFormId() == formId; + }); + } +}); + + +Ext.define('Ext.form.field.Checkbox', { + extend: Ext.form.field.Base , + alias: ['widget.checkboxfield', 'widget.checkbox'], + alternateClassName: 'Ext.form.Checkbox', + + + componentLayout: 'field', + + + stretchInputElFixed: false, + + childEls: [ + + 'boxLabelEl' + ], + + + fieldSubTpl: [ + '', + '{beforeBoxLabelTpl}', + '', + '{afterBoxLabelTpl}', + '', + + + ' tabIndex="{tabIdx}"
', + ' disabled="disabled"', + ' style="{fieldStyle}"', + ' {ariaAttrs}', + ' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />', + '', + '{beforeBoxLabelTpl}', + '', + '{afterBoxLabelTpl}', + '', + { + disableFormats: true, + compiled: true + } + ], + + subTplInsertions: [ + + 'beforeBoxLabelTpl', + + + 'afterBoxLabelTpl', + + + 'beforeBoxLabelTextTpl', + + + 'afterBoxLabelTextTpl', + + + 'boxLabelAttrTpl', + + + 'inputAttrTpl' + ], + + + isCheckbox: true, + + + focusCls: 'form-checkbox-focus', + + + + + extraFieldBodyCls: Ext.baseCSSPrefix + 'form-cb-wrap', + + + checked: false, + + + checkedCls: Ext.baseCSSPrefix + 'form-cb-checked', + + + + + boxLabelCls: Ext.baseCSSPrefix + 'form-cb-label', + + + boxLabelAlign: 'after', + + + inputValue: 'on', + + + + + + + + + checkChangeEvents: [], + inputType: 'checkbox', + + + inputTypeAttr: 'button', + + + + onRe: /^on$/i, + + + inputCls: Ext.baseCSSPrefix + 'form-cb', + + initComponent: function() { + this.callParent(arguments); + this.getManager().add(this); + }, + + initValue: function() { + var me = this, + checked = !!me.checked; + + + me.originalValue = me.lastValue = checked; + + + me.setValue(checked); + }, + + getElConfig: function() { + var me = this; + + + if (me.isChecked(me.rawValue, me.inputValue)) { + me.addCls(me.checkedCls); + } + return me.callParent(); + }, + + getFieldStyle: function() { + return Ext.isObject(this.fieldStyle) ? Ext.DomHelper.generateStyles(this.fieldStyle) : this.fieldStyle ||''; + }, + + getSubTplData: function() { + var me = this; + return Ext.apply(me.callParent(), { + disabled : me.readOnly || me.disabled, + boxLabel : me.boxLabel, + boxLabelCls : me.boxLabelCls, + boxLabelAlign : me.boxLabelAlign, + inputTypeAttr : me.inputTypeAttr + }); + }, + + initEvents: function() { + var me = this; + me.callParent(); + me.mon(me.inputEl, 'click', me.onBoxClick, me); + }, + + + setBoxLabel: function(boxLabel){ + var me = this; + + me.boxLabel = boxLabel; + if (me.rendered) { + me.boxLabelEl.update(boxLabel); + } + }, + + + onBoxClick: function(e) { + var me = this; + if (!me.disabled && !me.readOnly) { + this.setValue(!this.checked); + } + }, + + + getRawValue: function() { + return this.checked; + }, + + + getValue: function() { + return this.checked; + }, + + + getSubmitValue: function() { + var unchecked = this.uncheckedValue, + uncheckedVal = Ext.isDefined(unchecked) ? unchecked : null; + return this.checked ? this.inputValue : uncheckedVal; + }, + + isChecked: function(rawValue, inputValue) { + return (rawValue === true || rawValue === 'true' || rawValue === '1' || rawValue === 1 || + (((Ext.isString(rawValue) || Ext.isNumber(rawValue)) && inputValue) ? rawValue == inputValue : this.onRe.test(rawValue))); + }, + + + setRawValue: function(value) { + var me = this, + inputEl = me.inputEl, + checked = me.isChecked(value, me.inputValue); + + if (inputEl) { + me[checked ? 'addCls' : 'removeCls'](me.checkedCls); + } + + me.checked = me.rawValue = checked; + return checked; + }, + + + setValue: function(checked) { + var me = this, + boxes, i, len, box; + + + + + + if (Ext.isArray(checked)) { + boxes = me.getManager().getByName(me.name, me.getFormId()).items; + len = boxes.length; + + for (i = 0; i < len; ++i) { + box = boxes[i]; + box.setValue(Ext.Array.contains(checked, box.inputValue)); + } + } else { + me.callParent(arguments); + } + + return me; + }, + + + valueToRaw: function(value) { + + return value; + }, + + + onChange: function(newVal, oldVal) { + var me = this, + handler = me.handler; + if (handler) { + handler.call(me.scope || me, me, newVal); + } + me.callParent(arguments); + }, + + resetOriginalValue: function( fromBoxInGroup){ + var me = this, + boxes, + box, + len, + i; + + + if (!fromBoxInGroup) { + boxes = me.getManager().getByName(me.name, me.getFormId()).items; + len = boxes.length; + + for (i = 0; i < len; ++i) { + box = boxes[i]; + if (box !== me) { + boxes[i].resetOriginalValue(true); + } + } + } + me.callParent(); + }, + + + beforeDestroy: function(){ + this.callParent(); + this.getManager().removeAtKey(this.id); + }, + + + getManager: function() { + return Ext.form.CheckboxManager; + }, + + onEnable: function() { + var me = this, + inputEl = me.inputEl; + me.callParent(); + if (inputEl) { + + inputEl.dom.disabled = me.readOnly; + } + }, + + setReadOnly: function(readOnly) { + var me = this, + inputEl = me.inputEl; + if (inputEl) { + + inputEl.dom.disabled = !!readOnly || me.disabled; + } + me.callParent(arguments); + }, + + getFormId: function(){ + var me = this, + form; + + if (!me.formId) { + form = me.up('form'); + if (form) { + me.formId = form.id; + } + } + return me.formId; + } +}); + + +Ext.define('Ext.form.CheckboxGroup', { + extend: Ext.form.FieldContainer , + mixins: { + field: Ext.form.field.Field + }, + alias: 'widget.checkboxgroup', + + + + + + + + + + + + columns : 'auto', + + + vertical : false, + + + allowBlank : true, + + + + blankText : "You must select at least one item in this group", + + + + defaultType : 'checkboxfield', + + + groupCls : Ext.baseCSSPrefix + 'form-check-group', + + + extraFieldBodyCls: Ext.baseCSSPrefix + 'form-checkboxgroup-body', + + + layout: 'checkboxgroup', + + componentCls: Ext.baseCSSPrefix + 'form-checkboxgroup', + + initComponent: function() { + var me = this; + me.callParent(); + me.initField(); + }, + + + initValue: function() { + var me = this, + valueCfg = me.value; + me.originalValue = me.lastValue = valueCfg || me.getValue(); + if (valueCfg) { + me.setValue(valueCfg); + } + }, + + + onAdd: function(item) { + var me = this, + items, + len, i; + + if (item.isCheckbox) { + me.mon(item, 'change', me.checkChange, me); + } else if (item.isContainer) { + items = item.items.items; + for (i = 0, len = items.length; i < len; i++) { + me.onAdd(items[i]); + } + } + me.callParent(arguments); + }, + + onRemove: function(item) { + var me = this, + items, + len, i; + + if (item.isCheckbox) { + me.mun(item, 'change', me.checkChange, me); + } else if (item.isContainer) { + items = item.items.items; + for (i = 0, len = items.length; i < len; i++) { + me.onRemove(items[i]); + } + } + me.callParent(arguments); + }, + + + isEqual: function(value1, value2) { + var toQueryString = Ext.Object.toQueryString; + return toQueryString(value1) === toQueryString(value2); + }, + + + getErrors: function() { + var errors = []; + if (!this.allowBlank && Ext.isEmpty(this.getChecked())) { + errors.push(this.blankText); + } + return errors; + }, + + + getBoxes: function(query) { + return this.query('[isCheckbox]' + (query||'')); + }, + + + eachBox: function(fn, scope) { + Ext.Array.forEach(this.getBoxes(), fn, scope || this); + }, + + + getChecked: function() { + return this.getBoxes('[checked]'); + }, + + + isDirty: function(){ + var boxes = this.getBoxes(), + b , + bLen = boxes.length; + + for (b = 0; b < bLen; b++) { + if (boxes[b].isDirty()) { + return true; + } + } + }, + + + setReadOnly: function(readOnly) { + var boxes = this.getBoxes(), + b, + bLen = boxes.length; + + for (b = 0; b < bLen; b++) { + boxes[b].setReadOnly(readOnly); + } + + this.readOnly = readOnly; + }, + + + reset: function() { + var me = this, + hadError = me.hasActiveError(), + preventMark = me.preventMark; + me.preventMark = true; + me.batchChanges(function() { + var boxes = me.getBoxes(), + b, + bLen = boxes.length; + + for (b = 0; b < bLen; b++) { + boxes[b].reset(); + } + }); + me.preventMark = preventMark; + me.unsetActiveError(); + if (hadError) { + me.updateLayout(); + } + }, + + resetOriginalValue: function(){ + var me = this, + boxes = me.getBoxes(), + b, + bLen = boxes.length; + + for (b = 0; b < bLen; b++) { + boxes[b].resetOriginalValue(); + } + + me.originalValue = me.getValue(); + me.checkDirty(); + }, + + + + setValue: function(value) { + var me = this, + boxes = me.getBoxes(), + b, + bLen = boxes.length, + box, name, + cbValue; + + me.batchChanges(function() { + for (b = 0; b < bLen; b++) { + box = boxes[b]; + name = box.getName(); + cbValue = false; + + if (value && value.hasOwnProperty(name)) { + if (Ext.isArray(value[name])) { + cbValue = Ext.Array.contains(value[name], box.inputValue); + } else { + + cbValue = value[name]; + } + } + + box.setValue(cbValue); + } + }); + return me; + }, + + + + getValue: function() { + var values = {}, + boxes = this.getBoxes(), + b, + bLen = boxes.length, + box, name, inputValue, bucket; + + for (b = 0; b < bLen; b++) { + box = boxes[b]; + name = box.getName(); + inputValue = box.inputValue; + + if (box.getValue()) { + if (values.hasOwnProperty(name)) { + bucket = values[name]; + if (!Ext.isArray(bucket)) { + bucket = values[name] = [bucket]; + } + bucket.push(inputValue); + } else { + values[name] = inputValue; + } + } + } + + return values; + }, + + + getSubmitData: function() { + return null; + }, + + + getModelData: function() { + return null; + }, + + validate: function() { + var me = this, + errors, + isValid, + wasValid; + + if (me.disabled) { + isValid = true; + } else { + errors = me.getErrors(); + isValid = Ext.isEmpty(errors); + wasValid = me.wasValid; + if (isValid) { + me.unsetActiveError(); + } else { + me.setActiveError(errors); + } + } + if (isValid !== wasValid) { + me.wasValid = isValid; + me.fireEvent('validitychange', me, isValid); + me.updateLayout(); + } + + return isValid; + } + +}, function() { + + this.borrow(Ext.form.field.Base, ['markInvalid', 'clearInvalid', 'setError']); + +}); + + + +Ext.define('Ext.form.FieldSet', { + extend: Ext.container.Container , + mixins: { + fieldAncestor: Ext.form.FieldAncestor + }, + alias: 'widget.fieldset', + + + + + + + + + + + + collapsed: false, + + + toggleOnTitleClick : true, + + + + + baseCls: Ext.baseCSSPrefix + 'fieldset', + + + layout: 'anchor', + + componentLayout: 'fieldset', + + autoEl: 'fieldset', + + childEls: [ + 'body' + ], + + renderTpl: [ + '{%this.renderLegend(out,values);%}', + '
style="{bodyStyle}">', + '{%this.renderContainer(out,values);%}', + '
' + ], + + stateEvents : [ 'collapse', 'expand' ], + + maskOnDisable: false, + + beforeDestroy: function(){ + var me = this, + legend = me.legend; + + if (legend) { + + delete legend.ownerCt; + legend.destroy(); + me.legend = null; + } + me.callParent(); + }, + + initComponent: function() { + var me = this, + baseCls = me.baseCls; + + me.initFieldAncestor(); + + me.callParent(); + + + + + + + + + + + + me.layout.managePadding = me.layout.manageOverflow = false; + + me.addEvents( + + + "beforeexpand", + + + "beforecollapse", + + + "expand", + + + "collapse" + ); + + if (me.collapsed) { + me.addCls(baseCls + '-collapsed'); + me.collapse(); + } + if (me.title || me.checkboxToggle || me.collapsible) { + me.addTitleClasses(); + me.legend = Ext.widget(me.createLegendCt()); + } + me.initMonitor(); + }, + + initPadding: function(targetEl) { + var me = this, + body = me.getProtoBody(), + padding = me.padding, + bodyPadding; + + if (padding !== undefined) { + if (Ext.isIEQuirks || Ext.isIE8m) { + + + padding = me.parseBox(padding); + bodyPadding = Ext.Element.parseBox(0); + bodyPadding.top = padding.top; + padding.top = 0; + body.setStyle('padding', me.unitizeBox(bodyPadding)); + } + + targetEl.setStyle('padding', me.unitizeBox(padding)); + } + }, + + getProtoBody: function () { + var me = this, + body = me.protoBody; + + if (!body) { + me.protoBody = body = new Ext.util.ProtoElement({ + styleProp: 'bodyStyle', + styleIsText: true + }); + } + + return body; + }, + + + initRenderData: function() { + var me = this, + data = me.callParent(); + + data.bodyTargetCls = me.bodyTargetCls; + me.protoBody.writeTo(data); + delete me.protoBody; + + return data; + }, + + getState: function () { + var state = this.callParent(); + + state = this.addPropertyToState(state, 'collapsed'); + + return state; + }, + + afterCollapse: Ext.emptyFn, + afterExpand: Ext.emptyFn, + + collapsedHorizontal: function () { + return true; + }, + + collapsedVertical: function () { + return true; + }, + + createLegendCt: function () { + var me = this, + items = [], + legend = { + xtype: 'container', + baseCls: me.baseCls + '-header', + id: me.id + '-legend', + autoEl: 'legend', + items: items, + ownerCt: me, + shrinkWrap: true, + ownerLayout: me.componentLayout + }; + + + if (me.checkboxToggle) { + items.push(me.createCheckboxCmp()); + } else if (me.collapsible) { + + items.push(me.createToggleCmp()); + } + + + items.push(me.createTitleCmp()); + + return legend; + }, + + + createTitleCmp: function() { + var me = this, + cfg = { + xtype : 'component', + html : me.title, + cls : me.baseCls + '-header-text', + id : me.id + '-legendTitle' + }; + + if (me.collapsible && me.toggleOnTitleClick) { + cfg.listeners = { + click : { + element: 'el', + scope : me, + fn : me.toggle + } + }; + cfg.cls += ' ' + me.baseCls + '-header-text-collapsible'; + } + + return (me.titleCmp = Ext.widget(cfg)); + }, + + + + + createCheckboxCmp: function() { + var me = this, + suffix = '-checkbox'; + + me.checkboxCmp = Ext.widget({ + xtype: 'checkbox', + hideEmptyLabel: true, + name: me.checkboxName || me.id + suffix, + cls: me.baseCls + '-header' + suffix, + id: me.id + '-legendChk', + checked: !me.collapsed, + listeners: { + change: me.onCheckChange, + scope: me + } + }); + return me.checkboxCmp; + }, + + + + + createToggleCmp: function() { + var me = this; + me.toggleCmp = Ext.widget({ + xtype: 'tool', + height: 15, + width: 15, + type: 'toggle', + handler: me.toggle, + id: me.id + '-legendToggle', + scope: me + }); + return me.toggleCmp; + }, + + doRenderLegend: function (out, renderData) { + + + + var me = renderData.$comp, + legend = me.legend, + tree; + + + if (legend) { + legend.ownerLayout.configureItem(legend); + tree = legend.getRenderTree(); + Ext.DomHelper.generateMarkup(tree, out); + } + }, + + finishRender: function () { + var legend = this.legend; + + this.callParent(); + + if (legend) { + legend.finishRender(); + } + }, + + getCollapsed: function () { + return this.collapsed ? 'top' : false; + }, + + getCollapsedDockedItems: function () { + var legend = this.legend; + + return legend ? [ legend ] : []; + }, + + + setTitle: function(title) { + var me = this, + legend = me.legend, + baseCls = me.baseCls; + + me.title = title; + if (me.rendered) { + if (!legend) { + me.legend = legend = Ext.widget(me.createLegendCt()); + me.addTitleClasses(); + legend.ownerLayout.configureItem(legend); + legend.render(me.el, 0); + } + me.titleCmp.update(title); + } else if (legend) { + me.titleCmp.update(title); + } else { + me.addTitleClasses(); + me.legend = Ext.widget(me.createLegendCt()); + } + return me; + }, + + addTitleClasses: function(){ + var me = this, + title = me.title, + baseCls = me.baseCls; + + if (title) { + me.addCls(baseCls + '-with-title'); + } + + if (title || me.checkboxToggle || me.collapsible) { + me.addCls(baseCls + '-with-header'); + } + }, + + applyTargetCls: function(targetCls) { + this.bodyTargetCls = targetCls; + }, + + getTargetEl : function() { + return this.body || this.frameBody || this.el; + }, + + getDefaultContentTarget: function() { + return this.body; + }, + + + expand : function(){ + return this.setExpanded(true); + }, + + + collapse : function() { + return this.setExpanded(false); + }, + + + setExpanded: function(expanded) { + var me = this, + checkboxCmp = me.checkboxCmp, + operation = expanded ? 'expand' : 'collapse'; + + if (!me.rendered || me.fireEvent('before' + operation, me) !== false) { + expanded = !!expanded; + + if (checkboxCmp) { + checkboxCmp.setValue(expanded); + } + + if (expanded) { + me.removeCls(me.baseCls + '-collapsed'); + } else { + me.addCls(me.baseCls + '-collapsed'); + } + me.collapsed = !expanded; + if (expanded) { + delete me.getHierarchyState().collapsed; + } else { + me.getHierarchyState().collapsed = true; + } + if (me.rendered) { + + + + me.updateLayout({ isRoot: false }); + me.fireEvent(operation, me); + } + } + return me; + }, + + getRefItems: function(deep) { + var refItems = this.callParent(arguments), + legend = this.legend; + + + if (legend) { + refItems.unshift(legend); + if (deep) { + refItems.unshift.apply(refItems, legend.getRefItems(true)); + } + } + return refItems; + }, + + + toggle: function() { + this.setExpanded(!!this.collapsed); + }, + + + onCheckChange: function(cmp, checked) { + this.setExpanded(checked); + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + + renderTpl.renderLegend = this.doRenderLegend; + } +}); + + +Ext.define('Ext.form.Label', { + extend: Ext.Component , + alias: 'widget.label', + + + autoEl: 'label', + + + + + + maskOnDisable: false, + + getElConfig: function(){ + var me = this; + + me.html = me.text ? Ext.util.Format.htmlEncode(me.text) : (me.html || ''); + return Ext.apply(me.callParent(), { + htmlFor: me.forId || '' + }); + }, + + + setText : function(text, encode){ + var me = this; + + encode = encode !== false; + if(encode) { + me.text = text; + delete me.html; + } else { + me.html = text; + delete me.text; + } + + if(me.rendered){ + me.el.dom.innerHTML = encode !== false ? Ext.util.Format.htmlEncode(text) : text; + me.updateLayout(); + } + return me; + } +}); + + + +Ext.define('Ext.form.Panel', { + extend: Ext.panel.Panel , + mixins: { + fieldAncestor: Ext.form.FieldAncestor + }, + alias: 'widget.form', + alternateClassName: ['Ext.FormPanel', 'Ext.form.FormPanel'], + + + + + + + + layout: 'anchor', + + ariaRole: 'form', + + basicFormConfigs: [ + 'api', + 'baseParams', + 'errorReader', + 'jsonSubmit', + 'method', + 'paramOrder', + 'paramsAsHash', + 'reader', + 'standardSubmit', + 'timeout', + 'trackResetOnLoad', + 'url', + 'waitMsgTarget', + 'waitTitle' + ], + + initComponent: function() { + var me = this; + + if (me.frame) { + me.border = false; + } + + me.initFieldAncestor(); + me.callParent(); + + me.relayEvents(me.form, [ + + 'beforeaction', + + 'actionfailed', + + 'actioncomplete', + + 'validitychange', + + 'dirtychange' + ]); + + + if (me.pollForChanges) { + me.startPolling(me.pollInterval || 500); + } + }, + + initItems: function() { + + this.callParent(); + this.initMonitor(); + this.form = this.createForm(); + }, + + + afterFirstLayout: function() { + this.callParent(arguments); + this.form.initialize(); + }, + + + createForm: function() { + var cfg = {}, + props = this.basicFormConfigs, + len = props.length, + i = 0, + prop; + + for (; i < len; ++i) { + prop = props[i]; + cfg[prop] = this[prop]; + } + return new Ext.form.Basic(this, cfg); + }, + + + getForm: function() { + return this.form; + }, + + + loadRecord: function(record) { + return this.getForm().loadRecord(record); + }, + + + getRecord: function() { + return this.getForm().getRecord(); + }, + + + updateRecord: function(record) { + return this.getForm().updateRecord(record); + }, + + + getValues: function(asString, dirtyOnly, includeEmptyText, useDataValues) { + return this.getForm().getValues(asString, dirtyOnly, includeEmptyText, useDataValues); + }, + + + isDirty: function () { + return this.form.isDirty(); + }, + + + isValid: function () { + return this.form.isValid(); + }, + + + hasInvalidField: function () { + return this.form.hasInvalidField(); + }, + + beforeDestroy: function() { + this.stopPolling(); + this.form.destroy(); + this.callParent(); + }, + + + load: function(options) { + this.form.load(options); + }, + + + submit: function(options) { + this.form.submit(options); + }, + + + startPolling: function(interval) { + this.stopPolling(); + var task = new Ext.util.TaskRunner(interval); + task.start({ + interval: 0, + run: this.checkChange, + scope: this + }); + this.pollTask = task; + }, + + + stopPolling: function() { + var task = this.pollTask; + if (task) { + task.stopAll(); + delete this.pollTask; + } + }, + + + checkChange: function() { + var fields = this.form.getFields().items, + f, + fLen = fields.length; + + for (f = 0; f < fLen; f++) { + fields[f].checkChange(); + } + } +}); + + +Ext.define('Ext.form.RadioManager', { + extend: Ext.util.MixedCollection , + singleton: true, + + getByName: function(name, formId) { + return this.filterBy(function(item) { + return item.name == name && item.getFormId() == formId; + }); + }, + + getWithValue: function(name, value, formId) { + return this.filterBy(function(item) { + return item.name == name && item.inputValue == value && item.getFormId() == formId; + }); + }, + + getChecked: function(name, formId) { + return this.findBy(function(item) { + return item.name == name && item.checked && item.getFormId() == formId; + }); + } +}); + + +Ext.define('Ext.form.field.Radio', { + extend: Ext.form.field.Checkbox , + alias: ['widget.radiofield', 'widget.radio'], + alternateClassName: 'Ext.form.Radio', + + + + isRadio: true, + + + focusCls: 'form-radio-focus', + + + + + inputType: 'radio', + ariaRole: 'radio', + + formId: null, + + + getGroupValue: function() { + var selected = this.getManager().getChecked(this.name, this.getFormId()); + return selected ? selected.inputValue : null; + }, + + + onBoxClick: function(e) { + var me = this; + if (!me.disabled && !me.readOnly) { + this.setValue(true); + } + }, + + onRemoved: function(){ + this.callParent(arguments); + this.formId = null; + }, + + + setValue: function(v) { + var me = this, + active; + + if (Ext.isBoolean(v)) { + me.callParent(arguments); + } else { + active = me.getManager().getWithValue(me.name, v, me.getFormId()).getAt(0); + if (active) { + active.setValue(true); + } + } + return me; + }, + + + getSubmitValue: function() { + return this.checked ? this.inputValue : null; + }, + + getModelData: function() { + return this.getSubmitData(); + }, + + + onChange: function(newVal, oldVal) { + var me = this, + r, rLen, radio, radios; + + me.callParent(arguments); + + if (newVal) { + radios = me.getManager().getByName(me.name, me.getFormId()).items; + rLen = radios.length; + + for (r = 0; r < rLen; r++) { + radio = radios[r]; + + if (radio !== me) { + radio.setValue(false); + } + } + } + }, + + + getManager: function() { + return Ext.form.RadioManager; + } +}); + + +Ext.define('Ext.form.RadioGroup', { + extend: Ext.form.CheckboxGroup , + alias: 'widget.radiogroup', + + + + + + + + allowBlank : true, + + + blankText : 'You must select one item in this group', + + + + defaultType : 'radiofield', + + + groupCls : Ext.baseCSSPrefix + 'form-radio-group', + + getBoxes: function(query) { + return this.query('[isRadio]' + (query||'')); + }, + + checkChange: function() { + var value = this.getValue(), + key = Ext.Object.getKeys(value)[0]; + + + + if (Ext.isArray(value[key])) { + return; + } + this.callParent(arguments); + }, + + + setValue: function(value) { + var cbValue, first, formId, radios, + i, len, name; + + if (Ext.isObject(value)) { + for (name in value) { + if (value.hasOwnProperty(name)) { + cbValue = value[name]; + first = this.items.first(); + formId = first ? first.getFormId() : null; + radios = Ext.form.RadioManager.getWithValue(name, cbValue, formId).items; + len = radios.length; + + for (i = 0; i < len; ++i) { + radios[i].setValue(true); + } + } + } + } + return this; + } +}); + + +Ext.define('Ext.form.action.DirectLoad', { + extend: Ext.form.action.Load , + + alternateClassName: 'Ext.form.Action.DirectLoad', + alias: 'formaction.directload', + + type: 'directload', + + run: function() { + var me = this, + form = me.form, + api = form.api, + fn = api.load, + method, args; + + if (typeof fn !== 'function') { + + api.load = fn = Ext.direct.Manager.parseMethod(fn); + + } + + method = fn.directCfg.method; + args = method.getArgs(me.getParams(), form.paramOrder, form.paramsAsHash); + + args.push(me.onComplete, me); + fn.apply(window, args); + }, + + + + + processResponse: function(result) { + return (this.result = result); + }, + + onComplete: function(data, response) { + if (data) { + this.onSuccess(data); + } else { + this.onFailure(null); + } + } +}); + + + + +Ext.define('Ext.form.action.DirectSubmit', { + extend: Ext.form.action.Submit , + + alternateClassName: 'Ext.form.Action.DirectSubmit', + alias: 'formaction.directsubmit', + + type: 'directsubmit', + + doSubmit: function() { + var me = this, + form = me.form, + api = form.api, + fn = api.submit, + callback = Ext.Function.bind(me.onComplete, me), + formInfo = me.buildForm(), + options; + + if (typeof fn !== 'function') { + + api.submit = fn = Ext.direct.Manager.parseMethod(fn); + + } + + if (me.timeout || form.timeout) { + options = { + timeout: me.timeout * 1000 || form.timeout * 1000 + }; + } + + fn.call(window, formInfo.formEl, callback, me, options); + me.cleanup(formInfo); + }, + + + + + processResponse: function(result) { + return (this.result = result); + }, + + onComplete: function(data, response){ + if (data) { + this.onSuccess(data); + } else { + this.onFailure(null); + } + } +}); + + +Ext.define('Ext.form.action.StandardSubmit', { + extend: Ext.form.action.Submit , + alias: 'formaction.standardsubmit', + + + + + doSubmit: function() { + var formInfo = this.buildForm(); + formInfo.formEl.submit(); + this.cleanup(formInfo); + } + +}); + + +Ext.define('Ext.layout.component.field.Trigger', { + + + + alias: 'layout.triggerfield', + + extend: Ext.layout.component.field.Field , + + + + type: 'triggerfield', + + + borderWidths: {}, + + beginLayout: function(ownerContext) { + var me = this, + owner = me.owner, + flags; + + ownerContext.triggerWrap = ownerContext.getEl('triggerWrap'); + + me.callParent(arguments); + + + flags = owner.getTriggerStateFlags(); + if (flags != owner.lastTriggerStateFlags) { + owner.lastTriggerStateFlags = flags; + me.updateEditState(); + } + }, + + beginLayoutCycle: function(ownerContext){ + this.callParent(arguments); + + + if (ownerContext.widthModel.shrinkWrap && !this.owner.inputWidth) { + ownerContext.inputContext.el.setStyle('width', ''); + } + }, + + beginLayoutFixed: function (ownerContext, width, suffix) { + var me = this, + owner = ownerContext.target, + ieInputWidthAdjustment = me.ieInputWidthAdjustment || 0, + inputWidth = '100%', + triggerWrap = owner.triggerWrap; + + me.callParent(arguments); + + owner.inputCell.setStyle('width', '100%'); + if(ieInputWidthAdjustment) { + me.adjustIEInputPadding(ownerContext); + if(suffix === 'px') { + if (owner.inputWidth) { + inputWidth = owner.inputWidth - me.getExtraWidth(ownerContext); + } else { + inputWidth = width - ieInputWidthAdjustment - me.getExtraWidth(ownerContext); + } + inputWidth += 'px'; + } + } + owner.inputEl.setStyle('width', inputWidth); + inputWidth = owner.inputWidth; + if (inputWidth) { + triggerWrap.setStyle('width', inputWidth + (ieInputWidthAdjustment) + 'px'); + } else { + triggerWrap.setStyle('width', width + suffix); + } + triggerWrap.setStyle('table-layout', 'fixed'); + }, + + adjustIEInputPadding: function(ownerContext) { + + this.owner.inputCell.setStyle('padding-right', this.ieInputWidthAdjustment + 'px'); + }, + + + getExtraWidth: function(ownerContext) { + var me = this, + owner = me.owner, + borderWidths = me.borderWidths, + ui = owner.ui + owner.triggerEl.getCount(); + + if (!(ui in borderWidths)) { + borderWidths[ui] = ownerContext.triggerWrap.getBorderInfo().width + } + return borderWidths[ui] + owner.getTriggerWidth(); + }, + + beginLayoutShrinkWrap: function (ownerContext) { + var owner = ownerContext.target, + emptyString = '', + inputWidth = owner.inputWidth, + triggerWrap = owner.triggerWrap; + + this.callParent(arguments); + + if (inputWidth) { + triggerWrap.setStyle('width', inputWidth + 'px'); + inputWidth = (inputWidth - this.getExtraWidth(ownerContext)) + 'px'; + owner.inputEl.setStyle('width', inputWidth); + owner.inputCell.setStyle('width', inputWidth); + } else { + owner.inputCell.setStyle('width', emptyString); + owner.inputEl.setStyle('width', emptyString); + triggerWrap.setStyle('width', emptyString); + triggerWrap.setStyle('table-layout', 'auto'); + } + }, + + getTextWidth: function () { + var me = this, + owner = me.owner, + inputEl = owner.inputEl, + value; + + + value = (inputEl.dom.value || (owner.hasFocus ? '' : owner.emptyText) || '') + owner.growAppend; + return inputEl.getTextWidth(value); + }, + + publishOwnerWidth: function(ownerContext, width) { + var owner = this.owner; + this.callParent(arguments); + if (!owner.grow && !owner.inputWidth) { + width -= this.getExtraWidth(ownerContext); + if (owner.labelAlign != 'top') { + width -= owner.getLabelWidth(); + } + ownerContext.inputContext.setWidth(width); + } + }, + + publishInnerHeight: function(ownerContext, height) { + ownerContext.inputContext.setHeight(height - this.measureLabelErrorHeight(ownerContext)); + }, + + measureContentWidth: function (ownerContext) { + var me = this, + owner = me.owner, + width = me.callParent(arguments), + inputContext = ownerContext.inputContext, + calcWidth, max, min; + + if (owner.grow && !ownerContext.state.growHandled) { + calcWidth = me.getTextWidth() + ownerContext.inputContext.getFrameInfo().width; + + max = owner.growMax; + min = Math.min(max, width); + max = Math.max(owner.growMin, max, min); + + + calcWidth = Ext.Number.constrain(calcWidth, owner.growMin, max); + inputContext.setWidth(calcWidth); + ownerContext.state.growHandled = true; + + + inputContext.domBlock(me, 'width'); + width = NaN; + } else if (!owner.inputWidth) { + width -= me.getExtraWidth(ownerContext); + } + return width; + }, + + updateEditState: function() { + var me = this, + owner = me.owner, + inputEl = owner.inputEl, + noeditCls = Ext.baseCSSPrefix + 'trigger-noedit', + displayed, + readOnly; + + if (me.owner.readOnly) { + inputEl.addCls(noeditCls); + readOnly = true; + displayed = false; + } else { + if (me.owner.editable) { + inputEl.removeCls(noeditCls); + readOnly = false; + } else { + inputEl.addCls(noeditCls); + readOnly = true; + } + displayed = !me.owner.hideTrigger; + } + + owner.triggerCell.setDisplayed(displayed); + inputEl.dom.readOnly = readOnly; + } +}); + + +Ext.define('Ext.form.field.Trigger', { + extend: Ext.form.field.Text , + alias: ['widget.triggerfield', 'widget.trigger'], + + alternateClassName: ['Ext.form.TriggerField', 'Ext.form.TwinTriggerField', 'Ext.form.Trigger'], + + childEls: [ + + { name: 'triggerCell', select: '.' + Ext.baseCSSPrefix + 'trigger-cell' }, + { name: 'triggerEl', select: '.' + Ext.baseCSSPrefix + 'form-trigger' }, + + + 'triggerWrap', + + + 'inputCell' + ], + + + + + triggerBaseCls: Ext.baseCSSPrefix + 'form-trigger', + + + triggerWrapCls: Ext.baseCSSPrefix + 'form-trigger-wrap', + + + triggerNoEditCls: Ext.baseCSSPrefix + 'trigger-noedit', + + + hideTrigger: false, + + + editable: true, + + + readOnly: false, + + + + + repeatTriggerClick: false, + + + + autoSize: Ext.emptyFn, + + monitorTab: true, + + mimicing: false, + + triggerIndexRe: /trigger-index-(\d+)/, + + extraTriggerCls: '', + + componentLayout: 'triggerfield', + + initComponent: function() { + this.wrapFocusCls = this.triggerWrapCls + '-focus'; + this.callParent(arguments); + }, + + getSubTplMarkup: function(values) { + var me = this, + childElCls = values.childElCls, + field = me.callParent(arguments); + + return '' + + '' + + me.getTriggerMarkup() + + '
' + field + '
'; + }, + + getSubTplData: function(){ + var me = this, + data = me.callParent(), + readOnly = me.readOnly === true, + editable = me.editable !== false; + + return Ext.apply(data, { + editableCls: (readOnly || !editable) ? ' ' + me.triggerNoEditCls : '', + readOnly: !editable || readOnly + }); + }, + + getLabelableRenderData: function() { + var me = this, + triggerWrapCls = me.triggerWrapCls, + result = me.callParent(arguments); + + return Ext.applyIf(result, { + triggerWrapCls: triggerWrapCls, + triggerMarkup: me.getTriggerMarkup() + }); + }, + + getTriggerMarkup: function() { + var me = this, + i = 0, + hideTrigger = (me.readOnly || me.hideTrigger), + triggerCls, + triggerBaseCls = me.triggerBaseCls, + triggerConfigs = [], + unselectableCls = Ext.dom.Element.unselectableCls, + style = 'width:' + me.triggerWidth + 'px;' + (hideTrigger ? 'display:none;' : ''), + cls = me.extraTriggerCls + ' ' + Ext.baseCSSPrefix + 'trigger-cell ' + unselectableCls; + + + + + + if (!me.trigger1Cls) { + me.trigger1Cls = me.triggerCls; + } + + + for (i = 0; (triggerCls = me['trigger' + (i + 1) + 'Cls']) || i < 1; i++) { + triggerConfigs.push({ + tag: 'td', + valign: 'top', + cls: cls, + style: style, + cn: { + cls: [Ext.baseCSSPrefix + 'trigger-index-' + i, triggerBaseCls, triggerCls].join(' '), + role: 'button' + } + }); + } + triggerConfigs[0].cn.cls += ' ' + triggerBaseCls + '-first'; + + return Ext.DomHelper.markup(triggerConfigs); + }, + + disableCheck: function() { + return !this.disabled; + }, + + + beforeRender: function() { + var me = this, + triggerBaseCls = me.triggerBaseCls, + tempEl; + + + if (!me.triggerWidth) { + tempEl = Ext.getBody().createChild({ + style: 'position: absolute;', + cls: Ext.baseCSSPrefix + 'form-trigger' + }); + Ext.form.field.Trigger.prototype.triggerWidth = tempEl.getWidth(); + tempEl.remove(); + } + + me.callParent(); + + if (triggerBaseCls != Ext.baseCSSPrefix + 'form-trigger') { + + + me.addChildEls({ name: 'triggerEl', select: '.' + triggerBaseCls }); + } + + + me.lastTriggerStateFlags = me.getTriggerStateFlags(); + }, + + onRender: function() { + var me = this; + + me.callParent(arguments); + + me.doc = Ext.getDoc(); + me.initTrigger(); + }, + + + getTriggerWidth: function() { + var me = this, + totalTriggerWidth = 0; + + if (me.triggerWrap && !me.hideTrigger && !me.readOnly) { + totalTriggerWidth = me.triggerEl.getCount() * me.triggerWidth; + } + return totalTriggerWidth; + }, + + setHideTrigger: function(hideTrigger) { + if (hideTrigger != this.hideTrigger) { + this.hideTrigger = hideTrigger; + this.updateLayout(); + } + }, + + + setEditable: function(editable) { + if (editable != this.editable) { + this.editable = editable; + this.updateLayout(); + } + }, + + + setReadOnly: function(readOnly) { + var me = this, + old = me.readOnly; + + me.callParent(arguments); + if (readOnly != old) { + me.updateLayout(); + } + }, + + + initTrigger: function() { + var me = this, + triggerWrap = me.triggerWrap, + triggerEl = me.triggerEl, + disableCheck = me.disableCheck, + els, eLen, el, e, idx; + + if (me.repeatTriggerClick) { + me.triggerRepeater = new Ext.util.ClickRepeater(triggerWrap, { + preventDefault: true, + handler: me.onTriggerWrapClick, + listeners: { + mouseup: me.onTriggerWrapMouseup, + scope: me + }, + scope: me + }); + } else { + me.mon(triggerWrap, { + click: me.onTriggerWrapClick, + mouseup: me.onTriggerWrapMouseup, + scope: me + }); + } + + triggerEl.setVisibilityMode(Ext.Element.DISPLAY); + triggerEl.addClsOnOver(me.triggerBaseCls + '-over', disableCheck, me); + + els = triggerEl.elements; + eLen = els.length; + + for (e = 0; e < eLen; e++) { + el = els[e]; + idx = e+1; + el.addClsOnOver(me['trigger' + (idx) + 'Cls'] + '-over', disableCheck, me); + el.addClsOnClick(me['trigger' + (idx) + 'Cls'] + '-click', disableCheck, me); + } + + triggerEl.addClsOnClick(me.triggerBaseCls + '-click', disableCheck, me); + + }, + + + onDestroy: function() { + var me = this; + Ext.destroyMembers(me, 'triggerRepeater', 'triggerWrap', 'triggerEl'); + delete me.doc; + me.callParent(); + }, + + + onFocus: function() { + var me = this; + me.callParent(arguments); + if (!me.mimicing) { + me.bodyEl.addCls(me.wrapFocusCls); + me.mimicing = true; + me.mon(me.doc, 'mousedown', me.mimicBlur, me, { + delay: 10 + }); + if (me.monitorTab) { + me.on('specialkey', me.checkTab, me); + } + } + }, + + + checkTab: function(me, e) { + if (!this.ignoreMonitorTab && e.getKey() == e.TAB) { + this.triggerBlur(); + } + }, + + + getTriggerStateFlags: function () { + var me = this, + state = 0; + + if (me.readOnly) { + state += 1; + } + if (me.editable) { + state += 2; + } + if (me.hideTrigger) { + state += 4; + } + return state; + }, + + + onBlur: Ext.emptyFn, + + + mimicBlur: function(e) { + if (!this.isDestroyed && !this.bodyEl.contains(e.target) && this.validateBlur(e)) { + this.triggerBlur(e); + } + }, + + + triggerBlur: function(e) { + var me = this; + me.mimicing = false; + me.mun(me.doc, 'mousedown', me.mimicBlur, me); + if (me.monitorTab && me.inputEl) { + me.un('specialkey', me.checkTab, me); + } + Ext.form.field.Trigger.superclass.onBlur.call(me, e); + if (me.bodyEl) { + me.bodyEl.removeCls(me.wrapFocusCls); + } + }, + + + + validateBlur: function(e) { + return true; + }, + + + + + onTriggerWrapClick: function() { + var me = this, + targetEl, match, + triggerClickMethod, + event; + + event = arguments[me.triggerRepeater ? 1 : 0]; + if (event && !me.readOnly && !me.disabled) { + targetEl = event.getTarget('.' + me.triggerBaseCls, null); + match = targetEl && targetEl.className.match(me.triggerIndexRe); + + if (match) { + triggerClickMethod = me['onTrigger' + (parseInt(match[1], 10) + 1) + 'Click'] || me.onTriggerClick; + if (triggerClickMethod) { + triggerClickMethod.call(me, event); + } + } + } + }, + + + + + onTriggerWrapMouseup: Ext.emptyFn, + + + onTriggerClick: Ext.emptyFn + + + + +}); + + +Ext.define('Ext.form.field.Picker', { + extend: Ext.form.field.Trigger , + alias: 'widget.pickerfield', + alternateClassName: 'Ext.form.Picker', + + + + matchFieldWidth: true, + + + pickerAlign: 'tl-bl?', + + + + + openCls: Ext.baseCSSPrefix + 'pickerfield-open', + + + + + editable: true, + + + initComponent: function() { + this.callParent(); + + + this.addEvents( + + 'expand', + + 'collapse', + + 'select' + ); + }, + + + initEvents: function() { + var me = this; + me.callParent(); + + + me.keyNav = new Ext.util.KeyNav(me.inputEl, { + down: me.onDownArrow, + esc: { + handler: me.onEsc, + scope: me, + defaultEventAction: false + }, + scope: me, + forceKeyDown: true + }); + + + if (!me.editable) { + me.mon(me.inputEl, 'click', me.onTriggerClick, me); + } + + + if (Ext.isGecko) { + me.inputEl.dom.setAttribute('autocomplete', 'off'); + } + }, + + + onEsc: function(e) { + if (Ext.isIE) { + + + + + e.preventDefault(); + } + + if (this.isExpanded) { + this.collapse(); + e.stopEvent(); + } + }, + + onDownArrow: function(e) { + if (!this.isExpanded) { + + + this.onTriggerClick(); + } + }, + + + expand: function() { + var me = this, + bodyEl, picker, collapseIf; + + if (me.rendered && !me.isExpanded && !me.isDestroyed) { + me.expanding = true; + bodyEl = me.bodyEl; + picker = me.getPicker(); + collapseIf = me.collapseIf; + + + picker.show(); + me.isExpanded = true; + me.alignPicker(); + bodyEl.addCls(me.openCls); + + + me.mon(Ext.getDoc(), { + mousewheel: collapseIf, + mousedown: collapseIf, + scope: me + }); + Ext.EventManager.onWindowResize(me.alignPicker, me); + me.fireEvent('expand', me); + me.onExpand(); + delete me.expanding; + } + }, + + onExpand: Ext.emptyFn, + + + alignPicker: function() { + var me = this, + picker = me.getPicker(); + + if (me.isExpanded) { + if (me.matchFieldWidth) { + + picker.setWidth(me.bodyEl.getWidth()); + } + if (picker.isFloating()) { + me.doAlign(); + } + } + }, + + + doAlign: function(){ + var me = this, + picker = me.picker, + aboveSfx = '-above', + isAbove; + + + + me.picker.alignTo(me.triggerWrap, me.pickerAlign, me.pickerOffset); + + + isAbove = picker.el.getY() < me.inputEl.getY(); + me.bodyEl[isAbove ? 'addCls' : 'removeCls'](me.openCls + aboveSfx); + picker[isAbove ? 'addCls' : 'removeCls'](picker.baseCls + aboveSfx); + }, + + + collapse: function() { + if (this.isExpanded && !this.isDestroyed) { + var me = this, + openCls = me.openCls, + picker = me.picker, + doc = Ext.getDoc(), + collapseIf = me.collapseIf, + aboveSfx = '-above'; + + + picker.hide(); + me.isExpanded = false; + + + me.bodyEl.removeCls([openCls, openCls + aboveSfx]); + picker.el.removeCls(picker.baseCls + aboveSfx); + + + doc.un('mousewheel', collapseIf, me); + doc.un('mousedown', collapseIf, me); + Ext.EventManager.removeResizeListener(me.alignPicker, me); + me.fireEvent('collapse', me); + me.onCollapse(); + } + }, + + onCollapse: Ext.emptyFn, + + + + collapseIf: function(e) { + var me = this; + + if (!me.isDestroyed && !e.within(me.bodyEl, false, true) && !e.within(me.picker.el, false, true) && !me.isEventWithinPickerLoadMask(e)) { + me.collapse(); + } + }, + + + getPicker: function() { + var me = this; + return me.picker || (me.picker = me.createPicker()); + }, + + + createPicker: Ext.emptyFn, + + + onTriggerClick: function() { + var me = this; + if (!me.readOnly && !me.disabled) { + if (me.isExpanded) { + me.collapse(); + } else { + me.expand(); + } + me.inputEl.focus(); + } + }, + + triggerBlur: function() { + var picker = this.picker; + + this.callParent(arguments); + if (picker && picker.isVisible()) { + picker.hide(); + } + }, + + mimicBlur: function(e) { + var me = this, + picker = me.picker; + + if (!picker || !e.within(picker.el, false, true) && !me.isEventWithinPickerLoadMask(e)) { + me.callParent(arguments); + } + }, + + onDestroy : function(){ + var me = this, + picker = me.picker; + + Ext.EventManager.removeResizeListener(me.alignPicker, me); + Ext.destroy(me.keyNav); + if (picker) { + delete picker.pickerField; + picker.destroy(); + } + me.callParent(); + }, + + + isEventWithinPickerLoadMask: function(e) { + var loadMask = this.picker.loadMask; + + return loadMask ? e.within(loadMask.maskEl, false, true) || e.within(loadMask.el, false, true) : false; + } + +}); + + + +Ext.define('Ext.selection.Model', { + extend: Ext.util.Observable , + alternateClassName: 'Ext.AbstractSelectionModel', + + mixins: { + bindable: Ext.util.Bindable + }, + + + + + + allowDeselect: undefined, + + + toggleOnClick: true, + + + selected: null, + + + pruneRemoved: true, + + suspendChange: 0, + + constructor: function(cfg) { + var me = this; + + cfg = cfg || {}; + Ext.apply(me, cfg); + + me.addEvents( + + 'selectionchange', + + 'focuschange' + ); + + me.modes = { + SINGLE: true, + SIMPLE: true, + MULTI: true + }; + + + me.setSelectionMode(cfg.mode || me.mode); + + + me.selected = new Ext.util.MixedCollection(null, me.getSelectionId); + + me.callParent(arguments); + }, + + + bindStore: function(store, initial){ + var me = this; + me.mixins.bindable.bindStore.apply(me, arguments); + if(me.store && !initial) { + me.refresh(); + } + }, + + getStoreListeners: function() { + var me = this; + return { + add: me.onStoreAdd, + clear: me.onStoreClear, + bulkremove: me.onStoreRemove, + update: me.onStoreUpdate, + load: me.onStoreLoad, + idchanged: me.onModelIdChanged, + refresh: me.onStoreRefresh + }; + }, + + suspendChanges: function(){ + ++this.suspendChange; + }, + + resumeChanges: function(){ + if (this.suspendChange) { + --this.suspendChange; + } + }, + + + selectAll: function(suppressEvent) { + var me = this, + selections = me.store.getRange(), + i = 0, + len = selections.length, + start = me.getSelection().length; + + me.suspendChanges(); + for (; i < len; i++) { + me.doSelect(selections[i], true, suppressEvent); + } + me.resumeChanges(); + + if (!suppressEvent) { + me.maybeFireSelectionChange(me.getSelection().length !== start); + } + }, + + + deselectAll: function(suppressEvent) { + var me = this, + selections = me.getSelection(), + selIndexes = {}, + store = me.store, + start = selections.length, + i, l, rec; + + + + + + + + for (i = 0, l = selections.length; i < l; i++) { + rec = selections[i]; + + selIndexes[rec.internalId] = store.indexOf(rec); + } + + + + selections = Ext.Array.sort(selections, function(r1, r2){ + var idx1 = selIndexes[r1.internalId], + idx2 = selIndexes[r2.internalId]; + + + return idx1 < idx2 ? -1 : 1; + }); + + me.suspendChanges(); + me.doDeselect(selections, suppressEvent); + me.resumeChanges(); + + if (!suppressEvent) { + me.maybeFireSelectionChange(me.getSelection().length !== start); + } + }, + + + + + selectWithEvent: function(record, e) { + var me = this, + isSelected = me.isSelected(record), + shift = e.shiftKey, + ctrl = e.ctrlKey, + start = me.selectionStart, + selected = me.getSelection(), + len = selected.length, + allowDeselect = me.allowDeselect, + toDeselect, i, item; + + switch (me.selectionMode) { + case 'MULTI': + if (shift && start) { + me.selectRange(start, record, ctrl); + } else if (ctrl && isSelected) { + me.doDeselect(record, false); + } else if (ctrl) { + me.doSelect(record, true, false); + } else if (isSelected && !shift && !ctrl && len > 1) { + toDeselect = []; + + for (i = 0; i < len; ++i) { + item = selected[i]; + if (item !== record) { + toDeselect.push(item); + } + } + + me.doDeselect(toDeselect); + } else if (!isSelected) { + me.doSelect(record, false); + } + break; + case 'SIMPLE': + if (isSelected) { + me.doDeselect(record); + } else { + me.doSelect(record, true); + } + break; + case 'SINGLE': + if (allowDeselect && !ctrl) { + allowDeselect = me.toggleOnClick; + } + if (allowDeselect && isSelected) { + me.doDeselect(record); + } else { + me.doSelect(record, false); + } + break; + } + + + + + + if (!shift) { + if (me.isSelected(record)) { + me.selectionStart = record; + } else { + me.selectionStart = null; + } + } + }, + + + + + afterKeyNavigate: function(e, record) { + var me = this, + recIdx, + fromIdx, + isSelected = me.isSelected(record), + from = (me.selectionStart && me.isSelected(me.lastFocused)) ? me.selectionStart : (me.selectionStart = me.lastFocused), + key = e.getCharCode(), + isSpace = key === e.SPACE, + direction = key === e.UP || key === e.PAGE_UP ? 'up' : (key === e.DOWN || key === e.DOWN ? 'down' : null); + + switch (me.selectionMode) { + case 'MULTI': + + if (isSpace) { + + if (e.shiftKey) { + me.selectRange(from, record, e.ctrlKey); + } else { + + + if (isSelected) { + me.doDeselect(record, e.ctrlKey); + + + + me.setLastFocused(null); + me.setLastFocused(record); + } + + else { + me.doSelect(record, e.ctrlKey); + } + } + } + + + else if (e.shiftKey && from) { + + + fromIdx = me.store.indexOf(from); + recIdx = me.store.indexOf(record); + + + if (direction === 'up' && fromIdx <= recIdx) { + me.deselectRange(me.lastFocused, recIdx + 1); + } + else if (direction === 'down' && fromIdx >= recIdx) { + me.deselectRange(me.lastFocused, recIdx - 1); + } + + + else if (from !== record) { + me.selectRange(from, record, e.ctrlKey); + } + me.lastSelected = record; + me.setLastFocused(record); + } + + + else if (e.ctrlKey && isSelected) { + me.setLastFocused(record); + } + + + else if (e.ctrlKey) { + me.setLastFocused(record); + } + + + else { + me.doSelect(record, false); + } + break; + case 'SIMPLE': + if (isSelected) { + me.doDeselect(record); + } else { + me.doSelect(record, true); + } + break; + case 'SINGLE': + + if (isSpace) { + if (isSelected) { + me.doDeselect(record); + me.setLastFocused(record); + } else { + me.doSelect(record); + } + } + + + else if (e.ctrlKey) { + me.setLastFocused(record); + } + + + else if (me.allowDeselect && isSelected) { + me.doDeselect(record); + } + + + else { + me.doSelect(record, false); + } + break; + } + + + + + + if (!e.shiftKey) { + if (me.isSelected(record)) { + me.selectionStart = record; + } + } + }, + + + selectRange : function(startRow, endRow, keepExisting) { + var me = this, + store = me.store, + selected = me.selected.items, + result, i, len, toSelect, toDeselect, idx, rec; + + if (me.isLocked()){ + return; + } + + result = me.normalizeRowRange(startRow, endRow); + startRow = result[0]; + endRow = result[1]; + + toSelect = []; + for (i = startRow; i <= endRow; i++){ + if (!me.isSelected(store.getAt(i))) { + toSelect.push(store.getAt(i)); + } + } + + if (!keepExisting) { + + toDeselect = []; + me.suspendChanges(); + + for (i = 0, len = selected.length; i < len; ++i) { + rec = selected[i]; + idx = store.indexOf(rec); + if (idx < startRow || idx > endRow) { + toDeselect.push(rec) + } + } + + for (i = 0, len = toDeselect.length; i < len; ++i) { + me.doDeselect(toDeselect[i]); + } + me.resumeChanges(); + } + + me.doMultiSelect(toSelect, true); + }, + + + deselectRange : function(startRow, endRow) { + var me = this, + store = me.store, + result, i, toDeselect, record; + + if (me.isLocked()){ + return; + } + + result = me.normalizeRowRange(startRow, endRow); + startRow = result[0]; + endRow = result[1]; + + toDeselect = []; + for (i = startRow; i <= endRow; i++) { + record = store.getAt(i); + if (me.isSelected(record)) { + toDeselect.push(record); + } + } + me.doDeselect(toDeselect); + }, + + normalizeRowRange: function(startRow, endRow) { + var store = this.store, + tmp; + + if (!Ext.isNumber(startRow)) { + startRow = store.indexOf(startRow); + } + startRow = Math.max(0, startRow); + + if (!Ext.isNumber(endRow)) { + endRow = store.indexOf(endRow); + } + endRow = Math.min(endRow, store.getCount() - 1); + + + if (startRow > endRow){ + tmp = endRow; + endRow = startRow; + startRow = tmp; + } + + return [startRow, endRow]; + }, + + onModelIdChanged: function(store, model, oldId, newId, oldInternalId) { + this.selected.updateKey(oldInternalId, newId); + }, + + + select: function(records, keepExisting, suppressEvent) { + + if (Ext.isDefined(records)) { + this.doSelect(records, keepExisting, suppressEvent); + } + }, + + + deselect: function(records, suppressEvent) { + this.doDeselect(records, suppressEvent); + }, + + doSelect: function(records, keepExisting, suppressEvent) { + var me = this, + record; + + if (me.locked || !me.store) { + return; + } + if (typeof records === "number") { + record = me.store.getAt(records); + + if (!record) { + return; + } + records = [record]; + } + if (me.selectionMode == "SINGLE" && records) { + record = records.length ? records[0] : records; + me.doSingleSelect(record, suppressEvent); + } else { + me.doMultiSelect(records, keepExisting, suppressEvent); + } + }, + + doMultiSelect: function(records, keepExisting, suppressEvent) { + var me = this, + selected = me.selected, + change = false, + result, i, len, record, commit; + + if (me.locked) { + return; + } + + records = !Ext.isArray(records) ? [records] : records; + len = records.length; + if (!keepExisting && selected.getCount() > 0) { + result = me.deselectDuringSelect(records, selected.getRange(), suppressEvent); + if (result[0]) { + + + me.maybeFireSelectionChange(result[1] > 0 && !suppressEvent); + return; + } + } + + commit = function() { + selected.add(record); + change = true; + }; + + for (i = 0; i < len; i++) { + record = records[i]; + if (me.isSelected(record)) { + continue; + } + me.lastSelected = record; + + me.onSelectChange(record, true, suppressEvent, commit); + } + if (!me.preventFocus) { + me.setLastFocused(record, suppressEvent); + } + + me.maybeFireSelectionChange(change && !suppressEvent); + }, + + deselectDuringSelect: function(toSelect, selected, suppressEvent) { + var me = this, + len = selected.length, + changed = 0, + failed = false, + item, i; + + + me.suspendChanges(); + for (i = 0; i < len; ++i) { + item = selected[i]; + if (!Ext.Array.contains(toSelect, item)) { + if (me.doDeselect(item, suppressEvent)) { + ++changed; + } else { + failed = true; + } + } + } + me.resumeChanges(); + + return [failed, changed]; + }, + + + doDeselect: function(records, suppressEvent) { + var me = this, + selected = me.selected, + i = 0, + len, record, + attempted = 0, + accepted = 0, + commit; + + if (me.locked || !me.store) { + return false; + } + + if (typeof records === "number") { + + record = me.store.getAt(records); + if (!record) { + return false; + } + records = [record]; + } else if (!Ext.isArray(records)) { + records = [records]; + } + + commit = function() { + ++accepted; + selected.remove(record); + }; + + len = records.length; + + me.suspendChanges(); + for (; i < len; i++) { + record = records[i]; + if (me.isSelected(record)) { + if (me.lastSelected === record) { + me.lastSelected = selected.last(); + if (me.lastFocused === record) { + me.setLastFocused(null); + } + } + ++attempted; + me.onSelectChange(record, false, suppressEvent, commit); + } + } + me.resumeChanges(); + + + me.maybeFireSelectionChange(accepted > 0 && !suppressEvent); + return accepted === attempted; + }, + + doSingleSelect: function(record, suppressEvent) { + var me = this, + changed = false, + selected = me.selected, + commit; + + if (me.locked) { + return; + } + + + if (me.isSelected(record)) { + return; + } + + if (selected.getCount()) { + me.suspendChanges(); + if (!me.doDeselect(me.lastSelected, suppressEvent)) { + me.resumeChanges(); + return; + } + me.resumeChanges(); + } + + commit = function() { + selected.add(record); + me.lastSelected = record; + changed = true; + }; + + me.onSelectChange(record, true, suppressEvent, commit); + + if (changed) { + if (!suppressEvent && !me.preventFocus) { + me.setLastFocused(record); + } + me.maybeFireSelectionChange(!suppressEvent); + } + }, + + + setLastFocused: function(record, supressFocus) { + var me = this, + recordBeforeLast = me.lastFocused; + + + if (record !== recordBeforeLast) { + me.lastFocused = record; + me.onLastFocusChanged(recordBeforeLast, record, supressFocus); + } + }, + + + isFocused: function(record) { + return record === this.getLastFocused(); + }, + + + + maybeFireSelectionChange: function(fireEvent) { + var me = this; + if (fireEvent && !me.suspendChange) { + me.fireEvent('selectionchange', me, me.getSelection()); + } + }, + + + getLastSelected: function() { + return this.lastSelected; + }, + + getLastFocused: function() { + return this.lastFocused; + }, + + + getSelection: function() { + return this.selected.getRange(); + }, + + + getSelectionMode: function() { + return this.selectionMode; + }, + + + setSelectionMode: function(selMode) { + selMode = selMode ? selMode.toUpperCase() : 'SINGLE'; + + + this.selectionMode = this.modes[selMode] ? selMode : 'SINGLE'; + }, + + + isLocked: function() { + return this.locked; + }, + + + setLocked: function(locked) { + this.locked = !!locked; + }, + + + isRangeSelected: function(startRow, endRow) { + var me = this, + store = me.store, + i, result; + + result = me.normalizeRowRange(startRow, endRow); + startRow = result[0]; + endRow = result[1]; + + + for (i = startRow; i <= endRow; i++) { + if (!me.isSelected(store.getAt(i))) { + return false; + } + } + return true; + }, + + + isSelected: function(record) { + record = Ext.isNumber(record) ? this.store.getAt(record) : record; + return this.selected.contains(record); + }, + + + hasSelection: function() { + return this.selected.getCount() > 0; + }, + + getSelectionId: function(record){ + return record.internalId; + }, + + pruneIf: function() { + var me = this, + selected = me.selected, + toRemove = [], + len = selected.length, + i, item; + + if (me.pruneRemoved) { + for (i = 0; i < len; i++) { + item = selected.getAt(i); + if (!this.storeHasSelected(item)) { + toRemove.push(item); + } + } + if (toRemove.length) { + for (i = 0, len = toRemove.length; i < len; i++) { + selected.remove(toRemove[i]); + } + me.maybeFireSelectionChange(true); + } + } + }, + + + + + storeHasSelected: function(record) { + var store = this.store, + records, + len, id, i; + + if (record.hasId() && store.getById(record)) { + return true; + } else { + records = store.data.items; + len = records.length; + id = record.internalId; + + for (i = 0; i < len; ++i) { + if (id === records[i].internalId) { + return true; + } + } + } + return false; + }, + + refresh: function() { + var me = this, + store = me.store, + rec, + toBeSelected = [], + toBeReAdded = [], + oldSelections = me.getSelection(), + len = oldSelections.length, + selection, + change, + i = 0, + lastFocused = me.getLastFocused(); + + + if (!store) { + return; + } + + + + for (; i < len; i++) { + selection = oldSelections[i]; + if (store.indexOf(selection) !== -1) { + toBeSelected.push(selection); + } + + + else if (!me.pruneRemoved) { + + rec = store.getById(selection.getId()); + if (rec) { + toBeSelected.push(rec); + } + + else { + toBeReAdded.push(selection) + } + } + + + if (me.mode === 'SINGLE' && toBeReAdded.length) { + break; + } + } + + + + if (me.selected.getCount() != (toBeSelected.length + toBeReAdded.length)) { + change = true; + } + + me.clearSelections(); + + if (store.indexOf(lastFocused) !== -1) { + + me.setLastFocused(lastFocused, true); + } + + if (toBeSelected.length) { + + me.doSelect(toBeSelected, false, true); + } + + + if (toBeReAdded.length) { + me.selected.addAll(toBeReAdded); + + + if (!me.lastSelected) { + me.lastSelected = toBeReAdded[toBeReAdded.length - 1]; + } + } + + me.maybeFireSelectionChange(change); + }, + + + clearSelections: function() { + + this.selected.clear(); + this.lastSelected = null; + this.setLastFocused(null); + }, + + + onStoreAdd: Ext.emptyFn, + + + + onStoreClear: function() { + if (this.selected.getCount() > 0) { + this.clearSelections(); + this.maybeFireSelectionChange(true); + } + }, + + + + + onStoreRemove: function(store, records, indexes, isMove) { + var me = this; + + + if (me.selectionStart && Ext.Array.contains(records, me.selectionStart)) { + me.selectionStart = null; + } + + if (isMove || me.locked || !me.pruneRemoved) { + return; + } + me.deselectDeletedRecords(records); + }, + + + + deselectDeletedRecords: function(records) { + var me = this, + selected = me.selected, + i, length = records.length, + removed = 0, + record; + + + for (i = 0; i < length; i++) { + record = records[i]; + if (selected.remove(record)) { + if (me.lastSelected == record) { + me.lastSelected = null; + } + if (me.getLastFocused() == record) { + me.setLastFocused(null); + } + ++removed; + } + } + if (removed) { + me.maybeFireSelectionChange(true); + } + }, + + + getCount: function() { + return this.selected.getCount(); + }, + + + onUpdate: Ext.emptyFn, + + + destroy: function(){ + this.clearListeners(); + }, + + + onStoreUpdate: Ext.emptyFn, + + onStoreRefresh: Ext.emptyFn, + + + onStoreLoad: Ext.emptyFn, + + + onSelectChange: function(record, isSelected, suppressEvent, commitFn) { + var me = this, + eventName = isSelected ? 'select' : 'deselect'; + + if ((suppressEvent || me.fireEvent('before' + eventName, me, record)) !== false && + commitFn() !== false) { + + if (!suppressEvent) { + me.fireEvent(eventName, me, record); + } + } + }, + + + onLastFocusChanged: function(oldFocused, newFocused) { + this.fireEvent('focuschange', this, oldFocused, newFocused); + }, + + + onEditorKey: Ext.emptyFn, + + + beforeViewRender: function(view) { + this.views = this.views || []; + this.views.push(view); + this.bindStore(view.getStore(), true); + }, + + + bindComponent: Ext.emptyFn +}); + + +Ext.define('Ext.selection.DataViewModel', { + extend: Ext.selection.Model , + + + + deselectOnContainerClick: true, + + + enableKeyNav: true, + + constructor: function(cfg){ + this.addEvents( + + 'beforedeselect', + + + 'beforeselect', + + + 'deselect', + + + 'select' + ); + this.callParent(arguments); + }, + + bindComponent: function(view) { + var me = this, + eventListeners = { + refresh: me.refresh, + scope: me + }; + + me.view = view; + me.bindStore(view.getStore()); + + eventListeners[view.triggerEvent] = me.onItemClick; + eventListeners[view.triggerCtEvent] = me.onContainerClick; + + view.on(eventListeners); + + if (me.enableKeyNav) { + me.initKeyNav(view); + } + }, + + onUpdate: function(record){ + var view = this.view; + if (view && this.isSelected(record)) { + view.onItemSelect(record); + } + }, + + onItemClick: function(view, record, item, index, e) { + this.selectWithEvent(record, e); + }, + + onContainerClick: function() { + if (this.deselectOnContainerClick) { + this.deselectAll(); + } + }, + + initKeyNav: function(view) { + var me = this; + + if (!view.rendered) { + view.on({ + render: Ext.Function.bind(me.initKeyNav, me, [view]), + single: true + }); + return; + } + + view.el.set({ + tabIndex: -1 + }); + me.keyNav = new Ext.util.KeyNav({ + target: view.el, + ignoreInputFields: true, + down: Ext.pass(me.onNavKey, [1], me), + right: Ext.pass(me.onNavKey, [1], me), + left: Ext.pass(me.onNavKey, [-1], me), + up: Ext.pass(me.onNavKey, [-1], me), + scope: me + }); + }, + + onNavKey: function(step) { + step = step || 1; + var me = this, + view = me.view, + selected = me.getSelection()[0], + numRecords = me.view.store.getCount(), + idx; + + if (selected) { + idx = view.indexOf(view.getNode(selected)) + step; + } else { + idx = 0; + } + + if (idx < 0) { + idx = numRecords - 1; + } else if (idx >= numRecords) { + idx = 0; + } + + me.select(idx); + }, + + + onSelectChange: function(record, isSelected, suppressEvent, commitFn) { + var me = this, + view = me.view, + eventName = isSelected ? 'select' : 'deselect'; + + if ((suppressEvent || me.fireEvent('before' + eventName, me, record)) !== false && + commitFn() !== false) { + + if (view) { + if (isSelected) { + view.onItemSelect(record); + } else { + view.onItemDeselect(record); + } + } + + if (!suppressEvent) { + me.fireEvent(eventName, me, record); + } + } + }, + + onLastFocusChanged: function(oldFocus, newFocus, suppressFocus){ + var view = this.view; + if (view && !suppressFocus && newFocus) { + view.focusNode(newFocus); + this.fireEvent('focuschange', this, oldFocus, newFocus); + } + }, + + destroy: function(){ + Ext.destroy(this.keyNav); + this.callParent(); + } +}); + + +Ext.define('Ext.view.AbstractView', { + extend: Ext.Component , + + + + + + + + mixins: { + bindable: Ext.util.Bindable + }, + + inheritableStatics: { + getRecord: function(node) { + return this.getBoundView(node).getRecord(node); + }, + + getBoundView: function(node) { + return Ext.getCmp(node.boundView); + } + }, + + + + + + deferInitialRefresh: true, + + + + + itemCls: Ext.baseCSSPrefix + 'dataview-item', + + + + + + + + loadingText: 'Loading...', + + + + loadMask: true, + + + + + loadingUseMsg: true, + + + + + + selectedItemCls: Ext.baseCSSPrefix + 'item-selected', + + + + emptyText: "", + + + + deferEmptyText: true, + + + trackOver: false, + + + blockRefresh: false, + + + + + preserveScrollOnRefresh: false, + + + last: false, + + triggerEvent: 'itemclick', + triggerCtEvent: 'containerclick', + + addCmpEvents: function() { + + }, + + + initComponent : function(){ + var me = this, + isDef = Ext.isDefined, + itemTpl = me.itemTpl, + memberFn = {}; + + if (itemTpl) { + if (Ext.isArray(itemTpl)) { + + itemTpl = itemTpl.join(''); + } else if (Ext.isObject(itemTpl)) { + + memberFn = Ext.apply(memberFn, itemTpl.initialConfig); + itemTpl = itemTpl.html; + } + + if (!me.itemSelector) { + me.itemSelector = '.' + me.itemCls; + } + + itemTpl = Ext.String.format('
{1}
', me.itemCls, itemTpl); + me.tpl = new Ext.XTemplate(itemTpl, memberFn); + } + + + me.callParent(); + me.tpl = me.getTpl('tpl'); + + + if (me.overItemCls) { + me.trackOver = true; + } + + me.addEvents( + + 'beforerefresh', + + 'refresh', + + 'viewready', + + 'itemupdate', + + 'itemadd', + + 'itemremove' + ); + + me.addCmpEvents(); + + + me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store'); + + + if (!me.dataSource) { + me.dataSource = me.store; + } + + + me.bindStore(me.dataSource, true, 'dataSource'); + if (!me.all) { + me.all = new Ext.CompositeElementLite(); + } + + + me.scrollState = { + top: 0, + left: 0 + }; + me.on({ + scroll: me.onViewScroll, + element: 'el', + scope: me + }); + }, + + onRender: function() { + var me = this, + mask = me.loadMask, + maskStore = me.getMaskStore(), + cfg = { + target: me, + msg: me.loadingText, + msgCls: me.loadingCls, + useMsg: me.loadingUseMsg, + + + store: maskStore + }; + + me.callParent(arguments); + + if (mask && !maskStore.proxy.isSynchronous) { + + if (Ext.isObject(mask)) { + cfg = Ext.apply(cfg, mask); + } + + + + + me.loadMask = new Ext.LoadMask(cfg); + me.loadMask.on({ + scope: me, + beforeshow: me.onMaskBeforeShow, + hide: me.onMaskHide + }); + } + }, + + finishRender: function() { + var me = this; + me.callParent(arguments); + + + if (!me.up('[collapsed],[hidden]')) { + me.doFirstRefresh(me.dataSource); + } + }, + + onBoxReady: function() { + var me = this; + + me.callParent(arguments); + + + + if (!me.firstRefreshDone) { + me.doFirstRefresh(me.dataSource); + } + }, + + getMaskStore: function(){ + return this.store; + }, + + onMaskBeforeShow: function(){ + var me = this, + loadingHeight = me.loadingHeight; + + if (loadingHeight && loadingHeight > me.getHeight()) { + me.hasLoadingHeight = true; + me.oldMinHeight = me.minHeight; + me.minHeight = loadingHeight; + me.updateLayout(); + } + }, + + onMaskHide: function(){ + var me = this; + + if (!me.destroying && me.hasLoadingHeight) { + me.minHeight = me.oldMinHeight; + me.updateLayout(); + delete me.hasLoadingHeight; + } + }, + + beforeRender: function() { + this.callParent(arguments); + this.getSelectionModel().beforeViewRender(this); + }, + + afterRender: function() { + this.callParent(arguments); + + + + + this.getSelectionModel().bindComponent(this); + }, + + + getSelectionModel: function(){ + var me = this, + mode = 'SINGLE'; + + if (me.simpleSelect) { + mode = 'SIMPLE'; + } else if (me.multiSelect) { + mode = 'MULTI'; + } + + + if (!me.selModel || !me.selModel.events) { + me.selModel = new Ext.selection.DataViewModel(Ext.apply({ + allowDeselect: me.allowDeselect, + mode: mode + }, me.selModel)); + } + + if (!me.selModel.hasRelaySetup) { + me.relayEvents(me.selModel, [ + 'selectionchange', 'beforeselect', 'beforedeselect', 'select', 'deselect', 'focuschange' + ]); + me.selModel.hasRelaySetup = true; + } + + + + if (me.disableSelection) { + me.selModel.locked = true; + } + + return me.selModel; + }, + + + refresh: function() { + var me = this, + targetEl, + targetParent, + oldDisplay, + nextSibling, + dom, + records; + + if (!me.rendered || me.isDestroyed) { + return; + } + + if (!me.hasListeners.beforerefresh || me.fireEvent('beforerefresh', me) !== false) { + targetEl = me.getTargetEl(); + records = me.getViewRange(); + dom = targetEl.dom; + + + + if (!me.preserveScrollOnRefresh) { + targetParent = dom.parentNode; + oldDisplay = dom.style.display; + dom.style.display = 'none'; + nextSibling = dom.nextSibling; + targetParent.removeChild(dom); + } + + if (me.refreshCounter) { + me.clearViewEl(); + } else { + me.fixedNodes = targetEl.dom.childNodes.length; + me.refreshCounter = 1; + } + + + + + + me.tpl.append(targetEl, me.collectData(records, me.all.startIndex)); + + + + if (records.length < 1) { + + if (!this.store.loading && (!me.deferEmptyText || me.hasFirstRefresh)) { + Ext.core.DomHelper.insertHtml('beforeEnd', targetEl.dom, me.emptyText); + } + me.all.clear(); + } else { + me.collectNodes(targetEl.dom); + me.updateIndexes(0); + } + + + if (me.hasFirstRefresh) { + + if (me.refreshSelmodelOnRefresh !== false) { + me.selModel.refresh(); + } else { + + me.selModel.pruneIf(); + } + } + + me.hasFirstRefresh = true; + + if (!me.preserveScrollOnRefresh) { + targetParent.insertBefore(dom, nextSibling); + dom.style.display = oldDisplay; + } + + + this.refreshSize(); + + me.fireEvent('refresh', me); + + + + if (!me.viewReady) { + + + me.viewReady = true; + me.fireEvent('viewready', me); + } + } + }, + + + + collectNodes: function(targetEl) { + this.all.fill(Ext.query(this.getItemSelector(), Ext.getDom(targetEl)), this.all.startIndex); + }, + + getViewRange: function() { + return this.dataSource.getRange(); + }, + + + refreshSize: function() { + var sizeModel = this.getSizeModel(); + if (sizeModel.height.shrinkWrap || sizeModel.width.shrinkWrap) { + this.updateLayout(); + } + }, + + clearViewEl: function(){ + + + + + + + + + var me = this, + el = me.getTargetEl(); + + if (me.fixedNodes) { + while (el.dom.childNodes[me.fixedNodes]) { + el.dom.removeChild(el.dom.childNodes[me.fixedNodes]); + } + } else { + el.update(''); + } + me.refreshCounter++; + }, + + + onViewScroll: Ext.emptyFn, + + onIdChanged: Ext.emptyFn, + + + saveScrollState: function() { + if (this.rendered) { + var dom = this.el.dom, + state = this.scrollState; + + state.left = dom.scrollLeft; + state.top = dom.scrollTop; + } + }, + + + restoreScrollState: function() { + if (this.rendered) { + var dom = this.el.dom, + state = this.scrollState; + + dom.scrollLeft = state.left; + dom.scrollTop = state.top; + } + }, + + + prepareData: function(data, index, record) { + var associatedData, attr, hasCopied; + if (record) { + associatedData = record.getAssociatedData(); + for (attr in associatedData) { + if (associatedData.hasOwnProperty(attr)) { + + + + + if (!hasCopied) { + data = Ext.Object.chain(data); + hasCopied = true; + } + data[attr] = associatedData[attr]; + } + } + } + return data; + }, + + + collectData: function(records, startIndex){ + var data = [], + i = 0, + len = records.length, + record; + + for (; i < len; i++) { + record = records[i]; + data[i] = this.prepareData(record.data, startIndex + i, record); + } + return data; + }, + + + bufferRender : function(records, index) { + var me = this, + div = me.renderBuffer || (me.renderBuffer = document.createElement('div')); + + me.tpl.overwrite(div, me.collectData(records, index)); + return Ext.DomQuery.select(me.getItemSelector(), div); + }, + + getNodeContainer: function() { + return this.getTargetEl(); + }, + + + onUpdate : function(ds, record){ + var me = this, + index, + node; + + if (me.viewReady) { + index = me.dataSource.indexOf(record); + if (index > -1) { + node = me.bufferRender([record], index)[0]; + + if (me.getNode(record)) { + me.all.replaceElement(index, node, true); + me.updateIndexes(index, index); + + me.selModel.onUpdate(record); + if (me.hasListeners.itemupdate) { + me.fireEvent('itemupdate', record, index, node); + } + return node; + } + } + } + + }, + + + onAdd : function(store, records, index) { + var me = this, + nodes; + + if (me.rendered) { + + + if (me.all.getCount() === 0) { + me.refresh(); + nodes = me.all.slice(); + } else { + nodes = me.doAdd(records, index); + + if (me.refreshSelmodelOnRefresh !== false) { + me.selModel.refresh(); + } + me.updateIndexes(index); + + + me.refreshSize(); + } + + if (me.hasListeners.itemadd) { + me.fireEvent('itemadd', records, index, nodes); + } + } + + }, + + doAdd: function(records, index) { + var me = this, + nodes = me.bufferRender(records, index, true), + all = me.all, + count = all.getCount(), + i, l; + + if (count === 0) { + for (i = 0, l = nodes.length; i < l; i++) { + this.getNodeContainer().appendChild(nodes[i]); + } + } else if (index < count) { + if (index === 0) { + all.item(index).insertSibling(nodes, 'before', true); + } else { + all.item(index - 1).insertSibling(nodes, 'after', true); + } + } else { + all.last().insertSibling(nodes, 'after', true); + } + + all.insert(index, nodes); + return nodes; + }, + + + onRemove : function(ds, records, indexes) { + var me = this, + fireItemRemove = me.hasListeners.itemremove, + i, + record, + index; + + if (me.all.getCount()) { + if (me.dataSource.getCount() === 0) { + + if (fireItemRemove) { + for (i = indexes.length - 1; i >= 0; --i) { + me.fireEvent('itemremove', records[i], indexes[i]); + } + } + me.refresh(); + } else { + + + for (i = indexes.length - 1; i >= 0; --i) { + record = records[i]; + index = indexes[i]; + me.doRemove(record, index); + if (fireItemRemove) { + me.fireEvent('itemremove', record, index); + } + } + me.updateIndexes(indexes[0]); + } + + + this.refreshSize(); + } + }, + + + doRemove: function(record, index) { + this.all.removeElement(index, true); + }, + + + refreshNode : function(index) { + this.onUpdate(this.dataSource, this.dataSource.getAt(index)); + }, + + + updateIndexes : function(startIndex, endIndex) { + var nodes = this.all.elements, + records = this.getViewRange(), + i; + + startIndex = startIndex || 0; + endIndex = endIndex || ((endIndex === 0) ? 0 : (nodes.length - 1)); + for (i = startIndex; i <= endIndex; i++) { + nodes[i].viewIndex = i; + nodes[i].viewRecordId = records[i].internalId; + if (!nodes[i].boundView) { + nodes[i].boundView = this.id; + } + } + }, + + + getStore : function() { + return this.store; + }, + + + bindStore : function(store, initial, propName) { + var me = this; + me.mixins.bindable.bindStore.apply(me, arguments); + + + + if (!initial) { + me.getSelectionModel().bindStore(store); + } + + + + + if (me.componentLayoutCounter) { + me.doFirstRefresh(store); + } + }, + + + doFirstRefresh: function(store) { + var me = this; + + + me.firstRefreshDone = true; + + + + + + + if (store && !store.loading) { + if (me.deferInitialRefresh) { + me.applyFirstRefresh(); + } else { + me.refresh(); + } + } + }, + + applyFirstRefresh: function(){ + var me = this; + if (me.isDestroyed) { + return; + } + + + + + + + + + + if (me.up('[isCollapsingOrExpanding]')) { + Ext.Function.defer(me.applyFirstRefresh, 100, me); + } else { + Ext.Function.defer(function () { + if (!me.isDestroyed) { + me.refresh(); + } + }, 1); + } + }, + + onUnbindStore: function(store) { + this.setMaskBind(null); + }, + + onBindStore: function(store, initial, propName) { + this.setMaskBind(store); + if (!initial && propName === 'store') { + this.bindStore(store, false, 'dataSource'); + } + }, + + setMaskBind: function(store) { + var mask = this.loadMask; + if (mask && mask.bindStore) { + mask.bindStore(store); + } + }, + + getStoreListeners: function() { + var me = this; + return { + idchanged: me.onIdChanged, + refresh: me.onDataRefresh, + add: me.onAdd, + bulkremove: me.onRemove, + update: me.onUpdate, + clear: me.refresh + }; + }, + + + onDataRefresh: function() { + this.refreshView(); + }, + + refreshView: function() { + var me = this, + + + blockedByAncestor = !me.firstRefreshDone && (!me.rendered || me.up('[collapsed],[isCollapsingOrExpanding],[hidden]')); + + + + + + if (blockedByAncestor) { + me.deferInitialRefresh = false; + } else if (me.blockRefresh !== true) { + me.firstRefreshDone = true; + me.refresh(); + } + }, + + + findItemByChild: function(node){ + return Ext.fly(node).findParent(this.getItemSelector(), this.getTargetEl()); + }, + + + findTargetByEvent: function(e) { + return e.getTarget(this.getItemSelector(), this.getTargetEl()); + }, + + + + getSelectedNodes: function(){ + var nodes = [], + records = this.selModel.getSelection(), + ln = records.length, + i = 0; + + for (; i < ln; i++) { + nodes.push(this.getNode(records[i])); + } + + return nodes; + }, + + + getRecords: function(nodes) { + var records = [], + i = 0, + len = nodes.length, + data = this.dataSource.data; + + for (; i < len; i++) { + records[records.length] = data.getByKey(nodes[i].viewRecordId); + } + + return records; + }, + + + getRecord: function(node){ + return this.dataSource.data.getByKey(Ext.getDom(node).viewRecordId); + }, + + + + isSelected : function(node) { + + var r = this.getRecord(node); + return this.selModel.isSelected(r); + }, + + + select: function(records, keepExisting, suppressEvent) { + this.selModel.select(records, keepExisting, suppressEvent); + }, + + + deselect: function(records, suppressEvent) { + this.selModel.deselect(records, suppressEvent); + }, + + + getNode : function(nodeInfo) { + if ((!nodeInfo && nodeInfo !== 0) || !this.rendered) { + return null; + } + + if (Ext.isString(nodeInfo)) { + return document.getElementById(nodeInfo); + } + if (Ext.isNumber(nodeInfo)) { + return this.all.elements[nodeInfo]; + } + if (nodeInfo.isModel) { + return this.getNodeByRecord(nodeInfo); + } + return nodeInfo; + }, + + + getNodeByRecord: function(record) { + var ns = this.all.elements, + ln = ns.length, + i = 0; + + for (; i < ln; i++) { + if (ns[i].viewRecordId === record.internalId) { + return ns[i]; + } + } + + return null; + }, + + + getNodes: function(start, end) { + var all = this.all; + + if (end === undefined) { + end = all.getCount(); + } else { + end++; + } + return all.slice(start||0, end); + }, + + + indexOf: function(node) { + node = this.getNode(node); + if (!node && node !== 0) { + return -1; + } + if (Ext.isNumber(node.viewIndex)) { + return node.viewIndex; + } + return this.all.indexOf(node); + }, + + onDestroy : function() { + var me = this; + + me.all.clear(); + me.callParent(); + me.bindStore(null); + me.selModel.destroy(); + }, + + + onItemSelect: function(record) { + var node = this.getNode(record); + + if (node) { + Ext.fly(node).addCls(this.selectedItemCls); + } + }, + + + onItemDeselect: function(record) { + var node = this.getNode(record); + + if (node) { + Ext.fly(node).removeCls(this.selectedItemCls); + } + }, + + getItemSelector: function() { + return this.itemSelector; + } +}, function() { + + + + + Ext.deprecate('extjs', '4.0', function() { + Ext.view.AbstractView.override({ + + + + + + getSelectionCount : function(){ + if (Ext.global.console) { + Ext.global.console.warn("DataView: getSelectionCount will be removed, please interact with the Ext.selection.DataViewModel"); + } + return this.selModel.getSelection().length; + }, + + + getSelectedRecords : function(){ + if (Ext.global.console) { + Ext.global.console.warn("DataView: getSelectedRecords will be removed, please interact with the Ext.selection.DataViewModel"); + } + return this.selModel.getSelection(); + }, + + + + select: function(records, keepExisting, supressEvents) { + if (Ext.global.console) { + Ext.global.console.warn("DataView: select will be removed, please access select through a DataView's SelectionModel, ie: view.getSelectionModel().select()"); + } + var sm = this.getSelectionModel(); + return sm.select.apply(sm, arguments); + }, + + + clearSelections: function() { + if (Ext.global.console) { + Ext.global.console.warn("DataView: clearSelections will be removed, please access deselectAll through DataView's SelectionModel, ie: view.getSelectionModel().deselectAll()"); + } + var sm = this.getSelectionModel(); + return sm.deselectAll(); + } + }); + }); +}); + + +Ext.define('Ext.view.View', { + extend: Ext.view.AbstractView , + alternateClassName: 'Ext.DataView', + alias: 'widget.dataview', + + + + deferHighlight: Ext.isIE7m ? 100 : 0, + + + mouseOverOutBuffer: 20, + + inputTagRe: /^textarea$|^input$/i, + + inheritableStatics: { + EventMap: { + mousedown: 'MouseDown', + mouseup: 'MouseUp', + click: 'Click', + dblclick: 'DblClick', + contextmenu: 'ContextMenu', + mouseover: 'MouseOver', + mouseout: 'MouseOut', + mouseenter: 'MouseEnter', + mouseleave: 'MouseLeave', + keydown: 'KeyDown', + focus: 'Focus' + } + }, + + initComponent: function() { + var me = this; + me.callParent(); + + + if (me.mouseOverOutBuffer) { + me.handleMouseOverOrOut = + Ext.Function.createBuffered(me.handleMouseOverOrOut, me.mouseOverOutBuffer, me); + me.lastMouseOverOutEvent = new Ext.EventObjectImpl(); + } + + + else if (me.deferHighlight){ + me.setHighlightedItem = + Ext.Function.createBuffered(me.setHighlightedItem, me.deferHighlight, me); + } + }, + + addCmpEvents: function() { + this.addEvents( + + 'beforeitemmousedown', + + 'beforeitemmouseup', + + 'beforeitemmouseenter', + + 'beforeitemmouseleave', + + 'beforeitemclick', + + 'beforeitemdblclick', + + 'beforeitemcontextmenu', + + 'beforeitemkeydown', + + 'itemmousedown', + + 'itemmouseup', + + 'itemmouseenter', + + 'itemmouseleave', + + 'itemclick', + + 'itemdblclick', + + 'itemcontextmenu', + + 'itemkeydown', + + 'beforecontainermousedown', + + 'beforecontainermouseup', + + 'beforecontainermouseover', + + 'beforecontainermouseout', + + 'beforecontainerclick', + + 'beforecontainerdblclick', + + 'beforecontainercontextmenu', + + 'beforecontainerkeydown', + + 'containermouseup', + + 'containermouseover', + + 'containermouseout', + + 'containerclick', + + 'containerdblclick', + + 'containercontextmenu', + + 'containerkeydown', + + + 'selectionchange', + + 'beforeselect', + + 'beforedeselect', + + 'select', + + 'deselect', + + 'focuschange', + + + 'highlightitem', + + + 'unhighlightitem' + ); + }, + + getFocusEl: function() { + return this.getTargetEl(); + }, + + + afterRender: function(){ + var me = this, + onMouseOverOut = me.mouseOverOutBuffer ? me.onMouseOverOut : me.handleMouseOverOrOut; + + me.callParent(); + me.mon(me.getTargetEl(), { + scope: me, + + freezeEvent: true, + click: me.handleEvent, + mousedown: me.handleEvent, + mouseup: me.handleEvent, + dblclick: me.handleEvent, + contextmenu: me.handleEvent, + keydown: me.handleEvent, + mouseover: onMouseOverOut, + mouseout: onMouseOverOut + }); + }, + + onMouseOverOut: function(e) { + var me = this; + + + + me.lastMouseOverOutEvent.setEvent(e.browserEvent, true); + me.handleMouseOverOrOut(me.lastMouseOverOutEvent); + }, + + handleMouseOverOrOut: function(e) { + var me = this, + isMouseout = e.type === 'mouseout', + method = isMouseout ? e.getRelatedTarget : e.getTarget, + nowOverItem = method.call(e, me.itemSelector) || method.call(e, me.dataRowSelector); + + + if (!me.mouseOverItem || nowOverItem !== me.mouseOverItem) { + + + if (me.mouseOverItem) { + e.item = me.mouseOverItem; + e.newType = 'mouseleave'; + me.handleEvent(e); + } + + + me.mouseOverItem = nowOverItem; + if (me.mouseOverItem) { + e.item = me.mouseOverItem; + e.newType = 'mouseenter'; + me.handleEvent(e); + } + } + }, + + handleEvent: function(e) { + var me = this, + key = e.type == 'keydown' && e.getKey(); + + if (me.processUIEvent(e) !== false) { + me.processSpecialEvent(e); + } + + + + + if (key === e.SPACE) { + if (!me.inputTagRe.test(e.getTarget().tagName)) { + e.stopEvent(); + } + } + }, + + + processItemEvent: Ext.emptyFn, + processContainerEvent: Ext.emptyFn, + processSpecialEvent: Ext.emptyFn, + + processUIEvent: function(e) { + + + + if (!Ext.getBody().isAncestor(e.target)) { + return; + } + + var me = this, + item = e.getTarget(me.getItemSelector(), me.getTargetEl()), + map = this.statics().EventMap, + index, record, + type = e.type, + newType = e.type, + sm; + + + + if (e.newType) { + newType = e.newType; + item = e.item; + } + + + + if (!item && type == 'keydown') { + sm = me.getSelectionModel(); + record = sm.lastFocused || sm.getLastSelected(); + if (record) { + item = me.getNode(record, true); + } + } + + if (item) { + if (!record) { + record = me.getRecord(item); + } + index = me.indexInStore ? me.indexInStore(record) : me.indexOf(item); + + + + + if (!record || me.processItemEvent(record, item, index, e) === false) { + return false; + } + + if ( + (me['onBeforeItem' + map[newType]](record, item, index, e) === false) || + (me.fireEvent('beforeitem' + newType, me, record, item, index, e) === false) || + (me['onItem' + map[newType]](record, item, index, e) === false) + ) { + return false; + } + + me.fireEvent('item' + newType, me, record, item, index, e); + } + else { + if ( + (me.processContainerEvent(e) === false) || + (me['onBeforeContainer' + map[type]](e) === false) || + (me.fireEvent('beforecontainer' + type, me, e) === false) || + (me['onContainer' + map[type]](e) === false) + ) { + return false; + } + + me.fireEvent('container' + type, me, e); + } + + return true; + }, + + + onItemMouseEnter: function(record, item, index, e) { + if (this.trackOver) { + this.highlightItem(item); + } + }, + + + onItemMouseLeave : function(record, item, index, e) { + if (this.trackOver) { + this.clearHighlight(); + } + }, + + + onItemMouseDown: Ext.emptyFn, + onItemMouseUp: Ext.emptyFn, + onItemFocus: Ext.emptyFn, + onItemClick: Ext.emptyFn, + onItemDblClick: Ext.emptyFn, + onItemContextMenu: Ext.emptyFn, + onItemKeyDown: Ext.emptyFn, + onBeforeItemMouseDown: Ext.emptyFn, + onBeforeItemMouseUp: Ext.emptyFn, + onBeforeItemFocus: Ext.emptyFn, + onBeforeItemMouseEnter: Ext.emptyFn, + onBeforeItemMouseLeave: Ext.emptyFn, + onBeforeItemClick: Ext.emptyFn, + onBeforeItemDblClick: Ext.emptyFn, + onBeforeItemContextMenu: Ext.emptyFn, + onBeforeItemKeyDown: Ext.emptyFn, + + + onContainerMouseDown: Ext.emptyFn, + onContainerMouseUp: Ext.emptyFn, + onContainerMouseOver: Ext.emptyFn, + onContainerMouseOut: Ext.emptyFn, + onContainerClick: Ext.emptyFn, + onContainerDblClick: Ext.emptyFn, + onContainerContextMenu: Ext.emptyFn, + onContainerKeyDown: Ext.emptyFn, + onBeforeContainerMouseDown: Ext.emptyFn, + onBeforeContainerMouseUp: Ext.emptyFn, + onBeforeContainerMouseOver: Ext.emptyFn, + onBeforeContainerMouseOut: Ext.emptyFn, + onBeforeContainerClick: Ext.emptyFn, + onBeforeContainerDblClick: Ext.emptyFn, + onBeforeContainerContextMenu: Ext.emptyFn, + onBeforeContainerKeyDown: Ext.emptyFn, + + + setHighlightedItem: function(item){ + var me = this, + highlighted = me.highlightedItem, + overItemCls = me.overItemCls, + beforeOverItemCls = me.beforeOverItemCls, + previous; + + if (highlighted != item){ + if (highlighted) { + Ext.fly(highlighted).removeCls(overItemCls); + previous = highlighted.previousSibling; + if (beforeOverItemCls && previous) { + Ext.fly(previous).removeCls(beforeOverItemCls); + } + me.fireEvent('unhighlightitem', me, highlighted); + } + + me.highlightedItem = item; + + if (item) { + Ext.fly(item).addCls(me.overItemCls); + previous = item.previousSibling; + if (beforeOverItemCls && previous) { + Ext.fly(previous).addCls(beforeOverItemCls); + } + me.fireEvent('highlightitem', me, item); + } + } + }, + + + highlightItem: function(item) { + this.setHighlightedItem(item); + }, + + + clearHighlight: function() { + this.setHighlightedItem(undefined); + }, + + onUpdate: function(store, record){ + var me = this, + node, + newNode, + highlighted; + + if (me.viewReady) { + node = me.getNode(record); + newNode = me.callParent(arguments); + highlighted = me.highlightedItem; + + if (highlighted && highlighted === node) { + delete me.highlightedItem; + if (newNode) { + me.highlightItem(newNode); + } + } + } + }, + + refresh: function() { + this.clearHighlight(); + this.callParent(arguments); + }, + + + focusNode: function(rec){ + var me = this, + node = me.getNode(rec, true), + el = me.el, + adjustmentY = 0, + adjustmentX = 0, + elRegion = el.getRegion(), + nodeRegion; + + + + elRegion.bottom = elRegion.top + el.dom.clientHeight; + elRegion.right = elRegion.left + el.dom.clientWidth; + if (node) { + nodeRegion = Ext.fly(node).getRegion(); + + if (nodeRegion.top < elRegion.top) { + adjustmentY = nodeRegion.top - elRegion.top; + + } else if (nodeRegion.bottom > elRegion.bottom) { + adjustmentY = nodeRegion.bottom - elRegion.bottom; + } + + + if (nodeRegion.left < elRegion.left) { + adjustmentX = nodeRegion.left - elRegion.left; + + } else if (nodeRegion.right > elRegion.right) { + adjustmentX = nodeRegion.right - elRegion.right; + } + + if (adjustmentX || adjustmentY) { + me.scrollBy(adjustmentX, adjustmentY, false); + } + el.focus(); + } + } +}); + + +Ext.define('Ext.layout.component.BoundList', { + extend: Ext.layout.component.Auto , + alias: 'layout.boundlist', + + type: 'component', + + beginLayout: function(ownerContext) { + var me = this, + owner = me.owner, + toolbar = owner.pagingToolbar; + + me.callParent(arguments); + + if (owner.floating) { + ownerContext.savedXY = owner.getXY(); + + + owner.setXY([0, -9999]); + } + + if (toolbar) { + ownerContext.toolbarContext = ownerContext.context.getCmp(toolbar); + } + ownerContext.listContext = ownerContext.getEl('listEl'); + }, + + beginLayoutCycle: function(ownerContext){ + var owner = this.owner; + + this.callParent(arguments); + if (ownerContext.heightModel.auto) { + + + + owner.el.setHeight('auto'); + owner.listEl.setHeight('auto'); + } + }, + + getLayoutItems: function() { + var toolbar = this.owner.pagingToolbar; + return toolbar ? [toolbar] : []; + }, + + isValidParent: function() { + + + return true; + }, + + finishedLayout: function(ownerContext) { + var xy = ownerContext.savedXY; + + this.callParent(arguments); + if (xy) { + this.owner.setXY(xy); + } + }, + + measureContentWidth: function(ownerContext) { + return this.owner.listEl.getWidth(); + }, + + measureContentHeight: function(ownerContext) { + return this.owner.listEl.getHeight(); + }, + + publishInnerHeight: function(ownerContext, height) { + var toolbar = ownerContext.toolbarContext, + toolbarHeight = 0; + + if (toolbar) { + toolbarHeight = toolbar.getProp('height'); + } + + if (toolbarHeight === undefined) { + this.done = false; + } else { + ownerContext.listContext.setHeight(height - ownerContext.getFrameInfo().height - toolbarHeight); + } + }, + + calculateOwnerHeightFromContentHeight: function(ownerContext){ + var height = this.callParent(arguments), + toolbar = ownerContext.toolbarContext; + + if (toolbar) { + height += toolbar.getProp('height'); + } + return height; + } +}); + + +Ext.define('Ext.toolbar.TextItem', { + extend: Ext.toolbar.Item , + + alias: 'widget.tbtext', + alternateClassName: 'Ext.Toolbar.TextItem', + + + text: '', + + renderTpl: '{text}', + + baseCls: Ext.baseCSSPrefix + 'toolbar-text', + + beforeRender : function() { + var me = this; + + me.callParent(); + + Ext.apply(me.renderData, { + text: me.text + }); + }, + + + setText : function(text) { + var me = this; + me.text = text; + if (me.rendered) { + me.el.update(text); + me.updateLayout(); + } + } +}); + + +Ext.define('Ext.form.field.Spinner', { + extend: Ext.form.field.Trigger , + alias: 'widget.spinnerfield', + alternateClassName: 'Ext.form.Spinner', + + + trigger1Cls: Ext.baseCSSPrefix + 'form-spinner-up', + trigger2Cls: Ext.baseCSSPrefix + 'form-spinner-down', + + + spinUpEnabled: true, + + + spinDownEnabled: true, + + + keyNavEnabled: true, + + + mouseWheelEnabled: true, + + + repeatTriggerClick: true, + + + onSpinUp: Ext.emptyFn, + + + onSpinDown: Ext.emptyFn, + + triggerTpl: '' + + '
' + + '
' + + '' + + '', + + initComponent: function() { + this.callParent(); + + this.addEvents( + + 'spin', + + + 'spinup', + + + 'spindown' + ); + }, + + + onRender: function() { + var me = this, + triggers; + + me.callParent(arguments); + triggers = me.triggerEl; + + + me.spinUpEl = triggers.item(0); + + me.spinDownEl = triggers.item(1); + + me.triggerCell = me.spinUpEl.parent(); + + + if (me.keyNavEnabled) { + me.spinnerKeyNav = new Ext.util.KeyNav(me.inputEl, { + scope: me, + up: me.spinUp, + down: me.spinDown + }); + } + + + if (me.mouseWheelEnabled) { + me.mon(me.bodyEl, 'mousewheel', me.onMouseWheel, me); + } + }, + + getSubTplMarkup: function(values) { + var me = this, + childElCls = values.childElCls, + field = Ext.form.field.Base.prototype.getSubTplMarkup.apply(me, arguments); + + return '' + + '' + + '' + + me.getTriggerMarkup() + + '
' + field + '
'; + }, + + getTriggerMarkup: function() { + return this.getTpl('triggerTpl').apply(this.getTriggerData()); + }, + + getTriggerData: function(){ + var me = this, + hideTrigger = (me.readOnly || me.hideTrigger); + + return { + triggerCls: Ext.baseCSSPrefix + 'trigger-cell', + triggerStyle: hideTrigger ? 'display:none' : '', + spinnerUpCls: !me.spinUpEnabled ? me.trigger1Cls + '-disabled': '', + spinnerDownCls: !me.spinDownEnabled ? me.trigger2Cls + '-disabled': '' + }; + }, + + + getTriggerWidth: function() { + var me = this, + totalTriggerWidth = 0; + + if (me.triggerWrap && !me.hideTrigger && !me.readOnly) { + totalTriggerWidth = me.triggerWidth; + } + return totalTriggerWidth; + }, + + + onTrigger1Click: function() { + this.spinUp(); + }, + + + onTrigger2Click: function() { + this.spinDown(); + }, + + + + onTriggerWrapMouseup: function() { + this.inputEl.focus(); + }, + + + spinUp: function() { + var me = this; + if (me.spinUpEnabled && !me.disabled) { + me.fireEvent('spin', me, 'up'); + me.fireEvent('spinup', me); + me.onSpinUp(); + } + }, + + + spinDown: function() { + var me = this; + if (me.spinDownEnabled && !me.disabled) { + me.fireEvent('spin', me, 'down'); + me.fireEvent('spindown', me); + me.onSpinDown(); + } + }, + + + setSpinUpEnabled: function(enabled) { + var me = this, + wasEnabled = me.spinUpEnabled; + me.spinUpEnabled = enabled; + if (wasEnabled !== enabled && me.rendered) { + me.spinUpEl[enabled ? 'removeCls' : 'addCls'](me.trigger1Cls + '-disabled'); + } + }, + + + setSpinDownEnabled: function(enabled) { + var me = this, + wasEnabled = me.spinDownEnabled; + me.spinDownEnabled = enabled; + if (wasEnabled !== enabled && me.rendered) { + me.spinDownEl[enabled ? 'removeCls' : 'addCls'](me.trigger2Cls + '-disabled'); + } + }, + + + onMouseWheel: function(e) { + var me = this, + delta; + if (me.hasFocus) { + delta = e.getWheelDelta(); + if (delta > 0) { + me.spinUp(); + } else if (delta < 0) { + me.spinDown(); + } + e.stopEvent(); + } + }, + + onDestroy: function() { + Ext.destroyMembers(this, 'spinnerKeyNav', 'spinUpEl', 'spinDownEl'); + this.callParent(); + } + +}); + + +Ext.define('Ext.form.field.Number', { + extend: Ext.form.field.Spinner , + alias: 'widget.numberfield', + alternateClassName: ['Ext.form.NumberField', 'Ext.form.Number'], + + + + + + allowExponential: true, + + + allowDecimals : true, + + + + decimalSeparator : '.', + + + + + submitLocaleSeparator: true, + + + + + decimalPrecision : 2, + + + + minValue: Number.NEGATIVE_INFINITY, + + + maxValue: Number.MAX_VALUE, + + + step: 1, + + + + 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', + + + + + negativeText : 'The value cannot be negative', + + + + baseChars : '0123456789', + + + autoStripChars: false, + + initComponent: function() { + var me = this; + me.callParent(); + + me.setMinValue(me.minValue); + me.setMaxValue(me.maxValue); + }, + + + getErrors: function(value) { + var me = this, + errors = me.callParent(arguments), + format = Ext.String.format, + num; + + value = Ext.isDefined(value) ? value : this.processRawValue(this.getRawValue()); + + if (value.length < 1) { + return errors; + } + + value = String(value).replace(me.decimalSeparator, '.'); + + if(isNaN(value)){ + errors.push(format(me.nanText, value)); + } + + num = me.parseValue(value); + + if (me.minValue === 0 && num < 0) { + errors.push(this.negativeText); + } + else if (num < me.minValue) { + errors.push(format(me.minText, me.minValue)); + } + + if (num > me.maxValue) { + errors.push(format(me.maxText, me.maxValue)); + } + + + return errors; + }, + + rawToValue: function(rawValue) { + var value = this.fixPrecision(this.parseValue(rawValue)); + if (value === null) { + value = rawValue || null; + } + return value; + }, + + valueToRaw: function(value) { + var me = this, + decimalSeparator = me.decimalSeparator; + value = me.parseValue(value); + value = me.fixPrecision(value); + value = Ext.isNumber(value) ? value : parseFloat(String(value).replace(decimalSeparator, '.')); + value = isNaN(value) ? '' : String(value).replace('.', decimalSeparator); + return value; + }, + + getSubmitValue: function() { + var me = this, + value = me.callParent(); + + if (!me.submitLocaleSeparator) { + value = value.replace(me.decimalSeparator, '.'); + } + return value; + }, + + onChange: function() { + this.toggleSpinners(); + this.callParent(arguments); + }, + + toggleSpinners: function(){ + var me = this, + value = me.getValue(), + valueIsNull = value === null, + enabled; + + + + if (me.spinUpEnabled || me.spinUpDisabledByToggle) { + enabled = valueIsNull || value < me.maxValue; + me.setSpinUpEnabled(enabled, true); + } + + + if (me.spinDownEnabled || me.spinDownDisabledByToggle) { + enabled = valueIsNull || value > me.minValue; + me.setSpinDownEnabled(enabled, true); + } + }, + + + setMinValue : function(value) { + var me = this, + allowed; + + me.minValue = Ext.Number.from(value, Number.NEGATIVE_INFINITY); + me.toggleSpinners(); + + + if (me.disableKeyFilter !== true) { + allowed = me.baseChars + ''; + + if (me.allowExponential) { + allowed += me.decimalSeparator + 'e+-'; + } + else { + if (me.allowDecimals) { + allowed += me.decimalSeparator; + } + if (me.minValue < 0) { + allowed += '-'; + } + } + + allowed = Ext.String.escapeRegex(allowed); + me.maskRe = new RegExp('[' + allowed + ']'); + if (me.autoStripChars) { + me.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi'); + } + } + }, + + + setMaxValue: function(value) { + this.maxValue = Ext.Number.from(value, Number.MAX_VALUE); + this.toggleSpinners(); + }, + + + parseValue : function(value) { + value = parseFloat(String(value).replace(this.decimalSeparator, '.')); + return isNaN(value) ? null : value; + }, + + + fixPrecision : function(value) { + var me = this, + nan = isNaN(value), + precision = me.decimalPrecision; + + if (nan || !value) { + return nan ? '' : value; + } else if (!me.allowDecimals || precision <= 0) { + precision = 0; + } + + return parseFloat(Ext.Number.toFixed(parseFloat(value), precision)); + }, + + beforeBlur : function() { + var me = this, + v = me.parseValue(me.getRawValue()); + + if (!Ext.isEmpty(v)) { + me.setValue(v); + } + }, + + setSpinUpEnabled: function(enabled, internal){ + this.callParent(arguments); + if (!internal) { + delete this.spinUpDisabledByToggle; + } else { + this.spinUpDisabledByToggle = !enabled; + } + }, + + onSpinUp: function() { + var me = this; + + if (!me.readOnly) { + me.setSpinValue(Ext.Number.constrain(me.getValue() + me.step, me.minValue, me.maxValue)); + } + }, + + setSpinDownEnabled: function(enabled, internal){ + this.callParent(arguments); + if (!internal) { + delete this.spinDownDisabledByToggle; + } else { + this.spinDownDisabledByToggle = !enabled; + } + }, + + onSpinDown: function() { + var me = this; + + if (!me.readOnly) { + me.setSpinValue(Ext.Number.constrain(me.getValue() - me.step, me.minValue, me.maxValue)); + } + }, + + setSpinValue: function(value) { + var me = this, + len; + + if (me.enforceMaxLength) { + + + if (me.fixPrecision(value).toString().length > me.maxLength) { + return; + } + } + me.setValue(value); + } +}); + + +Ext.define('Ext.toolbar.Paging', { + extend: Ext.toolbar.Toolbar , + alias: 'widget.pagingtoolbar', + alternateClassName: 'Ext.PagingToolbar', + + mixins: { + bindable: Ext.util.Bindable + }, + + + + displayInfo: false, + + + prependButtons: false, + + + + displayMsg : 'Displaying {0} - {1} of {2}', + + + + + emptyMsg : 'No data to display', + + + + + beforePageText : 'Page', + + + + + afterPageText : 'of {0}', + + + + + firstText : 'First Page', + + + + + prevText : 'Previous Page', + + + + + nextText : 'Next Page', + + + + + lastText : 'Last Page', + + + + + refreshText : 'Refresh', + + + + inputItemWidth : 30, + + + getPagingItems: function() { + var me = this; + + return [{ + itemId: 'first', + tooltip: me.firstText, + overflowText: me.firstText, + iconCls: Ext.baseCSSPrefix + 'tbar-page-first', + disabled: true, + handler: me.moveFirst, + scope: me + },{ + itemId: 'prev', + tooltip: me.prevText, + overflowText: me.prevText, + iconCls: Ext.baseCSSPrefix + 'tbar-page-prev', + disabled: true, + handler: me.movePrevious, + scope: me + }, + '-', + me.beforePageText, + { + xtype: 'numberfield', + itemId: 'inputItem', + name: 'inputItem', + cls: Ext.baseCSSPrefix + 'tbar-page-number', + allowDecimals: false, + minValue: 1, + hideTrigger: true, + enableKeyEvents: true, + keyNavEnabled: false, + selectOnFocus: true, + submitValue: false, + + isFormField: false, + width: me.inputItemWidth, + margins: '-1 2 3 2', + listeners: { + scope: me, + keydown: me.onPagingKeyDown, + blur: me.onPagingBlur + } + },{ + xtype: 'tbtext', + itemId: 'afterTextItem', + text: Ext.String.format(me.afterPageText, 1) + }, + '-', + { + itemId: 'next', + tooltip: me.nextText, + overflowText: me.nextText, + iconCls: Ext.baseCSSPrefix + 'tbar-page-next', + disabled: true, + handler: me.moveNext, + scope: me + },{ + itemId: 'last', + tooltip: me.lastText, + overflowText: me.lastText, + iconCls: Ext.baseCSSPrefix + 'tbar-page-last', + disabled: true, + handler: me.moveLast, + scope: me + }, + '-', + { + itemId: 'refresh', + tooltip: me.refreshText, + overflowText: me.refreshText, + iconCls: Ext.baseCSSPrefix + 'tbar-loading', + handler: me.doRefresh, + scope: me + }]; + }, + + initComponent : function(){ + var me = this, + pagingItems = me.getPagingItems(), + userItems = me.items || me.buttons || []; + + if (me.prependButtons) { + me.items = userItems.concat(pagingItems); + } else { + me.items = pagingItems.concat(userItems); + } + delete me.buttons; + + if (me.displayInfo) { + me.items.push('->'); + me.items.push({xtype: 'tbtext', itemId: 'displayItem'}); + } + + me.callParent(); + + me.addEvents( + + 'change', + + + 'beforechange' + ); + me.on('beforerender', me.onLoad, me, {single: true}); + + me.bindStore(me.store || 'ext-empty-store', true); + }, + + updateInfo : function(){ + var me = this, + displayItem = me.child('#displayItem'), + store = me.store, + pageData = me.getPageData(), + count, msg; + + if (displayItem) { + count = store.getCount(); + if (count === 0) { + msg = me.emptyMsg; + } else { + msg = Ext.String.format( + me.displayMsg, + pageData.fromRecord, + pageData.toRecord, + pageData.total + ); + } + displayItem.setText(msg); + } + }, + + + onLoad : function(){ + var me = this, + pageData, + currPage, + pageCount, + afterText, + count, + isEmpty, + item; + + count = me.store.getCount(); + isEmpty = count === 0; + if (!isEmpty) { + pageData = me.getPageData(); + currPage = pageData.currentPage; + pageCount = pageData.pageCount; + afterText = Ext.String.format(me.afterPageText, isNaN(pageCount) ? 1 : pageCount); + } else { + currPage = 0; + pageCount = 0; + afterText = Ext.String.format(me.afterPageText, 0); + } + + Ext.suspendLayouts(); + item = me.child('#afterTextItem'); + if (item) { + item.setText(afterText); + } + item = me.getInputItem(); + if (item) { + item.setDisabled(isEmpty).setValue(currPage); + } + me.setChildDisabled('#first', currPage === 1 || isEmpty); + me.setChildDisabled('#prev', currPage === 1 || isEmpty); + me.setChildDisabled('#next', currPage === pageCount || isEmpty); + me.setChildDisabled('#last', currPage === pageCount || isEmpty); + me.setChildDisabled('#refresh', false); + me.updateInfo(); + Ext.resumeLayouts(true); + + if (me.rendered) { + me.fireEvent('change', me, pageData); + } + }, + + setChildDisabled: function(selector, disabled){ + var item = this.child(selector); + if (item) { + item.setDisabled(disabled); + } + }, + + + getPageData : function(){ + var store = this.store, + totalCount = store.getTotalCount(); + + return { + total : totalCount, + currentPage : store.currentPage, + pageCount: Math.ceil(totalCount / store.pageSize), + fromRecord: ((store.currentPage - 1) * store.pageSize) + 1, + toRecord: Math.min(store.currentPage * store.pageSize, totalCount) + + }; + }, + + + onLoadError : function(){ + if (!this.rendered) { + return; + } + this.setChildDisabled('#refresh', false); + }, + + getInputItem: function(){ + return this.child('#inputItem'); + }, + + + readPageFromInput : function(pageData){ + var inputItem = this.getInputItem(), + pageNum = false, + v; + + if (inputItem) { + v = inputItem.getValue(); + pageNum = parseInt(v, 10); + if (!v || isNaN(pageNum)) { + inputItem.setValue(pageData.currentPage); + return false; + } + } + return pageNum; + }, + + onPagingFocus : function(){ + var inputItem = this.getInputItem(); + if (inputItem) { + inputItem.select(); + } + }, + + + onPagingBlur : function(e){ + var inputItem = this.getInputItem(), + curPage; + + if (inputItem) { + curPage = this.getPageData().currentPage; + inputItem.setValue(curPage); + } + }, + + + onPagingKeyDown : function(field, e){ + var me = this, + k = e.getKey(), + pageData = me.getPageData(), + increment = e.shiftKey ? 10 : 1, + pageNum; + + if (k == e.RETURN) { + e.stopEvent(); + pageNum = me.readPageFromInput(pageData); + if (pageNum !== false) { + pageNum = Math.min(Math.max(1, pageNum), pageData.pageCount); + if(me.fireEvent('beforechange', me, pageNum) !== false){ + me.store.loadPage(pageNum); + } + } + } else if (k == e.HOME || k == e.END) { + e.stopEvent(); + pageNum = k == e.HOME ? 1 : pageData.pageCount; + field.setValue(pageNum); + } else if (k == e.UP || k == e.PAGE_UP || k == e.DOWN || k == e.PAGE_DOWN) { + e.stopEvent(); + pageNum = me.readPageFromInput(pageData); + if (pageNum) { + if (k == e.DOWN || k == e.PAGE_DOWN) { + increment *= -1; + } + pageNum += increment; + if (pageNum >= 1 && pageNum <= pageData.pageCount) { + field.setValue(pageNum); + } + } + } + }, + + + beforeLoad : function(){ + if (this.rendered) { + this.setChildDisabled('#refresh', true); + } + }, + + + moveFirst : function(){ + if (this.fireEvent('beforechange', this, 1) !== false){ + this.store.loadPage(1); + } + }, + + + movePrevious : function(){ + var me = this, + prev = me.store.currentPage - 1; + + if (prev > 0) { + if (me.fireEvent('beforechange', me, prev) !== false) { + me.store.previousPage(); + } + } + }, + + + moveNext : function(){ + var me = this, + total = me.getPageData().pageCount, + next = me.store.currentPage + 1; + + if (next <= total) { + if (me.fireEvent('beforechange', me, next) !== false) { + me.store.nextPage(); + } + } + }, + + + moveLast : function(){ + var me = this, + last = me.getPageData().pageCount; + + if (me.fireEvent('beforechange', me, last) !== false) { + me.store.loadPage(last); + } + }, + + + doRefresh : function(){ + var me = this, + current = me.store.currentPage; + + if (me.fireEvent('beforechange', me, current) !== false) { + me.store.loadPage(current); + } + }, + + getStoreListeners: function() { + return { + beforeload: this.beforeLoad, + load: this.onLoad, + exception: this.onLoadError + }; + }, + + + unbind : function(store){ + this.bindStore(null); + }, + + + bind : function(store){ + this.bindStore(store); + }, + + + onDestroy : function(){ + this.unbind(); + this.callParent(); + } +}); + + +Ext.define('Ext.view.BoundList', { + extend: Ext.view.View , + alias: 'widget.boundlist', + alternateClassName: 'Ext.BoundList', + + + mixins: { + queryable: Ext.Queryable + }, + + + pageSize: 0, + + + + + + + baseCls: Ext.baseCSSPrefix + 'boundlist', + itemCls: Ext.baseCSSPrefix + 'boundlist-item', + listItemCls: '', + shadow: false, + trackOver: true, + refreshed: 0, + + + deferInitialRefresh: false, + + componentLayout: 'boundlist', + + childEls: [ + 'listEl' + ], + + renderTpl: [ + '
', + '{%', + 'var me=values.$comp, pagingToolbar=me.pagingToolbar;', + 'if (pagingToolbar) {', + 'pagingToolbar.ownerLayout = me.componentLayout;', + 'Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);', + '}', + '%}', + { + disableFormats: true + } + ], + + + + initComponent: function() { + var me = this, + baseCls = me.baseCls, + itemCls = me.itemCls; + + me.selectedItemCls = baseCls + '-selected'; + if (me.trackOver) { + me.overItemCls = baseCls + '-item-over'; + } + me.itemSelector = "." + itemCls; + + if (me.floating) { + me.addCls(baseCls + '-floating'); + } + + if (!me.tpl) { + + + me.tpl = new Ext.XTemplate( + '
    ', + '
  • ' + me.getInnerTpl(me.displayField) + '
  • ', + '
' + ); + } else if (!me.tpl.isTemplate) { + me.tpl = new Ext.XTemplate(me.tpl); + } + + if (me.pageSize) { + me.pagingToolbar = me.createPagingToolbar(); + } + + me.callParent(); + }, + + beforeRender: function() { + var me = this; + + me.callParent(arguments); + + + + if (me.up('menu')) { + me.addCls(Ext.baseCSSPrefix + 'menu'); + } + }, + + getRefOwner: function() { + return this.pickerField || this.callParent(); + }, + + getRefItems: function() { + return this.pagingToolbar ? [ this.pagingToolbar ] : []; + }, + + createPagingToolbar: function() { + return Ext.widget('pagingtoolbar', { + id: this.id + '-paging-toolbar', + pageSize: this.pageSize, + store: this.dataSource, + border: false, + ownerCt: this, + ownerLayout: this.getComponentLayout() + }); + }, + + + + finishRenderChildren: function () { + var toolbar = this.pagingToolbar; + + this.callParent(arguments); + + if (toolbar) { + toolbar.finishRender(); + } + }, + + refresh: function(){ + var me = this, + tpl = me.tpl, + toolbar = me.pagingToolbar, + rendered = me.rendered; + + + tpl.field = me.pickerField; + tpl.store = me.store; + me.callParent(); + tpl.field = tpl.store = null; + + + + if (rendered && toolbar && toolbar.rendered && !me.preserveScrollOnRefresh) { + me.el.appendChild(toolbar.el); + } + + + + if (rendered && Ext.isIE6 && Ext.isStrict) { + me.listEl.repaint(); + } + }, + + bindStore : function(store, initial) { + var toolbar = this.pagingToolbar; + + this.callParent(arguments); + if (toolbar) { + toolbar.bindStore(store, initial); + } + }, + + getTargetEl: function() { + return this.listEl || this.el; + }, + + + getInnerTpl: function(displayField) { + return '{' + displayField + '}'; + }, + + onDestroy: function() { + Ext.destroyMembers(this, 'pagingToolbar', 'listEl'); + this.callParent(); + } +}); + + +Ext.define('Ext.view.BoundListKeyNav', { + extend: Ext.util.KeyNav , + + + + + constructor: function(el, config) { + var me = this; + me.boundList = config.boundList; + me.callParent([el, Ext.apply({}, config, me.defaultHandlers)]); + }, + + defaultHandlers: { + up: function() { + var me = this, + boundList = me.boundList, + allItems = boundList.all, + oldItem = boundList.highlightedItem, + oldItemIdx = oldItem ? boundList.indexOf(oldItem) : -1, + newItemIdx = oldItemIdx > 0 ? oldItemIdx - 1 : allItems.getCount() - 1; + me.highlightAt(newItemIdx); + }, + + down: function() { + var me = this, + boundList = me.boundList, + allItems = boundList.all, + oldItem = boundList.highlightedItem, + oldItemIdx = oldItem ? boundList.indexOf(oldItem) : -1, + newItemIdx = oldItemIdx < allItems.getCount() - 1 ? oldItemIdx + 1 : 0; + me.highlightAt(newItemIdx); + }, + + pageup: function() { + + }, + + pagedown: function() { + + }, + + home: function() { + this.highlightAt(0); + }, + + end: function() { + var me = this; + me.highlightAt(me.boundList.all.getCount() - 1); + }, + + enter: function(e) { + this.selectHighlighted(e); + } + }, + + + highlightAt: function(index) { + var boundList = this.boundList, + item = boundList.all.item(index); + if (item) { + item = item.dom; + boundList.highlightItem(item); + boundList.getTargetEl().scrollChildIntoView(item, false); + } + }, + + + selectHighlighted: function(e) { + var me = this, + boundList = me.boundList, + highlighted = boundList.highlightedItem, + selModel = boundList.getSelectionModel(); + if (highlighted) { + selModel.selectWithEvent(boundList.getRecord(highlighted), e); + } + } + +}); + + +Ext.define('Ext.layout.component.field.ComboBox', { + extend: Ext.layout.component.field.Trigger , + alias: 'layout.combobox', + + + type: 'combobox', + + startingWidth: null, + + getTextWidth: function () { + var me = this, + owner = me.owner, + store = owner.store, + field = owner.displayField, + storeLn = store.data.length, + value = '', + i = 0, n = 0, ln, item, width; + + for (; i < storeLn; i++) { + item = store.getAt(i).data[field]; + ln = item.length; + + if (ln > n) { + n = ln; + value = item; + } + } + + width = Math.max(me.callParent(arguments), owner.inputEl.getTextWidth(value + owner.growAppend)); + + + + if (!me.startingWidth || owner.removingRecords) { + me.startingWidth = width; + + + + if (width < owner.growMin) { + owner.defaultListConfig.minWidth = owner.growMin; + } + + owner.removingRecords = false; + } + + + return (width < me.startingWidth) ? me.startingWidth : width; + } +}); + + +Ext.define('Ext.form.field.ComboBox', { + extend: Ext.form.field.Picker , + + alternateClassName: 'Ext.form.ComboBox', + alias: ['widget.combobox', 'widget.combo'], + mixins: { + bindable: Ext.util.Bindable + }, + + componentLayout: 'combobox', + + + triggerCls: Ext.baseCSSPrefix + 'form-arrow-trigger', + + + hiddenName: '', + + + + + hiddenDataCls: Ext.baseCSSPrefix + 'hide-display ' + Ext.baseCSSPrefix + 'form-data-hidden', + + + fieldSubTpl: [ + '', + ' value="{[Ext.util.Format.htmlEncode(values.value)]}"
', + ' name="{name}"', + ' placeholder="{placeholder}"', + ' size="{size}"', + ' maxlength="{maxLength}"', + ' readonly="readonly"', + ' disabled="disabled"', + ' tabIndex="{tabIdx}"', + ' style="{fieldStyle}"', + '/>', + { + compiled: true, + disableFormats: true + } + ], + + getSubTplData: function(){ + var me = this; + Ext.applyIf(me.subTplData, { + hiddenDataCls: me.hiddenDataCls + }); + return me.callParent(arguments); + }, + + afterRender: function(){ + var me = this; + me.callParent(arguments); + me.setHiddenValue(me.value); + }, + + + + + multiSelect: false, + + + + delimiter: ', ', + + + + displayField: 'text', + + + + + triggerAction: 'all', + + + allQuery: '', + + + queryParam: 'query', + + + queryMode: 'remote', + + + queryCaching: true, + + + pageSize: 0, + + + + + + + anyMatch: false, + + + caseSensitive: false, + + + autoSelect: true, + + + typeAhead: false, + + + typeAheadDelay: 250, + + + selectOnTab: true, + + + forceSelection: false, + + + growToLongestValue: true, + + + + + + + + + defaultListConfig: { + loadingHeight: 70, + minWidth: 70, + maxHeight: 300, + shadow: 'sides' + }, + + + + + + + ignoreSelection: 0, + + + removingRecords: null, + + + resizeComboToGrow: function () { + var me = this; + return me.grow && me.growToLongestValue; + }, + + initComponent: function() { + var me = this, + isDefined = Ext.isDefined, + store = me.store, + transform = me.transform, + transformSelect, isLocalMode; + + Ext.applyIf(me.renderSelectors, { + hiddenDataEl: '.' + me.hiddenDataCls.split(' ').join('.') + }); + + + this.addEvents( + + 'beforequery', + + + 'select', + + + 'beforeselect', + + + 'beforedeselect' + ); + + + if (transform) { + transformSelect = Ext.getDom(transform); + if (transformSelect) { + if (!me.store) { + store = Ext.Array.map(Ext.Array.from(transformSelect.options), function(option){ + return [option.value, option.text]; + }); + } + if (!me.name) { + me.name = transformSelect.name; + } + if (!('value' in me)) { + me.value = transformSelect.value; + } + } + } + + me.bindStore(store || 'ext-empty-store', true); + store = me.store; + if (store.autoCreated) { + me.queryMode = 'local'; + me.valueField = me.displayField = 'field1'; + if (!store.expanded) { + me.displayField = 'field2'; + } + } + + if (!isDefined(me.valueField)) { + me.valueField = me.displayField; + } + + isLocalMode = me.queryMode === 'local'; + if (!isDefined(me.queryDelay)) { + me.queryDelay = isLocalMode ? 10 : 500; + } + if (!isDefined(me.minChars)) { + me.minChars = isLocalMode ? 0 : 4; + } + + if (!me.displayTpl) { + me.displayTpl = new Ext.XTemplate( + '' + + '{[typeof values === "string" ? values : values["' + me.displayField + '"]]}' + + '' + me.delimiter + '' + + '' + ); + } else if (Ext.isString(me.displayTpl)) { + me.displayTpl = new Ext.XTemplate(me.displayTpl); + } + + me.callParent(); + + me.doQueryTask = new Ext.util.DelayedTask(me.doRawQuery, me); + + + if (me.store.getCount() > 0) { + me.setValue(me.value); + } + + + if (transformSelect) { + me.render(transformSelect.parentNode, transformSelect); + Ext.removeNode(transformSelect); + delete me.renderTo; + } + }, + + + getStore : function(){ + return this.store; + }, + + beforeBlur: function() { + this.doQueryTask.cancel(); + this.assertValue(); + }, + + + assertValue: function() { + var me = this, + value = me.getRawValue(), + rec, currentValue; + + if (me.forceSelection) { + if (me.multiSelect) { + + + if (value !== me.getDisplayValue()) { + me.setValue(me.lastSelection); + } + } else { + + + rec = me.findRecordByDisplay(value); + if (rec) { + currentValue = me.value; + + + if (!me.findRecordByValue(currentValue)) { + me.select(rec, true); + } + } else { + me.setValue(me.lastSelection); + } + } + } + me.collapse(); + }, + + onTypeAhead: function() { + var me = this, + displayField = me.displayField, + record = me.store.findRecord(displayField, me.getRawValue()), + boundList = me.getPicker(), + newValue, len, selStart; + + if (record) { + newValue = record.get(displayField); + len = newValue.length; + selStart = me.getRawValue().length; + + boundList.highlightItem(boundList.getNode(record)); + + if (selStart !== 0 && selStart !== len) { + me.setRawValue(newValue); + me.selectText(selStart, newValue.length); + } + } + }, + + + + resetToDefault: Ext.emptyFn, + + beforeReset: function() { + this.callParent(); + + + if (this.queryFilter && !this.queryFilter.disabled) { + this.queryFilter.disabled = true; + this.store.filter(); + } + }, + + onUnbindStore: function(store) { + var me = this, + picker = me.picker; + + + if (me.queryFilter) { + me.store.removeFilter(me.queryFilter); + } + if (!store && picker) { + picker.bindStore(null); + } + }, + + onBindStore: function(store, initial) { + var picker = this.picker; + if (!initial) { + this.resetToDefault(); + } + + if (picker) { + picker.bindStore(store); + } + }, + + getStoreListeners: function() { + var me = this; + + return { + beforeload: me.onBeforeLoad, + clear: me.onClear, + datachanged: me.onDataChanged, + load: me.onLoad, + exception: me.onException, + remove: me.onRemove + }; + }, + + onBeforeLoad: function(){ + + + + ++this.ignoreSelection; + }, + + onDataChanged: function() { + var me = this; + + if (me.resizeComboToGrow()) { + me.updateLayout(); + } + }, + + onClear: function() { + var me = this; + + if (me.resizeComboToGrow()) { + me.removingRecords = true; + me.onDataChanged(); + } + }, + + onRemove: function() { + var me = this; + + if (me.resizeComboToGrow()) { + me.removingRecords = true; + } + }, + + onException: function(){ + if (this.ignoreSelection > 0) { + --this.ignoreSelection; + } + this.collapse(); + }, + + onLoad: function(store, records, success) { + var me = this; + + if (me.ignoreSelection > 0) { + --me.ignoreSelection; + } + + + if (success && !store.lastOptions.rawQuery) { + + + + if (me.value == null) { + + if (me.store.getCount()) { + me.doAutoSelect(); + } else { + + me.setValue(me.value); + } + } else { + me.setValue(me.value); + } + } + }, + + + doRawQuery: function() { + this.doQuery(this.getRawValue(), false, true); + }, + + + doQuery: function(queryString, forceAll, rawQuery) { + var me = this, + + + queryPlan = me.beforeQuery({ + query: queryString || '', + rawQuery: rawQuery, + forceAll: forceAll, + combo: me, + cancel: false + }); + + + if (queryPlan === false || queryPlan.cancel) { + return false; + } + + + if (me.queryCaching && queryPlan.query === me.lastQuery) { + me.expand(); + } + + + else { + me.lastQuery = queryPlan.query; + + if (me.queryMode === 'local') { + me.doLocalQuery(queryPlan); + + } else { + me.doRemoteQuery(queryPlan); + } + } + + return true; + }, + + + beforeQuery: function(queryPlan) { + var me = this; + + + if (me.fireEvent('beforequery', queryPlan) === false) { + queryPlan.cancel = true; + } + + + else if (!queryPlan.cancel) { + + + if (queryPlan.query.length < me.minChars && !queryPlan.forceAll) { + queryPlan.cancel = true; + } + } + return queryPlan; + }, + + doLocalQuery: function(queryPlan) { + var me = this, + queryString = queryPlan.query; + + + if (!me.queryFilter) { + + me.queryFilter = new Ext.util.Filter({ + id: me.id + '-query-filter', + anyMatch: me.anyMatch, + caseSensitive: me.caseSensitive, + root: 'data', + property: me.displayField + }); + me.store.addFilter(me.queryFilter, false); + } + + + if (queryString || !queryPlan.forceAll) { + me.queryFilter.disabled = false; + me.queryFilter.setValue(me.enableRegEx ? new RegExp(queryString) : queryString); + } + + + else { + me.queryFilter.disabled = true; + } + + + me.store.filter(); + + + if (me.store.getCount()) { + me.expand(); + } else { + me.collapse(); + } + + me.afterQuery(queryPlan); + }, + + doRemoteQuery: function(queryPlan) { + var me = this, + loadCallback = function() { + me.afterQuery(queryPlan); + }; + + + me.expand(); + + + + if (me.pageSize) { + + me.loadPage(1, { + rawQuery: queryPlan.rawQuery, + callback: loadCallback + }); + } else { + me.store.load({ + params: me.getParams(queryPlan.query), + rawQuery: queryPlan.rawQuery, + callback: loadCallback + }); + } + }, + + + afterQuery: function(queryPlan) { + var me = this; + + if (me.store.getCount()) { + if (me.typeAhead) { + me.doTypeAhead(); + } + + + if (me.getRawValue() !== me.getDisplayValue()) { + me.ignoreSelection++; + me.picker.getSelectionModel().deselectAll(); + me.ignoreSelection--; + } + + if (queryPlan.rawQuery) { + me.syncSelection(); + if (me.picker && !me.picker.getSelectionModel().hasSelection()) { + me.doAutoSelect(); + } + } else { + me.doAutoSelect(); + } + } + }, + + loadPage: function(pageNum, options) { + this.store.loadPage(pageNum, Ext.apply({ + params: this.getParams(this.lastQuery) + }, options)); + }, + + onPageChange: function(toolbar, newPage){ + + this.loadPage(newPage); + return false; + }, + + + getParams: function(queryString) { + var params = {}, + param = this.queryParam; + + if (param) { + params[param] = queryString; + } + return params; + }, + + + doAutoSelect: function() { + var me = this, + picker = me.picker, + lastSelected, itemNode; + if (picker && me.autoSelect && me.store.getCount() > 0) { + + lastSelected = picker.getSelectionModel().lastSelected; + itemNode = picker.getNode(lastSelected || 0); + if (itemNode) { + picker.highlightItem(itemNode); + picker.listEl.scrollChildIntoView(itemNode, false); + } + } + }, + + doTypeAhead: function() { + if (!this.typeAheadTask) { + this.typeAheadTask = new Ext.util.DelayedTask(this.onTypeAhead, this); + } + if (this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE) { + this.typeAheadTask.delay(this.typeAheadDelay); + } + }, + + onTriggerClick: function() { + var me = this; + if (!me.readOnly && !me.disabled) { + if (me.isExpanded) { + me.collapse(); + } else { + me.onFocus({}); + if (me.triggerAction === 'all') { + me.doQuery(me.allQuery, true); + } else if (me.triggerAction === 'last') { + me.doQuery(me.lastQuery, true); + } else { + me.doQuery(me.getRawValue(), false, true); + } + } + me.inputEl.focus(); + } + }, + + onPaste: function(){ + var me = this; + + if (!me.readOnly && !me.disabled && me.editable) { + me.doQueryTask.delay(me.queryDelay); + } + }, + + + onKeyUp: function(e, t) { + var me = this, + key = e.getKey(); + + if (!me.readOnly && !me.disabled && me.editable) { + me.lastKey = key; + + + + + if (!e.isSpecialKey() || key == e.BACKSPACE || key == e.DELETE) { + me.doQueryTask.delay(me.queryDelay); + } + } + + if (me.enableKeyEvents) { + me.callParent(arguments); + } + }, + + initEvents: function() { + var me = this; + me.callParent(); + + + if (!me.enableKeyEvents) { + me.mon(me.inputEl, 'keyup', me.onKeyUp, me); + } + me.mon(me.inputEl, 'paste', me.onPaste, me); + }, + + onDestroy: function() { + Ext.destroy(this.listKeyNav); + this.bindStore(null); + this.callParent(); + }, + + + + onAdded: function() { + var me = this; + me.callParent(arguments); + if (me.picker) { + me.picker.ownerCt = me.up('[floating]'); + me.picker.registerWithOwnerCt(); + } + }, + + createPicker: function() { + var me = this, + picker, + pickerCfg = Ext.apply({ + xtype: 'boundlist', + pickerField: me, + selModel: { + mode: me.multiSelect ? 'SIMPLE' : 'SINGLE' + }, + floating: true, + hidden: true, + store: me.store, + displayField: me.displayField, + focusOnToFront: false, + pageSize: me.pageSize, + tpl: me.tpl + }, me.listConfig, me.defaultListConfig); + + picker = me.picker = Ext.widget(pickerCfg); + if (me.pageSize) { + picker.pagingToolbar.on('beforechange', me.onPageChange, me); + } + + me.mon(picker, { + itemclick: me.onItemClick, + refresh: me.onListRefresh, + scope: me + }); + + me.mon(picker.getSelectionModel(), { + beforeselect: me.onBeforeSelect, + beforedeselect: me.onBeforeDeselect, + selectionchange: me.onListSelectionChange, + scope: me + }); + + return picker; + }, + + alignPicker: function(){ + var me = this, + picker = me.getPicker(), + heightAbove = me.getPosition()[1] - Ext.getBody().getScroll().top, + heightBelow = Ext.Element.getViewHeight() - heightAbove - me.getHeight(), + space = Math.max(heightAbove, heightBelow); + + + if (picker.height) { + delete picker.height; + picker.updateLayout(); + } + + if (picker.getHeight() > space - 5) { + picker.setHeight(space - 5); + } + me.callParent(); + }, + + onListRefresh: function() { + + if (!this.expanding) { + this.alignPicker(); + } + this.syncSelection(); + }, + + onItemClick: function(picker, record){ + + var me = this, + selection = me.picker.getSelectionModel().getSelection(), + valueField = me.valueField; + + if (!me.multiSelect && selection.length) { + if (record.get(valueField) === selection[0].get(valueField)) { + + me.displayTplData = [record.data]; + me.setRawValue(me.getDisplayValue()); + me.collapse(); + } + } + }, + + onBeforeSelect: function(list, record) { + return this.fireEvent('beforeselect', this, record, record.index); + }, + + onBeforeDeselect: function(list, record) { + return this.fireEvent('beforedeselect', this, record, record.index); + }, + + onListSelectionChange: function(list, selectedRecords) { + var me = this, + isMulti = me.multiSelect, + hasRecords = selectedRecords.length > 0; + + + if (!me.ignoreSelection && me.isExpanded) { + if (!isMulti) { + Ext.defer(me.collapse, 1, me); + } + + if (isMulti || hasRecords) { + me.setValue(selectedRecords, false); + } + if (hasRecords) { + me.fireEvent('select', me, selectedRecords); + } + me.inputEl.focus(); + } + }, + + + onExpand: function() { + var me = this, + keyNav = me.listKeyNav, + selectOnTab = me.selectOnTab, + picker = me.getPicker(); + + + if (keyNav) { + keyNav.enable(); + } else { + keyNav = me.listKeyNav = new Ext.view.BoundListKeyNav(this.inputEl, { + boundList: picker, + forceKeyDown: true, + tab: function(e) { + if (selectOnTab) { + this.selectHighlighted(e); + me.triggerBlur(); + } + + return true; + }, + enter: function(e){ + var selModel = picker.getSelectionModel(), + count = selModel.getCount(); + + this.selectHighlighted(e); + + + + if (!me.multiSelect && count === selModel.getCount()) { + me.collapse(); + } + } + }); + } + + + if (selectOnTab) { + me.ignoreMonitorTab = true; + } + + Ext.defer(keyNav.enable, 1, keyNav); + me.inputEl.focus(); + }, + + + onCollapse: function() { + var me = this, + keyNav = me.listKeyNav; + if (keyNav) { + keyNav.disable(); + me.ignoreMonitorTab = false; + } + }, + + + select: function(r, assert) { + var me = this, + picker = me.picker, + doSelect = true, + fireSelect; + + if (r && r.isModel && assert === true && picker) { + fireSelect = !picker.getSelectionModel().isSelected(r); + } + + me.setValue(r, true); + + + if (fireSelect) { + me.fireEvent('select', me, r); + } + }, + + + findRecord: function(field, value) { + var ds = this.store, + idx = ds.findExact(field, value); + return idx !== -1 ? ds.getAt(idx) : false; + }, + + + findRecordByValue: function(value) { + return this.findRecord(this.valueField, value); + }, + + + findRecordByDisplay: function(value) { + return this.findRecord(this.displayField, value); + }, + + + setValue: function(value, doSelect) { + var me = this, + valueNotFoundText = me.valueNotFoundText, + inputEl = me.inputEl, + i, len, record, + dataObj, + matchedRecords = [], + displayTplData = [], + processedValue = []; + + if (me.store.loading) { + + me.value = value; + me.setHiddenValue(me.value); + return me; + } + + + value = Ext.Array.from(value); + + + for (i = 0, len = value.length; i < len; i++) { + record = value[i]; + if (!record || !record.isModel) { + record = me.findRecordByValue(record); + } + + if (record) { + matchedRecords.push(record); + displayTplData.push(record.data); + processedValue.push(record.get(me.valueField)); + } + + + else { + + + if (!me.forceSelection) { + processedValue.push(value[i]); + dataObj = {}; + dataObj[me.displayField] = value[i]; + displayTplData.push(dataObj); + + } + + else if (Ext.isDefined(valueNotFoundText)) { + displayTplData.push(valueNotFoundText); + } + } + } + + + me.setHiddenValue(processedValue); + me.value = me.multiSelect ? processedValue : processedValue[0]; + if (!Ext.isDefined(me.value)) { + me.value = null; + } + me.displayTplData = displayTplData; + me.lastSelection = me.valueModels = matchedRecords; + + if (inputEl && me.emptyText && !Ext.isEmpty(value)) { + inputEl.removeCls(me.emptyCls); + } + + + me.setRawValue(me.getDisplayValue()); + me.checkChange(); + + if (doSelect !== false) { + me.syncSelection(); + } + me.applyEmptyText(); + + return me; + }, + + + setHiddenValue: function(values){ + var me = this, + name = me.hiddenName, + i, + dom, childNodes, input, valueCount, childrenCount; + + if (!me.hiddenDataEl || !name) { + return; + } + values = Ext.Array.from(values); + dom = me.hiddenDataEl.dom; + childNodes = dom.childNodes; + input = childNodes[0]; + valueCount = values.length; + childrenCount = childNodes.length; + + if (!input && valueCount > 0) { + me.hiddenDataEl.update(Ext.DomHelper.markup({ + tag: 'input', + type: 'hidden', + name: name + })); + childrenCount = 1; + input = dom.firstChild; + } + while (childrenCount > valueCount) { + dom.removeChild(childNodes[0]); + -- childrenCount; + } + while (childrenCount < valueCount) { + dom.appendChild(input.cloneNode(true)); + ++ childrenCount; + } + for (i = 0; i < valueCount; i++) { + childNodes[i].value = values[i]; + } + }, + + + getDisplayValue: function() { + return this.displayTpl.apply(this.displayTplData); + }, + + getValue: function() { + + + + var me = this, + picker = me.picker, + rawValue = me.getRawValue(), + value = me.value; + + if (me.getDisplayValue() !== rawValue) { + value = rawValue; + me.value = me.displayTplData = me.valueModels = null; + if (picker) { + me.ignoreSelection++; + picker.getSelectionModel().deselectAll(); + me.ignoreSelection--; + } + } + + return value; + }, + + getSubmitValue: function() { + var value = this.getValue(); + + + if (Ext.isEmpty(value)) { + value = ''; + } + return value; + }, + + isEqual: function(v1, v2) { + var fromArray = Ext.Array.from, + i, len; + + v1 = fromArray(v1); + v2 = fromArray(v2); + len = v1.length; + + if (len !== v2.length) { + return false; + } + + for(i = 0; i < len; i++) { + if (v2[i] !== v1[i]) { + return false; + } + } + + return true; + }, + + + clearValue: function() { + this.setValue([]); + }, + + + syncSelection: function() { + var me = this, + picker = me.picker, + selection, selModel, + values = me.valueModels || [], + vLen = values.length, v, value; + + if (picker) { + + selection = []; + for (v = 0; v < vLen; v++) { + value = values[v]; + + if (value && value.isModel && me.store.indexOf(value) >= 0) { + selection.push(value); + } + } + + + me.ignoreSelection++; + selModel = picker.getSelectionModel(); + selModel.deselectAll(); + if (selection.length) { + selModel.select(selection, undefined, true); + } + me.ignoreSelection--; + } + }, + + onEditorTab: function(e){ + var keyNav = this.listKeyNav; + + if (this.selectOnTab && keyNav) { + keyNav.selectHighlighted(e); + } + } +}); + + +Ext.define('Ext.picker.Month', { + extend: Ext.Component , + + + + + + + alias: 'widget.monthpicker', + alternateClassName: 'Ext.MonthPicker', + + childEls: [ + 'bodyEl', 'prevEl', 'nextEl', 'buttonsEl', 'monthEl', 'yearEl' + ], + + renderTpl: [ + '
', + '
', + '', + '
', + + '{.}', + '
', + '
', + '
', + '
', + '
', + '
', + + '', + '
', + '
', + + '', + '
', + '
', + '', + '
', + + '{.}', + '
', + '
', + '
', + '
', + '
', + '', + '
{%', + 'var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;', + 'okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;', + 'okBtn.ownerCt = cancelBtn.ownerCt = me;', + 'Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);', + 'Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);', + '%}
', + '
' + ], + + + + okText: 'OK', + + + + + cancelText: 'Cancel', + + + + baseCls: Ext.baseCSSPrefix + 'monthpicker', + + + showButtons: true, + + + + + + measureWidth: 35, + measureMaxHeight: 20, + + + smallCls: Ext.baseCSSPrefix + 'monthpicker-small', + + + totalYears: 10, + yearOffset: 5, + monthOffset: 6, + + + + initComponent: function(){ + var me = this; + + me.selectedCls = me.baseCls + '-selected'; + me.addEvents( + + 'cancelclick', + + + 'monthclick', + + + 'monthdblclick', + + + 'okclick', + + + 'select', + + + 'yearclick', + + + 'yeardblclick' + ); + if (me.small) { + me.addCls(me.smallCls); + } + me.setValue(me.value); + me.activeYear = me.getYear(new Date().getFullYear() - 4, -4); + + if (me.showButtons) { + me.okBtn = new Ext.button.Button({ + text: me.okText, + handler: me.onOkClick, + scope: me + }); + me.cancelBtn = new Ext.button.Button({ + text: me.cancelText, + handler: me.onCancelClick, + scope: me + }); + } + + this.callParent(); + }, + + + + beforeRender: function(){ + var me = this, + i = 0, + months = [], + shortName = Ext.Date.getShortMonthName, + monthLen = me.monthOffset, + margin = me.monthMargin, + style = ''; + + me.callParent(); + + for (; i < monthLen; ++i) { + months.push(shortName(i), shortName(i + monthLen)); + } + + if (Ext.isDefined(margin)) { + style = 'margin: 0 ' + margin + 'px;'; + } + + Ext.apply(me.renderData, { + months: months, + years: me.getYears(), + showButtons: me.showButtons, + monthStyle: style + }); + }, + + + + afterRender: function(){ + var me = this, + body = me.bodyEl, + buttonsEl = me.buttonsEl; + + me.callParent(); + + me.mon(body, 'click', me.onBodyClick, me); + me.mon(body, 'dblclick', me.onBodyClick, me); + + + me.years = body.select('.' + me.baseCls + '-year a'); + me.months = body.select('.' + me.baseCls + '-month a'); + + me.backRepeater = new Ext.util.ClickRepeater(me.prevEl, { + handler: Ext.Function.bind(me.adjustYear, me, [-me.totalYears]) + }); + + me.prevEl.addClsOnOver(me.baseCls + '-yearnav-prev-over'); + me.nextRepeater = new Ext.util.ClickRepeater(me.nextEl, { + handler: Ext.Function.bind(me.adjustYear, me, [me.totalYears]) + }); + me.nextEl.addClsOnOver(me.baseCls + '-yearnav-next-over'); + me.updateBody(); + + if (!Ext.isDefined(me.monthMargin)) { + Ext.picker.Month.prototype.monthMargin = me.calculateMonthMargin(); + } + }, + + calculateMonthMargin: function(){ + + + + + var me = this, + monthEl = me.monthEl, + months = me.months, + first = months.first(), + itemMargin = first.getMargin('l'); + + while (itemMargin && me.getLargest() > me.measureMaxHeight) { + --itemMargin; + months.setStyle('margin', '0 ' + itemMargin + 'px'); + } + return itemMargin; + }, + + getLargest: function(months){ + var largest = 0; + this.months.each(function(item){ + var h = item.getHeight(); + if (h > largest) { + largest = h; + } + }); + return largest; + + }, + + + setValue: function(value){ + var me = this, + active = me.activeYear, + offset = me.monthOffset, + year, + index; + + if (!value) { + me.value = [null, null]; + } else if (Ext.isDate(value)) { + me.value = [value.getMonth(), value.getFullYear()]; + } else { + me.value = [value[0], value[1]]; + } + + if (me.rendered) { + year = me.value[1]; + if (year !== null) { + if ((year < active || year > active + me.yearOffset)) { + me.activeYear = year - me.yearOffset + 1; + } + } + me.updateBody(); + } + + return me; + }, + + + getValue: function(){ + return this.value; + }, + + + hasSelection: function(){ + var value = this.value; + return value[0] !== null && value[1] !== null; + }, + + + getYears: function(){ + var me = this, + offset = me.yearOffset, + start = me.activeYear, + end = start + offset, + i = start, + years = []; + + for (; i < end; ++i) { + years.push(i, i + offset); + } + + return years; + }, + + + updateBody: function(){ + var me = this, + years = me.years, + months = me.months, + yearNumbers = me.getYears(), + cls = me.selectedCls, + value = me.getYear(null), + month = me.value[0], + monthOffset = me.monthOffset, + year, + yearItems, y, yLen, el; + + if (me.rendered) { + years.removeCls(cls); + months.removeCls(cls); + + yearItems = years.elements; + yLen = yearItems.length; + + for (y = 0; y < yLen; y++) { + el = Ext.fly(yearItems[y]); + + year = yearNumbers[y]; + el.dom.innerHTML = year; + if (year == value) { + el.addCls(cls); + } + } + if (month !== null) { + if (month < monthOffset) { + month = month * 2; + } else { + month = (month - monthOffset) * 2 + 1; + } + months.item(month).addCls(cls); + } + } + }, + + + getYear: function(defaultValue, offset) { + var year = this.value[1]; + offset = offset || 0; + return year === null ? defaultValue : year + offset; + }, + + + onBodyClick: function(e, t) { + var me = this, + isDouble = e.type == 'dblclick'; + + if (e.getTarget('.' + me.baseCls + '-month')) { + e.stopEvent(); + me.onMonthClick(t, isDouble); + } else if (e.getTarget('.' + me.baseCls + '-year')) { + e.stopEvent(); + me.onYearClick(t, isDouble); + } + }, + + + adjustYear: function(offset){ + if (typeof offset != 'number') { + offset = this.totalYears; + } + this.activeYear += offset; + this.updateBody(); + }, + + + onOkClick: function(){ + this.fireEvent('okclick', this, this.value); + }, + + + onCancelClick: function(){ + this.fireEvent('cancelclick', this); + }, + + + onMonthClick: function(target, isDouble){ + var me = this; + me.value[0] = me.resolveOffset(me.months.indexOf(target), me.monthOffset); + me.updateBody(); + me.fireEvent('month' + (isDouble ? 'dbl' : '') + 'click', me, me.value); + me.fireEvent('select', me, me.value); + }, + + + onYearClick: function(target, isDouble){ + var me = this; + me.value[1] = me.activeYear + me.resolveOffset(me.years.indexOf(target), me.yearOffset); + me.updateBody(); + me.fireEvent('year' + (isDouble ? 'dbl' : '') + 'click', me, me.value); + me.fireEvent('select', me, me.value); + + }, + + + resolveOffset: function(index, offset){ + if (index % 2 === 0) { + return (index / 2); + } else { + return offset + Math.floor(index / 2); + } + }, + + + + beforeDestroy: function(){ + var me = this; + me.years = me.months = null; + Ext.destroyMembers(me, 'backRepeater', 'nextRepeater', 'okBtn', 'cancelBtn'); + me.callParent(); + }, + + + + finishRenderChildren: function () { + var me = this; + + this.callParent(arguments); + + if (this.showButtons) { + me.okBtn.finishRender(); + me.cancelBtn.finishRender(); + } + }, + + onDestroy: function() { + Ext.destroyMembers(this, 'okBtn', 'cancelBtn'); + this.callParent(); + } + +}); + + +Ext.define('Ext.picker.Date', { + extend: Ext.Component , + + + + + + + + + + + alias: 'widget.datepicker', + alternateClassName: 'Ext.DatePicker', + + childEls: [ + 'innerEl', 'eventEl', 'prevEl', 'nextEl', 'middleBtnEl', 'footerEl' + ], + + border: true, + + renderTpl: [ + '
', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '{#:this.isEndOfWeek}', + '', + '', + '', + '
', + '
{.:this.firstInitial}
', + '
', + + '', + '
', + '', + '', + '', + '
', + { + firstInitial: function(value) { + return Ext.picker.Date.prototype.getDayInitial(value); + }, + isEndOfWeek: function(value) { + + + value--; + var end = value % 7 === 0 && value !== 0; + return end ? '' : ''; + }, + renderTodayBtn: function(values, out) { + Ext.DomHelper.generateMarkup(values.$comp.todayBtn.getRenderTree(), out); + }, + renderMonthBtn: function(values, out) { + Ext.DomHelper.generateMarkup(values.$comp.monthBtn.getRenderTree(), out); + } + } + ], + + + + todayText : 'Today', + + + + + ariaTitle: 'Date Picker: {0}', + + + + + ariaTitleDateFormat: 'F d, Y', + + + + + + + + + todayTip : '{0} (Spacebar)', + + + + + minText : 'This date is before the minimum date', + + + + + maxText : 'This date is after the maximum date', + + + + + + + disabledDaysText : 'Disabled', + + + + + disabledDatesText : 'Disabled', + + + + + + + + + nextText : 'Next Month (Control+Right)', + + + + + prevText : 'Previous Month (Control+Left)', + + + + + monthYearText : 'Choose a month (Control+Up/Down to move years)', + + + + + monthYearFormat: 'F Y', + + + + + startDay : 0, + + + + + showToday : true, + + + + + + + + + + + + + + disableAnim: false, + + + baseCls: Ext.baseCSSPrefix + 'datepicker', + + + + + + + + longDayFormat: 'F d, Y', + + + + + + focusOnShow: false, + + + + focusOnSelect: true, + + + + initHour: 12, + + numDays: 42, + + + initComponent : function() { + var me = this, + clearTime = Ext.Date.clearTime; + + me.selectedCls = me.baseCls + '-selected'; + me.disabledCellCls = me.baseCls + '-disabled'; + me.prevCls = me.baseCls + '-prevday'; + me.activeCls = me.baseCls + '-active'; + me.cellCls = me.baseCls + '-cell'; + me.nextCls = me.baseCls + '-prevday'; + me.todayCls = me.baseCls + '-today'; + + + if (!me.format) { + me.format = Ext.Date.defaultFormat; + } + if (!me.dayNames) { + me.dayNames = Ext.Date.dayNames; + } + me.dayNames = me.dayNames.slice(me.startDay).concat(me.dayNames.slice(0, me.startDay)); + + me.callParent(); + + me.value = me.value ? + clearTime(me.value, true) : clearTime(new Date()); + + me.addEvents( + + 'select' + ); + + me.initDisabledDays(); + }, + + beforeRender: function () { + + var me = this, + days = new Array(me.numDays), + today = Ext.Date.format(new Date(), me.format); + + + + if (me.up('menu')) { + me.addCls(Ext.baseCSSPrefix + 'menu'); + } + + me.monthBtn = new Ext.button.Split({ + ownerCt: me, + ownerLayout: me.getComponentLayout(), + text: '', + tooltip: me.monthYearText, + listeners: { + click: me.showMonthPicker, + arrowclick: me.showMonthPicker, + scope: me + } + }); + + if (me.showToday) { + me.todayBtn = new Ext.button.Button({ + ownerCt: me, + ownerLayout: me.getComponentLayout(), + text: Ext.String.format(me.todayText, today), + tooltip: Ext.String.format(me.todayTip, today), + tooltipType: 'title', + handler: me.selectToday, + scope: me + }); + } + + me.callParent(); + + Ext.applyIf(me, { + renderData: {} + }); + + Ext.apply(me.renderData, { + dayNames: me.dayNames, + showToday: me.showToday, + prevText: me.prevText, + nextText: me.nextText, + days: days + }); + + me.protoEl.unselectable(); + }, + + + + finishRenderChildren: function () { + var me = this; + + me.callParent(); + me.monthBtn.finishRender(); + if (me.showToday) { + me.todayBtn.finishRender(); + } + }, + + + + onRender : function(container, position){ + var me = this; + + me.callParent(arguments); + + me.cells = me.eventEl.select('tbody td'); + me.textNodes = me.eventEl.query('tbody td a'); + + me.mon(me.eventEl, { + scope: me, + mousewheel: me.handleMouseWheel, + click: { + fn: me.handleDateClick, + delegate: 'a.' + me.baseCls + '-date' + } + }); + + }, + + + + initEvents: function(){ + var me = this, + eDate = Ext.Date, + day = eDate.DAY; + + me.callParent(); + + me.prevRepeater = new Ext.util.ClickRepeater(me.prevEl, { + handler: me.showPrevMonth, + scope: me, + preventDefault: true, + stopDefault: true + }); + + me.nextRepeater = new Ext.util.ClickRepeater(me.nextEl, { + handler: me.showNextMonth, + scope: me, + preventDefault:true, + stopDefault:true + }); + + me.keyNav = new Ext.util.KeyNav(me.eventEl, Ext.apply({ + scope: me, + left : function(e){ + if(e.ctrlKey){ + me.showPrevMonth(); + }else{ + me.update(eDate.add(me.activeDate, day, -1)); + } + }, + + right : function(e){ + if(e.ctrlKey){ + me.showNextMonth(); + }else{ + me.update(eDate.add(me.activeDate, day, 1)); + } + }, + + up : function(e){ + if(e.ctrlKey){ + me.showNextYear(); + }else{ + me.update(eDate.add(me.activeDate, day, -7)); + } + }, + + down : function(e){ + if(e.ctrlKey){ + me.showPrevYear(); + }else{ + me.update(eDate.add(me.activeDate, day, 7)); + } + }, + + pageUp:function (e) { + if (e.altKey) { + me.showPrevYear(); + } else { + me.showPrevMonth(); + } + }, + + pageDown:function (e) { + if (e.altKey) { + me.showNextYear(); + } else { + me.showNextMonth(); + } + }, + + tab:function (e) { + me.doCancelFieldFocus = true; + me.handleTabClick(e); + delete me.doCancelFieldFocus; + return true; + }, + + enter : function(e){ + e.stopPropagation(); + return true; + }, + + + + home:function (e) { + me.update(eDate.getFirstDateOfMonth(me.activeDate)); + }, + + end:function (e) { + me.update(eDate.getLastDateOfMonth(me.activeDate)); + } + }, me.keyNavConfig)); + + if (me.showToday) { + me.todayKeyListener = me.eventEl.addKeyListener(Ext.EventObject.SPACE, me.selectToday, me); + } + me.update(me.value); + }, + + handleTabClick:function (e) { + var me = this, + t = me.getSelectedDate(me.activeDate), + handler = me.handler; + + + if (!me.disabled && t.dateValue && !Ext.fly(t.parentNode).hasCls(me.disabledCellCls)) { + me.doCancelFocus = me.focusOnSelect === false; + me.setValue(new Date(t.dateValue)); + delete me.doCancelFocus; + me.fireEvent('select', me, me.value); + if (handler) { + handler.call(me.scope || me, me, me.value); + } + me.onSelect(); + } + }, + + getSelectedDate:function (date) { + var me = this, + t = date.getTime(), + cells = me.cells, + cls = me.selectedCls, + cellItems = cells.elements, + c, + cLen = cellItems.length, + cell; + + cells.removeCls(cls); + + for (c = 0; c < cLen; c++) { + cell = Ext.fly(cellItems[c]); + + if (cell.dom.firstChild.dateValue == t) { + return cell.dom.firstChild; + } + } + return null; + }, + + + initDisabledDays : function(){ + var me = this, + dd = me.disabledDates, + re = '(?:', + len, + d, dLen, dI; + + if(!me.disabledDatesRE && dd){ + len = dd.length - 1; + + dLen = dd.length; + + for (d = 0; d < dLen; d++) { + dI = dd[d]; + + re += Ext.isDate(dI) ? '^' + Ext.String.escapeRegex(Ext.Date.dateFormat(dI, me.format)) + '$' : dI; + if (d != len) { + re += '|'; + } + } + + me.disabledDatesRE = new RegExp(re + ')'); + } + }, + + + setDisabledDates : function(dd){ + var me = this; + + if(Ext.isArray(dd)){ + me.disabledDates = dd; + me.disabledDatesRE = null; + }else{ + me.disabledDatesRE = dd; + } + me.initDisabledDays(); + me.update(me.value, true); + return me; + }, + + + setDisabledDays : function(dd){ + this.disabledDays = dd; + return this.update(this.value, true); + }, + + + setMinDate : function(dt){ + this.minDate = dt; + return this.update(this.value, true); + }, + + + setMaxDate : function(dt){ + this.maxDate = dt; + return this.update(this.value, true); + }, + + + setValue : function(value){ + this.value = Ext.Date.clearTime(value, true); + return this.update(this.value); + }, + + + getValue : function(){ + return this.value; + }, + + + + getDayInitial: function(value){ + return value.substr(0,1); + }, + + + + focus : function(){ + this.update(this.activeDate); + }, + + + + onEnable: function(){ + this.callParent(); + this.setDisabledStatus(false); + this.update(this.activeDate); + + }, + + + + onDisable : function(){ + this.callParent(); + this.setDisabledStatus(true); + }, + + + setDisabledStatus : function(disabled){ + var me = this; + + me.keyNav.setDisabled(disabled); + me.prevRepeater.setDisabled(disabled); + me.nextRepeater.setDisabled(disabled); + if (me.showToday) { + me.todayKeyListener.setDisabled(disabled); + me.todayBtn.setDisabled(disabled); + } + }, + + + getActive: function(){ + return this.activeDate || this.value; + }, + + + runAnimation: function(isHide){ + var picker = this.monthPicker, + options = { + duration: 200, + callback: function(){ + if (isHide) { + picker.hide(); + } else { + picker.show(); + } + } + }; + + if (isHide) { + picker.el.slideOut('t', options); + } else { + picker.el.slideIn('t', options); + } + }, + + + hideMonthPicker : function(animate){ + var me = this, + picker = me.monthPicker; + + if (picker) { + if (me.shouldAnimate(animate)) { + me.runAnimation(true); + } else { + picker.hide(); + } + } + return me; + }, + + + showMonthPicker : function(animate){ + var me = this, + picker; + + if (me.rendered && !me.disabled) { + picker = me.createMonthPicker(); + picker.setValue(me.getActive()); + picker.setSize(me.getSize()); + picker.setPosition(-1, -1); + if (me.shouldAnimate(animate)) { + me.runAnimation(false); + } else { + picker.show(); + } + } + return me; + }, + + + shouldAnimate: function(animate){ + return Ext.isDefined(animate) ? animate : !this.disableAnim; + }, + + + createMonthPicker: function(){ + var me = this, + picker = me.monthPicker; + + if (!picker) { + me.monthPicker = picker = new Ext.picker.Month({ + renderTo: me.el, + floating: true, + shadow: false, + small: me.showToday === false, + listeners: { + scope: me, + cancelclick: me.onCancelClick, + okclick: me.onOkClick, + yeardblclick: me.onOkClick, + monthdblclick: me.onOkClick + } + }); + if (!me.disableAnim) { + + picker.el.setStyle('display', 'none'); + } + me.on('beforehide', Ext.Function.bind(me.hideMonthPicker, me, [false])); + } + return picker; + }, + + + onOkClick: function(picker, value){ + var me = this, + month = value[0], + year = value[1], + date = new Date(year, month, me.getActive().getDate()); + + if (date.getMonth() !== month) { + + date = Ext.Date.getLastDateOfMonth(new Date(year, month, 1)); + } + me.setValue(date); + me.hideMonthPicker(); + }, + + + onCancelClick: function(){ + + this.selectedUpdate(this.activeDate); + this.hideMonthPicker(); + }, + + + showPrevMonth : function(e){ + return this.setValue(Ext.Date.add(this.activeDate, Ext.Date.MONTH, -1)); + }, + + + showNextMonth : function(e){ + return this.setValue(Ext.Date.add(this.activeDate, Ext.Date.MONTH, 1)); + }, + + + showPrevYear : function(){ + return this.setValue(Ext.Date.add(this.activeDate, Ext.Date.YEAR, -1)); + }, + + + showNextYear : function(){ + return this.setValue(Ext.Date.add(this.activeDate, Ext.Date.YEAR, 1)); + }, + + + handleMouseWheel : function(e){ + e.stopEvent(); + if(!this.disabled){ + var delta = e.getWheelDelta(); + if(delta > 0){ + this.showPrevMonth(); + } else if(delta < 0){ + this.showNextMonth(); + } + } + }, + + + handleDateClick : function(e, t){ + var me = this, + handler = me.handler; + + e.stopEvent(); + if(!me.disabled && t.dateValue && !Ext.fly(t.parentNode).hasCls(me.disabledCellCls)){ + me.doCancelFocus = me.focusOnSelect === false; + me.setValue(new Date(t.dateValue)); + delete me.doCancelFocus; + me.fireEvent('select', me, me.value); + if (handler) { + handler.call(me.scope || me, me, me.value); + } + + + + + me.onSelect(); + } + }, + + + onSelect: function() { + if (this.hideOnSelect) { + this.hide(); + } + }, + + + selectToday : function(){ + var me = this, + btn = me.todayBtn, + handler = me.handler; + + if(btn && !btn.disabled){ + me.setValue(Ext.Date.clearTime(new Date())); + me.fireEvent('select', me, me.value); + if (handler) { + handler.call(me.scope || me, me, me.value); + } + me.onSelect(); + } + return me; + }, + + + selectedUpdate: function(date){ + var me = this, + t = date.getTime(), + cells = me.cells, + cls = me.selectedCls, + cellItems = cells.elements, + c, + cLen = cellItems.length, + cell; + + cells.removeCls(cls); + + for (c = 0; c < cLen; c++) { + cell = Ext.fly(cellItems[c]); + + if (cell.dom.firstChild.dateValue == t) { + me.fireEvent('highlightitem', me, cell); + cell.addCls(cls); + + if(me.isVisible() && !me.doCancelFocus){ + Ext.fly(cell.dom.firstChild).focus(50); + } + + break; + } + } + }, + + + fullUpdate: function(date){ + var me = this, + cells = me.cells.elements, + textNodes = me.textNodes, + disabledCls = me.disabledCellCls, + eDate = Ext.Date, + i = 0, + extraDays = 0, + visible = me.isVisible(), + newDate = +eDate.clearTime(date, true), + today = +eDate.clearTime(new Date()), + min = me.minDate ? eDate.clearTime(me.minDate, true) : Number.NEGATIVE_INFINITY, + max = me.maxDate ? eDate.clearTime(me.maxDate, true) : Number.POSITIVE_INFINITY, + ddMatch = me.disabledDatesRE, + ddText = me.disabledDatesText, + ddays = me.disabledDays ? me.disabledDays.join('') : false, + ddaysText = me.disabledDaysText, + format = me.format, + days = eDate.getDaysInMonth(date), + firstOfMonth = eDate.getFirstDateOfMonth(date), + startingPos = firstOfMonth.getDay() - me.startDay, + previousMonth = eDate.add(date, eDate.MONTH, -1), + longDayFormat = me.longDayFormat, + prevStart, + current, + disableToday, + tempDate, + setCellClass, + html, + cls, + formatValue, + value; + + if (startingPos < 0) { + startingPos += 7; + } + + days += startingPos; + prevStart = eDate.getDaysInMonth(previousMonth) - startingPos; + current = new Date(previousMonth.getFullYear(), previousMonth.getMonth(), prevStart, me.initHour); + + if (me.showToday) { + tempDate = eDate.clearTime(new Date()); + disableToday = (tempDate < min || tempDate > max || + (ddMatch && format && ddMatch.test(eDate.dateFormat(tempDate, format))) || + (ddays && ddays.indexOf(tempDate.getDay()) != -1)); + + if (!me.disabled) { + me.todayBtn.setDisabled(disableToday); + me.todayKeyListener.setDisabled(disableToday); + } + } + + setCellClass = function(cell, cls){ + value = +eDate.clearTime(current, true); + cell.title = eDate.format(current, longDayFormat); + + cell.firstChild.dateValue = value; + if(value == today){ + cls += ' ' + me.todayCls; + cell.title = me.todayText; + + + me.todayElSpan = Ext.DomHelper.append(cell.firstChild, { + tag:'span', + cls: Ext.baseCSSPrefix + 'hide-clip', + html:me.todayText + }, true); + } + if(value == newDate) { + cls += ' ' + me.selectedCls; + me.fireEvent('highlightitem', me, cell); + if (visible && me.floating) { + Ext.fly(cell.firstChild).focus(50); + } + } + + if (value < min) { + cls += ' ' + disabledCls; + cell.title = me.minText; + } + else if (value > max) { + cls += ' ' + disabledCls; + cell.title = me.maxText; + } + else if (ddays && ddays.indexOf(current.getDay()) !== -1){ + cell.title = ddaysText; + cls += ' ' + disabledCls; + } + else if (ddMatch && format){ + formatValue = eDate.dateFormat(current, format); + if(ddMatch.test(formatValue)){ + cell.title = ddText.replace('%0', formatValue); + cls += ' ' + disabledCls; + } + } + cell.className = cls + ' ' + me.cellCls; + }; + + for(; i < me.numDays; ++i) { + if (i < startingPos) { + html = (++prevStart); + cls = me.prevCls; + } else if (i >= days) { + html = (++extraDays); + cls = me.nextCls; + } else { + html = i - startingPos + 1; + cls = me.activeCls; + } + textNodes[i].innerHTML = html; + current.setDate(current.getDate() + 1); + setCellClass(cells[i], cls); + } + + me.monthBtn.setText(Ext.Date.format(date, me.monthYearFormat)); + }, + + + update : function(date, forceRefresh){ + var me = this, + active = me.activeDate; + + if (me.rendered) { + me.activeDate = date; + if(!forceRefresh && active && me.el && active.getMonth() == date.getMonth() && active.getFullYear() == date.getFullYear()){ + me.selectedUpdate(date, active); + } else { + me.fullUpdate(date, active); + } + } + return me; + }, + + + + beforeDestroy : function() { + var me = this; + + if (me.rendered) { + Ext.destroy( + me.todayKeyListener, + me.keyNav, + me.monthPicker, + me.monthBtn, + me.nextRepeater, + me.prevRepeater, + me.todayBtn + ); + delete me.textNodes; + delete me.cells.elements; + } + me.callParent(); + }, + + + + onShow: function() { + this.callParent(arguments); + if (this.focusOnShow) { + this.focus(); + } + } +}); + + +Ext.define('Ext.form.field.Date', { + extend: Ext.form.field.Picker , + alias: 'widget.datefield', + + alternateClassName: ['Ext.form.DateField', 'Ext.form.Date'], + + + + 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}", + + + triggerCls : Ext.baseCSSPrefix + 'form-date-trigger', + + showToday : true, + + + + + + + + + useStrict: undefined, + + + + initTime: '12', + + initTimeFormat: 'H', + + matchFieldWidth: false, + + + startDay: 0, + + + initComponent : function(){ + var me = this, + isString = Ext.isString, + min, max; + + min = me.minValue; + max = me.maxValue; + if(isString(min)){ + me.minValue = me.parseDate(min); + } + if(isString(max)){ + me.maxValue = me.parseDate(max); + } + me.disabledDatesRE = null; + me.initDisabledDays(); + + me.callParent(); + }, + + initValue: function() { + var me = this, + value = me.value; + + + if (Ext.isString(value)) { + me.value = me.rawToValue(value); + } + + me.callParent(); + }, + + + initDisabledDays : function(){ + if(this.disabledDates){ + var dd = this.disabledDates, + len = dd.length - 1, + re = "(?:", + d, + dLen = dd.length, + date; + + for (d = 0; d < dLen; d++) { + date = dd[d]; + + re += Ext.isDate(date) ? '^' + Ext.String.escapeRegex(date.dateFormat(this.format)) + '$' : date; + if (d !== len) { + re += '|'; + } + } + + this.disabledDatesRE = new RegExp(re + ')'); + } + }, + + + setDisabledDates : function(dd){ + var me = this, + picker = me.picker; + + me.disabledDates = dd; + me.initDisabledDays(); + if (picker) { + picker.setDisabledDates(me.disabledDatesRE); + } + }, + + + setDisabledDays : function(dd){ + var picker = this.picker; + + this.disabledDays = dd; + if (picker) { + picker.setDisabledDays(dd); + } + }, + + + setMinValue : function(dt){ + var me = this, + picker = me.picker, + minValue = (Ext.isString(dt) ? me.parseDate(dt) : dt); + + me.minValue = minValue; + if (picker) { + picker.minText = Ext.String.format(me.minText, me.formatDate(me.minValue)); + picker.setMinDate(minValue); + } + }, + + + setMaxValue : function(dt){ + var me = this, + picker = me.picker, + maxValue = (Ext.isString(dt) ? me.parseDate(dt) : dt); + + me.maxValue = maxValue; + if (picker) { + picker.maxText = Ext.String.format(me.maxText, me.formatDate(me.maxValue)); + picker.setMaxDate(maxValue); + } + }, + + + getErrors: function(value) { + var me = this, + format = Ext.String.format, + clearTime = Ext.Date.clearTime, + errors = me.callParent(arguments), + disabledDays = me.disabledDays, + disabledDatesRE = me.disabledDatesRE, + minValue = me.minValue, + maxValue = me.maxValue, + len = disabledDays ? disabledDays.length : 0, + i = 0, + svalue, + fvalue, + day, + time; + + value = me.formatDate(value || me.processRawValue(me.getRawValue())); + + if (value === null || value.length < 1) { + return errors; + } + + svalue = value; + value = me.parseDate(value); + if (!value) { + errors.push(format(me.invalidText, svalue, Ext.Date.unescapeFormat(me.format))); + return errors; + } + + time = value.getTime(); + if (minValue && time < clearTime(minValue).getTime()) { + errors.push(format(me.minText, me.formatDate(minValue))); + } + + if (maxValue && time > clearTime(maxValue).getTime()) { + errors.push(format(me.maxText, me.formatDate(maxValue))); + } + + if (disabledDays) { + day = value.getDay(); + + for(; i < len; i++) { + if (day === disabledDays[i]) { + errors.push(me.disabledDaysText); + break; + } + } + } + + fvalue = me.formatDate(value); + if (disabledDatesRE && disabledDatesRE.test(fvalue)) { + errors.push(format(me.disabledDatesText, fvalue)); + } + + return errors; + }, + + rawToValue: function(rawValue) { + return this.parseDate(rawValue) || rawValue || null; + }, + + valueToRaw: function(value) { + return this.formatDate(this.parseDate(value)); + }, + + + + + safeParse : function(value, format) { + var me = this, + utilDate = Ext.Date, + result = null, + strict = me.useStrict, + parsedDate; + + if (utilDate.formatContainsHourInfo(format)) { + + result = utilDate.parse(value, format, strict); + } else { + + parsedDate = utilDate.parse(value + ' ' + me.initTime, format + ' ' + me.initTimeFormat, strict); + if (parsedDate) { + result = utilDate.clearTime(parsedDate); + } + } + return result; + }, + + + getSubmitValue: function() { + var format = this.submitFormat || this.format, + value = this.getValue(); + + return value ? Ext.Date.format(value, format) : ''; + }, + + + parseDate : function(value) { + if(!value || Ext.isDate(value)){ + return value; + } + + var me = this, + val = me.safeParse(value, me.format), + altFormats = me.altFormats, + altFormatsArray = me.altFormatsArray, + i = 0, + len; + + if (!val && altFormats) { + altFormatsArray = altFormatsArray || altFormats.split('|'); + len = altFormatsArray.length; + for (; i < len && !val; ++i) { + val = me.safeParse(value, altFormatsArray[i]); + } + } + return val; + }, + + + formatDate : function(date){ + return Ext.isDate(date) ? Ext.Date.dateFormat(date, this.format) : date; + }, + + createPicker: function() { + var me = this, + format = Ext.String.format; + + return new Ext.picker.Date({ + pickerField: me, + ownerCt: me.ownerCt, + renderTo: document.body, + floating: true, + hidden: true, + focusOnShow: true, + minDate: me.minValue, + maxDate: me.maxValue, + disabledDatesRE: me.disabledDatesRE, + disabledDatesText: me.disabledDatesText, + disabledDays: me.disabledDays, + disabledDaysText: me.disabledDaysText, + format: me.format, + showToday: me.showToday, + startDay: me.startDay, + minText: format(me.minText, me.formatDate(me.minValue)), + maxText: format(me.maxText, me.formatDate(me.maxValue)), + listeners: { + scope: me, + select: me.onSelect + }, + keyNavConfig: { + esc: function() { + me.collapse(); + } + } + }); + }, + + onDownArrow: function(e) { + this.callParent(arguments); + if (this.isExpanded) { + this.getPicker().focus(); + } + }, + + onSelect: function(m, d) { + var me = this; + + me.setValue(d); + me.fireEvent('select', me, d); + me.collapse(); + }, + + + onExpand: function() { + var value = this.getValue(); + this.picker.setValue(Ext.isDate(value) ? value : new Date()); + }, + + + onCollapse: function() { + this.focus(false, 60); + }, + + + beforeBlur : function(){ + var me = this, + v = me.parseDate(me.getRawValue()), + focusTask = me.focusTask; + + if (focusTask) { + focusTask.cancel(); + } + + if (v) { + me.setValue(v); + } + } + + + + + +}); + + +Ext.define('Ext.form.field.FileButton', { + extend: Ext.button.Button , + alias: 'widget.filebutton', + + childEls: [ + 'btnEl', 'btnWrap', 'btnInnerEl', 'btnIconEl', 'fileInputEl' + ], + + inputCls: Ext.baseCSSPrefix + 'form-file-input', + + cls: Ext.baseCSSPrefix + 'form-file-btn', + + preventDefault: false, + + renderTpl: [ + ' {splitCls}', + '{childElCls}" unselectable="on">', + '', + '', + '{text}', + '', + 'background-image:url({iconUrl});', + 'font-family:{glyphFontFamily};">', + '&#{glyph}; ', + '', + '', + '', + '' + ], + + getTemplateArgs: function(){ + var args = this.callParent(); + args.inputCls = this.inputCls; + args.inputName = this.inputName; + return args; + }, + + afterRender: function(){ + var me = this; + me.callParent(arguments); + me.fileInputEl.on('change', me.fireChange, me); + }, + + fireChange: function(e){ + this.fireEvent('change', this, e, this.fileInputEl.dom.value); + }, + + + createFileInput : function(isTemporary) { + var me = this; + me.fileInputEl = me.el.createChild({ + name: me.inputName, + id: !isTemporary ? me.id + '-fileInputEl' : undefined, + cls: me.inputCls, + tag: 'input', + type: 'file', + size: 1 + }); + me.fileInputEl.on('change', me.fireChange, me); + }, + + reset: function(remove){ + if (remove) { + this.fileInputEl.remove(); + } + this.createFileInput(!remove); + }, + + restoreInput: function(el){ + this.fileInputEl.remove(); + el = Ext.get(el); + this.el.appendChild(el); + this.fileInputEl = el; + }, + + onDisable: function(){ + this.callParent(); + this.fileInputEl.dom.disabled = true; + }, + + onEnable : function() { + this.callParent(); + this.fileInputEl.dom.disabled = false; + } +}); + + +Ext.define('Ext.form.field.File', { + extend: Ext.form.field.Trigger , + alias: ['widget.filefield', 'widget.fileuploadfield'], + alternateClassName: ['Ext.form.FileUploadField', 'Ext.ux.form.FileUploadField', 'Ext.form.File'], + + + + + + + buttonText: 'Browse...', + + + + buttonOnly: false, + + + buttonMargin: 3, + + + clearOnSubmit: true, + + + + + + + + + + + + extraFieldBodyCls: Ext.baseCSSPrefix + 'form-file-wrap', + + + readOnly: true, + + + triggerNoEditCls: '', + + + componentLayout: 'triggerfield', + + + childEls: ['browseButtonWrap'], + + + onRender: function() { + var me = this, + id = me.id, + inputEl; + + me.callParent(arguments); + + inputEl = me.inputEl; + inputEl.dom.name = ''; + + + + + me.button = new Ext.form.field.FileButton(Ext.apply({ + renderTo: id + '-browseButtonWrap', + ownerCt: me, + ownerLayout: me.componentLayout, + id: id + '-button', + ui: me.ui, + disabled: me.disabled, + text: me.buttonText, + style: me.buttonOnly ? '' : me.getButtonMarginProp() + me.buttonMargin + 'px', + inputName: me.getName(), + listeners: { + scope: me, + change: me.onFileChange + } + }, me.buttonConfig)); + me.fileInputEl = me.button.fileInputEl; + + if (me.buttonOnly) { + me.inputCell.setDisplayed(false); + } + + + me.browseButtonWrap.dom.style.width = (me.browseButtonWrap.dom.lastChild.offsetWidth + me.button.getEl().getMargin('lr')) + 'px'; + if (Ext.isIE) { + me.button.getEl().repaint(); + } + }, + + + getTriggerMarkup: function() { + return ''; + }, + + + onFileChange: function(button, e, value) { + this.lastValue = null; + Ext.form.field.File.superclass.setValue.call(this, value); + }, + + + setValue: Ext.emptyFn, + + reset : function(){ + var me = this, + clear = me.clearOnSubmit; + if (me.rendered) { + me.button.reset(clear); + me.fileInputEl = me.button.fileInputEl; + if (clear) { + me.inputEl.dom.value = ''; + } + } + me.callParent(); + }, + + onShow: function(){ + this.callParent(); + + + this.button.updateLayout(); + }, + + onDisable: function(){ + this.callParent(); + this.button.disable(); + }, + + onEnable: function(){ + this.callParent(); + this.button.enable(); + }, + + isFileUpload: function() { + return true; + }, + + extractFileInput: function() { + var fileInput = this.button.fileInputEl.dom; + this.reset(); + return fileInput; + }, + + restoreInput: function(el) { + var button = this.button; + button.restoreInput(el); + this.fileInputEl = button.fileInputEl; + }, + + onDestroy: function(){ + Ext.destroyMembers(this, 'button'); + delete this.fileInputEl; + this.callParent(); + }, + + getButtonMarginProp: function() { + return 'margin-left:'; + } +}); + + +Ext.define('Ext.form.field.Hidden', { + extend: Ext.form.field.Base , + alias: ['widget.hiddenfield', 'widget.hidden'], + alternateClassName: 'Ext.form.Hidden', + + + inputType : 'hidden', + hideLabel: true, + hidden: true, + + initComponent: function() { + this.formItemCls += '-hidden'; + this.callParent(); + }, + + + isEqual: function(value1, value2) { + return this.isEqualAsString(value1, value2); + }, + + + initEvents: Ext.emptyFn, + setSize : Ext.emptyFn, + setWidth : Ext.emptyFn, + setHeight : Ext.emptyFn, + setPosition : Ext.emptyFn, + setPagePosition : Ext.emptyFn, + markInvalid : Ext.emptyFn, + clearInvalid : Ext.emptyFn +}); + + +Ext.define('Ext.picker.Color', { + extend: Ext.Component , + + alias: 'widget.colorpicker', + alternateClassName: 'Ext.ColorPalette', + + + componentCls : Ext.baseCSSPrefix + 'color-picker', + + + selectedCls: Ext.baseCSSPrefix + 'color-picker-selected', + + + itemCls: Ext.baseCSSPrefix + 'color-picker-item', + + + value : null, + + + clickEvent :'click', + + + 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' + ], + + + + + + colorRe: /(?:^|\s)color-(.{6})(?:\s|$)/, + + renderTpl: [ + '', + '', + ' ', + '', + '' + ], + + + initComponent : function(){ + var me = this; + + me.callParent(arguments); + me.addEvents( + + 'select' + ); + + if (me.handler) { + me.on('select', me.handler, me.scope, true); + } + }, + + + + initRenderData : function(){ + var me = this; + return Ext.apply(me.callParent(), { + itemCls: me.itemCls, + colors: me.colors + }); + }, + + onRender : function(){ + var me = this, + clickEvent = me.clickEvent; + + me.callParent(arguments); + + me.mon(me.el, clickEvent, me.handleClick, me, {delegate: 'a'}); + + if(clickEvent != 'click'){ + me.mon(me.el, 'click', Ext.emptyFn, me, {delegate: 'a', stopEvent: true}); + } + }, + + + afterRender : function(){ + var me = this, + value; + + me.callParent(arguments); + if (me.value) { + value = me.value; + me.value = null; + me.select(value, true); + } + }, + + + handleClick : function(event, target){ + var me = this, + color; + + event.stopEvent(); + if (!me.disabled) { + color = target.className.match(me.colorRe)[1]; + me.select(color.toUpperCase()); + } + }, + + + select : function(color, suppressEvent){ + + var me = this, + selectedCls = me.selectedCls, + value = me.value, + el; + + color = color.replace('#', ''); + if (!me.rendered) { + me.value = color; + return; + } + + + if (color != value || me.allowReselect) { + el = me.el; + + if (me.value) { + el.down('a.color-' + value).removeCls(selectedCls); + } + el.down('a.color-' + color).addCls(selectedCls); + me.value = color; + if (suppressEvent !== true) { + me.fireEvent('select', me, color); + } + } + }, + + + clear: function(){ + var me = this, + value = me.value, + el; + + if (value && me.rendered) { + el = me.el.down('a.color-' + value); + el.removeCls(me.selectedCls); + } + me.value = null; + }, + + + getValue: function(){ + return this.value || null; + } +}); + + +Ext.define('Ext.layout.component.field.HtmlEditor', { + extend: Ext.layout.component.field.FieldContainer , + alias: ['layout.htmleditor'], + + type: 'htmleditor', + + naturalHeight: 150, + naturalWidth: 300, + + beginLayout: function(ownerContext) { + var owner = this.owner, + dom; + + + + + if (Ext.isGecko) { + dom = owner.textareaEl.dom; + this.lastValue = dom.value; + dom.value = ''; + } + this.callParent(arguments); + + ownerContext.toolbarContext = ownerContext.context.getCmp(owner.toolbar); + ownerContext.inputCmpContext = ownerContext.context.getCmp(owner.inputCmp); + ownerContext.textAreaContext = ownerContext.getEl('textareaEl'); + ownerContext.iframeContext = ownerContext.getEl('iframeEl'); + }, + + beginLayoutCycle: function(ownerContext) { + var me = this, + widthModel = ownerContext.widthModel, + heightModel = ownerContext.heightModel, + owner = me.owner, + iframeEl = owner.iframeEl, + textareaEl = owner.textareaEl; + + me.callParent(arguments); + if (widthModel.shrinkWrap) { + iframeEl.setStyle('width', ''); + textareaEl.setStyle('width', ''); + } else if (widthModel.natural) { + ownerContext.bodyCellContext.setWidth(me.naturalWidth); + } + + if (heightModel.natural || heightModel.shrinkWrap) { + iframeEl.setHeight(me.naturalHeight); + textareaEl.setHeight(me.naturalHeight); + } + }, + + finishedLayout: function(){ + var owner = this.owner; + + this.callParent(arguments); + + + if (Ext.isIE9m && Ext.isIEQuirks) { + owner.el.repaint(); + } + if (Ext.isGecko) { + owner.textareaEl.dom.value = this.lastValue; + } + }, + + publishOwnerWidth: function(ownerContext, width){ + this.callParent(arguments); + width -= ownerContext.inputCmpContext.getBorderInfo().width; + ownerContext.textAreaContext.setWidth(width); + ownerContext.iframeContext.setWidth(width); + }, + + + + + + + + publishInnerWidth: function(ownerContext, width){ + var border = ownerContext.inputCmpContext.getBorderInfo().width, + ieBug = Ext.isStrict && Ext.isIE8m, + natural = ownerContext.widthModel.natural; + + this.callParent(arguments); + width = ownerContext.bodyCellContext.props.width - border; + if (natural) { + if (ieBug) { + width -= 2; + } + ownerContext.textAreaContext.setWidth(width); + ownerContext.iframeContext.setWidth(width); + } else if (ieBug) { + ownerContext.textAreaContext.setWidth(width); + } + }, + + publishInnerHeight: function (ownerContext, height) { + var toolbarHeight = ownerContext.toolbarContext.getProp('height'), + sourceEdit = this.owner.sourceEditMode; + + this.callParent(arguments); + height = ownerContext.bodyCellContext.props.height; + + if (toolbarHeight !== undefined) { + height -= toolbarHeight + ownerContext.inputCmpContext.getFrameInfo().height; + if (Ext.isIE8 && Ext.isStrict) { + height -= 2; + } else if (Ext.isIEQuirks && (Ext.isIE8 || Ext.isIE9)) { + height -= 4; + } + ownerContext.iframeContext.setHeight(height); + ownerContext.textAreaContext.setHeight(height); + } else { + this.done = false; + } + } + +}); + + +Ext.define('Ext.form.field.HtmlEditor', { + extend: Ext.form.FieldContainer , + mixins: { + field: Ext.form.field.Field + }, + alias: 'widget.htmleditor', + alternateClassName: 'Ext.form.HtmlEditor', + + + + + + + + + + + componentLayout: 'htmleditor', + + componentTpl: [ + '{beforeTextAreaTpl}', + '', + '{afterTextAreaTpl}', + '{beforeIFrameTpl}', + '', + '{afterIFrameTpl}', + { + disableFormats: true + } + ], + + stretchInputElFixed: true, + + subTplInsertions: [ + + 'beforeTextAreaTpl', + + + 'afterTextAreaTpl', + + + 'beforeIFrameTpl', + + + 'afterIFrameTpl', + + + 'iframeAttrTpl', + + + 'inputAttrTpl' + ], + + + enableFormat: true, + + enableFontSize: true, + + enableColors: true, + + enableAlignments: true, + + enableLists: true, + + enableSourceEdit: true, + + enableLinks: true, + + enableFont: true, + + + createLinkText: 'Please enter the URL for the link:', + + + defaultLinkValue: 'http:/'+'/', + + fontFamilies: [ + 'Arial', + 'Courier New', + 'Tahoma', + 'Times New Roman', + 'Verdana' + ], + + defaultValue: (Ext.isOpera || Ext.isIE6) ? ' ' : '​', + + + extraFieldBodyCls: Ext.baseCSSPrefix + 'html-editor-wrap', + + + + + initialized: false, + + activated: false, + + sourceEditMode: false, + + iframePad:3, + + hideMode:'offsets', + + maskOnDisable: true, + + containerElCls: Ext.baseCSSPrefix + 'html-editor-container', + + + initComponent: function(){ + var me = this; + + me.addEvents( + + 'initialize', + + 'activate', + + 'beforesync', + + 'beforepush', + + 'sync', + + 'push', + + 'editmodechange' + ); + + me.items = [me.createToolbar(), me.createInputCmp()]; + + me.layout = { + type: 'vbox', + align: 'stretch' + }; + + me.callParent(arguments); + me.initField(); + }, + + createInputCmp: function(){ + this.inputCmp = Ext.widget(this.getInputCmpCfg()); + return this.inputCmp; + }, + + getInputCmpCfg: function(){ + var me = this, + id = me.id + '-inputCmp', + data = { + id : id, + name : me.name, + textareaCls : Ext.baseCSSPrefix + 'hidden', + value : me.value, + iframeName : Ext.id(), + iframeSrc : Ext.SSL_SECURE_URL, + iframeCls : Ext.baseCSSPrefix + 'htmleditor-iframe' + }; + + me.getInsertionRenderData(data, me.subTplInsertions); + + return { + flex: 1, + xtype: 'component', + tpl: me.getTpl('componentTpl'), + childEls: ['iframeEl', 'textareaEl'], + id: id, + cls: Ext.baseCSSPrefix + 'html-editor-input', + data: data + }; + }, + + + createToolbar: function(){ + this.toolbar = Ext.widget(this.getToolbarCfg()); + return this.toolbar; + }, + + getToolbarCfg: function(){ + var me = this, + items = [], i, + tipsEnabled = Ext.quickTipsActive && Ext.tip.QuickTipManager.isEnabled(), + baseCSSPrefix = Ext.baseCSSPrefix, + fontSelectItem, undef; + + function btn(id, toggle, handler){ + return { + itemId: id, + cls: baseCSSPrefix + 'btn-icon', + iconCls: baseCSSPrefix + 'edit-'+id, + enableToggle:toggle !== false, + scope: me, + handler:handler||me.relayBtnCmd, + clickEvent: 'mousedown', + tooltip: tipsEnabled ? me.buttonTips[id] || undef : undef, + overflowText: me.buttonTips[id].title || undef, + tabIndex: -1 + }; + } + + + if (me.enableFont && !Ext.isSafari2) { + fontSelectItem = Ext.widget('component', { + itemId: 'fontSelect', + renderTpl: [ + '' + ], + childEls: ['selectEl'], + afterRender: function() { + me.fontSelect = this.selectEl; + Ext.Component.prototype.afterRender.apply(this, arguments); + }, + onDisable: function() { + var selectEl = this.selectEl; + if (selectEl) { + selectEl.dom.disabled = true; + } + Ext.Component.prototype.onDisable.apply(this, arguments); + }, + onEnable: function() { + var selectEl = this.selectEl; + if (selectEl) { + selectEl.dom.disabled = false; + } + Ext.Component.prototype.onEnable.apply(this, arguments); + }, + listeners: { + change: function() { + me.win.focus(); + me.relayCmd('fontName', me.fontSelect.dom.value); + me.deferFocus(); + }, + element: 'selectEl' + } + }); + + items.push( + fontSelectItem, + '-' + ); + } + + if (me.enableFormat) { + items.push( + btn('bold'), + btn('italic'), + btn('underline') + ); + } + + if (me.enableFontSize) { + items.push( + '-', + btn('increasefontsize', false, me.adjustFont), + btn('decreasefontsize', false, me.adjustFont) + ); + } + + if (me.enableColors) { + items.push( + '-', { + itemId: 'forecolor', + cls: baseCSSPrefix + 'btn-icon', + iconCls: baseCSSPrefix + 'edit-forecolor', + overflowText: me.buttonTips.forecolor.title, + tooltip: tipsEnabled ? me.buttonTips.forecolor || undef : undef, + tabIndex:-1, + menu: Ext.widget('menu', { + plain: true, + + items: [{ + xtype: 'colorpicker', + allowReselect: true, + focus: Ext.emptyFn, + value: '000000', + plain: true, + clickEvent: 'mousedown', + handler: function(cp, color) { + me.relayCmd('forecolor', Ext.isWebKit || Ext.isIE ? '#'+color : color); + this.up('menu').hide(); + } + }] + }) + }, { + itemId: 'backcolor', + cls: baseCSSPrefix + 'btn-icon', + iconCls: baseCSSPrefix + 'edit-backcolor', + overflowText: me.buttonTips.backcolor.title, + tooltip: tipsEnabled ? me.buttonTips.backcolor || undef : undef, + tabIndex:-1, + menu: Ext.widget('menu', { + plain: true, + + items: [{ + xtype: 'colorpicker', + focus: Ext.emptyFn, + value: 'FFFFFF', + plain: true, + allowReselect: true, + clickEvent: 'mousedown', + handler: function(cp, color) { + if (Ext.isGecko) { + me.execCmd('useCSS', false); + me.execCmd('hilitecolor', '#'+color); + me.execCmd('useCSS', true); + me.deferFocus(); + } else { + me.relayCmd(Ext.isOpera ? 'hilitecolor' : 'backcolor', Ext.isWebKit || Ext.isIE || Ext.isOpera ? '#'+color : color); + } + this.up('menu').hide(); + } + }] + }) + } + ); + } + + if (me.enableAlignments) { + items.push( + '-', + btn('justifyleft'), + btn('justifycenter'), + btn('justifyright') + ); + } + + if (!Ext.isSafari2) { + if (me.enableLinks) { + items.push( + '-', + btn('createlink', false, me.createLink) + ); + } + + if (me.enableLists) { + items.push( + '-', + btn('insertorderedlist'), + btn('insertunorderedlist') + ); + } + if (me.enableSourceEdit) { + items.push( + '-', + btn('sourceedit', true, function(btn){ + me.toggleSourceEdit(!me.sourceEditMode); + }) + ); + } + } + + + for (i = 0; i < items.length; i++) { + if (items[i].itemId !== 'sourceedit') { + items[i].disabled = true; + } + } + + + + return { + xtype: 'toolbar', + defaultButtonUI: me.defaultButtonUI, + cls: Ext.baseCSSPrefix + 'html-editor-tb', + enableOverflow: true, + items: items, + + + listeners: { + click: function(e){ + e.preventDefault(); + }, + element: 'el' + } + }; + }, + + getMaskTarget: function(){ + + + return Ext.isGecko ? this.inputCmp.el : this.bodyEl; + }, + + + setReadOnly: function(readOnly) { + var me = this, + textareaEl = me.textareaEl, + iframeEl = me.iframeEl, + body; + + me.readOnly = readOnly; + + if (textareaEl) { + textareaEl.dom.readOnly = readOnly; + } + + if (me.initialized) { + body = me.getEditorBody(); + if (Ext.isIE) { + + iframeEl.setDisplayed(false); + body.contentEditable = !readOnly; + iframeEl.setDisplayed(true); + } else { + me.setDesignMode(!readOnly); + } + if (body) { + body.style.cursor = readOnly ? 'default' : 'text'; + } + me.disableItems(readOnly); + } + }, + + + getDocMarkup: function() { + var me = this, + h = me.iframeEl.getHeight() - me.iframePad * 2, + oldIE = Ext.isIE8m; + + + + + return Ext.String.format( + (oldIE ? '' : '') + + '' + , me.iframePad, h, me.defaultFont); + }, + + + getEditorBody: function() { + var doc = this.getDoc(); + return doc.body || doc.documentElement; + }, + + + getDoc: function() { + return (!Ext.isIE && this.iframeEl.dom.contentDocument) || this.getWin().document; + }, + + + getWin: function() { + return Ext.isIE ? this.iframeEl.dom.contentWindow : window.frames[this.iframeEl.dom.name]; + }, + + initDefaultFont: function(){ + + + + + + var me = this, + selIdx = 0, + fonts, font, select, + option, i, len, lower; + + if (!me.defaultFont) { + font = me.textareaEl.getStyle('font-family'); + font = Ext.String.capitalize(font.split(',')[0]); + fonts = Ext.Array.clone(me.fontFamilies); + Ext.Array.include(fonts, font); + fonts.sort(); + me.defaultFont = font; + + select = me.down('#fontSelect').selectEl.dom; + for (i = 0, len = fonts.length; i < len; ++i) { + font = fonts[i]; + lower = font.toLowerCase(); + option = new Option(font, lower); + if (font == me.defaultFont) { + selIdx = i; + } + option.style.fontFamily = lower; + + if (Ext.isIE) { + select.add(option); + } else { + select.options.add(option); + } + } + + + select.options[selIdx].selected = true; + } + }, + + isEqual: function(value1, value2){ + return this.isEqualAsString(value1, value2); + }, + + + afterRender: function() { + var me = this, + inputCmp = me.inputCmp; + + me.callParent(arguments); + + me.iframeEl = inputCmp.iframeEl; + me.textareaEl = inputCmp.textareaEl; + + + + me.inputEl = me.iframeEl; + + if (me.enableFont) { + me.initDefaultFont(); + } + + + me.monitorTask = Ext.TaskManager.start({ + run: me.checkDesignMode, + scope: me, + interval: 100 + }); + me.relayCmd('fontName', me.defaultFont); + }, + + initFrameDoc: function() { + var me = this, + doc, task; + + Ext.TaskManager.stop(me.monitorTask); + + doc = me.getDoc(); + me.win = me.getWin(); + + doc.open(); + doc.write(me.getDocMarkup()); + doc.close(); + + task = { + run: function() { + var doc = me.getDoc(); + if (doc.body || doc.readyState === 'complete') { + Ext.TaskManager.stop(task); + me.setDesignMode(true); + Ext.defer(me.initEditor, 10, me); + } + }, + interval: 10, + duration:10000, + scope: me + }; + Ext.TaskManager.start(task); + }, + + checkDesignMode: function() { + var me = this, + doc = me.getDoc(); + if (doc && (!doc.editorInitialized || me.getDesignMode() !== 'on')) { + me.initFrameDoc(); + } + }, + + + setDesignMode: function(mode) { + var me = this, + doc = me.getDoc(); + if (doc) { + if (me.readOnly) { + mode = false; + } + doc.designMode = (/on|true/i).test(String(mode).toLowerCase()) ?'on':'off'; + } + }, + + + getDesignMode: function() { + var doc = this.getDoc(); + return !doc ? '' : String(doc.designMode).toLowerCase(); + }, + + disableItems: function(disabled) { + var items = this.getToolbar().items.items, + i, + iLen = items.length, + item; + + for (i = 0; i < iLen; i++) { + item = items[i]; + + if (item.getItemId() !== 'sourceedit') { + item.setDisabled(disabled); + } + } + }, + + + toggleSourceEdit: function(sourceEditMode) { + var me = this, + iframe = me.iframeEl, + textarea = me.textareaEl, + hiddenCls = Ext.baseCSSPrefix + 'hidden', + btn = me.getToolbar().getComponent('sourceedit'); + + if (!Ext.isBoolean(sourceEditMode)) { + sourceEditMode = !me.sourceEditMode; + } + me.sourceEditMode = sourceEditMode; + + if (btn.pressed !== sourceEditMode) { + btn.toggle(sourceEditMode); + } + if (sourceEditMode) { + me.disableItems(true); + me.syncValue(); + iframe.addCls(hiddenCls); + textarea.removeCls(hiddenCls); + textarea.dom.removeAttribute('tabIndex'); + textarea.focus(); + me.inputEl = textarea; + } else { + if (me.initialized) { + me.disableItems(me.readOnly); + } + me.pushValue(); + iframe.removeCls(hiddenCls); + textarea.addCls(hiddenCls); + textarea.dom.setAttribute('tabIndex', -1); + me.deferFocus(); + me.inputEl = iframe; + } + me.fireEvent('editmodechange', me, sourceEditMode); + me.updateLayout(); + }, + + + createLink: function() { + var url = prompt(this.createLinkText, this.defaultLinkValue); + if (url && url !== 'http:/'+'/') { + this.relayCmd('createlink', url); + } + }, + + clearInvalid: Ext.emptyFn, + + setValue: function(value) { + var me = this, + textarea = me.textareaEl, + inputCmp = me.inputCmp; + + me.mixins.field.setValue.call(me, value); + if (value === null || value === undefined) { + value = ''; + } + if (textarea) { + textarea.dom.value = value; + } + me.pushValue(); + + if (!me.rendered && me.inputCmp) { + me.inputCmp.data.value = value; + } + + return me; + }, + + + cleanHtml: function(html) { + html = String(html); + if (Ext.isWebKit) { + html = html.replace(/\sclass="(?:Apple-style-span|Apple-tab-span|khtml-block-placeholder)"/gi, ''); + } + + + if (html.charCodeAt(0) === parseInt(this.defaultValue.replace(/\D/g, ''), 10)) { + html = html.substring(1); + } + + return html; + }, + + + syncValue: function(){ + var me = this, + body, changed, html, bodyStyle, match, textElDom; + + if (me.initialized) { + body = me.getEditorBody(); + html = body.innerHTML; + textElDom = me.textareaEl.dom; + + if (Ext.isWebKit) { + bodyStyle = body.getAttribute('style'); + match = bodyStyle.match(/text-align:(.*?);/i); + if (match && match[1]) { + html = '
' + html + '
'; + } + } + + html = me.cleanHtml(html); + + if (me.fireEvent('beforesync', me, html) !== false) { + + + if (Ext.isGecko && textElDom.value === '' && html === '
') { + html = ''; + } + + if (textElDom.value !== html) { + textElDom.value = html; + changed = true; + } + + me.fireEvent('sync', me, html); + + if (changed) { + + + me.checkChange(); + } + } + } + }, + + getValue: function() { + var me = this, + value; + if (!me.sourceEditMode) { + me.syncValue(); + } + value = me.rendered ? me.textareaEl.dom.value : me.value; + me.value = value; + return value; + }, + + + pushValue: function() { + var me = this, + v; + if(me.initialized){ + v = me.textareaEl.dom.value || ''; + if (!me.activated && v.length < 1) { + v = me.defaultValue; + } + if (me.fireEvent('beforepush', me, v) !== false) { + me.getEditorBody().innerHTML = v; + if (Ext.isGecko) { + + me.setDesignMode(false); + me.setDesignMode(true); + } + me.fireEvent('push', me, v); + } + } + }, + + + deferFocus: function(){ + this.focus(false, true); + }, + + getFocusEl: function() { + var me = this, + win = me.win; + return win && !me.sourceEditMode ? win : me.textareaEl; + }, + + focus: function(selectText, delay) { + var me = this, + value, focusEl; + + if (delay) { + if (!me.focusTask) { + me.focusTask = new Ext.util.DelayedTask(me.focus); + } + me.focusTask.delay(Ext.isNumber(delay) ? delay : 10, null, me, [selectText, false]); + } + else { + if (selectText) { + if (me.textareaEl && me.textareaEl.dom) { + value = me.textareaEl.dom.value; + } + if (value && value.length) { + me.execCmd('selectall', true); + } + } + focusEl = me.getFocusEl(); + if (focusEl && focusEl.focus) { + focusEl.focus(); + } + } + return me; + }, + + + initEditor: function(){ + + try { + var me = this, + dbody = me.getEditorBody(), + ss = me.textareaEl.getStyles('font-size', 'font-family', 'background-image', 'background-repeat', 'background-color', 'color'), + doc, + fn; + + ss['background-attachment'] = 'fixed'; + dbody.bgProperties = 'fixed'; + + Ext.DomHelper.applyStyles(dbody, ss); + + doc = me.getDoc(); + + if (doc) { + try { + Ext.EventManager.removeAll(doc); + } catch(e) {} + } + + + fn = Ext.Function.bind(me.onEditorEvent, me); + Ext.EventManager.on(doc, { + mousedown: fn, + dblclick: fn, + click: fn, + keyup: fn, + buffer:100 + }); + + + + + + + fn = me.onRelayedEvent; + Ext.EventManager.on(doc, { + mousedown: fn, + mousemove: fn, + mouseup: fn, + click: fn, + dblclick: fn, + scope: me + }); + + if (Ext.isGecko) { + Ext.EventManager.on(doc, 'keypress', me.applyCommand, me); + } + + if (me.fixKeys) { + Ext.EventManager.on(doc, 'keydown', me.fixKeys, me); + } + if (me.fixKeysAfter) { + Ext.EventManager.on(doc, 'keyup', me.fixKeysAfter, me); + } + + if (Ext.isIE9 && Ext.isStrict) { + Ext.EventManager.on(doc.documentElement, 'focus', me.focus, me); + } + + + + + if (Ext.isIE8m || (Ext.isIE9 && !Ext.isStrict)) { + Ext.EventManager.on(doc, 'focusout', function() { + me.savedSelection = doc.selection.type !== 'None' ? doc.selection.createRange() : null; + }, me); + + Ext.EventManager.on(doc, 'focusin', function() { + if (me.savedSelection) { + me.savedSelection.select(); + } + }, me); + } + + + Ext.EventManager.onWindowUnload(me.beforeDestroy, me); + doc.editorInitialized = true; + + me.initialized = true; + me.pushValue(); + me.setReadOnly(me.readOnly); + me.fireEvent('initialize', me); + } catch(ex) { + + } + }, + + + beforeDestroy: function(){ + var me = this, + monitorTask = me.monitorTask, + doc, prop; + + if (monitorTask) { + Ext.TaskManager.stop(monitorTask); + } + if (me.rendered) { + Ext.EventManager.removeUnloadListener(me.beforeDestroy, me); + try { + doc = me.getDoc(); + if (doc) { + + + + + + Ext.EventManager.removeAll(Ext.fly(doc)); + for (prop in doc) { + if (doc.hasOwnProperty && doc.hasOwnProperty(prop)) { + delete doc[prop]; + } + } + } + } catch(e) { + + } + delete me.iframeEl; + delete me.textareaEl; + delete me.toolbar; + delete me.inputCmp; + } + me.callParent(); + }, + + + onRelayedEvent: function (event) { + + + var iframeEl = this.iframeEl, + + + iframeXY = Ext.Element.getTrueXY(iframeEl), + originalEventXY = event.getXY(), + + + + + eventXY = Ext.EventManager.getPageXY(event.browserEvent); + + + + event.xy = [iframeXY[0] + eventXY[0], iframeXY[1] + eventXY[1]]; + + event.injectEvent(iframeEl); + + event.xy = originalEventXY; + }, + + + onFirstFocus: function(){ + var me = this, + selection, range; + me.activated = true; + me.disableItems(me.readOnly); + if (Ext.isGecko) { + me.win.focus(); + selection = me.win.getSelection(); + if (!selection.focusNode || selection.focusNode.nodeType !== 3) { + range = selection.getRangeAt(0); + range.selectNodeContents(me.getEditorBody()); + range.collapse(true); + me.deferFocus(); + } + try { + me.execCmd('useCSS', true); + me.execCmd('styleWithCSS', false); + } catch(e) { + + } + } + me.fireEvent('activate', me); + }, + + + adjustFont: function(btn) { + var adjust = btn.getItemId() === 'increasefontsize' ? 1 : -1, + size = this.getDoc().queryCommandValue('FontSize') || '2', + isPxSize = Ext.isString(size) && size.indexOf('px') !== -1, + isSafari; + size = parseInt(size, 10); + if (isPxSize) { + + + if (size <= 10) { + size = 1 + adjust; + } + else if (size <= 13) { + size = 2 + adjust; + } + else if (size <= 16) { + size = 3 + adjust; + } + else if (size <= 18) { + size = 4 + adjust; + } + else if (size <= 24) { + size = 5 + adjust; + } + else { + size = 6 + adjust; + } + size = Ext.Number.constrain(size, 1, 6); + } else { + isSafari = Ext.isSafari; + if (isSafari) { + adjust *= 2; + } + size = Math.max(1, size + adjust) + (isSafari ? 'px' : 0); + } + this.relayCmd('FontSize', size); + }, + + + onEditorEvent: function(e) { + this.updateToolbar(); + }, + + + updateToolbar: function() { + var me = this, + i, l, btns, doc, name, queriedName, fontSelect, + toolbarSubmenus; + + if (me.readOnly) { + return; + } + + if (!me.activated) { + me.onFirstFocus(); + return; + } + + btns = me.getToolbar().items.map; + doc = me.getDoc(); + + if (me.enableFont && !Ext.isSafari2) { + + + queriedName = doc.queryCommandValue('fontName'); + name = (queriedName ? queriedName.split(",")[0].replace(/^'/,'').replace(/'$/,'') : me.defaultFont).toLowerCase(); + fontSelect = me.fontSelect.dom; + if (name !== fontSelect.value || name != queriedName) { + fontSelect.value = name; + } + } + + function updateButtons() { + var state; + + for (i = 0, l = arguments.length, name; i < l; i++) { + name = arguments[i]; + + + + try { + state = doc.queryCommandState(name); + } + catch (e) { + state = false; + } + + btns[name].toggle(state); + } + } + if(me.enableFormat){ + updateButtons('bold', 'italic', 'underline'); + } + if(me.enableAlignments){ + updateButtons('justifyleft', 'justifycenter', 'justifyright'); + } + if(!Ext.isSafari2 && me.enableLists){ + updateButtons('insertorderedlist', 'insertunorderedlist'); + } + + + + toolbarSubmenus = me.toolbar.query('menu'); + for (i = 0; i < toolbarSubmenus.length; i++) { + toolbarSubmenus[i].hide(); + } + me.syncValue(); + }, + + + relayBtnCmd: function(btn) { + this.relayCmd(btn.getItemId()); + }, + + + relayCmd: function(cmd, value) { + Ext.defer(function() { + var me = this; + + if (!this.isDestroyed) { + me.win.focus(); + me.execCmd(cmd, value); + me.updateToolbar(); + } + }, 10, this); + }, + + + execCmd: function(cmd, value){ + var me = this, + doc = me.getDoc(); + doc.execCommand(cmd, false, (value == undefined ? null : value)); + me.syncValue(); + }, + + + applyCommand: function(e){ + if (e.ctrlKey) { + var me = this, + c = e.getCharCode(), cmd; + if (c > 0) { + c = String.fromCharCode(c); + switch (c) { + case 'b': + cmd = 'bold'; + break; + case 'i': + cmd = 'italic'; + break; + case 'u': + cmd = 'underline'; + break; + } + if (cmd) { + me.win.focus(); + me.execCmd(cmd); + me.deferFocus(); + e.preventDefault(); + } + } + } + }, + + + insertAtCursor: function(text){ + var me = this, + range; + + if (me.activated) { + me.win.focus(); + if (Ext.isIE) { + range = me.getDoc().selection.createRange(); + if (range) { + range.pasteHTML(text); + me.syncValue(); + me.deferFocus(); + } + }else{ + me.execCmd('InsertHTML', text); + me.deferFocus(); + } + } + }, + + + fixKeys: (function() { + if (Ext.isIE) { + return function(e){ + var me = this, + k = e.getKey(), + doc = me.getDoc(), + readOnly = me.readOnly, + range, target; + + if (k === e.TAB) { + e.stopEvent(); + if (!readOnly) { + range = doc.selection.createRange(); + if (range){ + if (range.collapse) { + range.collapse(true); + range.pasteHTML('    '); + } + + me.deferFocus(); + } + } + } + else if (k === e.ENTER) { + if (!readOnly) { + range = doc.selection.createRange(); + if (range) { + target = range.parentElement(); + if(!target || target.tagName.toLowerCase() !== 'li'){ + e.stopEvent(); + range.pasteHTML('
'); + range.collapse(false); + range.select(); + } + } + } + } + }; + } + + if (Ext.isOpera) { + return function(e){ + var me = this, + k = e.getKey(), + readOnly = me.readOnly; + if (k === e.TAB) { + e.stopEvent(); + if (!readOnly) { + me.win.focus(); + me.execCmd('InsertHTML','    '); + me.deferFocus(); + } + } + }; + } + + return null; + }()), + + + fixKeysAfter: (function() { + if (Ext.isIE) { + return function(e) { + var me = this, + k = e.getKey(), + doc = me.getDoc(), + readOnly = me.readOnly, + innerHTML; + + if (!readOnly && (k === e.BACKSPACE || k === e.DELETE)) { + innerHTML = doc.body.innerHTML; + + + + + + + + + + + + + + + if (innerHTML === '

 

' || innerHTML === '

 

') { + doc.body.innerHTML = ''; + } + } + } + } + + return null; + }()), + + + getToolbar: function(){ + return this.toolbar; + }, + + + + buttonTips: { + bold: { + title: 'Bold (Ctrl+B)', + text: 'Make the selected text bold.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + italic: { + title: 'Italic (Ctrl+I)', + text: 'Make the selected text italic.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + underline: { + title: 'Underline (Ctrl+U)', + text: 'Underline the selected text.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + increasefontsize: { + title: 'Grow Text', + text: 'Increase the font size.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + decreasefontsize: { + title: 'Shrink Text', + text: 'Decrease the font size.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + backcolor: { + title: 'Text Highlight Color', + text: 'Change the background color of the selected text.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + forecolor: { + title: 'Font Color', + text: 'Change the color of the selected text.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + justifyleft: { + title: 'Align Text Left', + text: 'Align text to the left.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + justifycenter: { + title: 'Center Text', + text: 'Center text in the editor.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + justifyright: { + title: 'Align Text Right', + text: 'Align text to the right.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + insertunorderedlist: { + title: 'Bullet List', + text: 'Start a bulleted list.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + insertorderedlist: { + title: 'Numbered List', + text: 'Start a numbered list.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + createlink: { + title: 'Hyperlink', + text: 'Make the selected text a hyperlink.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + }, + sourceedit: { + title: 'Source Edit', + text: 'Switch to source editing mode.', + cls: Ext.baseCSSPrefix + 'html-editor-tip' + } + } + + + + + + + + + + + + + + + + + + +}); + + +Ext.define('Ext.picker.Time', { + extend: Ext.view.BoundList , + alias: 'widget.timepicker', + + + + + + + + increment: 15, + + + + format : "g:i A", + + + + displayField: 'disp', + + + initDate: [2008,0,1], + + componentCls: Ext.baseCSSPrefix + 'timepicker', + + + loadMask: false, + + initComponent: function() { + var me = this, + dateUtil = Ext.Date, + clearTime = dateUtil.clearTime, + initDate = me.initDate; + + + me.absMin = clearTime(new Date(initDate[0], initDate[1], initDate[2])); + me.absMax = dateUtil.add(clearTime(new Date(initDate[0], initDate[1], initDate[2])), 'mi', (24 * 60) - 1); + + me.store = me.createStore(); + + + + me.store.addFilter(me.rangeFilter = new Ext.util.Filter({ + id: 'time-picker-filter' + }), false); + + + me.updateList(); + + me.callParent(); + }, + + + setMinValue: function(value) { + this.minValue = value; + this.updateList(); + }, + + + setMaxValue: function(value) { + this.maxValue = value; + this.updateList(); + }, + + + normalizeDate: function(date) { + var initDate = this.initDate; + date.setFullYear(initDate[0], initDate[1], initDate[2]); + return date; + }, + + + updateList: function() { + var me = this, + min = me.normalizeDate(me.minValue || me.absMin), + max = me.normalizeDate(me.maxValue || me.absMax); + + me.rangeFilter.setFilterFn(function(record) { + var date = record.get('date'); + return date >= min && date <= max; + }); + me.store.filter(); + }, + + + createStore: function() { + var me = this, + utilDate = Ext.Date, + times = [], + min = me.absMin, + max = me.absMax; + + while(min <= max){ + times.push({ + disp: utilDate.dateFormat(min, me.format), + date: min + }); + min = utilDate.add(min, 'mi', me.increment); + } + + return new Ext.data.Store({ + fields: ['disp', 'date'], + data: times + }); + }, + + focusNode: function (rec) { + + + return false; + } + +}); + + +Ext.define('Ext.form.field.Time', { + extend: Ext.form.field.ComboBox , + alias: 'widget.timefield', + + alternateClassName: ['Ext.form.TimeField', 'Ext.form.Time'], + + + triggerCls: Ext.baseCSSPrefix + 'form-time-trigger', + + + + + + + + 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, + + + pickerMaxHeight: 300, + + + selectOnTab: true, + + + snapToIncrement: false, + + + initDate: '1/1/2008', + initDateFormat: 'j/n/Y', + + ignoreSelection: 0, + + queryMode: 'local', + + displayField: 'disp', + + valueField: 'date', + + initComponent: function() { + var me = this, + min = me.minValue, + max = me.maxValue; + if (min) { + me.setMinValue(min); + } + if (max) { + me.setMaxValue(max); + } + me.displayTpl = new Ext.XTemplate( + '' + + '{[typeof values === "string" ? values : this.formatDate(values["' + me.displayField + '"])]}' + + '' + me.delimiter + '' + + '', { + formatDate: Ext.Function.bind(me.formatDate, me) + }); + this.callParent(); + }, + + + transformOriginalValue: function(value) { + if (Ext.isString(value)) { + return this.rawToValue(value); + } + return value; + }, + + + isEqual: function(v1, v2) { + return Ext.Date.isEqual(v1, v2); + }, + + + setMinValue: function(value) { + var me = this, + picker = me.picker; + me.setLimit(value, true); + if (picker) { + picker.setMinValue(me.minValue); + } + }, + + + setMaxValue: function(value) { + var me = this, + picker = me.picker; + me.setLimit(value, false); + if (picker) { + picker.setMaxValue(me.maxValue); + } + }, + + + setLimit: function(value, isMin) { + var me = this, + d, val; + if (Ext.isString(value)) { + d = me.parseDate(value); + } + else if (Ext.isDate(value)) { + d = value; + } + if (d) { + val = Ext.Date.clearTime(new Date(me.initDate)); + val.setHours(d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()); + } + + else { + val = null; + } + me[isMin ? 'minValue' : 'maxValue'] = val; + }, + + rawToValue: function(rawValue) { + return this.parseDate(rawValue) || rawValue || null; + }, + + valueToRaw: function(value) { + return this.formatDate(this.parseDate(value)); + }, + + + getErrors: function(value) { + var me = this, + format = Ext.String.format, + errors = me.callParent(arguments), + minValue = me.minValue, + maxValue = me.maxValue, + date; + + value = me.formatDate(value || me.processRawValue(me.getRawValue())); + + if (value === null || value.length < 1) { + return errors; + } + + date = me.parseDate(value); + if (!date) { + errors.push(format(me.invalidText, value, Ext.Date.unescapeFormat(me.format))); + return errors; + } + + if (minValue && date < minValue) { + errors.push(format(me.minText, me.formatDate(minValue))); + } + + if (maxValue && date > maxValue) { + errors.push(format(me.maxText, me.formatDate(maxValue))); + } + + return errors; + }, + + formatDate: function() { + return Ext.form.field.Date.prototype.formatDate.apply(this, arguments); + }, + + + parseDate: function(value) { + var me = this, + val = value, + altFormats = me.altFormats, + altFormatsArray = me.altFormatsArray, + i = 0, + len; + + if (value && !Ext.isDate(value)) { + val = me.safeParse(value, me.format); + + if (!val && altFormats) { + altFormatsArray = altFormatsArray || altFormats.split('|'); + len = altFormatsArray.length; + for (; i < len && !val; ++i) { + val = me.safeParse(value, altFormatsArray[i]); + } + } + } + + + if (val && me.snapToIncrement) { + val = new Date(Ext.Number.snap(val.getTime(), me.increment * 60 * 1000)); + } + return val; + }, + + safeParse: function(value, format){ + var me = this, + utilDate = Ext.Date, + parsedDate, + result = null; + + if (utilDate.formatContainsDateInfo(format)) { + + result = utilDate.parse(value, format); + } else { + + parsedDate = utilDate.parse(me.initDate + ' ' + value, me.initDateFormat + ' ' + format); + if (parsedDate) { + result = parsedDate; + } + } + return result; + }, + + + getSubmitValue: function() { + var me = this, + format = me.submitFormat || me.format, + value = me.getValue(); + + return value ? Ext.Date.format(value, format) : null; + }, + + + createPicker: function() { + var me = this, + picker; + + me.listConfig = Ext.apply({ + xtype: 'timepicker', + selModel: { + mode: 'SINGLE' + }, + cls: undefined, + minValue: me.minValue, + maxValue: me.maxValue, + increment: me.increment, + format: me.format, + maxHeight: me.pickerMaxHeight + }, me.listConfig); + picker = me.callParent(); + me.bindStore(picker.store); + return picker; + }, + + onItemClick: function(picker, record){ + + var me = this, + selected = picker.getSelectionModel().getSelection(); + + if (selected.length > 0) { + selected = selected[0]; + if (selected && Ext.Date.isEqual(record.get('date'), selected.get('date'))) { + me.collapse(); + } + } + }, + + + onListSelectionChange: function(list, recordArray) { + if (recordArray.length) { + var me = this, + val = recordArray[0].get('date'); + + if (!me.ignoreSelection) { + me.skipSync = true; + me.setValue(val); + me.skipSync = false; + me.fireEvent('select', me, val); + me.picker.clearHighlight(); + me.collapse(); + me.inputEl.focus(); + } + } + }, + + + syncSelection: function() { + var me = this, + picker = me.picker, + toSelect, + selModel, + value, + data, d, dLen, rec; + + if (picker && !me.skipSync) { + picker.clearHighlight(); + value = me.getValue(); + selModel = picker.getSelectionModel(); + + me.ignoreSelection++; + if (value === null) { + selModel.deselectAll(); + } else if (Ext.isDate(value)) { + + data = picker.store.data.items; + dLen = data.length; + + for (d = 0; d < dLen; d++) { + rec = data[d]; + + if (Ext.Date.isEqual(rec.get('date'), value)) { + toSelect = rec; + break; + } + } + + selModel.select(toSelect); + } + me.ignoreSelection--; + } + }, + + postBlur: function() { + var me = this, + val = me.getValue(); + + me.callParent(arguments); + + + if (me.wasValid && val) { + me.setRawValue(me.formatDate(val)); + } + }, + + setValue: function() { + + + this.getPicker(); + + return this.callParent(arguments); + }, + + getValue: function() { + return this.parseDate(this.callParent(arguments)); + } +}); + + +Ext.define('Ext.grid.CellContext', { + + + isCellContext: true, + + constructor: function(view) { + this.view = view; + }, + + + setPosition: function(row, col) { + var me = this; + + + if (arguments.length === 1) { + if (row.view) { + me.view = row.view; + } + col = row.column; + row = row.row; + } + + me.setRow(row); + me.setColumn(col); + return me; + }, + + setRow: function(row) { + var me = this; + if (row !== undefined) { + + if (typeof row === 'number') { + me.row = Math.max(Math.min(row, me.view.dataSource.getCount() - 1), 0); + me.record = me.view.dataSource.getAt(row); + } + + else if (row.isModel) { + me.record = row; + me.row = me.view.indexOf(row); + } + + else if (row.tagName) { + me.record = me.view.getRecord(row); + me.row = me.view.indexOf(me.record); + } + } + }, + + setColumn: function(col) { + var me = this, + columnManager = me.view.ownerCt.columnManager; + if (col !== undefined) { + + if (typeof col === 'number') { + me.column = col; + me.columnHeader = columnManager.getHeaderAtIndex(col); + } + + else if (col.isHeader) { + me.columnHeader = col; + me.column = columnManager.getHeaderIndex(col); + } + } + } +}); + + +Ext.define('Ext.grid.CellEditor', { + extend: Ext.Editor , + constructor: function(config) { + config = Ext.apply({}, config); + + if (config.field) { + config.field.monitorTab = false; + } + this.callParent([config]); + }, + + + onShow: function() { + var me = this, + innerCell = me.boundEl.first(); + + if (innerCell) { + if (me.isForTree) { + innerCell = innerCell.child(me.treeNodeSelector); + } + innerCell.hide(); + } + + me.callParent(arguments); + }, + + + onHide: function() { + var me = this, + innerCell = me.boundEl.first(); + + if (innerCell) { + if (me.isForTree) { + innerCell = innerCell.child(me.treeNodeSelector); + } + innerCell.show(); + } + + me.callParent(arguments); + }, + + + afterRender: function() { + var me = this, + field = me.field; + + me.callParent(arguments); + if (field.isCheckbox) { + field.mon(field.inputEl, { + mousedown: me.onCheckBoxMouseDown, + click: me.onCheckBoxClick, + scope: me + }); + } + }, + + + onCheckBoxMouseDown: function() { + this.completeEdit = Ext.emptyFn; + }, + + + onCheckBoxClick: function() { + delete this.completeEdit; + this.field.focus(false, 10); + }, + + + realign: function(autoSize) { + var me = this, + boundEl = me.boundEl, + innerCell = boundEl.first(), + width = boundEl.getWidth(), + offsets = Ext.Array.clone(me.offsets), + grid = me.grid, + xOffset; + + if (me.isForTree) { + + + xOffset = me.getTreeNodeOffset(innerCell); + width -= Math.abs(xOffset); + offsets[0] += xOffset; + } + + if (grid.columnLines) { + + + + width -= boundEl.getBorderWidth('rl'); + } + + if (autoSize === true) { + me.field.setWidth(width); + } + + me.alignTo(innerCell, me.alignment, offsets); + }, + + + getTreeNodeOffset: function(innerCell) { + return innerCell.child(this.treeNodeSelector).getOffsetsTo(innerCell)[0]; + }, + + onEditorTab: function(e){ + var field = this.field; + if (field.onEditorTab) { + field.onEditorTab(e); + } + }, + + alignment: "l-l", + hideEl : false, + cls: Ext.baseCSSPrefix + 'small-editor ' + + Ext.baseCSSPrefix + 'grid-editor ' + + Ext.baseCSSPrefix + 'grid-cell-editor', + treeNodeSelector: '.' + Ext.baseCSSPrefix + 'tree-node-text', + shim: false, + shadow: false +}); + + +Ext.define('Ext.grid.ColumnComponentLayout', { + extend: Ext.layout.component.Auto , + alias: 'layout.columncomponent', + + type: 'columncomponent', + + setWidthInDom: true, + + beginLayout: function(ownerContext) { + var me = this; + + me.callParent(arguments); + ownerContext.titleContext = ownerContext.getEl('titleEl'); + ownerContext.triggerContext = ownerContext.getEl('triggerEl'); + }, + + beginLayoutCycle: function(ownerContext) { + var me = this, + owner = me.owner; + + me.callParent(arguments); + + + if (ownerContext.widthModel.shrinkWrap) { + owner.el.setWidth(''); + } + + + + var borderRightWidth = owner.isLast && owner.isSubHeader ? '0' : ''; + if (borderRightWidth !== me.lastBorderRightWidth) { + owner.el.dom.style.borderRightWidth = me.lasBorderRightWidth = borderRightWidth; + } + + owner.titleEl.setStyle({ + paddingTop: '', + paddingBottom: '' + }); + }, + + + publishInnerHeight: function(ownerContext, outerHeight) { + + + + if (!outerHeight) { + return; + } + + var me = this, + owner = me.owner, + innerHeight = outerHeight - ownerContext.getBorderInfo().height, + availableHeight = innerHeight, + textHeight, + titleHeight, + pt, pb; + + + if (!owner.noWrap && !ownerContext.hasDomProp('width')) { + me.done = false; + return; + } + + + if (ownerContext.hasRawContent) { + titleHeight = availableHeight; + + + textHeight = owner.textEl.getHeight(); + if (textHeight) { + availableHeight -= textHeight; + if (availableHeight > 0) { + pt = Math.floor(availableHeight / 2); + pb = availableHeight - pt; + ownerContext.titleContext.setProp('padding-top', pt); + ownerContext.titleContext.setProp('padding-bottom', pb); + } + } + } + + + else { + titleHeight = owner.titleEl.getHeight(); + ownerContext.setProp('innerHeight', innerHeight - titleHeight, false); + } + + + if ((Ext.isIE6 || Ext.isIEQuirks) && ownerContext.triggerContext) { + ownerContext.triggerContext.setHeight(titleHeight); + } + + }, + + + + + measureContentHeight: function(ownerContext) { + return ownerContext.el.dom.offsetHeight; + }, + + publishOwnerHeight: function(ownerContext, contentHeight) { + this.callParent(arguments); + + + if ((Ext.isIE6 || Ext.isIEQuirks) && ownerContext.triggerContext) { + ownerContext.triggerContext.setHeight(contentHeight); + } + }, + + + publishInnerWidth: function(ownerContext, outerWidth) { + + if (!ownerContext.hasRawContent) { + ownerContext.setProp('innerWidth', outerWidth - ownerContext.getBorderInfo().width, false); + } + }, + + + calculateOwnerHeightFromContentHeight: function (ownerContext, contentHeight) { + var result = this.callParent(arguments); + + + if (!ownerContext.hasRawContent) { + if (this.owner.noWrap || ownerContext.hasDomProp('width')) { + return contentHeight + this.owner.titleEl.getHeight() + ownerContext.getBorderInfo().height; + } + + + + return null; + } + return result; + }, + + + calculateOwnerWidthFromContentWidth: function (ownerContext, contentWidth) { + var owner = this.owner, + inner = Math.max(contentWidth, owner.textEl.getWidth() + ownerContext.titleContext.getPaddingInfo().width), + padWidth = ownerContext.getPaddingInfo().width, + triggerOffset = this.getTriggerOffset(owner, ownerContext); + + return inner + padWidth + triggerOffset; + }, + + getTriggerOffset: function(owner, ownerContext) { + var width = 0; + if (ownerContext.widthModel.shrinkWrap && !owner.menuDisabled) { + + if (owner.query('>:not([hidden])').length === 0) { + width = owner.self.triggerElWidth; + } + } + return width; + } +}); + + +Ext.define('Ext.grid.ColumnLayout', { + extend: Ext.layout.container.HBox , + alias: 'layout.gridcolumn', + type : 'gridcolumn', + + reserveOffset: false, + + firstHeaderCls: Ext.baseCSSPrefix + 'column-header-first', + lastHeaderCls: Ext.baseCSSPrefix + 'column-header-last', + + initLayout: function() { + if (!this.scrollbarWidth) { + this.self.prototype.scrollbarWidth = Ext.getScrollbarSize().width; + } + this.grid = this.owner.up('[scrollerOwner]'); + this.callParent(); + }, + + + beginLayout: function (ownerContext) { + var me = this, + owner = me.owner, + grid = me.grid, + view = grid.view, + items = me.getVisibleItems(), + len = items.length, + firstCls = me.firstHeaderCls, + lastCls = me.lastHeaderCls, + i, item; + + + + + if (grid.lockable) { + if (owner.up('tablepanel') === view.normalGrid) { + view = view.normalGrid.getView(); + } else { + view = null; + } + } + + for (i = 0; i < len; i++) { + item = items[i]; + + + + item.isLast = false; + item.removeCls([firstCls, lastCls]); + if (i === 0) { + item.addCls(firstCls); + } + + if (i === len - 1) { + item.addCls(lastCls); + item.isLast = true; + } + } + + me.callParent(arguments); + + + + if (!owner.isColumn && Ext.getScrollbarSize().width && !grid.collapsed && view && + view.rendered && (ownerContext.viewTable = view.body.dom)) { + ownerContext.viewContext = ownerContext.context.getCmp(view); + } + }, + + roundFlex: function(width) { + return Math.floor(width); + }, + + calculate: function(ownerContext) { + this.callParent(arguments); + + + + if (ownerContext.state.parallelDone && (!this.owner.forceFit || ownerContext.flexedItems.length)) { + + + ownerContext.setProp('columnWidthsDone', true); + } + + + if (ownerContext.viewContext) { + ownerContext.state.tableHeight = ownerContext.viewTable.offsetHeight; + } + }, + + completeLayout: function(ownerContext) { + var me = this, + owner = me.owner, + state = ownerContext.state; + + me.callParent(arguments); + + + + + if (!ownerContext.flexedItems.length && !state.flexesCalculated && owner.forceFit && + + + + me.convertWidthsToFlexes(ownerContext)) { + me.cacheFlexes(ownerContext); + ownerContext.invalidate({ + state: { + flexesCalculated: true + } + }); + } else { + ownerContext.setProp('columnWidthsDone', true); + } + }, + + convertWidthsToFlexes: function(ownerContext) { + var me = this, + totalWidth = 0, + calculated = me.sizeModels.calculated, + childItems, len, i, childContext, item; + + childItems = ownerContext.childItems; + len = childItems.length; + + for (i = 0; i < len; i++) { + childContext = childItems[i]; + item = childContext.target; + + totalWidth += childContext.props.width; + + + if (!(item.fixed || item.resizable === false)) { + + + + item.flex = ownerContext.childItems[i].flex = childContext.props.width; + item.width = null; + childContext.widthModel = calculated; + } + } + + + return totalWidth !== ownerContext.props.width; + }, + + + getContainerSize: function(ownerContext) { + var me = this, + result, + viewContext = ownerContext.viewContext, + viewHeight; + + + if (me.owner.isColumn) { + result = me.getColumnContainerSize(ownerContext); + } + + + else { + result = me.callParent(arguments); + + + + if (viewContext && !viewContext.heightModel.shrinkWrap && + viewContext.target.componentLayout.ownerContext) { + viewHeight = viewContext.getProp('height'); + if (isNaN(viewHeight)) { + me.done = false; + } else if (ownerContext.state.tableHeight > viewHeight) { + result.width -= Ext.getScrollbarSize().width; + ownerContext.state.parallelDone = false; + viewContext.invalidate(); + } + } + } + + + + + return result; + }, + + getColumnContainerSize : function(ownerContext) { + var padding = ownerContext.paddingContext.getPaddingInfo(), + got = 0, + needed = 0, + gotWidth, gotHeight, width, height; + + + + + + + + + + if (!ownerContext.widthModel.shrinkWrap) { + ++needed; + width = ownerContext.getProp('innerWidth'); + gotWidth = (typeof width == 'number'); + if (gotWidth) { + ++got; + width -= padding.width; + if (width < 0) { + width = 0; + } + } + } + + if (!ownerContext.heightModel.shrinkWrap) { + ++needed; + height = ownerContext.getProp('innerHeight'); + gotHeight = (typeof height == 'number'); + if (gotHeight) { + ++got; + height -= padding.height; + if (height < 0) { + height = 0; + } + } + } + + return { + width: width, + height: height, + needed: needed, + got: got, + gotAll: got == needed, + gotWidth: gotWidth, + gotHeight: gotHeight + }; + }, + + + + publishInnerCtSize: function(ownerContext) { + var me = this, + size = ownerContext.state.boxPlan.targetSize, + cw = ownerContext.peek('contentWidth'), + view; + + + me.owner.tooNarrow = ownerContext.state.boxPlan.tooNarrow; + + + if ((cw != null) && !me.owner.isColumn) { + size.width = cw; + + + view = me.owner.ownerCt.view; + if (view.scrollFlags.y) { + size.width += Ext.getScrollbarSize().width; + } + } + + return me.callParent(arguments); + } +}); + + +Ext.define('Ext.grid.ColumnManager', { + alternateClassName: ['Ext.grid.ColumnModel'], + + columns: null, + + constructor: function(headerCt, secondHeaderCt) { + this.headerCt = headerCt; + + + if (secondHeaderCt) { + this.secondHeaderCt = secondHeaderCt; + } + }, + + getColumns: function() { + if (!this.columns) { + this.cacheColumns(); + } + return this.columns; + }, + + + getHeaderIndex: function(header) { + + if (header.isGroupHeader) { + header = header.down(':not([isGroupHeader])'); + } + return Ext.Array.indexOf(this.getColumns(), header); + }, + + + getHeaderAtIndex: function(index) { + var columns = this.getColumns(); + return columns.length ? columns[index] : null; + }, + + + getHeaderById: function(id) { + var columns = this.getColumns(), + len = columns.length, + i, header; + + for (i = 0; i < len; ++i) { + header = columns[i]; + if (header.getItemId() === id) { + return header; + } + } + return null; + }, + + + getVisibleHeaderClosestToIndex: function(index) { + var result = this.getHeaderAtIndex(index); + if (result && result.hidden) { + result = result.next(':not([hidden])') || result.prev(':not([hidden])'); + } + return result; + }, + + cacheColumns: function() { + this.columns = this.headerCt.getVisibleGridColumns(); + if (this.secondHeaderCt) { + Ext.Array.push(this.columns, this.secondHeaderCt.getVisibleGridColumns()); + } + }, + + invalidate: function() { + this.columns = null; + + + if (this.rootColumns) { + this.rootColumns.invalidate(); + } + } +}, function() { + this.createAlias('indexOf', 'getHeaderIndex'); +}); + + +Ext.define('Ext.layout.container.Fit', { + + + extend: Ext.layout.container.Container , + alternateClassName: 'Ext.layout.FitLayout', + + alias: 'layout.fit', + + + + itemCls: Ext.baseCSSPrefix + 'fit-item', + targetCls: Ext.baseCSSPrefix + 'layout-fit', + type: 'fit', + + + defaultMargins: { + top: 0, + right: 0, + bottom: 0, + left: 0 + }, + + manageMargins: true, + + sizePolicies: { + 0: { readsWidth: 1, readsHeight: 1, setsWidth: 0, setsHeight: 0 }, + 1: { readsWidth: 0, readsHeight: 1, setsWidth: 1, setsHeight: 0 }, + 2: { readsWidth: 1, readsHeight: 0, setsWidth: 0, setsHeight: 1 }, + 3: { readsWidth: 0, readsHeight: 0, setsWidth: 1, setsHeight: 1 } + }, + + getItemSizePolicy: function (item, ownerSizeModel) { + + var sizeModel = ownerSizeModel || this.owner.getSizeModel(), + mode = (sizeModel.width.shrinkWrap ? 0 : 1) | + (sizeModel.height.shrinkWrap ? 0 : 2); + + return this.sizePolicies[mode]; + }, + + beginLayoutCycle: function (ownerContext, firstCycle) { + var me = this, + + resetHeight = me.lastHeightModel && me.lastHeightModel.calculated, + resetWidth = me.lastWidthModel && me.lastWidthModel.calculated, + resetSizes = resetWidth || resetHeight, + maxChildMinHeight = 0, maxChildMinWidth = 0, + c, childItems, i, item, length, margins, minHeight, minWidth, style, undef; + + me.callParent(arguments); + + + + + + if (resetSizes && ownerContext.targetContext.el.dom.tagName.toUpperCase() != 'TD') { + resetSizes = resetWidth = resetHeight = false; + } + + childItems = ownerContext.childItems; + length = childItems.length; + + for (i = 0; i < length; ++i) { + item = childItems[i]; + + + + + if (firstCycle) { + c = item.target; + minHeight = c.minHeight; + minWidth = c.minWidth; + + if (minWidth || minHeight) { + margins = item.marginInfo || item.getMarginInfo(); + + + minHeight += margins.height; + minWidth += margins.height; + + + + if (maxChildMinHeight < minHeight) { + maxChildMinHeight = minHeight; + } + if (maxChildMinWidth < minWidth) { + maxChildMinWidth = minWidth; + } + } + } + + if (resetSizes) { + style = item.el.dom.style; + + if (resetHeight) { + style.height = ''; + } + if (resetWidth) { + style.width = ''; + } + } + } + + if (firstCycle) { + ownerContext.maxChildMinHeight = maxChildMinHeight; + ownerContext.maxChildMinWidth = maxChildMinWidth; + } + + + + + c = ownerContext.target; + ownerContext.overflowX = (!ownerContext.widthModel.shrinkWrap && + ownerContext.maxChildMinWidth && + c.scrollFlags.x) || undef; + + ownerContext.overflowY = (!ownerContext.heightModel.shrinkWrap && + ownerContext.maxChildMinHeight && + c.scrollFlags.y) || undef; + }, + + calculate : function (ownerContext) { + var me = this, + childItems = ownerContext.childItems, + length = childItems.length, + containerSize = me.getContainerSize(ownerContext), + info = { + length: length, + ownerContext: ownerContext, + targetSize: containerSize + }, + shrinkWrapWidth = ownerContext.widthModel.shrinkWrap, + shrinkWrapHeight = ownerContext.heightModel.shrinkWrap, + overflowX = ownerContext.overflowX, + overflowY = ownerContext.overflowY, + scrollbars, scrollbarSize, padding, i, contentWidth, contentHeight; + + if (overflowX || overflowY) { + + + + scrollbars = me.getScrollbarsNeeded( + overflowX && containerSize.width, overflowY && containerSize.height, + ownerContext.maxChildMinWidth, ownerContext.maxChildMinHeight); + + if (scrollbars) { + scrollbarSize = Ext.getScrollbarSize(); + if (scrollbars & 1) { + containerSize.height -= scrollbarSize.height; + } + if (scrollbars & 2) { + containerSize.width -= scrollbarSize.width; + } + } + } + + + for (i = 0; i < length; ++i) { + info.index = i; + me.fitItem(childItems[i], info); + } + + if (shrinkWrapHeight || shrinkWrapWidth) { + padding = ownerContext.targetContext.getPaddingInfo(); + + if (shrinkWrapWidth) { + if (overflowY && !containerSize.gotHeight) { + + + + me.done = false; + } else { + contentWidth = info.contentWidth + padding.width; + + + + if (scrollbars & 2) { + contentWidth += scrollbarSize.width; + } + if (!ownerContext.setContentWidth(contentWidth)) { + me.done = false; + } + } + } + + if (shrinkWrapHeight) { + if (overflowX && !containerSize.gotWidth) { + + + + me.done = false; + } else { + contentHeight = info.contentHeight + padding.height; + + + + if (scrollbars & 1) { + contentHeight += scrollbarSize.height; + } + if (!ownerContext.setContentHeight(contentHeight)) { + me.done = false; + } + } + } + } + }, + + fitItem: function (itemContext, info) { + var me = this; + + if (itemContext.invalid) { + me.done = false; + return; + } + + info.margins = itemContext.getMarginInfo(); + info.needed = info.got = 0; + + me.fitItemWidth(itemContext, info); + me.fitItemHeight(itemContext, info); + + + if (info.got != info.needed) { + me.done = false; + } + }, + + fitItemWidth: function (itemContext, info) { + var contentWidth, width; + + if (info.ownerContext.widthModel.shrinkWrap) { + + width = itemContext.getProp('width') + info.margins.width; + + + contentWidth = info.contentWidth; + if (contentWidth === undefined) { + info.contentWidth = width; + } else { + info.contentWidth = Math.max(contentWidth, width); + } + } else if (itemContext.widthModel.calculated) { + ++info.needed; + if (info.targetSize.gotWidth) { + ++info.got; + this.setItemWidth(itemContext, info); + } + } + + this.positionItemX(itemContext, info); + }, + + fitItemHeight: function (itemContext, info) { + var contentHeight, height; + if (info.ownerContext.heightModel.shrinkWrap) { + + height = itemContext.getProp('height') + info.margins.height; + + + contentHeight = info.contentHeight; + if (contentHeight === undefined) { + info.contentHeight = height; + } else { + info.contentHeight = Math.max(contentHeight, height); + } + } else if (itemContext.heightModel.calculated) { + ++info.needed; + if (info.targetSize.gotHeight) { + ++info.got; + this.setItemHeight(itemContext, info); + } + } + + this.positionItemY(itemContext, info); + }, + + positionItemX: function (itemContext, info) { + var margins = info.margins; + + + + if (info.index || margins.left) { + itemContext.setProp('x', margins.left); + } + + if (margins.width) { + + itemContext.setProp('margin-right', margins.width); + } + }, + + positionItemY: function (itemContext, info) { + var margins = info.margins; + + if (info.index || margins.top) { + itemContext.setProp('y', margins.top); + } + + if (margins.height) { + + itemContext.setProp('margin-bottom', margins.height); + } + }, + + setItemHeight: function (itemContext, info) { + itemContext.setHeight(info.targetSize.height - info.margins.height); + }, + + setItemWidth: function (itemContext, info) { + itemContext.setWidth(info.targetSize.width - info.margins.width); + } +}); + + +Ext.define('Ext.panel.Table', { + extend: Ext.panel.Panel , + + alias: 'widget.tablepanel', + + + + + + + + + + + extraBaseCls: Ext.baseCSSPrefix + 'grid', + extraBodyCls: Ext.baseCSSPrefix + 'grid-body', + + layout: 'fit', + + hasView: false, + + + + viewType: null, + + + + + + + selType: 'rowmodel', + + + + + + + + + + + scroll: true, + + + + + + + + + + + + + + deferRowRender: true, + + + sortableColumns: true, + + + enableLocking: false, + + + + scrollerOwner: true, + + + enableColumnMove: true, + + + sealedColumns: false, + + + enableColumnResize: true, + + + + + + + rowLines: true, + + + + + + + + + + colLinesCls: Ext.baseCSSPrefix + 'grid-with-col-lines', + rowLinesCls: Ext.baseCSSPrefix + 'grid-with-row-lines', + noRowLinesCls: Ext.baseCSSPrefix + 'grid-no-row-lines', + hiddenHeaderCtCls: Ext.baseCSSPrefix + 'grid-header-ct-hidden', + hiddenHeaderCls: Ext.baseCSSPrefix + 'grid-header-hidden', + resizeMarkerCls: Ext.baseCSSPrefix + 'grid-resize-marker', + emptyCls: Ext.baseCSSPrefix + 'grid-empty', + + initComponent: function() { + + var me = this, + headerCtCfg = me.columns || me.colModel, + view, + i, len, + + store = me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store'), + columns; + + if (me.columnLines) { + me.addCls(me.colLinesCls); + } + + me.addCls(me.rowLines ? me.rowLinesCls : me.noRowLinesCls); + + + + + if (headerCtCfg instanceof Ext.grid.header.Container) { + headerCtCfg.isRootHeader = true; + me.headerCt = headerCtCfg; + } else { + + + + if (me.enableLocking || me.hasLockedColumns(headerCtCfg)) { + me.self.mixin('lockable', Ext.grid.locking.Lockable); + me.injectLockable(); + } + + else { + if (Ext.isArray(headerCtCfg)) { + headerCtCfg = { + items: headerCtCfg + }; + } + Ext.apply(headerCtCfg, { + grid: me, + forceFit: me.forceFit, + sortable: me.sortableColumns, + enableColumnMove: me.enableColumnMove, + enableColumnResize: me.enableColumnResize, + sealed: me.sealedColumns, + isRootHeader: true + }); + + if (Ext.isDefined(me.enableColumnHide)) { + headerCtCfg.enableColumnHide = me.enableColumnHide; + } + + + if (!me.headerCt) { + me.headerCt = new Ext.grid.header.Container(headerCtCfg); + } + } + } + + + me.columns = me.headerCt.getGridColumns(); + + me.scrollTask = new Ext.util.DelayedTask(me.syncHorizontalScroll, me); + + me.addEvents( + + 'reconfigure', + + 'viewready' + ); + + me.bodyCls = me.bodyCls || ''; + me.bodyCls += (' ' + me.extraBodyCls); + + me.cls = me.cls || ''; + me.cls += (' ' + me.extraBaseCls); + + + delete me.autoScroll; + + + + if (!me.hasView) { + + + columns = me.headerCt.getGridColumns(); + + + if (store.buffered && !store.remoteSort) { + for (i = 0, len = columns.length; i < len; i++) { + columns[i].sortable = false; + } + } + + if (me.hideHeaders) { + me.headerCt.height = 0; + + me.headerCt.hiddenHeaders = true; + me.headerCt.addCls(me.hiddenHeaderCtCls); + me.addCls(me.hiddenHeaderCls); + + + if (Ext.isIEQuirks) { + me.headerCt.style = { + display: 'none' + }; + } + } + + me.relayHeaderCtEvents(me.headerCt); + me.features = me.features || []; + if (!Ext.isArray(me.features)) { + me.features = [me.features]; + } + me.dockedItems = [].concat(me.dockedItems || []); + me.dockedItems.unshift(me.headerCt); + me.viewConfig = me.viewConfig || {}; + + + + view = me.getView(); + + me.items = [view]; + me.hasView = true; + + + + if (!me.hideHeaders) { + view.on({ + scroll: { + fn: me.onHorizontalScroll, + element: 'el', + scope: me + } + }); + } + + + me.bindStore(store, true); + + me.mon(view, { + viewready: me.onViewReady, + refresh: me.onRestoreHorzScroll, + scope: me + }); + } + + + me.relayEvents(me.view, [ + + 'beforeitemmousedown', + + 'beforeitemmouseup', + + 'beforeitemmouseenter', + + 'beforeitemmouseleave', + + 'beforeitemclick', + + 'beforeitemdblclick', + + 'beforeitemcontextmenu', + + 'itemmousedown', + + 'itemmouseup', + + 'itemmouseenter', + + 'itemmouseleave', + + 'itemclick', + + 'itemdblclick', + + 'itemcontextmenu', + + 'beforecellclick', + + 'cellclick', + + 'beforecelldblclick', + + 'celldblclick', + + 'beforecellcontextmenu', + + 'cellcontextmenu', + + 'beforecellmousedown', + + 'cellmousedown', + + 'beforecellmouseup', + + 'cellmouseup', + + 'beforecellkeydown', + + 'cellkeydown', + + 'beforecontainermousedown', + + 'beforecontainermouseup', + + 'beforecontainermouseover', + + 'beforecontainermouseout', + + 'beforecontainerclick', + + 'beforecontainerdblclick', + + 'beforecontainercontextmenu', + + 'containermouseup', + + 'containermouseover', + + 'containermouseout', + + 'containerclick', + + 'containerdblclick', + + 'containercontextmenu', + + 'selectionchange', + + 'beforeselect', + + 'select', + + 'beforedeselect', + + 'deselect' + ]); + + me.callParent(arguments); + me.addStateEvents(['columnresize', 'columnmove', 'columnhide', 'columnshow', 'sortchange', 'filterchange']); + + + if (!me.lockable && me.headerCt) { + me.headerCt.on('afterlayout', me.onRestoreHorzScroll, me); + } + }, + + + hasLockedColumns: function(columns) { + var i, + len, + column; + + + if (Ext.isObject(columns)) { + columns = columns.items; + } + for (i = 0, len = columns.length; i < len; i++) { + column = columns[i]; + if (!column.processed && column.locked) { + return true; + } + } + }, + + relayHeaderCtEvents: function (headerCt) { + this.relayEvents(headerCt, [ + + 'columnresize', + + 'columnmove', + + 'columnhide', + + 'columnshow', + + 'columnschanged', + + 'sortchange', + + 'headerclick', + + 'headercontextmenu', + + 'headertriggerclick' + ]); + }, + + getState: function(){ + var me = this, + state = me.callParent(), + storeState = me.store.getState(); + + state = me.addPropertyToState(state, 'columns', me.headerCt.getColumnsState()); + + if (storeState) { + state.storeState = storeState; + } + return state; + }, + + applyState: function(state) { + var me = this, + sorter = state.sort, + storeState = state.storeState, + store = me.store, + columns = state.columns; + + delete state.columns; + + + + me.callParent(arguments); + + if (columns) { + me.headerCt.applyColumnsState(columns); + } + + + if (sorter) { + if (store.remoteSort) { + + store.sort({ + property: sorter.property, + direction: sorter.direction, + root: sorter.root + }, null, false); + } else { + store.sort(sorter.property, sorter.direction); + } + } + + else if (storeState) { + store.applyState(storeState); + } + }, + + + getStore: function(){ + return this.store; + }, + + + getView: function() { + var me = this, + sm; + + if (!me.view) { + sm = me.getSelectionModel(); + + + Ext.widget(Ext.apply({ + + + grid: me, + deferInitialRefresh: me.deferRowRender !== false, + trackOver: me.trackMouseOver !== false, + scroll: me.scroll, + xtype: me.viewType, + store: me.store, + headerCt: me.headerCt, + columnLines: me.columnLines, + rowLines: me.rowLines, + selModel: sm, + features: me.features, + panel: me, + emptyText: me.emptyText || '' + }, me.viewConfig)); + + + + + + if (me.view.emptyText) { + me.view.emptyText = '
' + me.view.emptyText + '
'; + } + + + me.view.getComponentLayout().headerCt = me.headerCt; + + me.mon(me.view, { + uievent: me.processEvent, + scope: me + }); + sm.view = me.view; + me.headerCt.view = me.view; + } + return me.view; + }, + + + setAutoScroll: Ext.emptyFn, + + + processEvent: function(type, view, cell, recordIndex, cellIndex, e, record, row) { + var me = this, + header; + + if (cellIndex !== -1) { + header = me.columnManager.getColumns()[cellIndex]; + return header.processEvent.apply(header, arguments); + } + }, + + + determineScrollbars: function () { + }, + + + invalidateScroller: function () { + }, + + scrollByDeltaY: function(yDelta, animate) { + this.getView().scrollBy(0, yDelta, animate); + }, + + scrollByDeltaX: function(xDelta, animate) { + this.getView().scrollBy(xDelta, 0, animate); + }, + + afterCollapse: function() { + var me = this; + me.saveScrollPos(); + me.saveScrollPos(); + me.callParent(arguments); + }, + + afterExpand: function() { + var me = this; + me.callParent(arguments); + me.restoreScrollPos(); + me.restoreScrollPos(); + }, + + saveScrollPos: Ext.emptyFn, + + restoreScrollPos: Ext.emptyFn, + + onHeaderResize: function(){ + this.delayScroll(); + }, + + + onHeaderMove: function(headerCt, header, colsToMove, fromIdx, toIdx) { + var me = this; + + + + if (me.optimizedColumnMove === false) { + me.view.refresh(); + } + + + else { + me.view.moveColumn(fromIdx, toIdx, colsToMove); + } + me.delayScroll(); + }, + + + onHeaderHide: function(headerCt, header) { + this.view.refresh(); + this.delayScroll(); + }, + + onHeaderShow: function(headerCt, header) { + this.view.refresh(); + this.delayScroll(); + }, + + delayScroll: function(){ + var target = this.getScrollTarget().el; + if (target) { + this.scrollTask.delay(10, null, null, [target.dom.scrollLeft]); + } + }, + + + onViewReady: function() { + this.fireEvent('viewready', this); + }, + + + onRestoreHorzScroll: function() { + var left = this.scrollLeftPos; + if (left) { + + this.syncHorizontalScroll(left, true); + } + }, + + getScrollerOwner: function() { + var rootCmp = this; + if (!this.scrollerOwner) { + rootCmp = this.up('[scrollerOwner]'); + } + return rootCmp; + }, + + + getLhsMarker: function() { + var me = this; + return me.lhsMarker || (me.lhsMarker = Ext.DomHelper.append(me.el, { + cls: me.resizeMarkerCls + }, true)); + }, + + + getRhsMarker: function() { + var me = this; + + return me.rhsMarker || (me.rhsMarker = Ext.DomHelper.append(me.el, { + cls: me.resizeMarkerCls + }, true)); + }, + + + getSelectionModel: function(){ + var me = this, + selModel = me.selModel, + applyMode, mode, type; + + if (!selModel) { + selModel = {}; + + applyMode = true; + } + + if (!selModel.events) { + + type = selModel.selType || me.selType; + applyMode = !selModel.mode; + selModel = me.selModel = Ext.create('selection.' + type, selModel); + } + + if (me.simpleSelect) { + mode = 'SIMPLE'; + } else if (me.multiSelect) { + mode = 'MULTI'; + } + + Ext.applyIf(selModel, { + allowDeselect: me.allowDeselect + }); + + if (mode && applyMode) { + selModel.setSelectionMode(mode); + } + + if (!selModel.hasRelaySetup) { + me.relayEvents(selModel, [ + 'selectionchange', 'beforeselect', 'beforedeselect', 'select', 'deselect' + ]); + selModel.hasRelaySetup = true; + } + + + + if (me.disableSelection) { + selModel.locked = true; + } + return selModel; + }, + + getScrollTarget: function(){ + var owner = this.getScrollerOwner(), + items = owner.query('tableview'); + + return items[1] || items[0]; + }, + + onHorizontalScroll: function(event, target) { + this.syncHorizontalScroll(target.scrollLeft); + }, + + syncHorizontalScroll: function(left, setBody) { + var me = this, + scrollTarget; + + setBody = setBody === true; + + + if (me.rendered && (setBody || left !== me.scrollLeftPos)) { + + + if (setBody) { + scrollTarget = me.getScrollTarget(); + scrollTarget.el.dom.scrollLeft = left; + } + me.headerCt.el.dom.scrollLeft = left; + me.scrollLeftPos = left; + } + }, + + + onStoreLoad: Ext.emptyFn, + + getEditorParent: function() { + return this.body; + }, + + bindStore: function(store, initial) { + var me = this, + view = me.getView(), + bufferedStore = store && store.buffered, + bufferedRenderer; + + + me.store = store; + + + + + + bufferedRenderer = me.findPlugin('bufferedrenderer'); + if (bufferedRenderer) { + me.verticalScroller = bufferedRenderer; + + if (bufferedRenderer.store) { + bufferedRenderer.bindStore(store); + } + } else if (bufferedStore) { + me.verticalScroller = bufferedRenderer = me.addPlugin(Ext.apply({ + ptype: 'bufferedrenderer' + }, me.initialConfig.verticalScroller)); + } + + if (view.store !== store) { + if (initial) { + + view.bindStore(store, false, 'dataSource'); + } else { + + + view.bindStore(store, false); + } + } + + me.mon(store, { + load: me.onStoreLoad, + scope: me + }); + me.storeRelayers = me.relayEvents(store, [ + + 'filterchange' + ]); + + + if (bufferedRenderer) { + me.invalidateScrollerOnRefresh = false; + } + + if (me.invalidateScrollerOnRefresh !== undefined) { + view.preserveScrollOnRefresh = !me.invalidateScrollerOnRefresh; + } + }, + + unbindStore: function() { + var me = this, + store = me.store; + + if (store) { + me.store = null; + me.mun(store, { + load: me.onStoreLoad, + scope: me + }); + Ext.destroy(me.storeRelayers); + } + }, + + + reconfigure: function(store, columns) { + var me = this, + view = me.getView(), + originalDeferinitialRefresh, + oldStore = me.store, + headerCt = me.headerCt, + oldColumns = headerCt ? headerCt.items.getRange() : me.columns; + + + if (columns) { + columns = Ext.Array.slice(columns); + } + + me.fireEvent('beforereconfigure', me, store, columns, oldStore, oldColumns); + if (me.lockable) { + me.reconfigureLockable(store, columns); + } else { + Ext.suspendLayouts(); + if (columns) { + + delete me.scrollLeftPos; + headerCt.removeAll(); + headerCt.add(columns); + } + + + if (store && (store = Ext.StoreManager.lookup(store)) !== oldStore) { + + if (me.store) { + me.unbindStore(); + } + + + originalDeferinitialRefresh = view.deferInitialRefresh; + view.deferInitialRefresh = false; + me.bindStore(store); + view.deferInitialRefresh = originalDeferinitialRefresh; + } else { + me.getView().refresh(); + } + headerCt.setSortState(); + Ext.resumeLayouts(true); + } + me.fireEvent('reconfigure', me, store, columns, oldStore, oldColumns); + }, + + beforeDestroy: function(){ + var task = this.scrollTask; + if (task) { + task.cancel(); + this.scrollTask = null; + } + this.callParent(); + }, + + onDestroy: function(){ + if (this.lockable) { + this.destroyLockable(); + } + this.callParent(); + + } +}); + + +Ext.define('Ext.util.CSS', function() { + var CSS, + rules = null, + doc = document, + camelRe = /(-[a-z])/gi, + camelFn = function(m, a){ return a.charAt(1).toUpperCase(); }; + + return { + + singleton: true, + + rules: rules, + + initialized: false, + + constructor: function() { + + CSS = this; + }, + + + createStyleSheet : function(cssText, id) { + var ss, + head = doc.getElementsByTagName("head")[0], + styleEl = doc.createElement("style"); + + styleEl.setAttribute("type", "text/css"); + if (id) { + styleEl.setAttribute("id", id); + } + + if (Ext.isIE) { + head.appendChild(styleEl); + ss = styleEl.styleSheet; + ss.cssText = cssText; + } else { + try{ + styleEl.appendChild(doc.createTextNode(cssText)); + } catch(e) { + styleEl.cssText = cssText; + } + head.appendChild(styleEl); + ss = styleEl.styleSheet ? styleEl.styleSheet : (styleEl.sheet || doc.styleSheets[doc.styleSheets.length-1]); + } + CSS.cacheStyleSheet(ss); + return ss; + }, + + + removeStyleSheet : function(id) { + var existing = doc.getElementById(id); + if (existing) { + existing.parentNode.removeChild(existing); + } + }, + + + swapStyleSheet : function(id, url) { + var ss; + CSS.removeStyleSheet(id); + ss = doc.createElement("link"); + ss.setAttribute("rel", "stylesheet"); + ss.setAttribute("type", "text/css"); + ss.setAttribute("id", id); + ss.setAttribute("href", url); + doc.getElementsByTagName("head")[0].appendChild(ss); + }, + + + refreshCache : function() { + return CSS.getRules(true); + }, + + + cacheStyleSheet : function(ss) { + if (!rules) { + rules = CSS.rules = {}; + } + try { + var ssRules = ss.cssRules || ss.rules, + i = ssRules.length - 1, + imports = ss.imports, + len = imports ? imports.length : 0, + rule, j; + + + for (j = 0; j < len; ++j) { + CSS.cacheStyleSheet(imports[j]); + } + + for (; i >= 0; --i) { + rule = ssRules[i]; + + if (rule.styleSheet) { + CSS.cacheStyleSheet(rule.styleSheet); + } + CSS.cacheRule(rule, ss); + } + } catch(e) {} + }, + + cacheRule: function(cssRule, styleSheet) { + + if (cssRule.styleSheet) { + return CSS.cacheStyleSheet(cssRule.styleSheet); + } + + var selectorText = cssRule.selectorText, + selectorCount, j; + + if (selectorText) { + + + selectorText = selectorText.split(','); + selectorCount = selectorText.length; + for (j = 0; j < selectorCount; j++) { + + + rules[Ext.String.trim(selectorText[j]).toLowerCase()] = { + parentStyleSheet: styleSheet, + cssRule: cssRule + }; + }; + } + }, + + + getRules : function(refreshCache) { + var result = {}, + selector; + + if (rules === null || refreshCache) { + CSS.refreshCache(); + } + for (selector in rules) { + result[selector] = rules[selector].cssRule; + } + return result; + }, + + refreshCache: function() { + var ds = doc.styleSheets, + i = 0, + len = ds.length; + + rules = CSS.rules = {} + for (; i < len; i++) { + try { + if (!ds[i].disabled) { + CSS.cacheStyleSheet(ds[i]); + } + } catch(e) {} + } + }, + + + getRule: function(selector, refreshCache, rawCache) { + var i, result; + + if (!rules || refreshCache) { + CSS.refreshCache(); + } + if (!Ext.isArray(selector)) { + result = rules[selector.toLowerCase()] + if (result && !rawCache) { + result = result.cssRule; + } + return result || null; + } + for (i = 0; i < selector.length; i++) { + if (rules[selector[i]]) { + return rawCache ? rules[selector[i].toLowerCase()] : rules[selector[i].toLowerCase()].cssRule; + } + } + return null; + }, + + + createRule: function(styleSheet, selector, cssText) { + var result, + ruleSet = styleSheet.cssRules || styleSheet.rules, + index = ruleSet.length; + + if (styleSheet.insertRule) { + styleSheet.insertRule(selector + '{' + cssText + '}', index); + } else { + styleSheet.addRule(selector, cssText||' '); + } + CSS.cacheRule(result = ruleSet[index], styleSheet); + return result; + }, + + + updateRule : function(selector, property, value) { + var rule, i, styles; + if (!Ext.isArray(selector)) { + rule = CSS.getRule(selector); + if (rule) { + + if (arguments.length == 2) { + styles = Ext.Element.parseStyles(property); + for (property in styles) { + rule.style[property.replace(camelRe, camelFn)] = styles[property]; + } + } else { + rule.style[property.replace(camelRe, camelFn)] = value; + } + return true; + } + } else { + for (i = 0; i < selector.length; i++) { + if (CSS.updateRule(selector[i], property, value)) { + return true; + } + } + } + return false; + }, + + deleteRule: function(selector) { + var rule = CSS.getRule(selector, false, true), + styleSheet, index; + + if (rule) { + styleSheet = rule.parentStyleSheet; + index = Ext.Array.indexOf(styleSheet.cssRules || styleSheet.rules, rule.cssRule); + if (styleSheet.deleteRule) { + styleSheet.deleteRule(index); + } else { + styleSheet.removeRule(index); + } + delete rules[selector]; + } + } + }; +}); + + +Ext.define('Ext.view.TableLayout', { + extend: Ext.layout.component.Auto , + + + alias: ['layout.tableview'], + type: 'tableview', + + beginLayout: function(ownerContext) { + var me = this, + otherSide = me.owner.lockingPartner, + owner = me.owner; + + me.callParent(arguments); + + + if (otherSide) { + me.lockedGrid = me.owner.up('[lockable]'); + me.lockedGrid.needsRowHeightSync = true; + if (!ownerContext.lockingPartner) { + ownerContext.lockingPartner = ownerContext.context.getItem(otherSide, otherSide.el); + if (ownerContext.lockingPartner && !ownerContext.lockingPartner.lockingPartner) { + ownerContext.lockingPartner.lockingPartner = ownerContext; + } + } + } + + + ownerContext.headerContext = ownerContext.context.getCmp(me.headerCt); + + + if (me.owner.body.dom) { + ownerContext.bodyContext = ownerContext.getEl(me.owner.body); + } + if (Ext.isWebKit) { + owner.el.select(owner.getBodySelector()).setStyle('table-layout', 'auto'); + } + }, + + calculate: function(ownerContext) { + var me = this, + lockingPartner = me.lockingPartner, + owner = me.owner, + contentHeight = 0, + emptyEl; + + + + if (ownerContext.headerContext.hasProp('columnWidthsDone')) { + if (!me.setColumnWidths(ownerContext)) { + me.done = false; + return; + } + ownerContext.state.columnWidthsSynced = true; + if (ownerContext.bodyContext) { + emptyEl = me.owner.el.down('.' + owner.ownerCt.emptyCls, true); + if (!emptyEl) { + contentHeight = ownerContext.bodyContext.el.dom.offsetHeight; + ownerContext.bodyContext.setHeight(contentHeight, false); + } else { + contentHeight = emptyEl.offsetHeight; + } + ownerContext.setProp('contentHeight', contentHeight); + } + + + + if (lockingPartner && !lockingPartner.state.columnWidthsSynced) { + me.done = false; + } else { + me.callParent(arguments); + } + + } else { + me.done = false; + } + }, + + measureContentHeight: function(ownerContext) { + var lockingPartner = ownerContext.lockingPartner; + + + + if (!ownerContext.bodyContext || (ownerContext.state.columnWidthsSynced && (!lockingPartner || lockingPartner.state.columnWidthsSynced))) { + return this.callParent(arguments); + } + }, + + setColumnWidths: function(ownerContext) { + var me = this, + owner = me.owner, + context = ownerContext.context, + columns = me.headerCt.getVisibleGridColumns(), + column, + i = 0, len = columns.length, + tableWidth = 0, + columnLineWidth = 0, + childContext, + colWidth, + isContentBox = !Ext.isBorderBox; + + + if (context) { + context.currentLayout = me; + } + + + for (i = 0; i < len; i++) { + column = columns[i]; + childContext = context.getCmp(column); + colWidth = childContext.props.width; + if (isNaN(colWidth)) { + + + + + childContext.getProp('width'); + return false; + } + tableWidth += colWidth; + + if (isContentBox && owner.columnLines) { + + + + + if (!columnLineWidth) { + columnLineWidth = context.getCmp(column).borderInfo.width || 1; + } + colWidth -= columnLineWidth; + } + + + + + + + + + owner.body.select(owner.getColumnSizerSelector(column)).setWidth(colWidth); + + } + + owner.el.select(owner.getBodySelector()).setWidth(tableWidth); + return true; + }, + + finishedLayout: function() { + var me = this, + owner = me.owner; + + me.callParent(arguments); + + if (Ext.isWebKit) { + owner.el.select(owner.getBodySelector()).setStyle('table-layout', ''); + } + + + if (owner.refreshCounter && me.lockedGrid && me.lockedGrid.syncRowHeight && me.lockedGrid.needsRowHeightSync) { + me.lockedGrid.syncRowHeights(); + me.lockedGrid.needsRowHeightSync = false; + } + } +}); + + +Ext.define('Ext.view.NodeCache', { + constructor: function(view) { + this.view = view; + this.clear(); + this.el = new Ext.dom.AbstractElement.Fly(); + }, + + + clear: function(removeDom) { + var me = this, + elements = this.elements, + i, el; + + if (removeDom) { + for (i in elements) { + el = elements[i]; + el.parentNode.removeChild(el); + } + } + me.elements = {}; + me.count = me.startIndex = 0; + me.endIndex = -1; + }, + + + fill: function(newElements, startIndex) { + var me = this, + elements = me.elements = {}, + i, + len = newElements.length; + + if (!startIndex) { + startIndex = 0; + } + for (i = 0; i < len; i++) { + elements[startIndex + i] = newElements[i]; + } + me.startIndex = startIndex; + me.endIndex = startIndex + len - 1; + me.count = len; + return this; + }, + + insert: function(insertPoint, nodes) { + var me = this, + elements = me.elements, + i, + nodeCount = nodes.length; + + + if (me.count) { + + + if (insertPoint < me.count) { + for (i = me.endIndex + nodeCount; i >= insertPoint + nodeCount; i--) { + elements[i] = elements[i - nodeCount]; + elements[i].setAttribute('data-recordIndex', i); + } + } + me.endIndex = me.endIndex + nodeCount; + } + + else { + me.startIndex = insertPoint; + me.endIndex = insertPoint + nodeCount - 1; + } + + + for (i = 0; i < nodeCount; i++, insertPoint++) { + elements[insertPoint] = nodes[i]; + elements[insertPoint].setAttribute('data-recordIndex', insertPoint); + } + me.count += nodeCount; + }, + + item: function(index, asDom) { + var el = this.elements[index], + result = null; + + if (el) { + result = asDom ? this.elements[index] : this.el.attach(this.elements[index]); + } + return result; + }, + + first: function(asDom) { + return this.item(this.startIndex, asDom); + }, + + last: function(asDom) { + return this.item(this.endIndex, asDom); + }, + + getCount : function() { + return this.count; + }, + + slice: function(start, end) { + var elements = this.elements, + result = [], + i; + + if (arguments.length < 2) { + end = this.endIndex; + } else { + end = Math.min(this.endIndex, end - 1); + } + for (i = start||this.startIndex; i <= end; i++) { + result.push(elements[i]); + } + return result; + }, + + + replaceElement: function(el, replacement, domReplace) { + var elements = this.elements, + index = (typeof el === 'number') ? el : this.indexOf(el); + + if (index > -1) { + replacement = Ext.getDom(replacement); + if (domReplace) { + el = elements[index]; + el.parentNode.insertBefore(replacement, el); + Ext.removeNode(el); + replacement.setAttribute('data-recordIndex', index); + } + this.elements[index] = replacement; + } + return this; + }, + + + indexOf: function(el) { + var elements = this.elements, + index; + + el = Ext.getDom(el); + for (index = this.startIndex; index <= this.endIndex; index++) { + if (elements[index] === el) { + return index; + } + } + return -1; + }, + + removeRange: function(start, end, removeDom) { + var me = this, + elements = me.elements, + el, + i, removeCount, fromPos; + + if (end === undefined) { + end = me.count; + } else { + end = Math.min(me.endIndex + 1, end + 1); + } + if (!start) { + start = 0; + } + removeCount = end - start; + for (i = start, fromPos = end; i < me.endIndex; i++, fromPos++) { + + if (removeDom && i < end) { + Ext.removeNode(elements[i]); + } + + if (fromPos <= me.endIndex) { + el = elements[i] = elements[fromPos]; + el.setAttribute('data-recordIndex', i); + } + + else { + delete elements[i]; + } + } + me.count -= removeCount; + me.endIndex -= removeCount; + }, + + + removeElement: function(keys, removeDom) { + var me = this, + inKeys, + key, + elements = me.elements, + el, + deleteCount, + keyIndex = 0, index, + fromIndex; + + + + if (Ext.isArray(keys)) { + inKeys = keys; + keys = []; + deleteCount = inKeys.length; + for (keyIndex = 0; keyIndex < deleteCount; keyIndex++) { + key = inKeys[keyIndex]; + if (typeof key !== 'number') { + key = me.indexOf(key); + } + + + if (key >= me.startIndex && key <= me.endIndex) { + keys[keys.length] = key; + } + } + Ext.Array.sort(keys); + deleteCount = keys.length; + } else { + + if (keys < me.startIndex || keys > me.endIndex) { + return; + } + deleteCount = 1; + keys = [keys]; + } + + + + for (index = fromIndex = keys[0], keyIndex = 0; index <= me.endIndex; index++, fromIndex++) { + + + + + if (keyIndex < deleteCount && index === keys[keyIndex]) { + fromIndex++; + keyIndex++; + if (removeDom) { + Ext.removeNode(elements[index]); + } + } + + + if (fromIndex <= me.endIndex && fromIndex >= me.startIndex) { + el = elements[index] = elements[fromIndex]; + el.setAttribute('data-recordIndex', index); + } else { + delete elements[index]; + } + } + me.endIndex -= deleteCount; + me.count -= deleteCount; + }, + + + scroll: function(newRecords, direction, removeCount) { + var me = this, + elements = me.elements, + recCount = newRecords.length, + i, el, removeEnd, + newNodes, + nodeContainer = me.view.getNodeContainer(), + frag = document.createDocumentFragment(); + + + if (direction == -1) { + for (i = (me.endIndex - removeCount) + 1; i <= me.endIndex; i++) { + el = elements[i]; + delete elements[i]; + el.parentNode.removeChild(el); + } + me.endIndex -= removeCount; + + + newNodes = me.view.bufferRender(newRecords, me.startIndex -= recCount); + for (i = 0; i < recCount; i++) { + elements[me.startIndex + i] = newNodes[i]; + frag.appendChild(newNodes[i]); + } + nodeContainer.insertBefore(frag, nodeContainer.firstChild); + } + + + else { + removeEnd = me.startIndex + removeCount; + for (i = me.startIndex; i < removeEnd; i++) { + el = elements[i]; + delete elements[i]; + el.parentNode.removeChild(el); + } + me.startIndex = i; + + + newNodes = me.view.bufferRender(newRecords, me.endIndex + 1); + for (i = 0; i < recCount; i++) { + elements[me.endIndex += 1] = newNodes[i]; + frag.appendChild(newNodes[i]); + } + nodeContainer.appendChild(frag); + } + + me.count = me.endIndex - me.startIndex + 1; + } +}); + + +Ext.define('Ext.view.Table', { + extend: Ext.view.View , + alias: 'widget.tableview', + + + + + + + + + componentLayout: 'tableview', + + baseCls: Ext.baseCSSPrefix + 'grid-view', + + + firstCls: Ext.baseCSSPrefix + 'grid-cell-first', + + + lastCls: Ext.baseCSSPrefix + 'grid-cell-last', + + headerRowSelector: 'tr.' + Ext.baseCSSPrefix + 'grid-header-row', + + selectedItemCls: Ext.baseCSSPrefix + 'grid-row-selected', + beforeSelectedItemCls: Ext.baseCSSPrefix + 'grid-row-before-selected', + selectedCellCls: Ext.baseCSSPrefix + 'grid-cell-selected', + focusedItemCls: Ext.baseCSSPrefix + 'grid-row-focused', + beforeFocusedItemCls: Ext.baseCSSPrefix + 'grid-row-before-focused', + tableFocusedFirstCls: Ext.baseCSSPrefix + 'grid-table-focused-first', + tableSelectedFirstCls: Ext.baseCSSPrefix + 'grid-table-selected-first', + tableOverFirstCls: Ext.baseCSSPrefix + 'grid-table-over-first', + overItemCls: Ext.baseCSSPrefix + 'grid-row-over', + beforeOverItemCls: Ext.baseCSSPrefix + 'grid-row-before-over', + altRowCls: Ext.baseCSSPrefix + 'grid-row-alt', + dirtyCls: Ext.baseCSSPrefix + 'grid-dirty-cell', + rowClsRe: new RegExp('(?:^|\\s*)' + Ext.baseCSSPrefix + 'grid-row-(first|last|alt)(?:\\s+|$)', 'g'), + cellRe: new RegExp(Ext.baseCSSPrefix + 'grid-cell-([^\\s]+) ', ''), + positionBody: true, + + + trackOver: true, + + + getRowClass: null, + + + stripeRows: true, + + + markDirty : true, + + + + + tpl: '{%values.view.tableTpl.applyOut(values, out)%}', + + tableTpl: [ + '{%', + + 'var view=values.view,tableCls=["' + Ext.baseCSSPrefix + '" + view.id + "-table ' + Ext.baseCSSPrefix + 'grid-table"];', + 'if (view.columnLines) tableCls[tableCls.length]=view.ownerCt.colLinesCls;', + 'if (view.rowLines) tableCls[tableCls.length]=view.ownerCt.rowLinesCls;', + '%}', + '', + '{[view.renderColumnSizer(out)]}', + '{[view.renderTHead(values, out)]}', + '{[view.renderTFoot(values, out)]}', + '', + '{%', + 'view.renderRows(values.rows, values.viewStartIndex, out);', + '%}', + '', + '', + { + priority: 0 + } + ], + + rowTpl: [ + '{%', + 'var dataRowCls = values.recordIndex === -1 ? "" : " ' + Ext.baseCSSPrefix + 'grid-data-row";', + '%}', + '', + '' + + '{%', + 'parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)', + '%}', + '', + '', + { + priority: 0 + } + ], + + cellTpl: [ + '', + '
{style}">{value}
', + '', { + priority: 0 + } + ], + + + refreshSelmodelOnRefresh: false, + + tableValues: {}, + + + + rowValues: { + itemClasses: [], + rowClasses: [] + }, + cellValues: { + classes: [ + Ext.baseCSSPrefix + 'grid-cell ' + Ext.baseCSSPrefix + 'grid-td' + ] + }, + + + renderBuffer: document.createElement('div'), + + constructor: function(config) { + + if (config.grid.isTree) { + config.baseCls = Ext.baseCSSPrefix + 'tree-view'; + } + this.callParent([config]); + }, + + initComponent: function() { + var me = this, + scroll = me.scroll; + + this.addEvents( + + 'beforecellclick', + + 'cellclick', + + 'beforecelldblclick', + + 'celldblclick', + + 'beforecellcontextmenu', + + 'cellcontextmenu', + + 'beforecellmousedown', + + 'cellmousedown', + + 'beforecellmouseup', + + 'cellmouseup', + + 'beforecellkeydown', + + 'cellkeydown' + ); + + + me.body = new Ext.dom.Element.Fly(); + me.body.id = me.id + 'gridBody'; + + + + me.autoScroll = undefined; + + + + if (!me.trackOver) { + me.overItemCls = null; + me.beforeOverItemCls = null; + } + + + if (scroll === true || scroll === 'both') { + me.autoScroll = true; + } else if (scroll === 'horizontal') { + me.overflowX = 'auto'; + } else if (scroll === 'vertical') { + me.overflowY = 'auto'; + } + me.selModel.view = me; + me.headerCt.view = me; + + + + me.grid.view = me; + me.initFeatures(me.grid); + delete me.grid; + + + me.tpl = me.getTpl('tpl'); + me.itemSelector = me.getItemSelector(); + me.all = new Ext.view.NodeCache(me); + me.callParent(); + }, + + + moveColumn: function(fromIdx, toIdx, colsToMove) { + var me = this, + fragment = (colsToMove > 1) ? document.createDocumentFragment() : undefined, + destinationCellIdx = toIdx, + colCount = me.getGridColumns().length, + lastIndex = colCount - 1, + doFirstLastClasses = (me.firstCls || me.lastCls) && (toIdx === 0 || toIdx == colCount || fromIdx === 0 || fromIdx == lastIndex), + i, + j, + rows, len, tr, cells, + tables; + + + + if (me.rendered && toIdx !== fromIdx) { + + + rows = me.el.query(me.getDataRowSelector()); + + if (toIdx > fromIdx && fragment) { + destinationCellIdx -= colsToMove; + } + + for (i = 0, len = rows.length; i < len; i++) { + tr = rows[i]; + cells = tr.childNodes; + + + if (doFirstLastClasses) { + + if (cells.length === 1) { + Ext.fly(cells[0]).addCls(me.firstCls); + Ext.fly(cells[0]).addCls(me.lastCls); + continue; + } + if (fromIdx === 0) { + Ext.fly(cells[0]).removeCls(me.firstCls); + Ext.fly(cells[1]).addCls(me.firstCls); + } else if (fromIdx === lastIndex) { + Ext.fly(cells[lastIndex]).removeCls(me.lastCls); + Ext.fly(cells[lastIndex - 1]).addCls(me.lastCls); + } + if (toIdx === 0) { + Ext.fly(cells[0]).removeCls(me.firstCls); + Ext.fly(cells[fromIdx]).addCls(me.firstCls); + } else if (toIdx === colCount) { + Ext.fly(cells[lastIndex]).removeCls(me.lastCls); + Ext.fly(cells[fromIdx]).addCls(me.lastCls); + } + } + + if (fragment) { + for (j = 0; j < colsToMove; j++) { + fragment.appendChild(cells[fromIdx]); + } + tr.insertBefore(fragment, cells[destinationCellIdx] || null); + } else { + tr.insertBefore(cells[fromIdx], cells[destinationCellIdx] || null); + } + } + + + tables = me.el.query(me.getBodySelector()); + for (i = 0, len = tables.length; i < len; i++) { + tr = tables[i]; + if (fragment) { + for (j = 0; j < colsToMove; j++) { + fragment.appendChild(tr.childNodes[fromIdx]); + } + tr.insertBefore(fragment, tr.childNodes[destinationCellIdx] || null); + } else { + tr.insertBefore(tr.childNodes[fromIdx], tr.childNodes[destinationCellIdx] || null); + } + } + } + }, + + + scrollToTop: Ext.emptyFn, + + + addElListener: function(eventName, fn, scope){ + this.mon(this, eventName, fn, scope, { + element: 'el' + }); + }, + + + getGridColumns: function() { + return this.ownerCt.columnManager.getColumns(); + }, + + + getHeaderAtIndex: function(index) { + return this.ownerCt.columnManager.getHeaderAtIndex(index); + }, + + + getCell: function(record, column) { + var row = this.getNode(record, true); + return Ext.fly(row).down(column.getCellSelector()); + }, + + + getFeature: function(id) { + var features = this.featuresMC; + if (features) { + return features.get(id); + } + }, + + + + findFeature: function(ftype) { + if (this.features) { + return Ext.Array.findBy(this.features, function(feature) { + if (feature.ftype === ftype) { + return true; + } + }); + } + }, + + + initFeatures: function(grid) { + var me = this, + i, + features, + feature, + len; + + me.tableTpl = Ext.XTemplate.getTpl(this, 'tableTpl'); + me.rowTpl = Ext.XTemplate.getTpl(this, 'rowTpl'); + me.cellTpl = Ext.XTemplate.getTpl(this, 'cellTpl'); + + me.featuresMC = new Ext.util.MixedCollection(); + features = me.features = me.constructFeatures(); + len = features ? features.length : 0; + for (i = 0; i < len; i++) { + feature = features[i]; + + + feature.view = me; + feature.grid = grid; + me.featuresMC.add(feature); + feature.init(grid); + } + }, + + renderTHead: function(values, out) { + var headers = values.view.headerFns, + len, i; + + if (headers) { + for (i = 0, len = headers.length; i < len; ++i) { + headers[i].call(this, values, out); + } + } + }, + + + + + + addHeaderFn: function(){ + var headers = this.headerFns; + if (!headers) { + headers = this.headerFns = []; + } + headers.push(fn); + }, + + renderTFoot: function(values, out){ + var footers = values.view.footerFns, + len, i; + + if (footers) { + for (i = 0, len = footers.length; i < len; ++i) { + footers[i].call(this, values, out); + } + } + }, + + addFooterFn: function(fn){ + var footers = this.footerFns; + if (!footers) { + footers = this.footerFns = []; + } + footers.push(fn); + }, + + addTableTpl: function(newTpl) { + return this.addTpl('tableTpl', newTpl); + }, + + addRowTpl: function(newTpl) { + return this.addTpl('rowTpl', newTpl); + }, + + addCellTpl: function(newTpl) { + return this.addTpl('cellTpl', newTpl); + }, + + addTpl: function(which, newTpl) { + var me = this, + tpl, + prevTpl; + + newTpl = Ext.Object.chain(newTpl); + + + + + + + if (!newTpl.isTemplate) { + newTpl.applyOut = me.tplApplyOut; + } + + + for (tpl = me[which]; newTpl.priority < tpl.priority; tpl = tpl.nextTpl) { + prevTpl = tpl; + } + + + if (prevTpl) { + prevTpl.nextTpl = newTpl; + } + + else { + me[which] = newTpl; + } + newTpl.nextTpl = tpl; + return newTpl; + }, + + tplApplyOut: function(values, out) { + if (this.before) { + if (this.before(values, out) === false) { + return; + } + } + this.nextTpl.applyOut(values, out); + if (this.after) { + this.after(values, out); + } + }, + + + constructFeatures: function() { + var me = this, + features = me.features, + feature, + result, + i = 0, len; + + if (features) { + result = []; + len = features.length; + for (; i < len; i++) { + feature = features[i]; + if (!feature.isFeature) { + feature = Ext.create('feature.' + feature.ftype, feature); + } + result[i] = feature; + } + } + return result; + }, + + beforeRender: function() { + var me = this; + me.callParent(); + + if (!me.enableTextSelection) { + me.protoEl.unselectable(); + } + }, + + + onViewScroll: function(e, t) { + this.callParent(arguments); + this.fireEvent('bodyscroll', e, t); + }, + + + + + createRowElement: function(record, index) { + var me = this, + div = me.renderBuffer; + + me.tpl.overwrite(div, me.collectData([record], index)); + + return Ext.fly(div).down(me.getNodeContainerSelector(), true).firstChild; + }, + + + + + bufferRender: function(records, index) { + var me = this, + div = me.renderBuffer; + + me.tpl.overwrite(div, me.collectData(records, index)); + return Ext.Array.toArray(Ext.fly(div).down(me.getNodeContainerSelector(), true).childNodes); + }, + + collectData: function(records, startIndex) { + this.rowValues.view = this; + + return { + view: this, + rows: records, + viewStartIndex: startIndex, + tableStyle: this.bufferedRenderer ? ('position:absolute;top:' + this.bufferedRenderer.bodyTop) : '' + }; + }, + + + + + collectNodes: function(targetEl) { + this.all.fill(this.getNodeContainer().childNodes, this.all.startIndex); + }, + + + + + + + + refreshSize: function() { + var me = this, + grid, + bodySelector = me.getBodySelector(); + + + + if (bodySelector) { + me.body.attach(me.el.child(bodySelector, true)); + } + + if (!me.hasLoadingHeight) { + grid = me.up('tablepanel'); + + + + Ext.suspendLayouts(); + + me.callParent(); + + + + grid.updateLayout(); + + Ext.resumeLayouts(true); + } + }, + + statics: { + getBoundView: function(node) { + return Ext.getCmp(node.getAttribute('data-boundView')); + } + }, + + getRecord: function(node) { + node = this.getNode(node); + if (node) { + var recordIndex = node.getAttribute('data-recordIndex'); + if (recordIndex) { + recordIndex = parseInt(recordIndex, 10); + if (recordIndex > -1) { + + + return this.store.data.getAt(recordIndex); + } + } + return this.dataSource.data.get(node.getAttribute('data-recordId')); + } + }, + + indexOf: function(node) { + node = this.getNode(node, false); + if (!node && node !== 0) { + return -1; + } + return this.all.indexOf(node); + }, + + indexInStore: function(node) { + node = this.getNode(node, true); + if (!node && node !== 0) { + return -1; + } + var recordIndex = node.getAttribute('data-recordIndex'); + if (recordIndex) { + return parseInt(recordIndex, 10); + } + return this.dataSource.indexOf(this.getRecord(node)); + }, + + renderRows: function(rows, viewStartIndex, out) { + var rowValues = this.rowValues, + rowCount = rows.length, + i; + + rowValues.view = this; + rowValues.columns = this.ownerCt.columnManager.getColumns(); + + for (i = 0; i < rowCount; i++, viewStartIndex++) { + rowValues.itemClasses.length = rowValues.rowClasses.length = 0; + this.renderRow(rows[i], viewStartIndex, out); + } + + + rowValues.view = rowValues.columns = rowValues.record = null; + }, + + + + renderColumnSizer: function(out) { + var columns = this.getGridColumns(), + len = columns.length, i, + column, width; + + for (i = 0; i < len; i++) { + column = columns[i]; + width = column.hidden ? 0 : (column.lastBox ? column.lastBox.width : Ext.grid.header.Container.prototype.defaultWidth); + out.push(''); + } + }, + + + renderRow: function(record, rowIdx, out) { + var me = this, + isMetadataRecord = rowIdx === -1, + selModel = me.selModel, + rowValues = me.rowValues, + itemClasses = rowValues.itemClasses, + rowClasses = rowValues.rowClasses, + cls, + rowTpl = me.rowTpl; + + + rowValues.record = record; + rowValues.recordId = record.internalId; + rowValues.recordIndex = rowIdx; + rowValues.rowId = me.getRowId(record); + rowValues.itemCls = rowValues.rowCls = ''; + if (!rowValues.columns) { + rowValues.columns = me.ownerCt.columnManager.getColumns(); + } + + itemClasses.length = rowClasses.length = 0; + + + + + if (!isMetadataRecord) { + itemClasses[0] = Ext.baseCSSPrefix + "grid-row"; + if (selModel && selModel.isRowSelected) { + if (selModel.isRowSelected(rowIdx + 1)) { + itemClasses.push(me.beforeSelectedItemCls); + } + if (selModel.isRowSelected(record)) { + itemClasses.push(me.selectedItemCls); + } + } + + if (me.stripeRows && rowIdx % 2 !== 0) { + rowClasses.push(me.altRowCls); + } + + if (me.getRowClass) { + cls = me.getRowClass(record, rowIdx, null, me.dataSource); + if (cls) { + rowClasses.push(cls); + } + } + } + + if (out) { + rowTpl.applyOut(rowValues, out); + } else { + return rowTpl.apply(rowValues); + } + }, + + + renderCell: function(column, record, recordIndex, columnIndex, out) { + var me = this, + selModel = me.selModel, + cellValues = me.cellValues, + classes = cellValues.classes, + fieldValue = record.data[column.dataIndex], + cellTpl = me.cellTpl, + value, clsInsertPoint; + + cellValues.record = record; + cellValues.column = column; + cellValues.recordIndex = recordIndex; + cellValues.columnIndex = columnIndex; + cellValues.cellIndex = columnIndex; + cellValues.align = column.align; + cellValues.tdCls = column.tdCls; + cellValues.innerCls = column.innerCls; + cellValues.style = cellValues.tdAttr = ""; + cellValues.unselectableAttr = me.enableTextSelection ? '' : 'unselectable="on"'; + + if (column.renderer && column.renderer.call) { + value = column.renderer.call(column.scope || me.ownerCt, fieldValue, cellValues, record, recordIndex, columnIndex, me.dataSource, me); + if (cellValues.css) { + + + record.cssWarning = true; + cellValues.tdCls += ' ' + cellValues.css; + delete cellValues.css; + } + } else { + value = fieldValue; + } + cellValues.value = (value == null || value === '') ? ' ' : value; + + + classes[1] = Ext.baseCSSPrefix + 'grid-cell-' + column.getItemId(); + + + + clsInsertPoint = 2; + + if (column.tdCls) { + classes[clsInsertPoint++] = column.tdCls; + } + if (me.markDirty && record.isModified(column.dataIndex)) { + classes[clsInsertPoint++] = me.dirtyCls; + } + if (column.isFirstVisible) { + classes[clsInsertPoint++] = me.firstCls; + } + if (column.isLastVisible) { + classes[clsInsertPoint++] = me.lastCls; + } + if (!me.enableTextSelection) { + classes[clsInsertPoint++] = Ext.baseCSSPrefix + 'unselectable'; + } + + classes[clsInsertPoint++] = cellValues.tdCls; + if (selModel && selModel.isCellSelected && selModel.isCellSelected(me, recordIndex, columnIndex)) { + classes[clsInsertPoint++] = (me.selectedCellCls); + } + + + classes.length = clsInsertPoint; + + cellValues.tdCls = classes.join(' '); + + cellTpl.applyOut(cellValues, out); + + + cellValues.column = null; + }, + + + getNode: function(nodeInfo, dataRow) { + var fly, + result = this.callParent(arguments); + + if (result && result.tagName) { + if (dataRow) { + if (!(fly = Ext.fly(result)).is(this.dataRowSelector)) { + return fly.down(this.dataRowSelector, true); + } + } else if (dataRow === false) { + if (!(fly = Ext.fly(result)).is(this.itemSelector)) { + return fly.up(this.itemSelector, null, true); + } + } + } + return result; + }, + + getRowId: function(record){ + return this.id + '-record-' + record.internalId; + }, + + constructRowId: function(internalId){ + return this.id + '-record-' + internalId; + }, + + getNodeById: function(id, dataRow){ + id = this.constructRowId(id); + return this.retrieveNode(id, dataRow); + }, + + getNodeByRecord: function(record, dataRow) { + var id = this.getRowId(record); + return this.retrieveNode(id, dataRow); + }, + + retrieveNode: function(id, dataRow){ + var result = this.el.getById(id, true), + itemSelector = this.itemSelector, + fly; + + if (dataRow === false && result) { + if (!(fly = Ext.fly(result)).is(itemSelector)) { + return fly.up(itemSelector, null, true); + } + } + return result; + }, + + + updateIndexes: Ext.emptyFn, + + + bodySelector: 'table', + + + nodeContainerSelector: 'tbody', + + + itemSelector: 'tr.' + Ext.baseCSSPrefix + 'grid-row', + + + dataRowSelector: 'tr.' + Ext.baseCSSPrefix + 'grid-data-row', + + + cellSelector: 'td.' + Ext.baseCSSPrefix + 'grid-cell', + + + sizerSelector: 'col.' + Ext.baseCSSPrefix + 'grid-cell', + + innerSelector: 'div.' + Ext.baseCSSPrefix + 'grid-cell-inner', + + getNodeContainer: function() { + return this.el.down(this.nodeContainerSelector, true); + }, + + + getBodySelector: function() { + return this.bodySelector + '.' + Ext.baseCSSPrefix + this.id + '-table'; + }, + + + getNodeContainerSelector: function() { + return this.nodeContainerSelector; + }, + + + getColumnSizerSelector: function(header) { + return this.sizerSelector + '-' + header.getItemId(); + }, + + + getItemSelector: function() { + return this.itemSelector; + }, + + + getDataRowSelector: function() { + return this.dataRowSelector; + }, + + + getCellSelector: function(header) { + var result = this.cellSelector; + if (header) { + result += '-' + header.getItemId(); + } + return result; + }, + + + getCellInnerSelector: function(header) { + return this.getCellSelector(header) + ' ' + this.innerSelector; + }, + + + addRowCls: function(rowInfo, cls) { + var row = this.getNode(rowInfo, false); + if (row) { + Ext.fly(row).addCls(cls); + } + }, + + + removeRowCls: function(rowInfo, cls) { + var row = this.getNode(rowInfo, false); + if (row) { + Ext.fly(row).removeCls(cls); + } + }, + + setHighlightedItem: function(item) { + var me = this, + highlighted = me.highlightedItem; + + if (highlighted && me.el.isAncestor(highlighted) && me.isRowStyleFirst(highlighted)) { + me.getRowStyleTableEl(highlighted).removeCls(me.tableOverFirstCls); + } + + if (item && me.isRowStyleFirst(item)) { + me.getRowStyleTableEl(item).addCls(me.tableOverFirstCls); + } + + me.callParent(arguments); + }, + + + onRowSelect : function(rowIdx) { + var me = this; + + me.addRowCls(rowIdx, me.selectedItemCls); + if (me.isRowStyleFirst(rowIdx)) { + me.getRowStyleTableEl(rowIdx).addCls(me.tableSelectedFirstCls); + } else { + me.addRowCls(rowIdx - 1, me.beforeSelectedItemCls); + } + }, + + + onRowDeselect : function(rowIdx) { + var me = this; + + me.removeRowCls(rowIdx, [me.selectedItemCls, me.focusedItemCls]); + if (me.isRowStyleFirst(rowIdx)) { + me.getRowStyleTableEl(rowIdx).removeCls([me.tableFocusedFirstCls, me.tableSelectedFirstCls]); + } else { + me.removeRowCls(rowIdx - 1, [me.beforeFocusedItemCls, me.beforeSelectedItemCls]); + } + }, + + onCellSelect: function(position) { + var cell = this.getCellByPosition(position); + if (cell) { + cell.addCls(this.selectedCellCls); + this.scrollCellIntoView(cell); + } + }, + + onCellDeselect: function(position) { + var cell = this.getCellByPosition(position, true); + if (cell) { + Ext.fly(cell).removeCls(this.selectedCellCls); + } + + }, + + getCellByPosition: function(position, returnDom) { + if (position) { + var row = this.getNode(position.row, true), + header = this.ownerCt.columnManager.getHeaderAtIndex(position.column); + + if (header && row) { + return Ext.fly(row).down(this.getCellSelector(header), returnDom); + } + } + return false; + }, + + getFocusEl: function() { + var me = this, + result; + + if (me.refreshCounter) { + result = me.focusedRow; + + + if (!(result && me.el.contains(result))) { + + + if (me.all.getCount() && (result = me.getNode(me.all.item(0).dom, true))) { + me.focusRow(result); + } else { + result = me.body; + } + } + } else { + return me.el; + } + return Ext.get(result); + }, + + + + onRowFocus: function(rowIdx, highlight, supressFocus) { + var me = this; + + if (highlight) { + me.addRowCls(rowIdx, me.focusedItemCls); + if (me.isRowStyleFirst(rowIdx)) { + me.getRowStyleTableEl(rowIdx).addCls(me.tableFocusedFirstCls); + } else { + me.addRowCls(rowIdx - 1, me.beforeFocusedItemCls); + } + if (!supressFocus) { + me.focusRow(rowIdx); + } + + } else { + me.removeRowCls(rowIdx, me.focusedItemCls); + if (me.isRowStyleFirst(rowIdx)) { + me.getRowStyleTableEl(rowIdx).removeCls(me.tableFocusedFirstCls); + } else { + me.removeRowCls(rowIdx - 1, me.beforeFocusedItemCls); + } + } + + if ((Ext.isIE6 || Ext.isIE7) && !me.ownerCt.rowLines) { + me.repaintRow(rowIdx) + } + }, + + focus: function(selectText, delay) { + var me = this, + saveScroll = Ext.isIE && !delay, + scrollPos; + + + if (saveScroll) { + scrollPos = me.el.dom.scrollLeft; + } + this.callParent(arguments); + if (saveScroll) { + me.el.dom.scrollLeft = scrollPos; + } + }, + + + focusRow: function(row, delay) { + var me = this, + rowIdx, + gridCollapsed = me.ownerCt && me.ownerCt.collapsed, + record; + + + if (me.isVisible(true) && !gridCollapsed && (row = me.getNode(row, true))) { + me.scrollRowIntoView(row); + record = me.getRecord(row); + rowIdx = me.indexInStore(row); + + me.selModel.setLastFocused(record); + me.focusedRow = row; + me.focus(false, delay, function() { + me.fireEvent('rowfocus', record, row, rowIdx); + }); + } + }, + + scrollRowIntoView: function(row) { + row = this.getNode(row, true); + if (row) { + Ext.fly(row).scrollIntoView(this.el, false); + } + }, + + focusCell: function(position) { + var me = this, + cell = me.getCellByPosition(position), + record = me.getRecord(position.row); + + me.focusRow(record); + if (cell) { + me.scrollCellIntoView(cell); + me.fireEvent('cellfocus', record, cell, position); + } + }, + + scrollCellIntoView: function(cell) { + + + if (cell.row != null && cell.column != null) { + cell = this.getCellByPosition(cell); + } + if (cell) { + Ext.fly(cell).scrollIntoView(this.el, true); + } + }, + + + scrollByDelta: function(delta, dir) { + dir = dir || 'scrollTop'; + var elDom = this.el.dom; + elDom[dir] = (elDom[dir] += delta); + }, + + + isDataRow: function(row) { + return Ext.fly(row).hasCls(Ext.baseCSSPrefix + 'grid-data-row'); + }, + + syncRowHeights: function(firstRow, secondRow) { + firstRow = Ext.get(firstRow); + secondRow = Ext.get(secondRow); + firstRow.dom.style.height = secondRow.dom.style.height = ''; + var me = this, + rowTpl = me.rowTpl, + firstRowHeight = firstRow.dom.offsetHeight, + secondRowHeight = secondRow.dom.offsetHeight; + + + if (firstRowHeight !== secondRowHeight) { + + + while (rowTpl) { + if (rowTpl.syncRowHeights) { + + if (rowTpl.syncRowHeights(firstRow, secondRow) === false) { + break; + } + } + rowTpl = rowTpl.nextTpl; + } + + + firstRowHeight = firstRow.dom.offsetHeight; + secondRowHeight = secondRow.dom.offsetHeight; + if (firstRowHeight !== secondRowHeight) { + + + firstRow = firstRow.down('[data-recordId]') || firstRow; + secondRow = secondRow.down('[data-recordId]') || secondRow; + + + if (firstRow && secondRow) { + firstRow.dom.style.height = secondRow.dom.style.height = ''; + firstRowHeight = firstRow.dom.offsetHeight; + secondRowHeight = secondRow.dom.offsetHeight; + + if (firstRowHeight > secondRowHeight) { + firstRow.setHeight(firstRowHeight); + secondRow.setHeight(firstRowHeight); + } else if (secondRowHeight > firstRowHeight) { + firstRow.setHeight(secondRowHeight); + secondRow.setHeight(secondRowHeight); + } + } + } + } + }, + + onIdChanged: function(store, rec, oldId, newId, oldInternalId){ + var me = this, + rowDom; + + if (me.viewReady) { + rowDom = me.getNodeById(oldInternalId); + if (rowDom) { + rowDom.setAttribute('data-recordId', rec.internalId); + rowDom.id = me.getRowId(rec); + } + } + }, + + + onUpdate : function(store, record, operation, changedFieldNames) { + var me = this, + rowTpl = me.rowTpl, + index, + oldRow, oldRowDom, + newRowDom, + newAttrs, attLen, attName, attrIndex, + overItemCls, beforeOverItemCls, + focusedItemCls, beforeFocusedItemCls, + selectedItemCls, beforeSelectedItemCls, + columns; + + if (me.viewReady) { + + oldRowDom = me.getNodeByRecord(record, false); + + + if (oldRowDom) { + overItemCls = me.overItemCls; + beforeOverItemCls = me.overItemCls; + focusedItemCls = me.focusedItemCls; + beforeFocusedItemCls = me.beforeFocusedItemCls; + selectedItemCls = me.selectedItemCls; + beforeSelectedItemCls = me.beforeSelectedItemCls; + + index = me.indexInStore(record); + oldRow = Ext.fly(oldRowDom, '_internal'); + newRowDom = me.createRowElement(record, index); + if (oldRow.hasCls(overItemCls)) { + Ext.fly(newRowDom).addCls(overItemCls); + } + if (oldRow.hasCls(beforeOverItemCls)) { + Ext.fly(newRowDom).addCls(beforeOverItemCls); + } + if (oldRow.hasCls(focusedItemCls)) { + Ext.fly(newRowDom).addCls(focusedItemCls); + } + if (oldRow.hasCls(beforeFocusedItemCls)) { + Ext.fly(newRowDom).addCls(beforeFocusedItemCls); + } + if (oldRow.hasCls(selectedItemCls)) { + Ext.fly(newRowDom).addCls(selectedItemCls); + } + if (oldRow.hasCls(beforeSelectedItemCls)) { + Ext.fly(newRowDom).addCls(beforeSelectedItemCls); + } + columns = me.ownerCt.columnManager.getColumns(); + + + + + + if (Ext.isIE9m && oldRowDom.mergeAttributes) { + oldRowDom.mergeAttributes(newRowDom, true); + } else { + newAttrs = newRowDom.attributes; + attLen = newAttrs.length; + for (attrIndex = 0; attrIndex < attLen; attrIndex++) { + attName = newAttrs[attrIndex].name; + if (attName !== 'id') { + oldRowDom.setAttribute(attName, newAttrs[attrIndex].value); + } + } + } + + + + if (columns.length) { + me.updateColumns(record, me.getNode(oldRowDom, true), me.getNode(newRowDom, true), columns, changedFieldNames); + } + + + while (rowTpl) { + if (rowTpl.syncContent) { + if (rowTpl.syncContent(oldRowDom, newRowDom) === false) { + break; + } + } + rowTpl = rowTpl.nextTpl; + } + + + + me.fireEvent('itemupdate', record, index, oldRowDom); + me.refreshSize(); + } + } + }, + + updateColumns: function(record, oldRowDom, newRowDom, columns, changedFieldNames) { + var me = this, + newAttrs, attLen, attName, attrIndex, + colCount = columns.length, + colIndex, + column, + oldCell, newCell, + row, + + + + + editingPlugin = me.editingPlugin || (me.lockingPartner && me.ownerCt.ownerLockable.view.editingPlugin), + + + isEditing = editingPlugin && editingPlugin.editing, + cellSelector = me.getCellSelector(); + + + + if (oldRowDom.mergeAttributes) { + oldRowDom.mergeAttributes(newRowDom, true); + } else { + newAttrs = newRowDom.attributes; + attLen = newAttrs.length; + for (attrIndex = 0; attrIndex < attLen; attrIndex++) { + attName = newAttrs[attrIndex].name; + if (attName !== 'id') { + oldRowDom.setAttribute(attName, newAttrs[attrIndex].value); + } + } + } + + + for (colIndex = 0; colIndex < colCount; colIndex++) { + column = columns[colIndex]; + + + + if (me.shouldUpdateCell(record, column, changedFieldNames)) { + + + + cellSelector = me.getCellSelector(column); + oldCell = Ext.DomQuery.selectNode(cellSelector, oldRowDom); + newCell = Ext.DomQuery.selectNode(cellSelector, newRowDom); + + + if (isEditing) { + Ext.fly(oldCell).syncContent(newCell); + } + + else { + + row = oldCell.parentNode; + row.insertBefore(newCell, oldCell); + row.removeChild(oldCell); + } + } + } + }, + + shouldUpdateCell: function(record, column, changedFieldNames){ + + + + + if (column.hasCustomRenderer || !changedFieldNames) { + return true; + } + + if (changedFieldNames) { + var len = changedFieldNames.length, + i, field; + + for (i = 0; i < len; ++i) { + field = changedFieldNames[i]; + if (field === column.dataIndex || field === record.idProperty) { + return true; + } + } + } + return false; + }, + + + refresh: function() { + var me = this, + hasFocus = me.el && me.el.isAncestor(Ext.Element.getActiveElement()); + + me.callParent(arguments); + me.headerCt.setSortState(); + + + + if (me.el && !me.all.getCount() && me.headerCt && me.headerCt.tooNarrow) { + me.el.createChild({style:'position:absolute;height:1px;width:1px;left:' + (me.headerCt.getFullWidth() - 1) + 'px'}); + } + + if (hasFocus) { + me.selModel.onLastFocusChanged(null, me.selModel.lastFocused); + } + }, + + processItemEvent: function(record, row, rowIndex, e) { + + if (this.indexInStore(row) !== -1) { + var me = this, + cell = e.getTarget(me.getCellSelector(), row), + cellIndex, + map = me.statics().EventMap, + selModel = me.getSelectionModel(), + type = e.type, + features = me.features, + len = features.length, + i, result, feature, header; + + if (type == 'keydown' && !cell && selModel.getCurrentPosition) { + + cell = me.getCellByPosition(selModel.getCurrentPosition(), true); + } + + + if (cell) { + if (!cell.parentNode) { + + + return false; + } + + header = me.getHeaderByCell(cell); + cellIndex = Ext.Array.indexOf(me.getGridColumns(), header); + } else { + cellIndex = -1; + } + + result = me.fireEvent('uievent', type, me, cell, rowIndex, cellIndex, e, record, row); + + if (result === false || me.callParent(arguments) === false) { + me.selModel.onVetoUIEvent(type, me, cell, rowIndex, cellIndex, e, record, row); + return false; + } + + for (i = 0; i < len; ++i) { + feature = features[i]; + + + if (feature.wrapsItem) { + if (feature.vetoEvent(record, row, rowIndex, e) === false) { + + + me.processSpecialEvent(e); + return false; + } + } + } + + + if (type == 'mouseover' || type == 'mouseout') { + return true; + } + + if(!cell) { + + + return true; + } + + return !( + + (me['onBeforeCell' + map[type]](cell, cellIndex, record, row, rowIndex, e) === false) || + (me.fireEvent('beforecell' + type, me, cell, cellIndex, record, row, rowIndex, e) === false) || + (me['onCell' + map[type]](cell, cellIndex, record, row, rowIndex, e) === false) || + (me.fireEvent('cell' + type, me, cell, cellIndex, record, row, rowIndex, e) === false) + ); + } else { + + this.processSpecialEvent(e); + return false; + } + }, + + processSpecialEvent: function(e) { + var me = this, + features = me.features, + ln = features.length, + type = e.type, + i, feature, prefix, featureTarget, + beforeArgs, args, + panel = me.ownerCt; + + me.callParent(arguments); + + if (type == 'mouseover' || type == 'mouseout') { + return; + } + + for (i = 0; i < ln; i++) { + feature = features[i]; + if (feature.hasFeatureEvent) { + featureTarget = e.getTarget(feature.eventSelector, me.getTargetEl()); + if (featureTarget) { + prefix = feature.eventPrefix; + + + beforeArgs = feature.getFireEventArgs('before' + prefix + type, me, featureTarget, e); + args = feature.getFireEventArgs(prefix + type, me, featureTarget, e); + + if ( + + (me.fireEvent.apply(me, beforeArgs) === false) || + + (panel.fireEvent.apply(panel, beforeArgs) === false) || + + (me.fireEvent.apply(me, args) === false) || + + (panel.fireEvent.apply(panel, args) === false) + ) { + return false; + } + } + } + } + return true; + }, + + onCellMouseDown: Ext.emptyFn, + onCellMouseUp: Ext.emptyFn, + onCellClick: Ext.emptyFn, + onCellDblClick: Ext.emptyFn, + onCellContextMenu: Ext.emptyFn, + onCellKeyDown: Ext.emptyFn, + onBeforeCellMouseDown: Ext.emptyFn, + onBeforeCellMouseUp: Ext.emptyFn, + onBeforeCellClick: Ext.emptyFn, + onBeforeCellDblClick: Ext.emptyFn, + onBeforeCellContextMenu: Ext.emptyFn, + onBeforeCellKeyDown: Ext.emptyFn, + + + expandToFit: function(header) { + this.autoSizeColumn(header); + }, + + + autoSizeColumn: function(header) { + if (Ext.isNumber(header)) { + header = this.getGridColumns[header]; + } + if (header) { + if (header.isGroupHeader) { + header.autoSize(); + return; + } + delete header.flex; + header.setWidth(this.getMaxContentWidth(header)); + } + }, + + + getMaxContentWidth: function(header) { + var me = this, + cells = me.el.query(header.getCellInnerSelector()), + originalWidth = header.getWidth(), + i = 0, + ln = cells.length, + hasPaddingBug = Ext.supports.ScrollWidthInlinePaddingBug, + columnSizer = me.body.select(me.getColumnSizerSelector(header)), + max = Math.max, + paddingAdjust, maxWidth; + + if (hasPaddingBug && ln > 0) { + paddingAdjust = me.getCellPaddingAfter(cells[0]); + } + + + columnSizer.setWidth(1); + + + maxWidth = header.textEl.dom.offsetWidth + header.titleEl.getPadding('lr'); + for (; i < ln; i++) { + maxWidth = max(maxWidth, cells[i].scrollWidth); + } + if (hasPaddingBug) { + + maxWidth += paddingAdjust; + } + + + maxWidth = max(maxWidth, 40); + + + columnSizer.setWidth(originalWidth); + + return maxWidth; + }, + + getPositionByEvent: function(e) { + var me = this, + cellNode = e.getTarget(me.cellSelector), + rowNode = e.getTarget(me.itemSelector), + record = me.getRecord(rowNode), + header = me.getHeaderByCell(cellNode); + + return me.getPosition(record, header); + }, + + getHeaderByCell: function(cell) { + if (cell) { + var match = cell.className.match(this.cellRe); + if (match && match[1]) { + return this.ownerCt.columnManager.getHeaderById(match[1]); + } + } + return false; + }, + + + walkCells: function(pos, direction, e, preventWrap, verifierFn, scope) { + + + + if (!pos) { + return false; + } + + var me = this, + row = pos.row, + column = pos.column, + rowCount = me.dataSource.getCount(), + lastCol = me.ownerCt.columnManager.getColumns().length - 1, + newRow = row, + newColumn = column, + activeHeader = me.ownerCt.columnManager.getHeaderAtIndex(column); + + + if (!activeHeader || activeHeader.hidden || !rowCount) { + return false; + } + + e = e || {}; + direction = direction.toLowerCase(); + switch (direction) { + case 'right': + + if (column === lastCol) { + + if (preventWrap || row === rowCount - 1) { + return false; + } + if (!e.ctrlKey) { + + newRow = me.walkRows(row, 1); + if (newRow !== row) { + newColumn = 0; + } + } + + } else { + if (!e.ctrlKey) { + newColumn = column + 1; + } else { + newColumn = lastCol; + } + } + break; + + case 'left': + + if (column === 0) { + + if (preventWrap || row === 0) { + return false; + } + if (!e.ctrlKey) { + + newRow = me.walkRows(row, -1); + if (newRow !== row) { + newColumn = lastCol; + } + } + + } else { + if (!e.ctrlKey) { + newColumn = column - 1; + } else { + newColumn = 0; + } + } + break; + + case 'up': + + if (row === 0) { + return false; + + } else { + if (!e.ctrlKey) { + newRow = me.walkRows(row, -1); + } else { + + newRow = me.walkRows(-1, 1); + } + } + break; + + case 'down': + + if (row === rowCount - 1) { + return false; + + } else { + if (!e.ctrlKey) { + newRow = me.walkRows(row, 1); + } else { + + newRow = me.walkRows(rowCount, -1); + } + } + break; + } + + if (verifierFn && verifierFn.call(scope || me, {row: newRow, column: newColumn}) !== true) { + return false; + } else { + return new Ext.grid.CellContext(me).setPosition(newRow, newColumn); + } + }, + + + walkRows: function(startRow, distance) { + + + var me = this, + moved = 0, + lastValid = startRow, + node, + last = (me.dataSource.buffered ? me.dataSource.getTotalCount() : me.dataSource.getCount()) - 1, + limit = (distance < 0) ? 0 : last, + increment = limit ? 1 : -1, + result = startRow; + + do { + + if (limit ? result >= limit : result <= 0) { + return lastValid || limit; + } + + + result += increment; + + + + if ((node = Ext.fly(me.getNode(result, true))) && node.isVisible(true)) { + moved += increment; + lastValid = result; + } + } while (moved !== distance); + return result; + }, + + + walkRecs: function(startRec, distance) { + + + var me = this, + moved = 0, + lastValid = startRec, + node, + last = (me.store.buffered ? me.store.getTotalCount() : me.store.getCount()) - 1, + limit = (distance < 0) ? 0 : last, + increment = limit ? 1 : -1, + testIndex = me.store.indexOf(startRec), + rec; + + do { + + if (limit ? testIndex >= limit : testIndex <= 0) { + return lastValid; + } + + + testIndex += increment; + + + + rec = me.store.getAt(testIndex); + if ((node = Ext.fly(me.getNodeByRecord(rec, true))) && node.isVisible(true)) { + moved += increment; + lastValid = rec; + } + } while (moved !== distance); + return lastValid; + }, + + getFirstVisibleRowIndex: function() { + var me = this, + count = (me.dataSource.buffered ? me.dataSource.getTotalCount() : me.dataSource.getCount()), + result = me.indexOf(me.all.first()) - 1; + + do { + result += 1; + if (result === count) { + return; + } + } while (!Ext.fly(me.getNode(result, true)).isVisible(true)); + return result; + }, + + getLastVisibleRowIndex: function() { + var me = this, + result = me.indexOf(me.all.last()); + + do { + result -= 1; + if (result === -1) { + return; + } + } while (!Ext.fly(me.getNode(result, true)).isVisible(true)); + return result; + }, + + getHeaderCt: function() { + return this.headerCt; + }, + + getPosition: function(record, header) { + return new Ext.grid.CellContext(this).setPosition(record, header); + }, + + beforeDestroy: function() { + var me = this; + + if (me.rendered) { + me.el.removeAllListeners(); + } + me.callParent(arguments); + }, + + onDestroy: function() { + var me = this, + features = me.featuresMC, + len, + i; + + if (features) { + for (i = 0, len = features.getCount(); i < len; ++i) { + features.getAt(i).destroy(); + } + } + me.featuresMC = null; + this.callParent(arguments); + }, + + + onAdd: function(ds, records, index) { + this.callParent(arguments); + this.doStripeRows(index); + }, + + + onRemove: function(ds, records, indexes) { + this.callParent(arguments); + this.doStripeRows(indexes[0]); + }, + + + doStripeRows: function(startRow, endRow) { + var me = this, + rows, + rowsLn, + i, + row; + + + if (me.rendered && me.stripeRows) { + rows = me.getNodes(startRow, endRow); + + for (i = 0, rowsLn = rows.length; i < rowsLn; i++) { + row = rows[i]; + + row.className = row.className.replace(me.rowClsRe, ' '); + startRow++; + + if (startRow % 2 === 0) { + row.className += (' ' + me.altRowCls); + } + } + } + }, + + repaintRow: function(rowIdx) { + var node = this.getNode(rowIdx), + tds = node.childNodes, + i = tds.length; + + while (i--) { + tds[i].className = tds[i].className; + } + }, + + + + + + getRowStyleTableEl: function(item ) { + var me = this; + + if (!item.tagName) { + item = this.getNode(item); + } + + return (me.isGrouping ? Ext.fly(item) : this.el).down('table.x-grid-table'); + }, + + + + + + isRowStyleFirst: function(item ) { + var me = this, + index; + + + if (item === -1) { + return false; + } + + if (!item.tagName) { + index = item; + item = this.getNode(item); + } else { + index = me.indexOf(item); + } + + return (!index || me.isGrouping && Ext.fly(item).hasCls(Ext.baseCSSPrefix + 'grid-group-row')); + }, + + getCellPaddingAfter: function(cell) { + return Ext.fly(cell).getPadding('r'); + } + +}); + + +Ext.define('Ext.grid.View', { + extend: Ext.view.Table , + alias: 'widget.gridview', + + + stripeRows: true, + + autoScroll: true +}); + + +Ext.define('Ext.grid.Panel', { + extend: Ext.panel.Table , + + alias: ['widget.gridpanel', 'widget.grid'], + alternateClassName: ['Ext.list.ListView', 'Ext.ListView', 'Ext.grid.GridPanel'], + viewType: 'gridview', + + lockable: false, + + + rowLines: true + + + + + + + + + +}); + + +Ext.define('Ext.grid.plugin.BufferedRendererTableView', { + override: 'Ext.view.Table', + + + onAdd: function(store, records, index) { + var me = this, + bufferedRenderer = me.bufferedRenderer, + rows = me.all; + + + if (me.rendered && bufferedRenderer && (rows.getCount() + records.length) > bufferedRenderer.viewSize) { + + + if (index < rows.startIndex + bufferedRenderer.viewSize && (index + records.length) > rows.startIndex) { + me.refreshView(); + } + + else { + bufferedRenderer.stretchView(me, bufferedRenderer.getScrollHeight()); + } + } + + + + else { + me.callParent([store, records, index]); + } + }, + + onRemove: function(store, records, indices) { + var me = this, + bufferedRenderer = me.bufferedRenderer; + + + me.callParent([store, records, indices]); + + + + + + if (me.rendered && bufferedRenderer) { + if (me.dataSource.getCount() > bufferedRenderer.viewSize) { + me.refreshView(); + } + + else { + bufferedRenderer.stretchView(me, bufferedRenderer.getScrollHeight()); + } + } + }, + + + onDataRefresh: function() { + var me = this; + + if (me.bufferedRenderer) { + + me.all.clear(); + me.bufferedRenderer.onStoreClear(); + } + me.callParent(); + } +}); + + +Ext.define('Ext.grid.RowEditorButtons', { + extend: Ext.container.Container , + alias: 'widget.roweditorbuttons', + + frame: true, + shrinkWrap: true, + position: 'bottom', + + constructor: function(config) { + var me = this, + rowEditor = config.rowEditor, + cssPrefix = Ext.baseCSSPrefix, + plugin = rowEditor.editingPlugin; + + config = Ext.apply({ + baseCls: cssPrefix + 'grid-row-editor-buttons', + defaults: { + xtype: 'button', + ui: rowEditor.buttonUI, + scope: plugin, + flex: 1, + minWidth: Ext.panel.Panel.prototype.minButtonWidth + }, + items: [{ + cls: cssPrefix + 'row-editor-update-button', + itemId: 'update', + handler: plugin.completeEdit, + text: rowEditor.saveBtnText, + disabled: rowEditor.updateButtonDisabled + }, { + cls: cssPrefix + 'row-editor-cancel-button', + handler: plugin.cancelEdit, + text: rowEditor.cancelBtnText + }] + }, config); + + me.callParent([config]); + + me.addClsWithUI(me.position); + }, + + setButtonPosition: function(position) { + var me = this; + + me.removeClsWithUI(me.position); + me.position = position; + me.addClsWithUI(position); + }, + + getFramingInfoCls: function(){ + return this.baseCls + '-' + this.ui + '-' + this.position; + }, + + getFrameInfo: function() { + var frameInfo = this.callParent(); + + + + + frameInfo.top = true; + + return frameInfo; + } +}); + + + + + + + + + + +Ext.define('Ext.grid.RowEditor', { + extend: Ext.form.Panel , + alias: 'widget.roweditor', + + + + + + + + + saveBtnText : 'Update', + + + cancelBtnText: 'Cancel', + + + errorsText: 'Errors', + + + dirtyText: 'You need to commit or cancel your changes', + + + lastScrollLeft: 0, + lastScrollTop: 0, + + border: false, + + buttonUI: 'default', + + + + hideMode: 'offsets', + + initComponent: function() { + var me = this, + grid = me.editingPlugin.grid, + Container = Ext.container.Container; + + me.cls = Ext.baseCSSPrefix + 'grid-editor ' + Ext.baseCSSPrefix + 'grid-row-editor'; + + me.layout = { + type: 'hbox', + align: 'middle' + }; + + me.lockable = grid.lockable; + + + if (me.lockable) { + me.items = [ + + me.lockedColumnContainer = new Container({ + id: grid.id + '-locked-editor-cells', + layout: { + type: 'hbox', + align: 'middle' + }, + + margin: '0 1 0 0' + }), + + + me.normalColumnContainer = new Container({ + flex: 1, + id: grid.id + '-normal-editor-cells', + layout: { + type: 'hbox', + align: 'middle' + } + }) + ]; + } else { + me.lockedColumnContainer = me.normalColumnContainer = me; + } + + me.callParent(arguments); + + if (me.fields) { + me.addFieldsForColumn(me.fields, true); + me.insertColumnEditor(me.fields); + delete me.fields; + } + + me.mon(me.hierarchyEventSource, { + scope: me, + show: me.repositionIfVisible + }); + me.getForm().trackResetOnLoad = true; + }, + + + + + + onGridResize: function() { + var me = this, + clientWidth = me.getClientWidth(), + grid = me.editingPlugin.grid, + gridBody = grid.body, + btns = me.getFloatingButtons(); + + me.setLocalX(gridBody.getOffsetsTo(grid)[0] + gridBody.getBorderWidth('l') - grid.el.getBorderWidth('l')); + + me.setWidth(clientWidth); + btns.setLocalX((clientWidth - btns.getWidth()) / 2); + }, + + onFieldRender: function(field){ + var me = this, + column = field.column; + + if (column.isVisible()) { + me.syncFieldWidth(column); + } else if (!column.rendered) { + + me.view.headerCt.on({ + afterlayout: Ext.Function.bind(me.syncFieldWidth, me, [column]), + single: true + }); + } + }, + + syncFieldWidth: function(column) { + var field = column.getEditor(), + width; + field._marginWidth = (field._marginWidth || field.el.getMargin('lr')); + width = column.getWidth() - field._marginWidth; + field.setWidth(width); + if (field.xtype === 'displayfield') { + + field.inputWidth = width; + } + }, + + onFieldChange: function() { + var me = this, + form = me.getForm(), + valid = form.isValid(); + if (me.errorSummary && me.isVisible()) { + me[valid ? 'hideToolTip' : 'showToolTip'](); + } + me.updateButton(valid); + me.isValid = valid; + }, + + updateButton: function(valid){ + var buttons = this.floatingButtons; + if (buttons) { + buttons.child('#update').setDisabled(!valid); + } else { + + this.updateButtonDisabled = !valid; + } + }, + + afterRender: function() { + var me = this, + plugin = me.editingPlugin, + grid = plugin.grid, + view = grid.lockable ? grid.normalGrid.view : grid.view, + field; + + me.callParent(arguments); + + + me.scrollingView = view; + me.scrollingViewEl = view.el; + view.mon(me.scrollingViewEl, 'scroll', me.onViewScroll, me); + + + me.mon(me.el, { + click: Ext.emptyFn, + stopPropagation: true + }); + + + me.mon(grid, { + resize: me.onGridResize, + scope: me + }); + + me.el.swallowEvent([ + 'keypress', + 'keydown' + ]); + + me.fieldScroller = me.normalColumnContainer.layout.innerCt; + me.fieldScroller.dom.style.overflow = 'hidden'; + me.fieldScroller.on({ + scroll: me.onFieldContainerScroll, + scope: me + }); + + me.keyNav = new Ext.util.KeyNav(me.el, { + enter: plugin.completeEdit, + esc: plugin.onEscKey, + scope: plugin + }); + + me.mon(plugin.view, { + beforerefresh: me.onBeforeViewRefresh, + refresh: me.onViewRefresh, + itemremove: me.onViewItemRemove, + scope: me + }); + + + me.preventReposition = true; + Ext.Array.each(me.query('[isFormField]'), function(field) { + if (field.column.isVisible()) { + me.onColumnShow(field.column); + } + }, me); + delete me.preventReposition; + }, + + onBeforeViewRefresh: function(view) { + var me = this, + viewDom = view.el.dom; + + if (me.el.dom.parentNode === viewDom) { + viewDom.removeChild(me.el.dom); + } + }, + + onViewRefresh: function(view) { + var me = this, + context = me.context, + row; + + + if (context && (row = view.getNode(context.record, true))) { + context.row = row; + me.reposition(); + if (me.tooltip && me.tooltip.isVisible()) { + me.tooltip.setTarget(context.row); + } + } else { + me.editingPlugin.cancelEdit(); + } + }, + + onViewItemRemove: function(record, index) { + var context = this.context; + if (context && record === context.record) { + + this.editingPlugin.cancelEdit(); + } + }, + + onViewScroll: function() { + var me = this, + viewEl = me.editingPlugin.view.el, + scrollingViewEl = me.scrollingViewEl, + scrollTop = scrollingViewEl.dom.scrollTop, + scrollLeft = scrollingViewEl.getScrollLeft(), + scrollLeftChanged = scrollLeft !== me.lastScrollLeft, + scrollTopChanged = scrollTop !== me.lastScrollTop, + row; + + me.lastScrollTop = scrollTop; + me.lastScrollLeft = scrollLeft; + if (me.isVisible()) { + row = Ext.getDom(me.context.row.id); + + + if (row && viewEl.contains(row)) { + if (scrollTopChanged) { + + + me.context.row = row; + me.reposition(null, true); + if ((me.tooltip && me.tooltip.isVisible()) || me.hiddenTip) { + me.repositionTip(); + } + + me.syncEditorClip(); + } + } + + else { + me.setLocalY(-400); + } + } + + + if (me.rendered && scrollLeftChanged) { + me.syncFieldsHorizontalScroll(); + } + }, + + + syncFieldsHorizontalScroll: function() { + + this.fieldScroller.setScrollLeft(this.lastScrollLeft); + }, + + + onFieldContainerScroll: function() { + this.scrollingViewEl.setScrollLeft(this.fieldScroller.getScrollLeft()); + }, + + onColumnResize: function(column, width) { + var me = this; + + if (me.rendered) { + + me.onGridResize(); + me.onViewScroll(); + if (!column.isGroupHeader) { + me.syncFieldWidth(column); + me.repositionIfVisible(); + } + } + }, + + onColumnHide: function(column) { + if (!column.isGroupHeader) { + column.getEditor().hide(); + this.repositionIfVisible(); + } + }, + + onColumnShow: function(column) { + var me = this; + + if (me.rendered && !column.isGroupHeader) { + column.getEditor().show(); + me.syncFieldWidth(column); + if (!me.preventReposition) { + this.repositionIfVisible(); + } + } + }, + + onColumnMove: function(column, fromIdx, toIdx) { + var me = this, + i, incr = 1, len, field, fieldIdx, + fieldContainer = column.isLocked() ? me.lockedColumnContainer : me.normalColumnContainer; + + + if (column.isGroupHeader) { + Ext.suspendLayouts(); + column = column.getGridColumns(); + + if (toIdx > fromIdx) { + toIdx--; + incr = 0; + } + + this.addFieldsForColumn(column); + for (i = 0, len = column.length; i < len; i++, fromIdx += incr, toIdx += incr) { + field = column[i].getEditor(); + fieldIdx = fieldContainer.items.indexOf(field); + + + + if (fieldIdx === -1) { + fieldContainer.insert(toIdx, field); + } + + + else if (fieldIdx != toIdx) { + fieldContainer.move(fromIdx, toIdx); + } + } + Ext.resumeLayouts(true); + } else { + if (toIdx > fromIdx) { + toIdx--; + } + this.addFieldsForColumn(column); + field = column.getEditor(); + fieldIdx = fieldContainer.items.indexOf(field); + if (fieldIdx === -1) { + fieldContainer.insert(toIdx, field); + } + else if (fieldIdx != toIdx) { + fieldContainer.move(fromIdx, toIdx); + } + } + }, + + onColumnAdd: function(column) { + + + if (column.isGroupHeader) { + column = column.getGridColumns(); + } + + this.addFieldsForColumn(column); + this.insertColumnEditor(column); + this.preventReposition = false; + }, + + insertColumnEditor: function(column) { + var me = this, + fieldContainer, + len, i; + + if (Ext.isArray(column)) { + for (i = 0, len = column.length; i < len; i++) { + me.insertColumnEditor(column[i]); + } + return; + } + + if (!column.getEditor) { + return; + } + + fieldContainer = column.isLocked() ? me.lockedColumnContainer : me.normalColumnContainer; + + + fieldContainer.insert(column.getVisibleIndex(), column.getEditor()); + }, + + onColumnRemove: function(ct, column) { + column = column.isGroupHeader ? column.getGridColumns() : column; + this.removeColumnEditor(column); + }, + + removeColumnEditor: function(column) { + var me = this, + field, + len, i; + + if (Ext.isArray(column)) { + for (i = 0, len = column.length; i < len; i++) { + me.removeColumnEditor(column[i]); + } + return; + } + + if (column.hasEditor()) { + field = column.getEditor(); + if (field && field.ownerCt) { + field.ownerCt.remove(field, false); + } + } + }, + + onColumnReplace: function(map, fieldId, column, oldColumn) { + this.onColumnRemove(oldColumn.ownerCt, oldColumn); + }, + + getFloatingButtons: function() { + var me = this, + btns = me.floatingButtons; + + if (!btns) { + me.floatingButtons = btns = new Ext.grid.RowEditorButtons({ + rowEditor: me + }); + } + return btns; + }, + + repositionIfVisible: function(c) { + var me = this, + view = me.view; + + + + if (c && (c == me || !c.el.isAncestor(view.el))) { + return; + } + + if (me.isVisible() && view.isVisible(true)) { + me.reposition(); + } + }, + + getRefOwner: function() { + return this.editingPlugin.grid; + }, + + + + + getRefItems: function() { + var me = this, + result; + + if (me.lockable) { + result = me.lockedColumnContainer.getRefItems(); + result.push.apply(result, me.normalColumnContainer.getRefItems()); + } else { + result = me.callParent(); + } + result.push.apply(result, me.getFloatingButtons().getRefItems()); + return result; + }, + + reposition: function(animateConfig, fromScrollHandler) { + var me = this, + context = me.context, + row = context && Ext.get(context.row), + yOffset = 0, + rowTop, + localY, + deltaY, + afterPosition; + + + if (row && Ext.isElement(row.dom)) { + + deltaY = me.syncButtonPosition(me.getScrollDelta()); + + if (!me.editingPlugin.grid.rowLines) { + + + + + yOffset = -parseInt(row.first().getStyle('border-bottom-width')); + } + rowTop = me.calculateLocalRowTop(row); + localY = me.calculateEditorTop(rowTop) + yOffset; + + + + + + if (!fromScrollHandler) { + afterPosition = function() { + if (deltaY) { + me.scrollingViewEl.scrollBy(0, deltaY, true); + } + me.focusContextCell(); + } + } + + me.syncEditorClip(); + + + + + if (animateConfig) { + me.animate(Ext.applyIf({ + to: { + top: localY + }, + duration: animateConfig.duration || 125, + callback: afterPosition + }, animateConfig)); + } else { + me.setLocalY(localY); + if (afterPosition) { + afterPosition(); + } + } + } + }, + + + getScrollDelta: function() { + var me = this, + scrollingViewDom = me.scrollingViewEl.dom, + context = me.context, + body = me.body, + deltaY = 0; + + if (context) { + deltaY = Ext.fly(context.row).getOffsetsTo(scrollingViewDom)[1] - body.getBorderPadding().beforeY; + if (deltaY > 0) { + deltaY = Math.max(deltaY + me.getHeight() + me.floatingButtons.getHeight() - + scrollingViewDom.clientHeight - body.getBorderWidth('b'), 0); + } + } + return deltaY; + }, + + + + + + calculateLocalRowTop: function(row) { + var grid = this.editingPlugin.grid; + return Ext.fly(row).getOffsetsTo(grid)[1] - grid.el.getBorderWidth('t') + this.lastScrollTop; + }, + + + + + calculateEditorTop: function(rowTop) { + return rowTop - this.body.getBorderPadding().beforeY - this.lastScrollTop; + }, + + getClientWidth: function() { + var me = this, + grid = me.editingPlugin.grid, + result; + + if (me.lockable) { + result = + grid.lockedGrid.getWidth() + + grid.normalGrid.view.el.dom.clientWidth - 1; + } + else { + result = grid.view.el.dom.clientWidth; + } + return result; + }, + + getEditor: function(fieldInfo) { + var me = this; + + if (Ext.isNumber(fieldInfo)) { + + + + return me.query('[isFormField]')[fieldInfo]; + } else if (fieldInfo.isHeader && !fieldInfo.isGroupHeader) { + return fieldInfo.getEditor(); + } + }, + + addFieldsForColumn: function(column, initial) { + var me = this, + i, + length, field; + + if (Ext.isArray(column)) { + for (i = 0, length = column.length; i < length; i++) { + me.addFieldsForColumn(column[i], initial); + } + return; + } + + if (column.getEditor) { + + + field = column.getEditor(null, { + xtype: 'displayfield', + + + getModelData: function() { + return null; + } + }); + if (column.align === 'right') { + field.fieldStyle = 'text-align:right'; + } + + if (column.xtype === 'actioncolumn') { + field.fieldCls += ' ' + Ext.baseCSSPrefix + 'form-action-col-field' + } + + if (me.isVisible() && me.context) { + if (field.is('displayfield')) { + me.renderColumnData(field, me.context.record, column); + } else { + field.suspendEvents(); + field.setValue(me.context.record.get(column.dataIndex)); + field.resumeEvents(); + } + } + if (column.hidden) { + me.onColumnHide(column); + } else if (column.rendered && !initial) { + + me.onColumnShow(column); + } + } + }, + + loadRecord: function(record) { + var me = this, + form = me.getForm(), + fields = form.getFields(), + items = fields.items, + length = items.length, + i, displayFields, + isValid; + + + for (i = 0; i < length; i++) { + items[i].suspendEvents(); + } + + form.loadRecord(record); + + for (i = 0; i < length; i++) { + items[i].resumeEvents(); + } + + isValid = form.isValid(); + if (me.errorSummary) { + if (isValid) { + me.hideToolTip(); + } else { + me.showToolTip(); + } + } + + me.updateButton(isValid); + + + displayFields = me.query('>displayfield'); + length = displayFields.length; + + for (i = 0; i < length; i++) { + me.renderColumnData(displayFields[i], record); + } + }, + + renderColumnData: function(field, record, activeColumn) { + var me = this, + grid = me.editingPlugin.grid, + headerCt = grid.headerCt, + view = me.scrollingView, + store = view.dataSource, + column = activeColumn || field.column, + value = record.get(column.dataIndex), + renderer = column.editRenderer || column.renderer, + metaData, + rowIdx, + colIdx; + + + if (renderer) { + metaData = { tdCls: '', style: '' }; + rowIdx = store.indexOf(record); + colIdx = headerCt.getHeaderIndex(column); + + value = renderer.call( + column.scope || headerCt.ownerCt, + value, + metaData, + record, + rowIdx, + colIdx, + store, + view + ); + } + + field.setRawValue(value); + field.resetOriginalValue(); + }, + + beforeEdit: function() { + var me = this, + scrollDelta; + + if (me.isVisible() && me.errorSummary && !me.autoCancel && me.isDirty()) { + + + scrollDelta = me.getScrollDelta(); + if (scrollDelta) { + me.scrollingViewEl.scrollBy(0, scrollDelta, true) + } + me.showToolTip(); + return false; + } + }, + + + startEdit: function(record, columnHeader) { + var me = this, + editingPlugin = me.editingPlugin, + grid = editingPlugin.grid, + context = me.context = editingPlugin.context; + + if (!me.rendered) { + me.width = me.getClientWidth(); + me.render(grid.el, grid.el.dom.firstChild); + me.getFloatingButtons().render(me.el); + + me.onViewScroll(); + } else { + me.syncFieldsHorizontalScroll(); + } + + if (me.isVisible()) { + me.reposition(true); + } else { + me.show(); + } + + + me.onGridResize(); + + + context.grid.getSelectionModel().select(record); + + + me.loadRecord(record); + }, + + + + + + syncButtonPosition: function(scrollDelta) { + var me = this, + floatingButtons = me.getFloatingButtons(), + scrollingViewElDom = me.scrollingViewEl.dom, + overflow = this.getScrollDelta() - (scrollingViewElDom.scrollHeight - + scrollingViewElDom.scrollTop - scrollingViewElDom.clientHeight); + + if (overflow > 0) { + if (!me._buttonsOnTop) { + floatingButtons.setButtonPosition('top'); + me._buttonsOnTop = true; + } + scrollDelta = 0; + } else if (me._buttonsOnTop) { + floatingButtons.setButtonPosition('bottom'); + me._buttonsOnTop = false; + } + + return scrollDelta; + }, + + + + syncEditorClip: function() { + var me = this, + overflow = me.getScrollDelta(), + btnHeight; + + if (overflow) { + + me.isOverflowing = true; + btnHeight = me.floatingButtons.getHeight(); + + if (overflow > 0) { + + me.clipBottom(Math.max(me.getHeight() - overflow + btnHeight, -btnHeight)); + } else if (overflow < 0) { + + overflow = Math.abs(overflow); + me.clipTop(Math.max(overflow, 0)); + } + } else if (me.isOverflowing) { + me.clearClip(); + me.isOverflowing = false; + } + }, + + + focusContextCell: function() { + var field = this.getEditor(this.context.column); + if (field && field.focus) { + field.focus(); + } + }, + + cancelEdit: function() { + var me = this, + form = me.getForm(), + fields = form.getFields(), + items = fields.items, + length = items.length, + i; + + me.hide(); + form.clearInvalid(); + + + for (i = 0; i < length; i++) { + items[i].suspendEvents(); + } + + form.reset(); + + for (i = 0; i < length; i++) { + items[i].resumeEvents(); + } + }, + + completeEdit: function() { + var me = this, + form = me.getForm(); + + if (!form.isValid()) { + return false; + } + + form.updateRecord(me.context.record); + me.hide(); + return true; + }, + + onShow: function() { + var me = this; + + me.callParent(arguments); + me.reposition(); + }, + + onHide: function() { + var me = this; + + me.callParent(arguments); + if (me.tooltip) { + me.hideToolTip(); + } + if (me.context) { + me.context.view.focusRow(me.context.record); + me.context = null; + } + }, + + isDirty: function() { + var me = this, + form = me.getForm(); + return form.isDirty(); + }, + + getToolTip: function() { + return this.tooltip || (this.tooltip = new Ext.tip.ToolTip({ + cls: Ext.baseCSSPrefix + 'grid-row-editor-errors', + title: this.errorsText, + autoHide: false, + closable: true, + closeAction: 'disable', + anchor: 'left', + anchorToTarget: false + })); + }, + + hideToolTip: function() { + var me = this, + tip = me.getToolTip(); + if (tip.rendered) { + tip.disable(); + } + me.hiddenTip = false; + }, + + showToolTip: function() { + var me = this, + tip = me.getToolTip(); + + tip.showAt([0, 0]); + tip.update(me.getErrors()); + me.repositionTip(); + tip.enable(); + }, + + repositionTip: function() { + var me = this, + tip = me.getToolTip(), + context = me.context, + row = Ext.get(context.row), + viewEl = me.scrollingViewEl, + viewHeight = viewEl.dom.clientHeight, + viewTop = me.lastScrollTop, + viewBottom = viewTop + viewHeight, + rowHeight = row.getHeight(), + rowTop = row.getOffsetsTo(me.context.view.body)[1], + rowBottom = rowTop + rowHeight; + + if (rowBottom > viewTop && rowTop < viewBottom) { + tip.showAt(tip.getAlignToXY(viewEl, 'tl-tr', [15, row.getOffsetsTo(viewEl)[1]])); + me.hiddenTip = false; + } else { + tip.hide(); + me.hiddenTip = true; + } + }, + + getErrors: function() { + var me = this, + errors = [], + fields = me.query('>[isFormField]'), + length = fields.length, + i; + + for (i = 0; i < length; i++) { + errors = errors.concat( + Ext.Array.map(fields[i].getErrors(), me.createErrorListItem) + ); + } + + + if (!errors.length && !me.autoCancel && me.isDirty()) { + errors[0] = me.createErrorListItem(me.dirtyText); + } + + return '
    ' + errors.join('') + '
'; + }, + + createErrorListItem: function(e) { + return '
  • ' + e + '
  • '; + }, + + beforeDestroy: function(){ + Ext.destroy(this.floatingButtons, this.tooltip); + this.callParent(); + }, + + clipBottom: function(value) { + this.el.setStyle('clip', 'rect(-1000px auto ' + value + 'px auto)'); + }, + + clipTop: function(value) { + this.el.setStyle('clip', 'rect(' + value + 'px auto 1000px auto)'); + }, + + clearClip: function(el) { + this.el.setStyle( + 'clip', + Ext.isIE8m || Ext.isIEQuirks ? 'rect(-1000px auto 1000px auto)' : 'auto' + ); + } +}); + + + +Ext.define('Ext.view.DropZone', { + extend: Ext.dd.DropZone , + + indicatorHtml: '
    ', + indicatorCls: Ext.baseCSSPrefix + 'grid-drop-indicator', + + constructor: function(config) { + var me = this; + Ext.apply(me, config); + + + + + + + if (!me.ddGroup) { + me.ddGroup = 'view-dd-zone-' + me.view.id; + } + + + + + me.callParent([me.view.el]); + }, + + + + fireViewEvent: function() { + var me = this, + result; + + me.lock(); + result = me.view.fireEvent.apply(me.view, arguments); + me.unlock(); + return result; + }, + + getTargetFromEvent : function(e) { + var node = e.getTarget(this.view.getItemSelector()), + mouseY, nodeList, testNode, i, len, box; + + + + if (!node) { + mouseY = e.getPageY(); + for (i = 0, nodeList = this.view.getNodes(), len = nodeList.length; i < len; i++) { + testNode = nodeList[i]; + box = Ext.fly(testNode).getBox(); + if (mouseY <= box.bottom) { + return testNode; + } + } + } + return node; + }, + + getIndicator: function() { + var me = this; + + if (!me.indicator) { + me.indicator = new Ext.Component({ + html: me.indicatorHtml, + cls: me.indicatorCls, + ownerCt: me.view, + floating: true, + shadow: false + }); + } + return me.indicator; + }, + + getPosition: function(e, node) { + var y = e.getXY()[1], + region = Ext.fly(node).getRegion(), + pos; + + if ((region.bottom - y) >= (region.bottom - region.top) / 2) { + pos = "before"; + } else { + pos = "after"; + } + return pos; + }, + + + containsRecordAtOffset: function(records, record, offset) { + if (!record) { + return false; + } + var view = this.view, + recordIndex = view.indexOf(record), + nodeBefore = view.getNode(recordIndex + offset, true), + recordBefore = nodeBefore ? view.getRecord(nodeBefore) : null; + + return recordBefore && Ext.Array.contains(records, recordBefore); + }, + + positionIndicator: function(node, data, e) { + var me = this, + view = me.view, + pos = me.getPosition(e, node), + overRecord = view.getRecord(node), + draggingRecords = data.records, + indicatorY; + + if (!Ext.Array.contains(draggingRecords, overRecord) && ( + pos == 'before' && !me.containsRecordAtOffset(draggingRecords, overRecord, -1) || + pos == 'after' && !me.containsRecordAtOffset(draggingRecords, overRecord, 1) + )) { + me.valid = true; + + if (me.overRecord != overRecord || me.currentPosition != pos) { + + indicatorY = Ext.fly(node).getY() - view.el.getY() - 1; + if (pos == 'after') { + indicatorY += Ext.fly(node).getHeight(); + } + me.getIndicator().setWidth(Ext.fly(view.el).getWidth()).showAt(0, indicatorY); + + + me.overRecord = overRecord; + me.currentPosition = pos; + } + } else { + me.invalidateDrop(); + } + }, + + invalidateDrop: function() { + if (this.valid) { + this.valid = false; + this.getIndicator().hide(); + } + }, + + + onNodeOver: function(node, dragZone, e, data) { + var me = this; + + if (!Ext.Array.contains(data.records, me.view.getRecord(node))) { + me.positionIndicator(node, data, e); + } + return me.valid ? me.dropAllowed : me.dropNotAllowed; + }, + + + + notifyOut: function(node, dragZone, e, data) { + var me = this; + + me.callParent(arguments); + me.overRecord = me.currentPosition = null + me.valid = false; + if (me.indicator) { + me.indicator.hide(); + } + }, + + + onContainerOver : function(dd, e, data) { + var me = this, + view = me.view, + count = view.dataSource.getCount(); + + + if (count) { + me.positionIndicator(view.all.last(), data, e); + } + + + else { + me.overRecord = me.currentPosition = null; + me.getIndicator().setWidth(Ext.fly(view.el).getWidth()).showAt(0, 0); + me.valid = true; + } + return me.dropAllowed; + }, + + onContainerDrop : function(dd, e, data) { + return this.onNodeDrop(dd, null, e, data); + }, + + onNodeDrop: function(targetNode, dragZone, e, data) { + var me = this, + dropHandled = false, + + + + + + + dropHandlers = { + wait: false, + processDrop: function () { + me.invalidateDrop(); + me.handleNodeDrop(data, me.overRecord, me.currentPosition); + dropHandled = true; + me.fireViewEvent('drop', targetNode, data, me.overRecord, me.currentPosition); + }, + + cancelDrop: function() { + me.invalidateDrop(); + dropHandled = true; + } + }, + performOperation = false; + + if (me.valid) { + performOperation = me.fireViewEvent('beforedrop', targetNode, data, me.overRecord, me.currentPosition, dropHandlers); + if (dropHandlers.wait) { + return; + } + + if (performOperation !== false) { + + if (!dropHandled) { + dropHandlers.processDrop(); + } + } + } + return performOperation; + }, + + destroy: function(){ + Ext.destroy(this.indicator); + delete this.indicator; + this.callParent(); + } +}); + + +Ext.define('Ext.grid.ViewDropZone', { + extend: Ext.view.DropZone , + + indicatorHtml: '
    ', + indicatorCls: Ext.baseCSSPrefix + 'grid-drop-indicator', + + handleNodeDrop : function(data, record, position) { + var view = this.view, + store = view.getStore(), + index, records, i, len; + + + if (data.copy) { + records = data.records; + data.records = []; + for (i = 0, len = records.length; i < len; i++) { + data.records.push(records[i].copy()); + } + } else { + + data.view.store.remove(data.records, data.view === view); + } + + if (record && position) { + index = store.indexOf(record); + + + if (position !== 'before') { + index++; + } + store.insert(index, data.records); + } + + else { + store.add(data.records); + } + + view.getSelectionModel().select(data.records); + } +}); + + +Ext.define('Ext.grid.plugin.HeaderResizer', { + extend: Ext.AbstractPlugin , + + alias: 'plugin.gridheaderresizer', + + disabled: false, + + config: { + + dynamic: false + }, + + colHeaderCls: Ext.baseCSSPrefix + 'column-header', + + minColWidth: 40, + maxColWidth: 1000, + wResizeCursor: 'col-resize', + eResizeCursor: 'col-resize', + + + + + + init: function(headerCt) { + this.headerCt = headerCt; + headerCt.on('render', this.afterHeaderRender, this, {single: true}); + }, + + + destroy: function() { + if (this.tracker) { + this.tracker.destroy(); + } + }, + + afterHeaderRender: function() { + var headerCt = this.headerCt, + el = headerCt.el; + + headerCt.mon(el, 'mousemove', this.onHeaderCtMouseMove, this); + + this.tracker = new Ext.dd.DragTracker({ + disabled: this.disabled, + onBeforeStart: Ext.Function.bind(this.onBeforeStart, this), + onStart: Ext.Function.bind(this.onStart, this), + onDrag: Ext.Function.bind(this.onDrag, this), + onEnd: Ext.Function.bind(this.onEnd, this), + tolerance: 3, + autoStart: 300, + el: el + }); + }, + + + + + onHeaderCtMouseMove: function(e, t) { + var me = this, + prevSiblings, + headerEl, overHeader, resizeHeader, resizeHeaderOwnerGrid, ownerGrid; + + if (me.headerCt.dragging) { + if (me.activeHd) { + me.activeHd.el.dom.style.cursor = ''; + delete me.activeHd; + } + } else { + headerEl = e.getTarget('.' + me.colHeaderCls, 3, true); + + if (headerEl){ + overHeader = Ext.getCmp(headerEl.id); + + + if (overHeader.isOnLeftEdge(e)) { + resizeHeader = overHeader.previousNode('gridcolumn:not([hidden]):not([isGroupHeader])') + + if (resizeHeader) { + + ownerGrid = me.headerCt.up('tablepanel'); + resizeHeaderOwnerGrid = resizeHeader.up('tablepanel'); + + + + + if (!((resizeHeaderOwnerGrid === ownerGrid) || ((ownerGrid.ownerCt.isXType('tablepanel')) && ownerGrid.ownerCt.view.lockedGrid === resizeHeaderOwnerGrid))) { + resizeHeader = null; + } + } + } + + else if (overHeader.isOnRightEdge(e)) { + resizeHeader = overHeader; + } + + else { + resizeHeader = null; + } + + + if (resizeHeader) { + + + + if (resizeHeader.isGroupHeader) { + prevSiblings = resizeHeader.getGridColumns(); + resizeHeader = prevSiblings[prevSiblings.length - 1]; + } + + + + if (resizeHeader && !(resizeHeader.fixed || (resizeHeader.resizable === false) || me.disabled)) { + me.activeHd = resizeHeader; + overHeader.el.dom.style.cursor = me.eResizeCursor; + if (overHeader.triggerEl) { + overHeader.triggerEl.dom.style.cursor = me.eResizeCursor; + } + } + + } else { + overHeader.el.dom.style.cursor = ''; + if (overHeader.triggerEl) { + overHeader.triggerEl.dom.style.cursor = ''; + } + me.activeHd = null; + } + } + } + }, + + + onBeforeStart : function(e) { + + this.dragHd = this.activeHd; + + if (!!this.dragHd && !this.headerCt.dragging) { + this.tracker.constrainTo = this.getConstrainRegion(); + return true; + } else { + this.headerCt.dragging = false; + return false; + } + }, + + + getConstrainRegion: function() { + var me = this, + dragHdEl = me.dragHd.el, + rightAdjust = 0, + nextHd, + lockedGrid; + + + + if (me.headerCt.forceFit) { + nextHd = me.dragHd.nextNode('gridcolumn:not([hidden]):not([isGroupHeader])'); + if (nextHd) { + if (!me.headerInSameGrid(nextHd)) { + nextHd = null; + } + rightAdjust = nextHd.getWidth() - me.minColWidth; + } + } + + + else if ((lockedGrid = me.dragHd.up('tablepanel')).isLocked) { + rightAdjust = me.dragHd.up('[scrollerOwner]').getWidth() - lockedGrid.getWidth() - 30; + } + + + else { + rightAdjust = me.maxColWidth - dragHdEl.getWidth(); + } + + return me.adjustConstrainRegion( + dragHdEl.getRegion(), + 0, + rightAdjust, + 0, + me.minColWidth + ); + }, + + + + onStart: function(e){ + var me = this, + dragHd = me.dragHd, + width = dragHd.el.getWidth(), + headerCt = dragHd.getOwnerHeaderCt(), + x, y, gridSection, markerOwner, lhsMarker, rhsMarker, markerHeight; + + me.headerCt.dragging = true; + me.origWidth = width; + + + if (!me.dynamic) { + gridSection = markerOwner = headerCt.up('tablepanel'); + if (gridSection.ownerLockable) { + markerOwner = gridSection.ownerLockable; + } + x = me.getLeftMarkerX(markerOwner); + lhsMarker = markerOwner.getLhsMarker(); + rhsMarker = markerOwner.getRhsMarker(); + markerHeight = gridSection.body.getHeight() + headerCt.getHeight(); + y = headerCt.getOffsetsTo(markerOwner)[1]; + + lhsMarker.setLocalY(y); + rhsMarker.setLocalY(y); + lhsMarker.setHeight(markerHeight); + rhsMarker.setHeight(markerHeight); + me.setMarkerX(lhsMarker, x); + me.setMarkerX(rhsMarker, x + width); + } + }, + + + onDrag: function(e){ + var me = this, + markerOwner; + + if (me.dynamic) { + me.doResize(); + } else { + markerOwner = this.headerCt.up('tablepanel'); + if (markerOwner.ownerLockable) { + markerOwner = markerOwner.ownerLockable; + } + this.setMarkerX(this.getMovingMarker(markerOwner), this.calculateDragX(markerOwner)); + } + }, + + getMovingMarker: function(markerOwner){ + return markerOwner.getRhsMarker(); + }, + + onEnd: function(e) { + this.headerCt.dragging = false; + if (this.dragHd) { + if (!this.dynamic) { + var markerOwner = this.headerCt.up('tablepanel'); + + + if (markerOwner.ownerLockable) { + markerOwner = markerOwner.ownerLockable; + } + this.setMarkerX(markerOwner.getLhsMarker(), -9999); + this.setMarkerX(markerOwner.getRhsMarker(), -9999); + } + this.doResize(); + } + }, + + doResize: function() { + var me = this, + dragHd = me.dragHd, + nextHd, + offset; + + if (dragHd) { + offset = me.tracker.getOffset('point'); + + + if (dragHd.flex) { + delete dragHd.flex; + } + + Ext.suspendLayouts(); + + + me.adjustColumnWidth(offset[0]); + + + + if (me.headerCt.forceFit) { + nextHd = dragHd.nextNode('gridcolumn:not([hidden]):not([isGroupHeader])'); + if (nextHd && !me.headerInSameGrid(nextHd)) { + nextHd = null; + } + if (nextHd) { + delete nextHd.flex; + nextHd.setWidth(nextHd.getWidth() - offset[0]); + } + } + + + Ext.resumeLayouts(true); + } + }, + + + headerInSameGrid: function(header) { + var grid = this.dragHd.up('tablepanel'); + + return !!header.up(grid); + }, + + disable: function() { + this.disabled = true; + if (this.tracker) { + this.tracker.disable(); + } + }, + + enable: function() { + this.disabled = false; + if (this.tracker) { + this.tracker.enable(); + } + }, + + calculateDragX: function(markerOwner) { + return this.tracker.getXY('point')[0] - markerOwner.getX() - markerOwner.el.getBorderWidth('l'); + }, + + getLeftMarkerX: function(markerOwner) { + return this.dragHd.getX() - markerOwner.getX() - markerOwner.el.getBorderWidth('l') - 1; + }, + + setMarkerX: function(marker, x) { + marker.setLocalX(x); + }, + + adjustConstrainRegion: function(region, t, r, b, l) { + return region.adjust(t, r, b, l); + }, + + adjustColumnWidth: function(offsetX) { + this.dragHd.setWidth(this.origWidth + offsetX); + } +}); + + +Ext.define('Ext.grid.header.DragZone', { + extend: Ext.dd.DragZone , + colHeaderSelector: '.' + Ext.baseCSSPrefix + 'column-header', + colInnerSelector: '.' + Ext.baseCSSPrefix + 'column-header-inner', + maxProxyWidth: 120, + + constructor: function(headerCt) { + this.headerCt = headerCt; + this.ddGroup = this.getDDGroup(); + this.callParent([headerCt.el]); + this.proxy.el.addCls(Ext.baseCSSPrefix + 'grid-col-dd'); + }, + + getDDGroup: function() { + return 'header-dd-zone-' + this.headerCt.up('[scrollerOwner]').id; + }, + + getDragData: function(e) { + if (e.getTarget(this.colInnerSelector)) { + var header = e.getTarget(this.colHeaderSelector), + headerCmp, + ddel; + + if (header) { + headerCmp = Ext.getCmp(header.id); + if (!this.headerCt.dragging && headerCmp.draggable && !(headerCmp.isOnLeftEdge(e) || headerCmp.isOnRightEdge(e))) { + ddel = document.createElement('div'); + ddel.innerHTML = Ext.getCmp(header.id).text; + return { + ddel: ddel, + header: headerCmp + }; + } + } + } + return false; + }, + + onBeforeDrag: function() { + return !(this.headerCt.dragging || this.disabled); + }, + + onInitDrag: function() { + this.headerCt.dragging = true; + this.callParent(arguments); + }, + + onDragDrop: function() { + this.headerCt.dragging = false; + this.callParent(arguments); + }, + + afterRepair: function() { + this.callParent(); + this.headerCt.dragging = false; + }, + + getRepairXY: function() { + return this.dragData.header.el.getXY(); + }, + + disable: function() { + this.disabled = true; + }, + + enable: function() { + this.disabled = false; + } +}); + + +Ext.define('Ext.grid.header.DropZone', { + extend: Ext.dd.DropZone , + colHeaderCls: Ext.baseCSSPrefix + 'column-header', + proxyOffsets: [-4, -9], + + constructor: function(headerCt){ + this.headerCt = headerCt; + this.ddGroup = this.getDDGroup(); + this.callParent([headerCt.el]); + }, + + getDDGroup: function() { + return 'header-dd-zone-' + this.headerCt.up('[scrollerOwner]').id; + }, + + getTargetFromEvent : function(e){ + return e.getTarget('.' + this.colHeaderCls); + }, + + getTopIndicator: function() { + if (!this.topIndicator) { + this.self.prototype.topIndicator = Ext.DomHelper.append(Ext.getBody(), { + cls: "col-move-top", + html: " " + }, true); + this.self.prototype.indicatorXOffset = Math.floor((this.topIndicator.dom.offsetWidth + 1) / 2); + } + return this.topIndicator; + }, + + getBottomIndicator: function() { + if (!this.bottomIndicator) { + this.self.prototype.bottomIndicator = Ext.DomHelper.append(Ext.getBody(), { + cls: "col-move-bottom", + html: " " + }, true); + } + return this.bottomIndicator; + }, + + getLocation: function(e, t) { + var x = e.getXY()[0], + region = Ext.fly(t).getRegion(), + pos; + + if ((region.right - x) <= (region.right - region.left) / 2) { + pos = "after"; + } else { + pos = "before"; + } + return { + pos: pos, + header: Ext.getCmp(t.id), + node: t + }; + }, + + positionIndicator: function(data, node, e){ + var me = this, + dragHeader = data.header, + dropLocation = me.getLocation(e, node), + targetHeader = dropLocation.header, + pos = dropLocation.pos, + nextHd, + prevHd, + topIndicator, bottomIndicator, topAnchor, bottomAnchor, + topXY, bottomXY, headerCtEl, minX, maxX, + allDropZones, ln, i, dropZone; + + + if (targetHeader === me.lastTargetHeader && pos === me.lastDropPos) { + return; + } + nextHd = dragHeader.nextSibling('gridcolumn:not([hidden])'); + prevHd = dragHeader.previousSibling('gridcolumn:not([hidden])'); + me.lastTargetHeader = targetHeader; + me.lastDropPos = pos; + + + if (!targetHeader.draggable && pos === 'before' && targetHeader.getIndex() === 0) { + return false; + } + + data.dropLocation = dropLocation; + + if ((dragHeader !== targetHeader) && + ((pos === "before" && nextHd !== targetHeader) || + (pos === "after" && prevHd !== targetHeader)) && + !targetHeader.isDescendantOf(dragHeader)) { + + + + + allDropZones = Ext.dd.DragDropManager.getRelated(me); + ln = allDropZones.length; + i = 0; + + for (; i < ln; i++) { + dropZone = allDropZones[i]; + if (dropZone !== me && dropZone.invalidateDrop) { + dropZone.invalidateDrop(); + } + } + + me.valid = true; + topIndicator = me.getTopIndicator(); + bottomIndicator = me.getBottomIndicator(); + if (pos === 'before') { + topAnchor = 'bc-tl'; + bottomAnchor = 'tc-bl'; + } else { + topAnchor = 'bc-tr'; + bottomAnchor = 'tc-br'; + } + + + topXY = topIndicator.getAlignToXY(targetHeader.el, topAnchor); + bottomXY = bottomIndicator.getAlignToXY(targetHeader.el, bottomAnchor); + + + headerCtEl = me.headerCt.el; + minX = headerCtEl.getX() - me.indicatorXOffset; + maxX = headerCtEl.getX() + headerCtEl.getWidth(); + + topXY[0] = Ext.Number.constrain(topXY[0], minX, maxX); + bottomXY[0] = Ext.Number.constrain(bottomXY[0], minX, maxX); + + + topIndicator.setXY(topXY); + bottomIndicator.setXY(bottomXY); + topIndicator.show(); + bottomIndicator.show(); + + + } else { + me.invalidateDrop(); + } + }, + + invalidateDrop: function() { + this.valid = false; + this.hideIndicators(); + }, + + onNodeOver: function(node, dragZone, e, data) { + var me = this, + from = data.header, + doPosition, + to, + fromPanel, + toPanel; + + if (data.header.el.dom === node) { + doPosition = false; + } else { + data.isLock = data.isUnlock = false; + to = me.getLocation(e, node).header; + + + doPosition = (from.ownerCt === to.ownerCt); + + + if (!doPosition && (!from.ownerCt.sealed && !to.ownerCt.sealed)) { + + doPosition = true; + fromPanel = from.up('tablepanel'); + toPanel = to.up('tablepanel'); + + + data.isLock = toPanel.isLocked && !fromPanel.isLocked; + data.isUnlock = !toPanel.isLocked && fromPanel.isLocked; + if ((data.isUnlock && from.lockable === false) || (data.isLock && !from.isLockable())) { + doPosition = false; + } + } + } + + if (doPosition) { + me.positionIndicator(data, node, e); + } else { + me.valid = false; + } + return me.valid ? me.dropAllowed : me.dropNotAllowed; + }, + + hideIndicators: function() { + var me = this; + + me.getTopIndicator().hide(); + me.getBottomIndicator().hide(); + me.lastTargetHeader = me.lastDropPos = null; + + }, + + onNodeOut: function() { + this.hideIndicators(); + }, + + onNodeDrop: function(node, dragZone, e, data) { + if (this.valid) { + var dragHeader = data.header, + dropLocation = data.dropLocation, + targetHeader = dropLocation.header, + fromCt = dragHeader.ownerCt, + localFromIdx = fromCt.items.indexOf(dragHeader), + toCt = targetHeader.ownerCt, + localToIdx = toCt.items.indexOf(targetHeader), + headerCt = this.headerCt, + columnManager= headerCt.columnManager, + fromIdx = columnManager.getHeaderIndex(dragHeader), + toIdx = columnManager.getHeaderIndex(targetHeader), + colsToMove = dragHeader.isGroupHeader ? dragHeader.query(':not([isGroupHeader])').length : 1, + sameCt = fromCt === toCt, + scrollerOwner, savedWidth; + + + if (dropLocation.pos === 'after') { + localToIdx++; + toIdx += targetHeader.isGroupHeader ? targetHeader.query(':not([isGroupHeader])').length : 1; + } + + + + + if (data.isLock) { + scrollerOwner = fromCt.up('[scrollerOwner]'); + scrollerOwner.lock(dragHeader, localToIdx); + data.isLock = false; + + + this.onNodeDrop(node, dragZone, e, data); + } else if (data.isUnlock) { + scrollerOwner = fromCt.up('[scrollerOwner]'); + scrollerOwner.unlock(dragHeader, localToIdx); + data.isUnlock = false; + + + this.onNodeDrop(node, dragZone, e, data); + } + + + else { + this.invalidateDrop(); + + savedWidth = dragHeader.getWidth(); + + + if (sameCt) { + + + + if (localToIdx === localFromIdx) { + + headerCt.onHeaderMoved(dragHeader, colsToMove, fromIdx, toIdx); + return; + } + + if (localToIdx > localFromIdx) { + localToIdx -= 1; + } + } + + + Ext.suspendLayouts(); + + if (sameCt) { + toCt.move(localFromIdx, localToIdx); + } else { + fromCt.remove(dragHeader, false); + toCt.insert(localToIdx, dragHeader); + } + + + + + if (toCt.isGroupHeader) { + + if (!sameCt) { + dragHeader.savedFlex = dragHeader.flex; + delete dragHeader.flex; + dragHeader.width = savedWidth; + } + } else { + if (dragHeader.savedFlex) { + dragHeader.flex = dragHeader.savedFlex; + delete dragHeader.width; + } + } + + + headerCt.purgeCache(); + Ext.resumeLayouts(true); + headerCt.onHeaderMoved(dragHeader, colsToMove, fromIdx, toIdx); + + + } + } + } +}); + + +Ext.define('Ext.grid.plugin.HeaderReorderer', { + extend: Ext.AbstractPlugin , + + alias: 'plugin.gridheaderreorderer', + + init: function(headerCt) { + this.headerCt = headerCt; + headerCt.on({ + render: this.onHeaderCtRender, + single: true, + scope: this + }); + }, + + + destroy: function() { + Ext.destroy(this.dragZone, this.dropZone); + }, + + onHeaderCtRender: function() { + var me = this; + + me.dragZone = new Ext.grid.header.DragZone(me.headerCt); + me.dropZone = new Ext.grid.header.DropZone(me.headerCt); + if (me.disabled) { + me.dragZone.disable(); + } + }, + + enable: function() { + this.disabled = false; + if (this.dragZone) { + this.dragZone.enable(); + } + }, + + disable: function() { + this.disabled = true; + if (this.dragZone) { + this.dragZone.disable(); + } + } +}); + + +Ext.define('Ext.grid.header.Container', { + extend: Ext.container.Container , + + + + + + + + + + + + + border: true, + + alias: 'widget.headercontainer', + + baseCls: Ext.baseCSSPrefix + 'grid-header-ct', + dock: 'top', + + + weight: 100, + + defaultType: 'gridcolumn', + + detachOnRemove: false, + + + defaultWidth: 100, + + + + + sortAscText: 'Sort Ascending', + + + sortDescText: 'Sort Descending', + + + sortClearText: 'Clear Sort', + + + columnsText: 'Columns', + + + headerOpenCls: Ext.baseCSSPrefix + 'column-header-open', + + menuSortAscCls: Ext.baseCSSPrefix + 'hmenu-sort-asc', + + menuSortDescCls: Ext.baseCSSPrefix + 'hmenu-sort-desc', + + menuColsIcon: Ext.baseCSSPrefix + 'cols-icon', + + + triStateSort: false, + + ddLock: false, + + dragging: false, + + + + + sortable: true, + + + enableColumnHide: true, + + initComponent: function() { + var me = this; + + me.headerCounter = 0; + me.plugins = me.plugins || []; + + + + + + + if (!me.isColumn) { + if (me.enableColumnResize) { + me.resizer = new Ext.grid.plugin.HeaderResizer(); + me.plugins.push(me.resizer); + } + if (me.enableColumnMove) { + me.reorderer = new Ext.grid.plugin.HeaderReorderer(); + me.plugins.push(me.reorderer); + } + } + + + + if (me.isColumn && (!me.items || me.items.length === 0)) { + me.isContainer = false; + me.layout = { + type: 'container', + calculate: Ext.emptyFn + }; + } + + + else { + me.layout = Ext.apply({ + type: 'gridcolumn', + align: 'stretch' + }, me.initialConfig.layout); + + + if (me.isRootHeader) { + me.grid.columnManager = me.columnManager = new Ext.grid.ColumnManager(me); + } + } + + me.defaults = me.defaults || {}; + Ext.applyIf(me.defaults, { + triStateSort: me.triStateSort, + sortable: me.sortable + }); + + me.menuTask = new Ext.util.DelayedTask(me.updateMenuDisabledState, me); + me.callParent(); + me.addEvents( + + 'columnresize', + + + 'headerclick', + + + 'headercontextmenu', + + + 'headertriggerclick', + + + 'columnmove', + + 'columnhide', + + 'columnshow', + + 'columnschanged', + + 'sortchange', + + 'menucreate' + ); + }, + + isLayoutRoot: function(){ + + + + + + if (this.hiddenHeaders) { + return false; + } + return this.callParent(); + }, + + + getOwnerHeaderCt: function() { + var me = this; + return me.isRootHeader ? me : me.up('[isRootHeader]'); + }, + + onDestroy: function() { + var me = this; + + if (me.menu) { + me.menu.un('hide', me.onMenuHide, me); + } + me.menuTask.cancel(); + Ext.destroy(me.resizer, me.reorderer); + me.callParent(); + }, + + applyColumnsState: function(columns) { + if (!columns || !columns.length) { + return; + } + + var me = this, + items = me.items.items, + count = items.length, + i = 0, + length = columns.length, + c, col, columnState, index; + + for (c = 0; c < length; c++) { + columnState = columns[c]; + + for (index = count; index--; ) { + col = items[index]; + if (col.getStateId && col.getStateId() == columnState.id) { + + + + + if (i !== index) { + me.moveHeader(index, i); + } + + if (col.applyColumnState) { + col.applyColumnState(columnState); + } + ++i; + break; + } + } + } + }, + + getColumnsState: function () { + var me = this, + columns = [], + state; + + me.items.each(function (col) { + state = col.getColumnState && col.getColumnState(); + if (state) { + columns.push(state); + } + }); + + return columns; + }, + + + + + onAdd: function(c) { + var me = this; + + if (!c.headerId) { + c.headerId = c.initialConfig.id || Ext.id(null, 'header-'); + } + + + if (!c.getStateId()) { + + + + + c.stateId = c.initialConfig.id || ('h' + (++me.headerCounter)); + } + + me.callParent(arguments); + me.onColumnsChanged(); + }, + + onMove: function() { + this.callParent(arguments); + this.onColumnsChanged(); + }, + + onShow: function() { + this.callParent(arguments); + this.onColumnsChanged(); + }, + + + + + onColumnsChanged: function() { + var headerCt = this; + + + while (headerCt) { + headerCt.purgeCache(); + if (headerCt.isRootHeader) { + break; + } + headerCt = headerCt.ownerCt; + } + + if (headerCt && headerCt.rendered) { + headerCt.fireEvent('columnschanged', headerCt); + } + }, + + + + + onRemove: function(c) { + var me = this, + ownerCt = me.ownerCt; + + me.callParent(arguments); + + + if (!me.destroying) { + me.onColumnsChanged(); + if (me.isGroupHeader && !me.items.getCount() && ownerCt) { + + + + me.detachComponent(c); + + + Ext.suspendLayouts(); + ownerCt.remove(me); + Ext.resumeLayouts(true); + } + } + }, + + + applyDefaults: function(config) { + var ret; + + if (config && !config.isComponent && config.xtype == 'rownumberer') { + ret = config; + } else { + ret = this.callParent(arguments); + + + if (!config.isGroupHeader && !('width' in ret) && !ret.flex) { + ret.width = this.defaultWidth; + } + } + return ret; + }, + + setSortState: function(){ + var store = this.up('[store]').store, + + + first = store.getFirstSorter(), + hd; + + if (first) { + hd = this.down('gridcolumn[dataIndex=' + first.property +']'); + if (hd) { + hd.setSortState(first.direction, false, true); + } + } else { + this.clearOtherSortStates(null); + } + }, + + getHeaderMenu: function(){ + var menu = this.getMenu(), + item; + + if (menu) { + item = menu.child('#columnItem'); + if (item) { + return item.menu; + } + } + return null; + }, + + onHeaderVisibilityChange: function(header, visible){ + var me = this, + menu = me.getHeaderMenu(), + item; + + + me.purgeCache(); + + if (menu) { + + item = me.getMenuItemForHeader(menu, header); + if (item) { + item.setChecked(visible, true); + } + + if (menu.isVisible()) { + me.menuTask.delay(50); + } + } + }, + + updateMenuDisabledState: function(menu) { + var me = this, + columns = me.query(':not([hidden])'), + i, + len = columns.length, + item, + checkItem, + method; + + + if (!menu) { + menu = me.getMenu(); + } + + for (i = 0; i < len; ++i) { + item = columns[i]; + checkItem = me.getMenuItemForHeader(menu, item); + if (checkItem) { + method = item.isHideable() ? 'enable' : 'disable'; + if (checkItem.menu) { + method += 'CheckChange'; + } + checkItem[method](); + } + } + }, + + getMenuItemForHeader: function(menu, header) { + return header ? menu.down('menucheckitem[headerId=' + header.id + ']') : null; + }, + + onHeaderShow: function(header) { + + var me = this, + gridSection = me.ownerCt; + + if (me.forceFit) { + delete me.flex; + + } + + me.onHeaderVisibilityChange(header, true); + + + + if (!header.isGroupHeader) { + if (gridSection) { + gridSection.onHeaderShow(me, header); + } + } + me.fireEvent('columnshow', me, header); + me.fireEvent('columnschanged', this); + }, + + onHeaderHide: function(header) { + + var me = this, + gridSection = me.ownerCt; + + me.onHeaderVisibilityChange(header, false); + + + if (!header.isGroupHeader) { + if (gridSection) { + gridSection.onHeaderHide(me, header); + } + } + me.fireEvent('columnhide', me, header); + me.fireEvent('columnschanged', this); + }, + + + tempLock: function() { + this.ddLock = true; + Ext.Function.defer(function() { + this.ddLock = false; + }, 200, this); + }, + + onHeaderResize: function(header, w, suppressFocus) { + var me = this, + view = me.view, + gridSection = me.ownerCt; + + + if (view && view.body.dom) { + me.tempLock(); + if (gridSection) { + gridSection.onHeaderResize(me, header, w); + } + } + me.fireEvent('columnresize', this, header, w); + }, + + onHeaderClick: function(header, e, t) { + header.fireEvent('headerclick', this, header, e, t); + this.fireEvent('headerclick', this, header, e, t); + }, + + onHeaderContextMenu: function(header, e, t) { + header.fireEvent('headercontextmenu', this, header, e, t); + this.fireEvent('headercontextmenu', this, header, e, t); + }, + + onHeaderTriggerClick: function(header, e, t) { + + var me = this; + if (header.fireEvent('headertriggerclick', me, header, e, t) !== false && me.fireEvent('headertriggerclick', me, header, e, t) !== false) { + me.showMenuBy(t, header); + } + }, + + showMenuBy: function(t, header) { + var menu = this.getMenu(), + ascItem = menu.down('#ascItem'), + descItem = menu.down('#descItem'), + sortableMth; + + + + menu.activeHeader = menu.ownerButton = header; + header.setMenuActive(true); + + + sortableMth = header.sortable ? 'enable' : 'disable'; + if (ascItem) { + ascItem[sortableMth](); + } + if (descItem) { + descItem[sortableMth](); + } + menu.showBy(t); + }, + + + onMenuHide: function(menu) { + menu.activeHeader.setMenuActive(false); + }, + + moveHeader: function(fromIdx, toIdx) { + + this.tempLock(); + this.onHeaderMoved(this.move(fromIdx, toIdx), 1, fromIdx, toIdx); + }, + + purgeCache: function() { + var me = this, + menu = me.menu; + + + me.gridDataColumns = me.hideableColumns = null; + + + if (me.columnManager) { + me.columnManager.invalidate(); + } + + + + if (menu && menu.hidden) { + + menu.hide(); + menu.destroy(); + me.menu = null; + } + }, + + onHeaderMoved: function(header, colsToMove, fromIdx, toIdx) { + var me = this, + gridSection = me.ownerCt; + + if (gridSection && gridSection.onHeaderMove) { + gridSection.onHeaderMove(me, header, colsToMove, fromIdx, toIdx); + } + me.fireEvent("columnmove", me, header, fromIdx, toIdx); + }, + + + getMenu: function() { + var me = this; + + if (!me.menu) { + me.menu = new Ext.menu.Menu({ + hideOnParentHide: false, + items: me.getMenuItems(), + listeners: { + hide: me.onMenuHide, + scope: me + } + }); + me.fireEvent('menucreate', me, me.menu); + } + me.updateMenuDisabledState(me.menu); + return me.menu; + }, + + + getMenuItems: function() { + var me = this, + menuItems = [], + hideableColumns = me.enableColumnHide ? me.getColumnMenu(me) : null; + + if (me.sortable) { + menuItems = [{ + itemId: 'ascItem', + text: me.sortAscText, + cls: me.menuSortAscCls, + handler: me.onSortAscClick, + scope: me + },{ + itemId: 'descItem', + text: me.sortDescText, + cls: me.menuSortDescCls, + handler: me.onSortDescClick, + scope: me + }]; + } + if (hideableColumns && hideableColumns.length) { + if (me.sortable) { + menuItems.push('-'); + } + menuItems.push({ + itemId: 'columnItem', + text: me.columnsText, + cls: me.menuColsIcon, + menu: hideableColumns, + hideOnClick: false + }); + } + return menuItems; + }, + + + onSortAscClick: function() { + var menu = this.getMenu(), + activeHeader = menu.activeHeader; + + activeHeader.setSortState('ASC'); + }, + + + onSortDescClick: function() { + var menu = this.getMenu(), + activeHeader = menu.activeHeader; + + activeHeader.setSortState('DESC'); + }, + + + getColumnMenu: function(headerContainer) { + var menuItems = [], + i = 0, + item, + items = headerContainer.query('>gridcolumn[hideable]'), + itemsLn = items.length, + menuItem; + + for (; i < itemsLn; i++) { + item = items[i]; + menuItem = new Ext.menu.CheckItem({ + text: item.menuText || item.text, + checked: !item.hidden, + hideOnClick: false, + headerId: item.id, + menu: item.isGroupHeader ? this.getColumnMenu(item) : undefined, + checkHandler: this.onColumnCheckChange, + scope: this + }); + menuItems.push(menuItem); + + + + item.on({ + destroy: Ext.Function.bind(menuItem.destroy, menuItem) + }); + } + return menuItems; + }, + + onColumnCheckChange: function(checkItem, checked) { + var header = Ext.getCmp(checkItem.headerId); + header[checked ? 'show' : 'hide'](); + }, + + + getColumnCount: function() { + return this.getGridColumns().length; + }, + + + getFullWidth: function() { + var fullWidth = 0, + headers = this.getVisibleGridColumns(), + headersLn = headers.length, + i = 0, + header; + + + for (; i < headersLn; i++) { + header = headers[i]; + + if (header.getDesiredWidth) { + fullWidth += header.getDesiredWidth() || 0; + + } else { + fullWidth += header.getWidth(); + } + } + return fullWidth; + }, + + + clearOtherSortStates: function(activeHeader) { + var headers = this.getGridColumns(), + headersLn = headers.length, + i = 0; + + for (; i < headersLn; i++) { + if (headers[i] !== activeHeader) { + + headers[i].setSortState(null, true); + } + } + }, + + + getVisibleGridColumns: function() { + var allColumns = this.getGridColumns(), + result = [], + len = allColumns.length, i; + + + + for (i = 0; i < len; i++) { + if (!allColumns[i].hidden) { + result[result.length] = allColumns[i]; + } + } + return result; + }, + + + getGridColumns: function(inResult, hiddenAncestor) { + if (!inResult && this.gridDataColumns) { + return this.gridDataColumns; + } + + var me = this, + result = inResult || [], + items, i, len, item, + lastVisibleColumn; + + hiddenAncestor = hiddenAncestor || me.hidden; + if (me.items) { + items = me.items.items; + for (i = 0, len = items.length; i < len; i++) { + item = items[i]; + if (item.isGroupHeader) { + item.getGridColumns(result, hiddenAncestor); + } else { + item.hiddenAncestor = hiddenAncestor; + result.push(item); + } + } + } + if (!inResult) { + me.gridDataColumns = result; + } + + + if (!inResult && len) { + + for (i = 0, len = result.length; i < len; i++) { + item = result[i]; + item.isFirstVisible = item.isLastVisible = false; + if (!(item.hidden || item.hiddenAncestor)) { + if (!lastVisibleColumn) { + item.isFirstVisible = true; + } + lastVisibleColumn = item; + } + } + + if (lastVisibleColumn) { + lastVisibleColumn.isLastVisible = true; + } + } + + return result; + }, + + + getHideableColumns: function() { + var me = this, + result = me.hideableColumns; + + if (!result) { + result = me.hideableColumns = me.query('[hideable]'); + } + return result; + }, + + + getHeaderIndex: function(header) { + return this.columnManager.getHeaderIndex(header); + }, + + + getHeaderAtIndex: function(index) { + return this.columnManager.getHeaderAtIndex(index); + }, + + + getVisibleHeaderClosestToIndex: function(index) { + return this.columnManager.getVisibleHeaderClosestToIndex(index); + }, + + autoSizeColumn : function(header) { + var view = this.view; + if (view) { + view.autoSizeColumn(header); + } + } +}); + + +Ext.define('Ext.grid.column.Column', { + extend: Ext.grid.header.Container , + alias: 'widget.gridcolumn', + + alternateClassName: 'Ext.grid.Column', + + baseCls: Ext.baseCSSPrefix + 'column-header', + + + hoverCls: Ext.baseCSSPrefix + 'column-header-over', + + handleWidth: 4, + + sortState: null, + + possibleSortStates: ['ASC', 'DESC'], + + childEls: [ + 'titleEl', 'triggerEl', 'textEl' + ], + + + noWrap: true, + + renderTpl: + '
    ' + + '' + + '{text}' + + '' + + ''+ + '
    ' + + '
    ' + + '
    ' + + '{%this.renderContainer(out,values)%}', + + + + + + + dataIndex: null, + + + text: ' ', + + + + + menuText: null, + + + emptyCellText: ' ', + + + sortable: true, + + + + + + + + + + + resizable: true, + + + hideable: true, + + + menuDisabled: false, + + + renderer: false, + + + + + + + editRenderer: false, + + + align: 'left', + + + draggable: true, + + + + + tooltipType: 'qtip', + + + + initDraggable: Ext.emptyFn, + + + tdCls: '', + + + + + + + + + + + isHeader: true, + + + isColumn: true, + + ascSortCls: Ext.baseCSSPrefix + 'column-header-sort-ASC', + descSortCls: Ext.baseCSSPrefix + 'column-header-sort-DESC', + + componentLayout: 'columncomponent', + + groupSubHeaderCls: Ext.baseCSSPrefix + 'group-sub-header', + + groupHeaderCls: Ext.baseCSSPrefix + 'group-header', + + clickTargetName: 'titleEl', + + + detachOnRemove : true, + + + initResizable: Ext.emptyFn, + + initComponent: function() { + var me = this, + renderer, + listeners; + + if (me.header != null) { + me.text = me.header; + me.header = null; + } + + if (!me.triStateSort) { + me.possibleSortStates.length = 2; + } + + + if (me.columns != null) { + me.isGroupHeader = true; + + + + me.items = me.columns; + me.columns = me.flex = me.width = null; + me.cls = (me.cls||'') + ' ' + me.groupHeaderCls; + + + me.sortable = me.resizable = false; + me.align = 'center'; + } else { + + + + if (me.flex) { + me.minWidth = me.minWidth || Ext.grid.plugin.HeaderResizer.prototype.minColWidth; + } + } + me.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.align); + + renderer = me.renderer; + if (renderer) { + + + if (typeof renderer == 'string') { + me.renderer = Ext.util.Format[renderer]; + } + me.hasCustomRenderer = true; + } else if (me.defaultRenderer) { + me.scope = me; + me.renderer = me.defaultRenderer; + } + + + me.callParent(arguments); + + listeners = { + element: me.clickTargetName, + click: me.onTitleElClick, + contextmenu: me.onTitleElContextMenu, + mouseenter: me.onTitleMouseOver, + mouseleave: me.onTitleMouseOut, + scope: me + }; + if (me.resizable) { + listeners.dblclick = me.onTitleElDblClick; + } + me.on(listeners); + }, + + onAdd: function(child) { + if (child.isColumn) { + child.isSubHeader = true; + child.addCls(this.groupSubHeaderCls); + } + if (this.hidden) { + child.hide(); + } + this.callParent(arguments); + }, + + onRemove: function(child) { + if (child.isSubHeader) { + child.isSubHeader = false; + child.removeCls(this.groupSubHeaderCls); + } + this.callParent(arguments); + }, + + initRenderData: function() { + var me = this, + tipMarkup = '', + tip = me.tooltip, + attr = me.tooltipType == 'qtip' ? 'data-qtip' : 'title'; + + if (!Ext.isEmpty(tip)) { + tipMarkup = attr + '="' + tip + '" '; + } + + return Ext.applyIf(me.callParent(arguments), { + text: me.text, + menuDisabled: me.menuDisabled, + tipMarkup: tipMarkup + }); + }, + + applyColumnState: function (state) { + var me = this; + + + me.applyColumnsState(state.columns); + + + + if (state.hidden != null) { + me.hidden = state.hidden; + } + if (state.locked != null) { + me.locked = state.locked; + } + if (state.sortable != null) { + me.sortable = state.sortable; + } + if (state.width != null) { + me.flex = null; + me.width = state.width; + } else if (state.flex != null) { + me.width = null; + me.flex = state.flex; + } + }, + + getColumnState: function () { + var me = this, + items = me.items.items, + + iLen = items ? items.length : 0, + i, + columns = [], + state = { + id: me.getStateId() + }; + + me.savePropsToState(['hidden', 'sortable', 'locked', 'flex', 'width'], state); + + if (me.isGroupHeader) { + for (i = 0; i < iLen; i++) { + columns.push(items[i].getColumnState()); + } + + if (columns.length) { + state.columns = columns; + } + } else if (me.isSubHeader && me.ownerCt.hidden) { + + delete me.hidden; + } + + if ('width' in state) { + delete state.flex; + } + return state; + }, + + getStateId: function () { + return this.stateId || this.headerId; + }, + + + setText: function(text) { + this.text = text; + if (this.rendered) { + this.textEl.update(text); + } + }, + + + getIndex: function() { + return this.isGroupColumn ? false : this.getOwnerHeaderCt().getHeaderIndex(this); + }, + + + getVisibleIndex: function() { + return this.isGroupColumn ? false : Ext.Array.indexOf(this.getOwnerHeaderCt().getVisibleGridColumns(), this); + }, + + beforeRender: function() { + var me = this, + grid = me.up('tablepanel'); + + me.callParent(); + + + + if (grid && (!me.sortable || grid.sortableColumns === false) && !me.groupable && + !me.lockable && (grid.enableColumnHide === false || + !me.getOwnerHeaderCt().getHideableColumns().length)) { + me.menuDisabled = true; + } + + me.protoEl.unselectable(); + }, + + afterRender: function() { + var me = this, + triggerEl = me.triggerEl, + triggerWidth; + + me.callParent(arguments); + + + + if (!Ext.isIE8 || !Ext.isStrict) { + me.mon(me.getFocusEl(), { + focus: me.onTitleMouseOver, + blur: me.onTitleMouseOut, + scope: me + }); + } + + if (triggerEl && me.self.triggerElWidth === undefined) { + triggerEl.setStyle('display', 'block'); + me.self.triggerElWidth = triggerEl.getWidth(); + triggerEl.setStyle('display', ''); + } + + me.keyNav = new Ext.util.KeyNav(me.el, { + enter: me.onEnterKey, + down: me.onDownKey, + scope: me + }); + }, + + + + afterComponentLayout: function(width, height, oldWidth, oldHeight) { + var me = this, + ownerHeaderCt = me.getOwnerHeaderCt(); + + me.callParent(arguments); + + if (ownerHeaderCt && (oldWidth != null || me.flex) && width !== oldWidth) { + ownerHeaderCt.onHeaderResize(me, width, true); + } + }, + + onDestroy: function() { + var me = this; + + Ext.destroy(me.textEl, me.keyNav, me.field); + me.keyNav = null; + me.callParent(arguments); + }, + + onTitleMouseOver: function() { + this.titleEl.addCls(this.hoverCls); + }, + + onTitleMouseOut: function() { + this.titleEl.removeCls(this.hoverCls); + }, + + onDownKey: function(e) { + if (this.triggerEl) { + this.onTitleElClick(e, this.triggerEl.dom || this.el.dom); + } + }, + + onEnterKey: function(e) { + this.onTitleElClick(e, this.el.dom); + }, + + + onTitleElDblClick: function(e, t) { + var me = this, + prev, + leafColumns; + + + if (me.isOnLeftEdge(e)) { + + + + prev = me.previousNode('gridcolumn:not([hidden]):not([isGroupHeader])'); + + + if (prev && prev.getOwnerHeaderCt() === me.getOwnerHeaderCt()) { + prev.autoSize(); + } + } + + else if (me.isOnRightEdge(e)) { + + + if (me.isGroupHeader && e.getPoint().isContainedBy(me.layout.innerCt)) { + leafColumns = me.query('gridcolumn:not([hidden]):not([isGroupHeader])'); + this.getOwnerHeaderCt().autoSizeColumn(leafColumns[leafColumns.length - 1]); + return; + } + me.autoSize(); + } + }, + + + autoSize: function() { + var me = this, + leafColumns, + numLeaves, i, + headerCt; + + + if (me.isGroupHeader) { + leafColumns = me.query('gridcolumn:not([hidden]):not([isGroupHeader])'); + numLeaves = leafColumns.length; + headerCt = this.getOwnerHeaderCt(); + Ext.suspendLayouts(); + for (i = 0; i < numLeaves; i++) { + headerCt.autoSizeColumn(leafColumns[i]); + } + Ext.resumeLayouts(true); + return; + } + this.getOwnerHeaderCt().autoSizeColumn(this); + }, + + onTitleElClick: function(e, t) { + + + var me = this, + ownerHeaderCt = me.getOwnerHeaderCt(); + + if (ownerHeaderCt && !ownerHeaderCt.ddLock) { + + + if (me.triggerEl && (e.target === me.triggerEl.dom || t === me.triggerEl.dom || e.within(me.triggerEl))) { + ownerHeaderCt.onHeaderTriggerClick(me, e, t); + + } else if (e.getKey() || (!me.isOnLeftEdge(e) && !me.isOnRightEdge(e))) { + me.toggleSortState(); + ownerHeaderCt.onHeaderClick(me, e, t); + } + } + }, + + onTitleElContextMenu: function(e, t) { + + var me = this, + ownerHeaderCt = me.getOwnerHeaderCt(); + + if (ownerHeaderCt && !ownerHeaderCt.ddLock) { + ownerHeaderCt.onHeaderContextMenu(me, e, t); + } + }, + + + processEvent: function(type, view, cell, recordIndex, cellIndex, e) { + return this.fireEvent.apply(this, arguments); + }, + + toggleSortState: function() { + var me = this, + idx, + nextIdx; + + if (me.sortable) { + idx = Ext.Array.indexOf(me.possibleSortStates, me.sortState); + + nextIdx = (idx + 1) % me.possibleSortStates.length; + me.setSortState(me.possibleSortStates[nextIdx]); + } + }, + + doSort: function(state) { + var tablePanel = this.up('tablepanel'), + store = tablePanel.store; + + + + + if (tablePanel.ownerLockable && store.isNodeStore) { + store = tablePanel.ownerLockable.lockedGrid.store; + } + store.sort({ + property: this.getSortParam(), + direction: state + }); + }, + + + getSortParam: function() { + return this.dataIndex; + }, + + setSortState: function(state, skipClear, initial) { + var me = this, + ascCls = me.ascSortCls, + descCls = me.descSortCls, + ownerHeaderCt = me.getOwnerHeaderCt(), + oldSortState = me.sortState; + + state = state || null; + + if (!me.sorting && oldSortState !== state && (me.getSortParam() != null)) { + + if (state && !initial) { + + + me.sorting = true; + me.doSort(state); + me.sorting = false; + } + switch (state) { + case 'DESC': + me.addCls(descCls); + me.removeCls(ascCls); + break; + case 'ASC': + me.addCls(ascCls); + me.removeCls(descCls); + break; + default: + me.removeCls([ascCls, descCls]); + } + if (ownerHeaderCt && !me.triStateSort && !skipClear) { + ownerHeaderCt.clearOtherSortStates(me); + } + me.sortState = state; + + if (me.triStateSort || state != null) { + ownerHeaderCt.fireEvent('sortchange', ownerHeaderCt, me, state); + } + } + }, + + + isHideable: function() { + var result = { + hideCandidate: this, + result: this.hideable + }; + + if (result.result) { + this.ownerCt.bubble(this.hasOtherMenuEnabledChildren, null, [result]); + } + return result.result; + }, + + + + hasOtherMenuEnabledChildren: function(result) { + var visibleChildren, + count; + + + + if (!this.isXType('headercontainer')) { + result.result = false; + return false; + } + + + + + visibleChildren = this.query('>:not([hidden]):not([menuDisabled])'); + count = visibleChildren.length; + if (Ext.Array.contains(visibleChildren, result.hideCandidate)) { + count--; + } + if (count) { + return false; + } + + result.hideCandidate = this; + }, + + + isLockable: function() { + var result = { + result: this.lockable !== false + }; + + if (result.result) { + this.ownerCt.bubble(this.hasMultipleVisibleChildren, null, [result]); + } + return result.result; + }, + + + isLocked: function() { + return this.locked || !!this.up('[isColumn][locked]', '[isRootHeader]'); + }, + + + + hasMultipleVisibleChildren: function(result) { + + if (!this.isXType('headercontainer')) { + result.result = false; + return false; + } + + if (this.query('>:not([hidden])').length > 1) { + return false; + } + }, + + hide: function(fromOwner) { + var me = this, + ownerHeaderCt = me.getOwnerHeaderCt(), + owner = me.ownerCt, + ownerIsGroup, + item, items, len, i; + + if (!me.isVisible()) { + + return me; + } + + + + if (!ownerHeaderCt) { + me.callParent(); + return me; + } + + + + + if (ownerHeaderCt.forceFit) { + me.visibleSiblingCount = ownerHeaderCt.getVisibleGridColumns().length - 1; + if (me.flex) { + me.savedWidth = me.getWidth(); + me.flex = null; + } + } + + ownerIsGroup = owner.isGroupHeader; + + + if (ownerIsGroup && !fromOwner) { + items = owner.query('>:not([hidden])'); + + if (items.length === 1 && items[0] == me) { + me.ownerCt.hide(); + return; + } + } + + Ext.suspendLayouts(); + + if (me.isGroupHeader) { + items = me.items.items; + for (i = 0, len = items.length; i < len; i++) { + item = items[i]; + if (!item.hidden) { + item.hide(true); + } + } + } + + me.callParent(); + + ownerHeaderCt.onHeaderHide(me); + + Ext.resumeLayouts(true); + return me; + }, + + show: function(fromOwner, fromChild) { + var me = this, + ownerHeaderCt = me.getOwnerHeaderCt(), + ownerCt = me.ownerCt, + items, + len, i, + item, + myWidth, + availFlex, + totalFlex, + oldLen, + defaultWidth = Ext.grid.header.Container.prototype.defaultWidth; + + if (me.isVisible()) { + return me; + } + + if (!me.rendered) { + me.hidden = false; + return; + } + + availFlex = ownerHeaderCt.el.getViewSize().width - (ownerHeaderCt.view.el.dom.scrollHeight > ownerHeaderCt.view.el.dom.clientHeight ? Ext.getScrollbarSize().width : 0); + + + if (ownerHeaderCt.forceFit) { + + items = Ext.ComponentQuery.query(':not([flex])', ownerHeaderCt.getVisibleGridColumns()); + + + + + + if (items.length) { + me.width = me.savedWidth || me.width || defaultWidth; + } + + else { + items = ownerHeaderCt.getVisibleGridColumns(); + len = items.length; + oldLen = me.visibleSiblingCount; + + + + + + myWidth = (me.savedWidth || me.width || defaultWidth); + + + + + + + + + + myWidth = Math.min(myWidth * (oldLen / len), defaultWidth, + Math.max(availFlex - (len * defaultWidth), defaultWidth)); + + me.width = null; + me.flex = myWidth; + availFlex -= myWidth; + totalFlex = 0; + for (i = 0; i < len; i++) { + item = items[i]; + item.flex = (item.width || item.getWidth()); + totalFlex += item.flex; + item.width = null; + } + + + + + for (i = 0; i < len; i++) { + item = items[i]; + item.flex = item.flex / totalFlex * availFlex; + } + } + } + + Ext.suspendLayouts(); + + + if (me.isSubHeader && ownerCt.hidden) { + ownerCt.show(false, true); + } + + me.callParent(arguments); + + + if (me.isGroupHeader && fromChild !== true && !me.query(':not([hidden])').length) { + items = me.items.items; + for (i = 0, len = items.length; i < len; i++) { + item = items[i]; + if (item.hidden) { + item.show(true); + } + } + } + + Ext.resumeLayouts(true); + + + ownerCt = me.getOwnerHeaderCt(); + if (ownerCt) { + ownerCt.onHeaderShow(me); + } + }, + + getDesiredWidth: function() { + var me = this; + if (me.rendered && me.componentLayout && me.componentLayout.lastComponentSize) { + + + + + + + return me.componentLayout.lastComponentSize.width; + + + + } + else if (me.flex) { + + return me.width; + } + else { + return me.width; + } + }, + + getCellSelector: function() { + return '.' + Ext.baseCSSPrefix + 'grid-cell-' + this.getItemId(); + }, + + getCellInnerSelector: function() { + return this.getCellSelector() + ' .' + Ext.baseCSSPrefix + 'grid-cell-inner'; + }, + + isOnLeftEdge: function(e) { + return (e.getXY()[0] - this.getX() <= this.handleWidth); + }, + + isOnRightEdge: function(e) { + return (this.getX() + this.getWidth() - e.getXY()[0] <= this.handleWidth); + }, + + + + setMenuActive: function(isMenuOpen) { + this.titleEl[isMenuOpen ? 'addCls' : 'removeCls'](this.headerOpenCls); + } + + + + + + +}); + + +Ext.define('Ext.grid.column.Action', { + extend: Ext.grid.column.Column , + alias: ['widget.actioncolumn'], + alternateClassName: 'Ext.grid.ActionColumn', + + + + + + + + + + + + + + + actionIdRe: new RegExp(Ext.baseCSSPrefix + 'action-col-(\\d+)'), + + + altText: '', + + + menuText: 'Actions', + + sortable: false, + + innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-action-col', + + constructor: function(config) { + var me = this, + cfg = Ext.apply({}, config), + + items = cfg.items || me.items || [me], + hasGetClass, + i, + len; + + + me.origRenderer = cfg.renderer || me.renderer; + me.origScope = cfg.scope || me.scope; + + me.renderer = me.scope = cfg.renderer = cfg.scope = null; + + + cfg.items = null; + me.callParent([cfg]); + + + me.items = items; + + for (i = 0, len = items.length; i < len; ++i) { + if (items[i].getClass) { + hasGetClass = true; + break; + } + } + + + if (me.origRenderer || hasGetClass) { + me.hasCustomRenderer = true; + } + }, + + + + defaultRenderer: function(v, meta, record, rowIdx, colIdx, store, view){ + var me = this, + prefix = Ext.baseCSSPrefix, + scope = me.origScope || me, + items = me.items, + len = items.length, + i = 0, + item, ret, disabled, tooltip; + + + + + ret = Ext.isFunction(me.origRenderer) ? me.origRenderer.apply(scope, arguments) || '' : ''; + + meta.tdCls += ' ' + Ext.baseCSSPrefix + 'action-col-cell'; + for (; i < len; i++) { + item = items[i]; + + disabled = item.disabled || (item.isDisabled ? item.isDisabled.call(item.scope || scope, view, rowIdx, colIdx, item, record) : false); + tooltip = disabled ? null : (item.tooltip || (item.getTip ? item.getTip.apply(item.scope || scope, arguments) : null)); + + + if (!item.hasActionConfiguration) { + + + item.stopSelection = me.stopSelection; + item.disable = Ext.Function.bind(me.disableAction, me, [i], 0); + item.enable = Ext.Function.bind(me.enableAction, me, [i], 0); + item.hasActionConfiguration = true; + } + + ret += '' + (item.altText || me.altText) + ''; + } + return ret; + }, + + + enableAction: function(index, silent) { + var me = this; + + if (!index) { + index = 0; + } else if (!Ext.isNumber(index)) { + index = Ext.Array.indexOf(me.items, index); + } + me.items[index].disabled = false; + me.up('tablepanel').el.select('.' + Ext.baseCSSPrefix + 'action-col-' + index).removeCls(me.disabledCls); + if (!silent) { + me.fireEvent('enable', me); + } + }, + + + disableAction: function(index, silent) { + var me = this; + + if (!index) { + index = 0; + } else if (!Ext.isNumber(index)) { + index = Ext.Array.indexOf(me.items, index); + } + me.items[index].disabled = true; + me.up('tablepanel').el.select('.' + Ext.baseCSSPrefix + 'action-col-' + index).addCls(me.disabledCls); + if (!silent) { + me.fireEvent('disable', me); + } + }, + + destroy: function() { + delete this.items; + delete this.renderer; + return this.callParent(arguments); + }, + + + processEvent : function(type, view, cell, recordIndex, cellIndex, e, record, row){ + var me = this, + target = e.getTarget(), + match, + item, fn, + key = type == 'keydown' && e.getKey(), + disabled; + + + + + if (key && !Ext.fly(target).findParent(view.getCellSelector())) { + target = Ext.fly(cell).down('.' + Ext.baseCSSPrefix + 'action-col-icon', true); + } + + + if (target && (match = target.className.match(me.actionIdRe))) { + item = me.items[parseInt(match[1], 10)]; + disabled = item.disabled || (item.isDisabled ? item.isDisabled.call(item.scope || me.origScope || me, view, recordIndex, cellIndex, item, record) : false); + if (item && !disabled) { + if (type == 'click' || (key == e.ENTER || key == e.SPACE)) { + fn = item.handler || me.handler; + if (fn) { + fn.call(item.scope || me.origScope || me, view, recordIndex, cellIndex, item, e, record, row); + } + } else if (type == 'mousedown' && item.stopSelection !== false) { + return false; + } + } + } + return me.callParent(arguments); + }, + + cascade: function(fn, scope) { + fn.call(scope||this, this); + }, + + + getRefItems: function() { + return []; + } +}); + + +Ext.define('Ext.grid.column.Boolean', { + extend: Ext.grid.column.Column , + alias: ['widget.booleancolumn'], + alternateClassName: 'Ext.grid.BooleanColumn', + + + + trueText: 'true', + + + + + falseText: 'false', + + + + undefinedText: ' ', + + + + + + defaultRenderer: function(value){ + if (value === undefined) { + return this.undefinedText; + } + + if (!value || value === 'false') { + return this.falseText; + } + return this.trueText; + } +}); + + +Ext.define('Ext.grid.column.CheckColumn', { + extend: Ext.grid.column.Column , + alternateClassName: 'Ext.ux.CheckColumn', + alias: 'widget.checkcolumn', + + + align: 'center', + + + stopSelection: true, + + tdCls: Ext.baseCSSPrefix + 'grid-cell-checkcolumn', + innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-checkcolumn', + + clickTargetName: 'el', + + constructor: function() { + this.addEvents( + + 'beforecheckchange', + + 'checkchange' + ); + this.scope = this; + this.callParent(arguments); + }, + + + processEvent: function(type, view, cell, recordIndex, cellIndex, e, record, row) { + var me = this, + key = type === 'keydown' && e.getKey(), + mousedown = type == 'mousedown'; + + if (!me.disabled && (mousedown || (key == e.ENTER || key == e.SPACE))) { + var dataIndex = me.dataIndex, + checked = !record.get(dataIndex); + + + if (me.fireEvent('beforecheckchange', me, recordIndex, checked) !== false) { + record.set(dataIndex, checked); + me.fireEvent('checkchange', me, recordIndex, checked); + + + if (mousedown) { + e.stopEvent(); + } + + + + if (!me.stopSelection) { + view.selModel.selectByPosition({ + row: recordIndex, + column: cellIndex + }); + } + + + return false; + } else { + + return !me.stopSelection; + } + } else { + return me.callParent(arguments); + } + }, + + + onEnable: function(silent) { + var me = this; + + me.callParent(arguments); + me.up('tablepanel').el.select('.' + Ext.baseCSSPrefix + 'grid-cell-' + me.id).removeCls(me.disabledCls); + if (!silent) { + me.fireEvent('enable', me); + } + }, + + + onDisable: function(silent) { + var me = this; + + me.callParent(arguments); + me.up('tablepanel').el.select('.' + Ext.baseCSSPrefix + 'grid-cell-' + me.id).addCls(me.disabledCls); + if (!silent) { + me.fireEvent('disable', me); + } + }, + + + + renderer : function(value, meta) { + var cssPrefix = Ext.baseCSSPrefix, + cls = [cssPrefix + 'grid-checkcolumn']; + + if (this.disabled) { + meta.tdCls += ' ' + this.disabledCls; + } + if (value) { + cls.push(cssPrefix + 'grid-checkcolumn-checked'); + } + return ''; + } +}); + + +Ext.define('Ext.grid.column.Date', { + extend: Ext.grid.column.Column , + alias: ['widget.datecolumn'], + + alternateClassName: 'Ext.grid.DateColumn', + + + + + + + + initComponent: function(){ + if (!this.format) { + this.format = Ext.Date.defaultFormat; + } + + this.callParent(arguments); + }, + + defaultRenderer: function(value){ + return Ext.util.Format.date(value, this.format); + } +}); + + +Ext.define('Ext.grid.column.Number', { + extend: Ext.grid.column.Column , + alias: ['widget.numbercolumn'], + + alternateClassName: 'Ext.grid.NumberColumn', + + + + format : '0,000.00', + + + + + + + defaultRenderer: function(value){ + return Ext.util.Format.number(value, this.format); + } +}); + + +Ext.define('Ext.grid.column.RowNumberer', { + extend: Ext.grid.column.Column , + alternateClassName: 'Ext.grid.RowNumberer', + alias: 'widget.rownumberer', + + + text: " ", + + + width: 23, + + + sortable: false, + + + draggable: false, + + + autoLock: true, + + + lockable: false, + + align: 'right', + + constructor : function(config){ + var me = this; + + + + me.width = me.width; + + me.callParent(arguments); + me.scope = me; + }, + + + resizable: false, + hideable: false, + menuDisabled: true, + dataIndex: '', + cls: Ext.baseCSSPrefix + 'row-numberer', + tdCls: Ext.baseCSSPrefix + 'grid-cell-row-numberer ' + Ext.baseCSSPrefix + 'grid-cell-special', + innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-row-numberer', + rowspan: undefined, + + + renderer: function(value, metaData, record, rowIdx, colIdx, store) { + var rowspan = this.rowspan, + page = store.currentPage, + result = record.index; + + if (rowspan) { + metaData.tdAttr = 'rowspan="' + rowspan + '"'; + } + + if (result == null) { + result = rowIdx; + if (page > 1) { + result += (page - 1) * store.pageSize; + } + } + return result + 1; + } +}); + + +Ext.define('Ext.grid.column.Template', { + extend: Ext.grid.column.Column , + alias: ['widget.templatecolumn'], + + alternateClassName: 'Ext.grid.TemplateColumn', + + + + + + + + initComponent: function(){ + var me = this; + me.tpl = (!Ext.isPrimitive(me.tpl) && me.tpl.compile) ? me.tpl : new Ext.XTemplate(me.tpl); + + + me.hasCustomRenderer = true; + me.callParent(arguments); + }, + + defaultRenderer: function(value, meta, record) { + var data = Ext.apply({}, record.data, record.getAssociatedData()); + return this.tpl.apply(data); + } +}); + + +Ext.define('Ext.grid.feature.Feature', { + extend: Ext.util.Observable , + alias: 'feature.feature', + + wrapsItem: false, + + + isFeature: true, + + + disabled: false, + + + hasFeatureEvent: true, + + + eventPrefix: null, + + + eventSelector: null, + + + view: null, + + + grid: null, + + constructor: function(config) { + this.initialConfig = config; + this.callParent(arguments); + }, + + clone: function() { + return new this.self(this.initialConfig); + }, + + init: Ext.emptyFn, + + destroy: function(){ + this.clearListeners(); + }, + + + getFireEventArgs: function(eventName, view, featureTarget, e) { + return [eventName, view, featureTarget, e]; + }, + + vetoEvent: Ext.emptyFn, + + + enable: function() { + this.disabled = false; + }, + + + disable: function() { + this.disabled = true; + } + +}); + + +Ext.define('Ext.grid.feature.AbstractSummary', { + + extend: Ext.grid.feature.Feature , + + alias: 'feature.abstractsummary', + + summaryRowCls: Ext.baseCSSPrefix + 'grid-row-summary', + summaryTableCls: Ext.plainTableCls + ' ' + Ext.baseCSSPrefix + 'grid-table', + summaryRowSelector: '.' + Ext.baseCSSPrefix + 'grid-row-summary', + + + + summaryRowTpl: { + before: function(values, out) { + + + if (values.record.isSummary) { + this.summaryFeature.outputSummaryRecord(values.record, values, out); + return false; + } + }, + priority: 1000 + }, + + + showSummaryRow: true, + + + init: function() { + var me = this; + me.view.summaryFeature = me; + me.rowTpl = me.view.self.prototype.rowTpl; + + + + me.view.addRowTpl(me.summaryRowTpl).summaryFeature = me; + }, + + + toggleSummaryRow: function(visible) { + this.showSummaryRow = !!visible; + }, + + outputSummaryRecord: function(summaryRecord, contextValues, out) { + var view = contextValues.view, + savedRowValues = view.rowValues, + columns = contextValues.columns || view.headerCt.getVisibleGridColumns(), + colCount = columns.length, i, column, + + + values = { + view: view, + record: summaryRecord, + rowStyle: '', + rowClasses: [ this.summaryRowCls ], + itemClasses: [], + recordIndex: -1, + rowId: view.getRowId(summaryRecord), + columns: columns + }; + + + for (i = 0; i < colCount; i++) { + column = columns[i]; + column.savedRenderer = column.renderer; + if (column.summaryRenderer) { + column.renderer = column.summaryRenderer; + } else if (!column.summaryType) { + column.renderer = Ext.emptyFn; + } + + + if (!column.dataIndex) { + column.dataIndex = column.id; + } + } + + + view.rowValues = values; + view.self.prototype.rowTpl.applyOut(values, out); + view.rowValues = savedRowValues; + + + for (i = 0; i < colCount; i++) { + column = columns[i]; + column.renderer = column.savedRenderer; + column.savedRenderer = null; + } + }, + + + getSummary: function(store, type, field, group){ + var records = group.records; + + if (type) { + if (Ext.isFunction(type)) { + return store.getAggregate(type, null, records, [field]); + } + + switch (type) { + case 'count': + return records.length; + case 'min': + return store.getMin(records, field); + case 'max': + return store.getMax(records, field); + case 'sum': + return store.getSum(records, field); + case 'average': + return store.getAverage(records, field); + default: + return ''; + + } + } + }, + + + generateSummaryData: function(){ + var me = this, + store = me.view.store, + groups = store.groups.items, + reader = store.proxy.reader, + len = groups.length, + groupField = me.getGroupField(), + data = {}, + lockingPartner = me.lockingPartner, + i, group, record, + root, summaryRows, hasRemote, + convertedSummaryRow, remoteData; + + + if (me.remoteRoot && reader.rawData) { + hasRemote = true; + remoteData = {}; + + root = reader.root; + reader.root = me.remoteRoot; + reader.buildExtractors(true); + summaryRows = reader.getRoot(reader.rawData)||[]; + len = summaryRows.length; + + + if (!reader.convertRecordData) { + reader.buildExtractors(); + } + + for (i = 0; i < len; ++i) { + convertedSummaryRow = {}; + + + reader.convertRecordData(convertedSummaryRow, summaryRows[i]); + remoteData[convertedSummaryRow[groupField]] = convertedSummaryRow; + } + + + reader.root = root; + reader.buildExtractors(true); + } + + for (i = 0; i < len; ++i) { + group = groups[i]; + + if (hasRemote || group.isDirty() || !group.hasAggregate()) { + if (hasRemote) { + record = me.populateRemoteRecord(group, remoteData); + } else { + record = me.populateRecord(group); + } + + if (!lockingPartner || (me.view.ownerCt === me.view.ownerCt.ownerLockable.normalGrid)) { + group.commit(); + } + } else { + record = group.getAggregateRecord(); + } + data[group.key] = record; + } + + return data; + }, + + populateRemoteRecord: function(group, data) { + var record = group.getAggregateRecord(true), + groupData = data[group.key], + field; + + record.beginEdit(); + for (field in groupData) { + if (groupData.hasOwnProperty(field)) { + if (field !== record.idProperty) { + record.set(field, groupData[field]); + } + } + } + record.endEdit(true); + record.commit(true); + + return record; + }, + + populateRecord: function(group){ + var me = this, + view = me.grid.ownerLockable ? me.grid.ownerLockable.view : me.view, + store = me.view.store, + record = group.getAggregateRecord(), + + columns = view.headerCt.getGridColumns(), + len = columns.length, + i, column, fieldName; + + record.beginEdit(); + for (i = 0; i < len; ++i) { + column = columns[i]; + + fieldName = column.dataIndex || column.id; + record.set(fieldName, me.getSummary(store, column.summaryType, fieldName, group)); + } + record.endEdit(true); + record.commit(); + + return record; + } +}); + + +Ext.define('Ext.grid.feature.GroupStore', { + extend: Ext.util.Observable , + + isStore: true, + + constructor: function(groupingFeature, store) { + var me = this; + + me.superclass.constructor.apply(me, arguments); + me.groupingFeature = groupingFeature; + me.bindStore(store); + me.processStore(store); + me.view.dataSource = me; + }, + + bindStore: function(store) { + var me = this; + + if (me.store) { + Ext.destroy(me.storeListeners); + me.store = null; + } + if (store) { + me.storeListeners = store.on({ + bulkremove: me.onBulkRemove, + add: me.onAdd, + update: me.onUpdate, + refresh: me.onRefresh, + clear: me.onClear, + scope: me, + destroyable: true + }); + me.store = store; + } + }, + + processStore: function(store) { + var me = this, + groups = store.getGroups(), + groupCount = groups.length, + i, + group, + groupPlaceholder, + data = me.data, + oldGroupCache = me.groupingFeature.groupCache, + groupCache = me.groupingFeature.clearGroupCache(), + collapseAll = me.groupingFeature.startCollapsed; + + if (data) { + data.clear(); + } else { + data = me.data = new Ext.util.MixedCollection(false, Ext.data.Store.recordIdFn); + } + + if (store.getCount()) { + + + me.groupingFeature.startCollapsed = false; + + for (i = 0; i < groupCount; i++) { + + + + group = groups[i]; + + + groupCache[group.name] = group; + group.isCollapsed = collapseAll || (oldGroupCache[group.name] && oldGroupCache[group.name].isCollapsed); + + + + if (group.isCollapsed) { + group.placeholder = groupPlaceholder = new store.model(null, 'group-' + group.name + '-placeholder'); + groupPlaceholder.set(me.getGroupField(), group.name); + groupPlaceholder.rows = groupPlaceholder.children = group.children; + groupPlaceholder.isCollapsedPlaceholder = true; + data.add(groupPlaceholder); + } + + + else { + data.insert(me.data.length, group.children); + } + } + } + }, + + isCollapsed: function(name) { + return this.groupingFeature.groupCache[name].isCollapsed; + }, + + isInCollapsedGroup: function(record) { + var groupData; + + if (this.store.isGrouped() && (groupData = this.groupingFeature.groupCache[record.get(this.getGroupField())])) { + return groupData.isCollapsed || false; + } + return false; + }, + + getCount: function() { + return this.data.getCount(); + }, + + getTotalCount: function() { + return this.data.getCount(); + }, + + + rangeCached: function(start, end) { + return end < this.getCount(); + }, + + getRange: function(start, end, options) { + var result = this.data.getRange(start, end); + + if (options && options.callback) { + options.callback.call(options.scope || this, result, start, end, options); + } + return result; + }, + + getAt: function(index) { + return this.getRange(index, index)[0]; + }, + + getById: function(id) { + return this.store.getById(id); + }, + + expandGroup: function(group) { + var me = this, + startIdx; + + if (typeof group === 'string') { + group = me.groupingFeature.groupCache[group]; + } + + if (group && group.children.length && (startIdx = me.indexOf(group.children[0], true, true)) !== -1) { + + + group.isCollapsed = false; + me.isExpandingOrCollapsing = 1; + + + me.data.removeAt(startIdx); + me.fireEvent('bulkremove', me, [me.getGroupPlaceholder(group)], [startIdx]); + + + me.data.insert(startIdx, group.children); + me.fireEvent('add', me, group.children, startIdx); + + me.fireEvent('groupexpand', me, group); + me.isExpandingOrCollapsing = 0; + } + }, + + collapseGroup: function(group) { + var me = this, + startIdx, + placeholder, + i, j, len, + removeIndices; + + if (typeof group === 'string') { + group = me.groupingFeature.groupCache[group]; + } + + if (group && (len = group.children.length) && (startIdx = me.indexOf(group.children[0], true)) !== -1) { + + + group.isCollapsed = true; + me.isExpandingOrCollapsing = 2; + + + me.data.removeRange(startIdx, len); + + + removeIndices = new Array(len); + for (i = 0, j = startIdx; i < len; i++, j++) { + removeIndices[i] = j; + } + me.fireEvent('bulkremove', me, group.children, removeIndices); + + + me.data.insert(startIdx, placeholder = me.getGroupPlaceholder(group)); + me.fireEvent('add', me, [placeholder], startIdx); + + me.fireEvent('groupcollapse', me, group); + me.isExpandingOrCollapsing = 0; + } + }, + + getGroupPlaceholder: function(group) { + if (!group.placeholder) { + var groupPlaceholder = group.placeholder = new this.store.model(null, 'group-' + group.name + '-placeholder'); + groupPlaceholder.set(this.getGroupField(), group.name); + groupPlaceholder.rows = groupPlaceholder.children = group.children; + groupPlaceholder.isCollapsedPlaceholder = true; + } + return group.placeholder; + }, + + + + + indexOf: function(record, viewOnly, includeCollapsed) { + var me = this, + groups, + groupCount, + i, + group, + groupIndex, + result = 0; + + if (record && (includeCollapsed || !me.isInCollapsedGroup(record))) { + groups = me.store.getGroups(); + groupCount = groups.length; + for (i = 0; i < groupCount; i++) { + + + + group = groups[i]; + if (group.name === this.store.getGroupString(record)) { + groupIndex = Ext.Array.indexOf(group.children, record); + return result + groupIndex; + } + + result += (viewOnly && me.isCollapsed(group.name)) ? 1 : group.children.length; + } + } + return -1; + }, + + + indexOfTotal: function(record) { + var index = record.index; + if (index || index === 0) { + return index; + } + return this.istore.ndexOf(record); + }, + + onRefresh: function(store) { + this.processStore(this.store); + this.fireEvent('refresh', this); + }, + + onBulkRemove: function(store, records, indices) { + this.processStore(this.store); + this.fireEvent('refresh', this); + }, + + onClear: function(store, records, startIndex) { + this.processStore(this.store); + this.fireEvent('clear', this); + }, + + onAdd: function(store, records, startIndex) { + this.processStore(this.store); + this.fireEvent('refresh', this); + }, + + onUpdate: function(store, record, operation, modifiedFieldNames) { + var me = this, + groupInfo = me.groupingFeature.getRecordGroup(record), + firstRec, lastRec; + + + + + if (store.isGrouped()) { + if (modifiedFieldNames && Ext.Array.contains(modifiedFieldNames, me.groupingFeature.getGroupField())) { + return me.onRefresh(me.store); + } + + + if (groupInfo.isCollapsed) { + me.fireEvent('update', me, groupInfo.placeholder); + } + + + + else { + Ext.suspendLayouts(); + + + me.fireEvent('update', me, record, operation, modifiedFieldNames); + + + + firstRec = groupInfo.children[0]; + lastRec = groupInfo.children[groupInfo.children.length - 1]; + + + if (firstRec !== record) { + me.fireEvent('update', me, firstRec, 'edit'); + } + if (lastRec !== record && lastRec !== firstRec) { + me.fireEvent('update', me, lastRec, 'edit'); + } + Ext.resumeLayouts(true); + } + } else { + + me.fireEvent('update', me, record, operation, modifiedFieldNames); + } + } +}); + + +Ext.define('Ext.grid.feature.Grouping', { + extend: Ext.grid.feature.Feature , + mixins: { + summary: Ext.grid.feature.AbstractSummary + }, + + + alias: 'feature.grouping', + + eventPrefix: 'group', + groupCls: Ext.baseCSSPrefix + 'grid-group-hd', + eventSelector: '.' + Ext.baseCSSPrefix + 'grid-group-hd', + + refreshData: {}, + groupInfo: {}, + wrapsItem: true, + + + + + + + + + + + + + groupHeaderTpl: '{columnName}: {name}', + + + depthToIndent: 17, + + collapsedCls: Ext.baseCSSPrefix + 'grid-group-collapsed', + hdCollapsedCls: Ext.baseCSSPrefix + 'grid-group-hd-collapsed', + hdNotCollapsibleCls: Ext.baseCSSPrefix + 'grid-group-hd-not-collapsible', + collapsibleCls: Ext.baseCSSPrefix + 'grid-group-hd-collapsible', + ctCls: Ext.baseCSSPrefix + 'group-hd-container', + + + + groupByText : 'Group by this field', + + + + showGroupsText : 'Show in groups', + + + + hideGroupedHeader : false, + + + startCollapsed : false, + + + enableGroupingMenu : true, + + + enableNoGroups : true, + + + collapsible: true, + + + expandTip: 'Click to expand. CTRL key collapses all others', + + + + collapseTip: 'Click to collapse. CTRL/click collapses all others', + + + showSummaryRow: false, + + tableTpl: { + before: function(values) { + + if (this.groupingFeature.disabled || values.rows.length === 1 && values.rows[0].isSummary) { + return; + } + this.groupingFeature.setup(values.rows, values.view.rowValues); + }, + after: function(values) { + + if (this.groupingFeature.disabled || values.rows.length === 1 && values.rows[0].isSummary) { + return; + } + this.groupingFeature.cleanup(values.rows, values.view.rowValues); + }, + priority: 200 + }, + + groupTpl: [ + '{%', + 'var me = this.groupingFeature;', + + 'if (me.disabled) {', + 'values.needsWrap = false;', + '} else {', + 'me.setupRowData(values.record, values.recordIndex, values);', + 'values.needsWrap = !me.disabled && (values.isFirstRow || values.summaryRecord);', + '}', + '%}', + '', + ' ' + Ext.baseCSSPrefix + 'grid-group-row">', + '', + '', + '{%', + + + 'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";', + '%}', + '
    ', + '
    ', + '{[values.groupHeaderTpl.apply(values.groupInfo, parent) || " "]}', + '
    ', + '
    ', + '
    ', + + + '', + ' ', Ext.baseCSSPrefix, 'grid-table-summary"', + 'border="0" cellspacing="0" cellpadding="0" style="width:100%">', + '{[values.view.renderColumnSizer(out)]}', + + '', + '{%', + 'values.itemClasses.length = 0;', + 'this.nextTpl.applyOut(values, out, parent);', + '%}', + '', + '', + '{%me.outputSummaryRecord(values.summaryRecord, values, out);%}', + '', + '
    ', + '
    ', + '', + '', + '', + '{%this.nextTpl.applyOut(values, out, parent);%}', + '', { + priority: 200, + + syncRowHeights: function(firstRow, secondRow) { + firstRow = Ext.fly(firstRow, 'syncDest'); + secondRow = Ext.fly(secondRow, 'sycSrc'); + var owner = this.owner, + firstHd = firstRow.down(owner.eventSelector, true), + secondHd, + firstSummaryRow = firstRow.down(owner.summaryRowSelector, true), + secondSummaryRow, + firstHeight, secondHeight; + + + if (firstHd && (secondHd = secondRow.down(owner.eventSelector, true))) { + firstHd.style.height = secondHd.style.height = ''; + if ((firstHeight = firstHd.offsetHeight) > (secondHeight = secondHd.offsetHeight)) { + Ext.fly(secondHd).setHeight(firstHeight); + } + else if (secondHeight > firstHeight) { + Ext.fly(firstHd).setHeight(secondHeight); + } + } + + + if (firstSummaryRow && (secondSummaryRow = secondRow.down(owner.summaryRowSelector, true))) { + firstSummaryRow.style.height = secondSummaryRow.style.height = ''; + if ((firstHeight = firstSummaryRow.offsetHeight) > (secondHeight = secondSummaryRow.offsetHeight)) { + Ext.fly(secondSummaryRow).setHeight(firstHeight); + } + else if (secondHeight > firstHeight) { + Ext.fly(firstSummaryRow).setHeight(secondHeight); + } + } + }, + + syncContent: function(destRow, sourceRow) { + destRow = Ext.fly(destRow, 'syncDest'); + sourceRow = Ext.fly(sourceRow, 'sycSrc'); + var owner = this.owner, + destHd = destRow.down(owner.eventSelector, true), + sourceHd = sourceRow.down(owner.eventSelector, true), + destSummaryRow = destRow.down(owner.summaryRowSelector, true), + sourceSummaryRow = sourceRow.down(owner.summaryRowSelector, true); + + + if (destHd && sourceHd) { + Ext.fly(destHd).syncContent(sourceHd); + } + + + if (destSummaryRow && sourceSummaryRow) { + Ext.fly(destSummaryRow).syncContent(sourceSummaryRow); + } + } + } + ], + + constructor: function() { + this.groupCache = {}; + this.callParent(arguments); + }, + + init: function(grid) { + var me = this, + view = me.view; + + view.isGrouping = true; + + + if (me.lockingPartner && me.lockingPartner.groupCache) { + me.groupCache = me.lockingPartner.groupCache; + } + + me.mixins.summary.init.call(me); + + me.callParent(arguments); + view.headerCt.on({ + columnhide: me.onColumnHideShow, + columnshow: me.onColumnHideShow, + columnmove: me.onColumnMove, + scope: me + }); + + + view.addTableTpl(me.tableTpl).groupingFeature = me; + + + view.addRowTpl(Ext.XTemplate.getTpl(me, 'groupTpl')).groupingFeature = me; + + view.preserveScrollOnRefresh = true; + + + if (view.store.buffered) { + me.collapsible = false; + } + + else { + + + if (this.lockingPartner && this.lockingPartner.dataSource) { + me.dataSource = view.dataSource = this.lockingPartner.dataSource; + } else { + me.dataSource = view.dataSource = new Ext.grid.feature.GroupStore(me, view.store); + } + } + + me.grid.on({ + reconfigure: me.onReconfigure + }); + view.on({ + afterrender: me.afterViewRender, + scope: me, + single: true + }); + }, + + clearGroupCache: function() { + var me = this, + groupCache = me.groupCache = {}; + + if (me.lockingPartner) { + me.lockingPartner.groupCache = groupCache; + } + return groupCache; + }, + + vetoEvent: function(record, row, rowIndex, e) { + + if (e.type !== 'mouseover' && e.type !== 'mouseout' && e.type !== 'mouseenter' && e.type !== 'mouseleave' && e.getTarget(this.eventSelector)) { + return false; + } + }, + + enable: function() { + var me = this, + view = me.view, + store = view.store, + groupToggleMenuItem; + + me.lastGroupField = me.getGroupField(); + + view.isGrouping = true; + if (me.lastGroupIndex) { + me.block(); + store.group(me.lastGroupIndex); + me.unblock(); + } + me.callParent(); + groupToggleMenuItem = me.view.headerCt.getMenu().down('#groupToggleMenuItem'); + if (groupToggleMenuItem) { + groupToggleMenuItem.setChecked(true, true); + } + me.refreshIf(); + }, + + disable: function() { + var me = this, + view = me.view, + store = view.store, + groupToggleMenuItem, + lastGroup; + + view.isGrouping = false; + lastGroup = store.groupers.first(); + if (lastGroup) { + me.lastGroupIndex = lastGroup.property; + me.block(); + store.clearGrouping(); + me.unblock(); + } + + me.callParent(); + groupToggleMenuItem = me.view.headerCt.getMenu().down('#groupToggleMenuItem'); + if (groupToggleMenuItem) { + groupToggleMenuItem.setChecked(false, true); + } + me.refreshIf(); + }, + + refreshIf: function() { + var ownerCt = this.grid.ownerCt, + view = this.view; + + if (!view.store.remoteGroup && !this.blockRefresh) { + + + if (ownerCt && ownerCt.lockable) { + ownerCt.view.refresh(); + } else { + view.refresh(); + } + } + }, + + + afterViewRender: function() { + var me = this, + view = me.view; + + view.on({ + scope: me, + groupclick: me.onGroupClick + }); + + if (me.enableGroupingMenu) { + me.injectGroupingMenu(); + } + + me.pruneGroupedHeader(); + + me.lastGroupField = me.getGroupField(); + me.block(); + me.onGroupChange(); + me.unblock(); + }, + + injectGroupingMenu: function() { + var me = this, + headerCt = me.view.headerCt; + + headerCt.showMenuBy = me.showMenuBy; + headerCt.getMenuItems = me.getMenuItems(); + }, + + onColumnHideShow: function(headerOwnerCt, header) { + var view = this.view, + headerCt = view.headerCt, + menu = headerCt.getMenu(), + groupToggleMenuItem = menu.down('#groupMenuItem'), + colCount = headerCt.getGridColumns().length, + items, + len, + i; + + + if (groupToggleMenuItem) { + if (headerCt.getVisibleGridColumns().length > 1) { + groupToggleMenuItem.enable(); + } else { + groupToggleMenuItem.disable(); + } + } + + + if (view.rendered) { + items = view.el.query('.' + this.ctCls); + for (i = 0, len = items.length; i < len; ++i) { + items[i].colSpan = colCount; + } + } + }, + + + + onColumnMove: function() { + var me = this, + store = me.view.store, + groups, + i, len, + groupInfo, firstRec, lastRec; + + if (store.isGrouped()) { + groups = store.getGroups(); + len = groups.length; + + + for (i = 0; i < len; i++) { + groupInfo = groups[i]; + firstRec = groupInfo.children[0]; + lastRec = groupInfo.children[groupInfo.children.length - 1]; + + + + store.fireEvent('update', store, firstRec, 'edit', null); + if (lastRec !== firstRec) { + store.fireEvent('update', store, lastRec, 'edit', null); + } + } + } + }, + + showMenuBy: function(t, header) { + var menu = this.getMenu(), + groupMenuItem = menu.down('#groupMenuItem'), + groupMenuMeth = header.groupable === false || this.view.headerCt.getVisibleGridColumns().length < 2 ? 'disable' : 'enable', + groupToggleMenuItem = menu.down('#groupToggleMenuItem'), + isGrouped = this.view.store.isGrouped(); + + groupMenuItem[groupMenuMeth](); + if (groupToggleMenuItem) { + groupToggleMenuItem.setChecked(isGrouped, true); + groupToggleMenuItem[isGrouped ? 'enable' : 'disable'](); + } + Ext.grid.header.Container.prototype.showMenuBy.apply(this, arguments); + }, + + getMenuItems: function() { + var me = this, + groupByText = me.groupByText, + disabled = me.disabled || !me.getGroupField(), + showGroupsText = me.showGroupsText, + enableNoGroups = me.enableNoGroups, + getMenuItems = me.view.headerCt.getMenuItems; + + + return function() { + + + + var o = getMenuItems.call(this); + o.push('-', { + iconCls: Ext.baseCSSPrefix + 'group-by-icon', + itemId: 'groupMenuItem', + text: groupByText, + handler: me.onGroupMenuItemClick, + scope: me + }); + if (enableNoGroups) { + o.push({ + itemId: 'groupToggleMenuItem', + text: showGroupsText, + checked: !disabled, + checkHandler: me.onGroupToggleMenuItemClick, + scope: me + }); + } + return o; + }; + }, + + + onGroupMenuItemClick: function(menuItem, e) { + var me = this, + menu = menuItem.parentMenu, + hdr = menu.activeHeader, + view = me.view, + store = view.store; + + me.lastGroupIndex = null; + me.block(); + me.enable(); + store.group(hdr.dataIndex); + me.pruneGroupedHeader(); + me.unblock(); + me.refreshIf(); + }, + + block: function(fromPartner) { + this.blockRefresh = this.view.blockRefresh = true; + if (this.lockingPartner && !fromPartner) { + this.lockingPartner.block(true); + } + }, + + unblock: function(fromPartner) { + this.blockRefresh = this.view.blockRefresh = false; + if (this.lockingPartner && !fromPartner) { + this.lockingPartner.unblock(true); + } + }, + + + onGroupToggleMenuItemClick: function(menuItem, checked) { + this[checked ? 'enable' : 'disable'](); + }, + + + pruneGroupedHeader: function() { + var me = this, + header = me.getGroupedHeader(); + + if (me.hideGroupedHeader && header) { + Ext.suspendLayouts(); + if (me.prunedHeader && me.prunedHeader !== header) { + me.prunedHeader.show(); + } + me.prunedHeader = header; + header.hide(); + Ext.resumeLayouts(true); + } + }, + + getHeaderNode: function(groupName) { + return Ext.get(this.createGroupId(groupName)); + }, + + getGroup: function(name) { + var cache = this.groupCache, + item = cache[name]; + + if (!item) { + item = cache[name] = { + isCollapsed: false + }; + } + return item; + }, + + + isExpanded: function(groupName) { + return !this.getGroup(groupName).isCollapsed; + }, + + + expand: function(groupName, focus) { + this.doCollapseExpand(false, groupName, focus); + }, + + + expandAll: function() { + var me = this, + view = me.view, + groupCache = me.groupCache, + groupName, + lockingPartner = me.lockingPartner, + partnerView; + + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + groupCache[groupName].isCollapsed = false; + } + } + Ext.suspendLayouts(); + view.suspendEvent('beforerefresh', 'refresh'); + if (lockingPartner) { + partnerView = lockingPartner.view + partnerView.suspendEvent('beforerefresh', 'refresh'); + } + me.dataSource.onRefresh(); + view.resumeEvent('beforerefresh', 'refresh'); + if (lockingPartner) { + partnerView.resumeEvent('beforerefresh', 'refresh'); + } + Ext.resumeLayouts(true); + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + me.afterCollapseExpand(false, groupName); + if (lockingPartner) { + lockingPartner.afterCollapseExpand(false, groupName); + } + } + } + }, + + + collapse: function(groupName, focus) { + this.doCollapseExpand(true, groupName, focus); + }, + + + + isAllCollapsed: function() { + var me = this, + groupCache = me.groupCache, + groupName; + + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + if (!groupCache[groupName].isCollapsed) { + return false; + } + } + } + return true; + }, + + + + isAllExpanded: function() { + var me = this, + groupCache = me.groupCache, + groupName; + + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + if (groupCache[groupName].isCollapsed) { + return false; + } + } + } + return true; + }, + + + collapseAll: function() { + var me = this, + view = me.view, + groupCache = me.groupCache, + groupName, + lockingPartner = me.lockingPartner, + partnerView; + + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + groupCache[groupName].isCollapsed = true; + } + } + Ext.suspendLayouts(); + view.suspendEvent('beforerefresh', 'refresh'); + if (lockingPartner) { + partnerView = lockingPartner.view + partnerView.suspendEvent('beforerefresh', 'refresh'); + } + me.dataSource.onRefresh(); + view.resumeEvent('beforerefresh', 'refresh'); + if (lockingPartner) { + partnerView.resumeEvent('beforerefresh', 'refresh'); + } + + if (lockingPartner && !lockingPartner.isAllCollapsed()) { + lockingPartner.collapseAll(); + } + Ext.resumeLayouts(true); + + + for (groupName in groupCache) { + if (groupCache.hasOwnProperty(groupName)) { + me.afterCollapseExpand(true, groupName); + if (lockingPartner) { + lockingPartner.afterCollapseExpand(true, groupName); + } + } + } + + }, + + doCollapseExpand: function(collapsed, groupName, focus) { + var me = this, + lockingPartner = me.lockingPartner, + group = me.groupCache[groupName]; + + + if (group.isCollapsed != collapsed) { + + + + Ext.suspendLayouts(); + if (collapsed) { + me.dataSource.collapseGroup(group); + } else { + me.dataSource.expandGroup(group); + } + Ext.resumeLayouts(true); + + + me.afterCollapseExpand(collapsed, groupName, focus); + + + + if (lockingPartner) { + lockingPartner.afterCollapseExpand(collapsed, groupName, false); + } + } + }, + + afterCollapseExpand: function(collapsed, groupName, focus) { + var me = this, + view = me.view, + header; + + header = Ext.get(this.getHeaderNode(groupName)); + view.fireEvent(collapsed ? 'groupcollapse' : 'groupexpand', view, header, groupName); + if (focus) { + header.up(view.getItemSelector()).scrollIntoView(view.el, null, true); + } + }, + + onGroupChange: function() { + var me = this, + field = me.getGroupField(), + menuItem, + visibleGridColumns, + groupingByLastVisibleColumn; + + if (me.hideGroupedHeader) { + if (me.lastGroupField) { + menuItem = me.getMenuItem(me.lastGroupField); + if (menuItem) { + menuItem.setChecked(true); + } + } + if (field) { + visibleGridColumns = me.view.headerCt.getVisibleGridColumns(); + + + + groupingByLastVisibleColumn = ((visibleGridColumns.length === 1) && (visibleGridColumns[0].dataIndex == field)); + menuItem = me.getMenuItem(field); + if (menuItem && !groupingByLastVisibleColumn) { + menuItem.setChecked(false); + } + } + } + me.refreshIf(); + me.lastGroupField = field; + }, + + + getMenuItem: function(dataIndex){ + var view = this.view, + header = view.headerCt.down('gridcolumn[dataIndex=' + dataIndex + ']'), + menu = view.headerCt.getMenu(); + + return header ? menu.down('menuitem[headerId='+ header.id +']') : null; + }, + + onGroupKey: function(keyCode, event) { + var me = this, + groupName = me.getGroupName(event.target); + + if (groupName) { + me.onGroupClick(me.view, event.target, groupName, event); + } + }, + + + onGroupClick: function(view, rowElement, groupName, e) { + var me = this, + groupCache = me.groupCache, + groupIsCollapsed = !me.isExpanded(groupName), + g; + + if (me.collapsible) { + + + if (e.ctrlKey) { + Ext.suspendLayouts(); + for (g in groupCache) { + if (g === groupName) { + if (groupIsCollapsed) { + me.expand(groupName); + } + } else { + me.doCollapseExpand(true, g, false); + } + } + Ext.resumeLayouts(true); + return; + } + + if (groupIsCollapsed) { + me.expand(groupName); + } else { + me.collapse(groupName); + } + } + }, + + setupRowData: function(record, idx, rowValues) { + var me = this, + data = me.refreshData, + groupInfo = me.groupInfo, + header = data.header, + groupField = data.groupField, + store = me.view.dataSource, + grouper, groupName, prev, next; + + rowValues.isCollapsedGroup = false; + rowValues.summaryRecord = null; + + if (data.doGrouping) { + grouper = me.view.store.groupers.first(); + + + + if (record.children) { + groupName = grouper.getGroupString(record.children[0]); + + rowValues.isFirstRow = rowValues.isLastRow = true; + rowValues.itemClasses.push(me.hdCollapsedCls); + rowValues.isCollapsedGroup = true; + rowValues.groupInfo = groupInfo; + groupInfo.groupField = groupField; + groupInfo.name = groupName; + groupInfo.groupValue = record.children[0].get(groupField); + groupInfo.columnName = header ? header.text : groupField; + rowValues.collapsibleCls = me.collapsible ? me.collapsibleCls : me.hdNotCollapsibleCls; + rowValues.groupId = me.createGroupId(groupName); + groupInfo.rows = groupInfo.children = record.children; + if (me.showSummaryRow) { + rowValues.summaryRecord = data.summaryData[groupName]; + } + return; + } + + groupName = grouper.getGroupString(record); + + + rowValues.isFirstRow = idx === 0; + if (!rowValues.isFirstRow) { + prev = store.getAt(idx - 1); + + if (prev) { + + rowValues.isFirstRow = !prev.isEqual(grouper.getGroupString(prev), groupName); + } + } + + + rowValues.isLastRow = idx == store.getTotalCount() - 1; + if (!rowValues.isLastRow) { + next = store.getAt(idx + 1); + if (next) { + + rowValues.isLastRow = !next.isEqual(grouper.getGroupString(next), groupName); + } + } + + if (rowValues.isFirstRow) { + groupInfo.groupField = groupField; + groupInfo.name = groupName; + groupInfo.groupValue = record.get(groupField); + groupInfo.columnName = header ? header.text : groupField; + rowValues.collapsibleCls = me.collapsible ? me.collapsibleCls : me.hdNotCollapsibleCls; + rowValues.groupId = me.createGroupId(groupName); + + if (!me.isExpanded(groupName)) { + rowValues.itemClasses.push(me.hdCollapsedCls); + rowValues.isCollapsedGroup = true; + } + + + if (store.buffered) { + groupInfo.rows = groupInfo.children = []; + } else { + groupInfo.rows = groupInfo.children = me.getRecordGroup(record).children; + } + rowValues.groupInfo = groupInfo; + } + + if (rowValues.isLastRow) { + + if (me.showSummaryRow) { + rowValues.summaryRecord = data.summaryData[groupName]; + } + } + } + }, + + setup: function(rows, rowValues) { + var me = this, + data = me.refreshData, + isGrouping = !me.disabled && me.view.store.isGrouped(); + + me.skippedRows = 0; + if (rowValues.view.bufferedRenderer) { + rowValues.view.bufferedRenderer.variableRowHeight = true; + } + data.groupField = me.getGroupField(); + data.header = me.getGroupedHeader(data.groupField); + data.doGrouping = isGrouping; + rowValues.groupHeaderTpl = Ext.XTemplate.getTpl(me, 'groupHeaderTpl'); + + if (isGrouping && me.showSummaryRow) { + data.summaryData = me.generateSummaryData(); + } + }, + + cleanup: function(rows, rowValues) { + var data = this.refreshData; + + rowValues.groupInfo = rowValues.groupHeaderTpl = rowValues.isFirstRow = null; + data.groupField = data.header = null; + }, + + getGroupName: function(element) { + var me = this, + view = me.view, + eventSelector = me.eventSelector, + parts, + targetEl, + row; + + + targetEl = Ext.fly(element).findParent(eventSelector); + + if (!targetEl) { + + row = Ext.fly(element).findParent(view.itemSelector); + if (row) { + targetEl = row.down(eventSelector, true); + } + } + + if (targetEl) { + parts = targetEl.id.split(view.id + '-hd-'); + if (parts.length === 2) { + return Ext.htmlDecode(parts[1]); + } + } + }, + + + getRecordGroup: function(record) { + var grouper = this.view.store.groupers.first(); + if (grouper) { + return this.groupCache[grouper.getGroupString(record)]; + } + }, + + createGroupId: function(group) { + return this.view.id + '-hd-' + Ext.htmlEncode(group); + }, + + createGroupCls: function(group) { + return this.view.id + '-' + Ext.htmlEncode(group) + '-item'; + }, + + getGroupField: function(){ + return this.view.store.getGroupField(); + }, + + getGroupedHeader: function(groupField) { + var me = this, + headerCt = me.view.headerCt, + partner = me.lockingPartner, + selector, header; + + groupField = groupField || this.getGroupField(); + + if (groupField) { + selector = '[dataIndex=' + groupField + ']'; + header = headerCt.down(selector); + + if (!header && partner) { + header = partner.view.headerCt.down(selector); + } + } + return header || null; + }, + + getFireEventArgs: function(type, view, targetEl, e) { + return [type, view, targetEl, this.getGroupName(targetEl), e]; + }, + + destroy: function(){ + var me = this, + dataSource = me.dataSource; + + me.view = me.prunedHeader = me.grid = me.groupCache = me.dataSource = null; + me.callParent(); + if (dataSource) { + dataSource.bindStore(null); + } + }, + + onReconfigure: function(grid, store, columns, oldStore, oldColumns) { + var me = grid; + + if (store && store !== oldStore) { + + if (store.buffered !== oldStore.buffered) { + Ext.Error.raise('Cannot reconfigure grouping switching between buffered and non-buffered stores'); + } + if (store.buffered) { + me.bindStore(store); + me.dataSource.processStore(store); + } + } + } +}); + + +Ext.define('Ext.grid.feature.GroupingSummary', { + + extend: Ext.grid.feature.Grouping , + + alias: 'feature.groupingsummary', + + showSummaryRow: true, + + vetoEvent: function(record, row, rowIndex, e){ + var result = this.callParent(arguments); + if (result !== false) { + if (e.getTarget(this.summaryRowSelector)) { + result = false; + } + } + return result; + } +}); + + +Ext.define('Ext.grid.feature.RowBody', { + extend: Ext.grid.feature.Feature , + alias: 'feature.rowbody', + + rowBodyCls: Ext.baseCSSPrefix + 'grid-row-body', + rowBodyHiddenCls: Ext.baseCSSPrefix + 'grid-row-body-hidden', + rowBodyTdSelector: 'td.' + Ext.baseCSSPrefix + 'grid-cell-rowbody', + eventPrefix: 'rowbody', + eventSelector: 'tr.' + Ext.baseCSSPrefix + 'grid-rowbody-tr', + + tableTpl: { + before: function(values, out) { + var view = values.view, + rowValues = view.rowValues; + + this.rowBody.setup(values.rows, rowValues); + }, + after: function(values, out) { + var view = values.view, + rowValues = view.rowValues; + + this.rowBody.cleanup(values.rows, rowValues); + }, + priority: 100 + }, + + extraRowTpl: [ + '{%', + 'values.view.rowBodyFeature.setupRowData(values.record, values.recordIndex, values);', + 'this.nextTpl.applyOut(values, out, parent);', + '%}', + '', + '', + '
    {rowBody}
    ', + '', + '', { + priority: 100, + + syncRowHeights: function(firstRow, secondRow) { + var owner = this.owner, + firstRowBody = Ext.fly(firstRow).down(owner.eventSelector, true), + secondRowBody, + firstHeight, secondHeight; + + + if (firstRowBody && (secondRowBody = Ext.fly(secondRow).down(owner.eventSelector, true))) { + if ((firstHeight = firstRowBody.offsetHeight) > (secondHeight = secondRowBody.offsetHeight)) { + Ext.fly(secondRowBody).setHeight(firstHeight); + } + else if (secondHeight > firstHeight) { + Ext.fly(firstRowBody).setHeight(secondHeight); + } + } + }, + + syncContent: function(destRow, sourceRow) { + var owner = this.owner, + destRowBody = Ext.fly(destRow).down(owner.eventSelector, true), + sourceRowBody; + + + if (destRowBody && (sourceRowBody = Ext.fly(sourceRow).down(owner.eventSelector, true))) { + Ext.fly(destRowBody).syncContent(sourceRowBody); + } + } + } + ], + + init: function(grid) { + var me = this, + view = me.view; + + view.rowBodyFeature = me; + + + + if (!view.findFeature('rowwrap')) { + grid.mon(view, { + element: 'el', + mousedown: me.onMouseDown, + scope: me + }); + + me.mon(grid.getStore(), 'remove', me.onStoreRemove, me); + } + + view.headerCt.on({ + columnschanged: me.onColumnsChanged, + scope: me + }); + view.addTableTpl(me.tableTpl).rowBody = me; + view.addRowTpl(Ext.XTemplate.getTpl(this, 'extraRowTpl')); + me.callParent(arguments); + }, + + onStoreRemove: function(store, model, index){ + var view = this.view, + node; + + if (view.rendered) { + node = view.getNode(index); + if (node) { + node = Ext.fly(node).next(this.eventSelector); + if (node) { + node.remove(); + } + } + } + }, + + + onMouseDown: function(e) { + var me = this, + tableRow = e.getTarget(me.eventSelector); + + + if (tableRow && Ext.fly(tableRow = tableRow.previousSibling).is(me.view.getItemSelector())) { + e.target = tableRow; + me.view.handleEvent(e); + } + }, + + getSelectedRow: function(view, rowIndex) { + var selectedRow = view.getNode(rowIndex, false); + if (selectedRow) { + return Ext.fly(selectedRow).down(this.eventSelector); + } + return null; + }, + + + onColumnsChanged: function(headerCt) { + var items = this.view.el.query(this.rowBodyTdSelector), + colspan = headerCt.getVisibleGridColumns().length, + len = items.length, + i; + + for (i = 0; i < len; ++i) { + items[i].colSpan = colspan; + } + }, + + + setupRowData: function(record, rowIndex, rowValues) { + if (this.getAdditionalData) { + Ext.apply(rowValues, this.getAdditionalData(record.data, rowIndex, record, rowValues)); + } + }, + + setup: function(rows, rowValues) { + rowValues.rowBodyCls = this.rowBodyCls; + rowValues.rowBodyColspan = rowValues.view.getGridColumns().length; + }, + + cleanup: function(rows, rowValues) { + rowValues.rowBodyCls = rowValues.rowBodyColspan = rowValues.rowBody = null; + } +}); + + +Ext.define('Ext.grid.feature.RowWrap', { + extend: Ext.grid.feature.Feature , + alias: 'feature.rowwrap', + + rowWrapTd: 'td.' + Ext.baseCSSPrefix + 'grid-rowwrap', + + + hasFeatureEvent: false, + + tableTpl: { + before: function(values, out) { + if (values.view.bufferedRenderer) { + values.view.bufferedRenderer.variableRowHeight = true; + } + }, + priority: 200 + }, + + wrapTpl: [ + '', + '', + '', + '{[values.view.renderColumnSizer(out)]}', + '{%', + 'values.itemClasses.length = 0;', + 'this.nextTpl.applyOut(values, out, parent)', + '%}', + '
    ', + '', + '', { + priority: 200 + } + ], + + init: function(grid) { + var me = this; + me.view.addTableTpl(me.tableTpl); + me.view.addRowTpl(Ext.XTemplate.getTpl(me, 'wrapTpl')); + me.view.headerCt.on({ + columnhide: me.onColumnHideShow, + columnshow: me.onColumnHideShow, + scope: me + }); + }, + + + onColumnHideShow: function() { + var view = this.view, + items = view.el.query(this.rowWrapTd), + colspan = view.headerCt.getVisibleGridColumns().length, + len = items.length, + i; + + for (i = 0; i < len; ++i) { + items[i].colSpan = colspan; + } + } +}); + + +Ext.define('Ext.grid.feature.Summary', { + + + + extend: Ext.grid.feature.AbstractSummary , + + alias: 'feature.summary', + + + dock: undefined, + + dockedSummaryCls: Ext.baseCSSPrefix + 'docked-summary', + + panelBodyCls: Ext.baseCSSPrefix + 'summary-', + + init: function(grid) { + var me = this, + view = me.view; + + me.callParent(arguments); + + if (me.dock) { + grid.headerCt.on({ + afterlayout: me.onStoreUpdate, + scope: me + }); + grid.on({ + beforerender: function() { + var tableCls = [me.summaryTableCls]; + if (view.columnLines) { + tableCls[tableCls.length] = view.ownerCt.colLinesCls; + } + me.summaryBar = grid.addDocked({ + childEls: ['innerCt'], + renderTpl: [ + '
    ', + '', + '', + '
    ', + '
    ' + ], + style: 'overflow:hidden', + itemId: 'summaryBar', + cls: [ me.dockedSummaryCls, me.dockedSummaryCls + '-' + me.dock ], + xtype: 'component', + dock: me.dock, + weight: 10000000 + })[0]; + }, + afterrender: function() { + grid.body.addCls(me.panelBodyCls + me.dock); + view.mon(view.el, { + scroll: me.onViewScroll, + scope: me + }); + me.onStoreUpdate(); + }, + single: true + }); + + + grid.headerCt.afterComponentLayout = Ext.Function.createSequence(grid.headerCt.afterComponentLayout, function() { + me.summaryBar.innerCt.setWidth(this.getFullWidth() + Ext.getScrollbarSize().width); + }); + } else { + me.view.addFooterFn(me.renderTFoot); + } + + grid.on({ + columnmove: me.onStoreUpdate, + scope: me + }); + + + view.mon(view.store, { + update: me.onStoreUpdate, + datachanged: me.onStoreUpdate, + scope: me + }); + }, + + renderTFoot: function(values, out) { + var view = values.view, + me = view.findFeature('summary'); + + if (me.showSummaryRow) { + out.push(''); + me.outputSummaryRecord(me.createSummaryRecord(view), values, out); + out.push(''); + } + }, + + vetoEvent: function(record, row, rowIndex, e) { + return !e.getTarget(this.summaryRowSelector); + }, + + onViewScroll: function() { + this.summaryBar.el.dom.scrollLeft = this.view.el.dom.scrollLeft; + }, + + createSummaryRecord: function(view) { + var columns = view.headerCt.getVisibleGridColumns(), + info = { + records: view.store.getRange() + }, + colCount = columns.length, i, column, + summaryRecord = this.summaryRecord || (this.summaryRecord = new view.store.model(null, view.id + '-summary-record')); + + + summaryRecord.beginEdit(); + for (i = 0; i < colCount; i++) { + column = columns[i]; + + + + if (!column.dataIndex) { + column.dataIndex = column.id; + } + + summaryRecord.set(column.dataIndex, this.getSummary(view.store, column.summaryType, column.dataIndex, info)); + } + summaryRecord.endEdit(true); + + summaryRecord.commit(true); + summaryRecord.isSummary = true; + + return summaryRecord; + }, + + onStoreUpdate: function() { + var me = this, + view = me.view, + record = me.createSummaryRecord(view), + newRowDom = view.createRowElement(record, -1), + oldRowDom, partner, + p; + + if (!view.rendered) { + return; + } + + + if (me.dock) { + oldRowDom = me.summaryBar.el.down('.' + me.summaryRowCls, true); + } + + + else { + oldRowDom = me.view.getNode(record); + } + + if (oldRowDom) { + p = oldRowDom.parentNode; + p.insertBefore(newRowDom, oldRowDom); + p.removeChild(oldRowDom); + + partner = me.lockingPartner; + + + if (partner && partner.grid.rendered && !me.calledFromLockingPartner) { + partner.calledFromLockingPartner = true; + partner.onStoreUpdate(); + partner.calledFromLockingPartner = false; + } + } + + if (me.dock) { + me.onColumnHeaderLayout(); + } + }, + + + onColumnHeaderLayout: function() { + var view = this.view, + columns = view.headerCt.getVisibleGridColumns(), + column, + len = columns.length, i, + summaryEl = this.summaryBar.el, + el; + + for (i = 0; i < len; i++) { + column = columns[i]; + el = summaryEl.down(view.getCellSelector(column)); + if (el) { + if (column.hidden) { + el.setDisplayed(false); + } else { + el.setDisplayed(true); + el.setWidth(column.width || (column.lastBox ? column.lastBox.width : 100)); + } + } + } + } +}); + + +Ext.define('Ext.grid.locking.HeaderContainer', { + extend: Ext.grid.header.Container , + + + + + constructor: function(lockable) { + var me = this, + events, + event, + eventNames = [], + lockedGrid = lockable.lockedGrid, + normalGrid = lockable.normalGrid; + + me.lockable = lockable; + me.callParent(); + + + lockedGrid.columnManager.rootColumns = + normalGrid.columnManager.rootColumns = + lockable.columnManager = + me.columnManager = new Ext.grid.ColumnManager(lockedGrid.headerCt, normalGrid.headerCt); + + + events = lockedGrid.headerCt.events; + for (event in events) { + if (events.hasOwnProperty(event)) { + eventNames.push(event); + } + } + me.relayEvents(lockedGrid.headerCt, eventNames); + me.relayEvents(normalGrid.headerCt, eventNames); + }, + + getRefItems: function() { + return this.lockable.lockedGrid.headerCt.getRefItems().concat(this.lockable.normalGrid.headerCt.getRefItems()); + }, + + + + getGridColumns: function() { + return this.lockable.lockedGrid.headerCt.getGridColumns().concat(this.lockable.normalGrid.headerCt.getGridColumns()); + }, + + + getColumnsState: function () { + var me = this, + locked = me.lockable.lockedGrid.headerCt.getColumnsState(), + normal = me.lockable.normalGrid.headerCt.getColumnsState(); + + return locked.concat(normal); + }, + + + applyColumnsState: function (columns) { + var me = this, + lockedGrid = me.lockable.lockedGrid, + lockedHeaderCt = lockedGrid.headerCt, + normalHeaderCt = me.lockable.normalGrid.headerCt, + lockedCols = Ext.Array.toValueMap(lockedHeaderCt.items.items, 'headerId'), + normalCols = Ext.Array.toValueMap(normalHeaderCt.items.items, 'headerId'), + locked = [], + normal = [], + lockedWidth = 1, + length = columns.length, + i, existing, + lockedDefault, + col; + + for (i = 0; i < length; i++) { + col = columns[i]; + + lockedDefault = lockedCols[col.id]; + existing = lockedDefault || normalCols[col.id]; + + if (existing) { + if (existing.applyColumnState) { + existing.applyColumnState(col); + } + if (existing.locked === undefined) { + existing.locked = !!lockedDefault; + } + if (existing.locked) { + locked.push(existing); + if (!existing.hidden && typeof existing.width == 'number') { + lockedWidth += existing.width; + } + } else { + normal.push(existing); + } + } + } + + + if (locked.length + normal.length == lockedHeaderCt.items.getCount() + normalHeaderCt.items.getCount()) { + lockedHeaderCt.removeAll(false); + normalHeaderCt.removeAll(false); + + lockedHeaderCt.add(locked); + normalHeaderCt.add(normal); + + lockedGrid.setWidth(lockedWidth); + } + } +}); + + +Ext.define('Ext.grid.locking.View', { + alternateClassName: 'Ext.grid.LockingView', + + mixins: { + observable: Ext.util.Observable + }, + + + isLockingView: true, + + eventRelayRe: /^(beforeitem|beforecontainer|item|container|cell|refresh)/, + + constructor: function(config){ + var me = this, + eventNames = [], + eventRe = me.eventRelayRe, + locked = config.locked.getView(), + normal = config.normal.getView(), + events, + event; + + Ext.apply(me, { + lockedView: locked, + normalView: normal, + lockedGrid: config.locked, + normalGrid: config.normal, + panel: config.panel + }); + me.mixins.observable.constructor.call(me, config); + + + events = locked.events; + for (event in events) { + if (events.hasOwnProperty(event) && eventRe.test(event)) { + eventNames.push(event); + } + } + me.relayEvents(locked, eventNames); + me.relayEvents(normal, eventNames); + + normal.on({ + scope: me, + itemmouseleave: me.onItemMouseLeave, + itemmouseenter: me.onItemMouseEnter + }); + + locked.on({ + scope: me, + itemmouseleave: me.onItemMouseLeave, + itemmouseenter: me.onItemMouseEnter + }); + + me.panel.on({ + render: me.onPanelRender, + scope: me + }); + }, + + onPanelRender: function() { + var me = this, + mask = me.loadMask, + cfg = { + target: me.panel, + msg: me.loadingText, + msgCls: me.loadingCls, + useMsg: me.loadingUseMsg, + store: me.panel.store + }; + + + + me.el = me.panel.body; + me.fireEvent('render', me); + + if (mask) { + + if (Ext.isObject(mask)) { + cfg = Ext.apply(cfg, mask); + } + + + + + me.loadMask = new Ext.LoadMask(cfg); + } + }, + + getGridColumns: function() { + var cols = this.lockedGrid.headerCt.getVisibleGridColumns(); + return cols.concat(this.normalGrid.headerCt.getVisibleGridColumns()); + }, + + getEl: function(column){ + return this.getViewForColumn(column).getEl(); + }, + + getViewForColumn: function(column) { + var view = this.lockedView, + inLocked; + + view.headerCt.cascade(function(col){ + if (col === column) { + inLocked = true; + return false; + } + }); + + return inLocked ? view : this.normalView; + }, + + onItemMouseEnter: function(view, record){ + var me = this, + locked = me.lockedView, + other = me.normalView, + item; + + if (view.trackOver) { + if (view !== locked) { + other = locked; + } + item = other.getNode(record, false); + other.highlightItem(item); + } + }, + + onItemMouseLeave: function(view, record){ + var me = this, + locked = me.lockedView, + other = me.normalView; + + if (view.trackOver) { + if (view !== locked) { + other = locked; + } + other.clearHighlight(); + } + }, + + relayFn: function(name, args){ + args = args || []; + + var view = this.lockedView; + view[name].apply(view, args); + view = this.normalView; + view[name].apply(view, args); + }, + + getSelectionModel: function(){ + return this.panel.getSelectionModel(); + }, + + getStore: function(){ + return this.panel.store; + }, + + getNode: function(nodeInfo, dataRow) { + + return this.normalView.getNode(nodeInfo, dataRow); + }, + + getCell: function(record, column) { + var view = this.getViewForColumn(column), + row = view.getNode(record, true); + + return Ext.fly(row).down(column.getCellSelector()); + }, + + indexOf: function(record) { + var result = this.lockedView.indexOf(record); + if (!result) { + result = this.normalView.indexOf(record); + } + return result; + }, + + focus: function() { + var p = this.getSelectionModel().getCurrentPosition(), + v = p ? p.view : this.normalView; + + v.focus(); + }, + + focusRow: function(row) { + this.normalView.focusRow(row); + }, + + focusCell: function(position) { + position.view.focusCell(position); + }, + + isVisible: function(deep) { + return this.panel.isVisible(deep); + }, + + getRecord: function(node) { + var result = this.lockedView.getRecord(node); + if (!result) { + result = this.normalView.getRecord(node); + } + return result; + }, + + scrollBy: function(){ + var normal = this.normalView; + normal.scrollBy.apply(normal, arguments); + }, + + addElListener: function(eventName, fn, scope){ + this.relayFn('addElListener', arguments); + }, + + refreshNode: function(){ + this.relayFn('refreshNode', arguments); + }, + + refresh: function(){ + this.relayFn('refresh', arguments); + }, + + bindStore: function(){ + this.relayFn('bindStore', arguments); + }, + + addRowCls: function(){ + this.relayFn('addRowCls', arguments); + }, + + removeRowCls: function(){ + this.relayFn('removeRowCls', arguments); + }, + + destroy: function(){ + var me = this, + mask = me.loadMask; + + + + me.clearListeners(); + if (mask && mask.bindStore) { + mask.bindStore(null); + } + } + +}); + + +Ext.define('Ext.grid.locking.Lockable', { + alternateClassName: 'Ext.grid.Lockable', + + + + + + + + + + syncRowHeight: true, + + + + + + + + headerCounter: 0, + + + scrollDelta: 40, + + + + + + lockedGridCls: Ext.baseCSSPrefix + 'grid-inner-locked', + + + + unlockText: 'Unlock', + + + lockText: 'Lock', + + + + + bothCfgCopy: [ + 'invalidateScrollerOnRefresh', + 'hideHeaders', + 'enableColumnHide', + 'enableColumnMove', + 'enableColumnResize', + 'sortableColumns', + 'columnLines', + 'rowLines' + ], + normalCfgCopy: [ + 'verticalScroller', + 'verticalScrollDock', + 'verticalScrollerType', + 'scroll' + ], + lockedCfgCopy: [], + + determineXTypeToCreate: function(lockedSide) { + var me = this, + typeToCreate, + xtypes, xtypesLn, xtype, superxtype; + + if (me.subGridXType) { + typeToCreate = me.subGridXType; + } else { + + + if (!lockedSide) { + return 'gridpanel'; + } + xtypes = this.getXTypes().split('/'); + xtypesLn = xtypes.length; + xtype = xtypes[xtypesLn - 1]; + superxtype = xtypes[xtypesLn - 2]; + + if (superxtype !== 'tablepanel') { + typeToCreate = superxtype; + } else { + typeToCreate = xtype; + } + } + + return typeToCreate; + }, + + + + injectLockable: function() { + + this.lockable = true; + + + this.hasView = true; + + var me = this, + scrollbarHeight = Ext.getScrollbarSize().height, + store = me.store = Ext.StoreManager.lookup(me.store), + + + selModel = me.getSelectionModel(), + + + allFeatures, + + + allPlugins, + + lockedGrid, + normalGrid, + i, + columns, + lockedHeaderCt, + normalHeaderCt, + lockedView, + normalView, + listeners, + bufferedRenderer = me.findPlugin('bufferedrenderer'); + + allFeatures = me.constructLockableFeatures(); + + + if (me.features) { + me.features = null; + } + + + allPlugins = me.constructLockablePlugins(); + me.plugins = allPlugins.topPlugins; + + lockedGrid = Ext.apply({ + id: me.id + '-locked', + isLocked: true, + ownerLockable: me, + xtype: me.determineXTypeToCreate(true), + store: store, + scrollerOwner: false, + + + animate: false, + + scroll: scrollbarHeight ? false : 'vertical', + selModel: selModel, + border: false, + cls: me.lockedGridCls, + isLayoutRoot: function() { + return false; + }, + features: allFeatures.lockedFeatures, + plugins: allPlugins.lockedPlugins + }, me.lockedGridConfig); + + normalGrid = Ext.apply({ + id: me.id + '-normal', + isLocked: false, + ownerLockable: me, + xtype: me.determineXTypeToCreate(), + store: store, + scrollerOwner: false, + selModel: selModel, + border: false, + isLayoutRoot: function() { + return false; + }, + features: allFeatures.normalFeatures, + plugins: allPlugins.normalPlugins + }, me.normalGridConfig); + + me.addCls(Ext.baseCSSPrefix + 'grid-locked'); + + + + + Ext.copyTo(normalGrid, me, me.bothCfgCopy, true); + Ext.copyTo(lockedGrid, me, me.bothCfgCopy, true); + Ext.copyTo(normalGrid, me, me.normalCfgCopy, true); + Ext.copyTo(lockedGrid, me, me.lockedCfgCopy, true); + for (i = 0; i < me.normalCfgCopy.length; i++) { + delete me[me.normalCfgCopy[i]]; + } + for (i = 0; i < me.lockedCfgCopy.length; i++) { + delete me[me.lockedCfgCopy[i]]; + } + + me.addEvents( + + 'processcolumns', + + + 'lockcolumn', + + + 'unlockcolumn' + ); + + me.addStateEvents(['lockcolumn', 'unlockcolumn']); + + columns = me.processColumns(me.columns); + + + + lockedGrid.width = columns.lockedWidth + Ext.num(selModel.headerWidth, 0) + (columns.locked.items.length ? 1 : 0); + lockedGrid.columns = columns.locked; + normalGrid.columns = columns.normal; + + + normalGrid.flex = 1; + lockedGrid.viewConfig = me.lockedViewConfig || {}; + lockedGrid.viewConfig.loadingUseMsg = false; + lockedGrid.viewConfig.loadMask = false; + + + + + + if (scrollbarHeight) { + lockedGrid.viewConfig.style = 'border-bottom:' + scrollbarHeight + + 'px solid #f6f6f6;' + (lockedGrid.viewConfig.style || ''); + } + + normalGrid.viewConfig = me.normalViewConfig || {}; + normalGrid.viewConfig.loadMask = false; + + + Ext.applyIf(lockedGrid.viewConfig, me.viewConfig); + Ext.applyIf(normalGrid.viewConfig, me.viewConfig); + + me.lockedGrid = Ext.ComponentManager.create(lockedGrid); + + if (me.isTree) { + + me.lockedGrid.getView().animate = false; + + + normalGrid.store = me.lockedGrid.view.store; + + + normalGrid.deferRowRender = false; + + + normalGrid.viewConfig.stripeRows = me.lockedGrid.view.stripeRows; + normalGrid.rowLines = me.lockedGrid.rowLines; + } + + + lockedView = me.lockedGrid.getView(); + normalGrid.viewConfig.lockingPartner = lockedView; + me.normalGrid = Ext.ComponentManager.create(normalGrid); + lockedView.lockingPartner = normalView = me.normalGrid.getView(); + + me.view = new Ext.grid.locking.View({ + loadingText: normalView.loadingText, + loadingCls: normalView.loadingCls, + loadingUseMsg: normalView.loadingUseMsg, + loadMask: me.loadMask !== false, + locked: me.lockedGrid, + normal: me.normalGrid, + panel: me + }); + + + listeners = bufferedRenderer ? {} : { + scroll: { + fn: me.onLockedViewScroll, + element: 'el', + scope: me + } + }; + + + + + + if (scrollbarHeight) { + me.lockedGrid.on({ + afterlayout: me.afterLockedViewLayout, + scope: me + }); + + + lockedView.getOverflowStyle(); + + + if (lockedView.scrollFlags.y) { + me.lockedGrid.headerCt.forceFit = true; + } + + else { + listeners.mousewheel = { + fn: me.onLockedViewMouseWheel, + element: 'el', + scope: me + }; + } + } + lockedView.on(listeners); + + + listeners = bufferedRenderer ? {} : { + scroll: { + fn: me.onNormalViewScroll, + element: 'el', + scope: me + }, + scope: me + }; + normalView.on(listeners); + + lockedHeaderCt = me.lockedGrid.headerCt; + normalHeaderCt = me.normalGrid.headerCt; + + + + me.headerCt = me.view.headerCt = new Ext.grid.locking.HeaderContainer(me); + + lockedHeaderCt.lockedCt = true; + lockedHeaderCt.lockableInjected = true; + normalHeaderCt.lockableInjected = true; + + lockedHeaderCt.on({ + + add: { + buffer: 1, + scope: me, + fn: me.onLockedHeaderAdd + }, + columnshow: me.onLockedHeaderShow, + columnhide: me.onLockedHeaderHide, + sortchange: me.onLockedHeaderSortChange, + columnresize: me.onLockedHeaderResize, + scope: me + }); + + normalHeaderCt.on({ + sortchange: me.onNormalHeaderSortChange, + scope: me + }); + + me.modifyHeaderCt(); + me.items = [me.lockedGrid, me.normalGrid]; + + me.relayHeaderCtEvents(lockedHeaderCt); + me.relayHeaderCtEvents(normalHeaderCt); + + + + me.storeRelayers = me.relayEvents(store, [ + + 'filterchange' + ]); + + me.layout = { + type: 'hbox', + align: 'stretch' + }; + }, + + getLockingViewConfig: function(){ + return { + xclass: 'Ext.grid.locking.View', + locked: this.lockedGrid, + normal: this.normalGrid, + panel: this + }; + }, + + processColumns: function(columns) { + + var i, + len, + column, + cp = this.dummyHdrCtr || (this.self.prototype.dummyHdrCtr = new Ext.grid.header.Container()), + lockedHeaders = [], + normalHeaders = [], + lockedHeaderCt = { + itemId: 'lockedHeaderCt', + stretchMaxPartner: '^^>>#normalHeaderCt', + items: lockedHeaders + }, + normalHeaderCt = { + itemId: 'normalHeaderCt', + stretchMaxPartner: '^^>>#lockedHeaderCt', + items: normalHeaders + }, + result = { + lockedWidth: 0, + locked: lockedHeaderCt, + normal: normalHeaderCt + }; + + + if (Ext.isObject(columns)) { + Ext.applyIf(lockedHeaderCt, columns); + Ext.applyIf(normalHeaderCt, columns); + Ext.apply(cp, columns); + columns = columns.items; + } + + for (i = 0, len = columns.length; i < len; ++i) { + column = columns[i]; + + + + + if (!column.isComponent) { + column = cp.lookupComponent(cp.applyDefaults(column)); + } + + + + column.processed = true; + if (column.locked || column.autoLock) { + if (!column.hidden) { + result.lockedWidth += this.getColumnWidth(column) || cp.defaultWidth; + } + lockedHeaders.push(column); + } else { + normalHeaders.push(column); + } + if (!column.headerId) { + column.headerId = (column.initialConfig || column).id || ('h' + (++this.headerCounter)); + } + } + this.fireEvent('processcolumns', this, lockedHeaders, normalHeaders); + return result; + }, + + + + getColumnWidth: function(column) { + var result = column.width || 0, + subcols, len, i; + + if (!result && column.isGroupHeader) { + subcols = column.items.items; + len = subcols.length; + for (i = 0; i < len; i++) { + result += this.getColumnWidth(subcols[i]); + } + } + return result; + }, + + + + + afterLockedViewLayout: function() { + var me = this, + lockedView = me.lockedGrid.getView(), + lockedViewEl = lockedView.el.dom, + spacerHeight = (me.normalGrid.headerCt.tooNarrow ? Ext.getScrollbarSize().height : 0); + + + if (lockedView.scrollFlags.x && lockedViewEl.scrollWidth > lockedViewEl.clientWidth) { + spacerHeight = 0; + } + + lockedView.el.dom.style.borderBottomWidth = spacerHeight + 'px'; + + + + if (!Ext.isBorderBox) { + lockedView.el.setHeight(lockedView.lastBox.height); + } + }, + + + onLockedViewMouseWheel: function(e) { + var me = this, + scrollDelta = -me.scrollDelta, + deltaY = scrollDelta * e.getWheelDeltas().y, + vertScrollerEl = me.lockedGrid.getView().el.dom, + verticalCanScrollDown, verticalCanScrollUp; + + if (!me.ignoreMousewheel) { + if (vertScrollerEl) { + verticalCanScrollDown = vertScrollerEl.scrollTop !== vertScrollerEl.scrollHeight - vertScrollerEl.clientHeight; + verticalCanScrollUp = vertScrollerEl.scrollTop !== 0; + } + + if ((deltaY < 0 && verticalCanScrollUp) || (deltaY > 0 && verticalCanScrollDown)) { + e.stopEvent(); + + + + + vertScrollerEl.scrollTop += deltaY; + me.normalGrid.getView().el.dom.scrollTop = vertScrollerEl.scrollTop; + + + me.onNormalViewScroll(); + } + } + }, + + onLockedViewScroll: function() { + var me = this, + lockedView = me.lockedGrid.getView(), + normalView = me.normalGrid.getView(), + normalDom = normalView.el.dom, + lockedDom = lockedView.el.dom, + normalTable, + lockedTable; + + + if (normalDom.scrollTop !== lockedDom.scrollTop) { + normalDom.scrollTop = lockedDom.scrollTop; + + + if (me.store.buffered) { + lockedTable = lockedView.el.child('table', true); + normalTable = normalView.el.child('table', true); + normalTable.style.position = 'absolute'; + normalTable.style.top = lockedTable.style.top; + } + } + }, + + onNormalViewScroll: function() { + var me = this, + lockedView = me.lockedGrid.getView(), + normalView = me.normalGrid.getView(), + normalDom = normalView.el.dom, + lockedDom = lockedView.el.dom, + normalTable, + lockedTable; + + + + + + + + + + + + if (normalDom.scrollTop !== lockedDom.scrollTop) { + lockedDom.scrollTop = normalDom.scrollTop; + + + if (me.store.buffered) { + lockedTable = lockedView.el.child('table', true); + normalTable = normalView.el.child('table', true); + lockedTable.style.position = 'absolute'; + lockedTable.style.top = normalTable.style.top; + } + } + }, + + + syncRowHeights: function() { + var me = this, + i, + lockedView = me.lockedGrid.getView(), + normalView = me.normalGrid.getView(), + lockedRowEls = lockedView.all.slice(), + normalRowEls = normalView.all.slice(), + ln = lockedRowEls.length, + scrollTop; + + + if (normalRowEls.length === ln) { + + + for (i = 0; i < ln; i++) { + normalView.syncRowHeights(lockedRowEls[i], normalRowEls[i]); + } + + + scrollTop = normalView.el.dom.scrollTop; + normalView.el.dom.scrollTop = scrollTop; + lockedView.el.dom.scrollTop = scrollTop; + } + }, + + + + modifyHeaderCt: function() { + var me = this; + me.lockedGrid.headerCt.getMenuItems = me.getMenuItems(me.lockedGrid.headerCt.getMenuItems, true); + me.normalGrid.headerCt.getMenuItems = me.getMenuItems(me.normalGrid.headerCt.getMenuItems, false); + me.lockedGrid.headerCt.showMenuBy = Ext.Function.createInterceptor(me.lockedGrid.headerCt.showMenuBy, me.showMenuBy); + me.normalGrid.headerCt.showMenuBy = Ext.Function.createInterceptor(me.normalGrid.headerCt.showMenuBy, me.showMenuBy); + }, + + onUnlockMenuClick: function() { + this.unlock(); + }, + + onLockMenuClick: function() { + this.lock(); + }, + + showMenuBy: function(t, header) { + var menu = this.getMenu(), + unlockItem = menu.down('#unlockItem'), + lockItem = menu.down('#lockItem'), + sep = unlockItem.prev(); + + if (header.lockable === false) { + sep.hide(); + unlockItem.hide(); + lockItem.hide(); + } else { + sep.show(); + unlockItem.show(); + lockItem.show(); + if (!unlockItem.initialConfig.disabled) { + unlockItem.setDisabled(header.lockable === false); + } + if (!lockItem.initialConfig.disabled) { + lockItem.setDisabled(!header.isLockable()); + } + } + }, + + getMenuItems: function(getMenuItems, locked) { + var me = this, + unlockText = me.unlockText, + lockText = me.lockText, + unlockCls = Ext.baseCSSPrefix + 'hmenu-unlock', + lockCls = Ext.baseCSSPrefix + 'hmenu-lock', + unlockHandler = Ext.Function.bind(me.onUnlockMenuClick, me), + lockHandler = Ext.Function.bind(me.onLockMenuClick, me); + + + return function() { + + + + var o = getMenuItems.call(this); + o.push('-', { + itemId: 'unlockItem', + cls: unlockCls, + text: unlockText, + handler: unlockHandler, + disabled: !locked + }); + o.push({ + itemId: 'lockItem', + cls: lockCls, + text: lockText, + handler: lockHandler, + disabled: locked + }); + return o; + }; + }, + + + syncLockedWidth: function() { + var me = this, + locked = me.lockedGrid, + lockedView = locked.view, + lockedViewEl = lockedView.el.dom, + normal = me.normalGrid, + lockedColCount = locked.headerCt.getVisibleGridColumns().length, + normalColCount = normal.headerCt.getVisibleGridColumns().length; + + Ext.suspendLayouts(); + + + + if (normalColCount) { + normal.show(); + if (lockedColCount) { + + + + if (!locked.headerCt.forceFit) { + delete locked.flex; + + locked.setWidth(locked.headerCt.getFullWidth()); + } + locked.addCls(me.lockedGridCls); + locked.show(); + } else { + + + + locked.getView().refresh(); + locked.hide(); + } + + + lockedView.el.setStyle(lockedView.getOverflowStyle()); + + + me.ignoreMousewheel = lockedView.scrollFlags.y; + } + + + + else { + normal.hide(); + + + lockedViewEl.style.borderBottomWidth = '0'; + + + locked.flex = 1; + delete locked.width; + locked.removeCls(me.lockedGridCls); + locked.show(); + + + + lockedView.el.setStyle(normal.view.getOverflowStyle()); + me.ignoreMousewheel = true; + } + Ext.resumeLayouts(true); + return [lockedColCount, normalColCount]; + }, + + onLockedHeaderAdd: function() { + + + if (!this.ignoreAddLockedColumn) { + this.syncLockedWidth(); + } + }, + + onLockedHeaderResize: function() { + this.syncLockedWidth(); + }, + + onLockedHeaderHide: function() { + this.syncLockedWidth(); + }, + + onLockedHeaderShow: function() { + this.syncLockedWidth(); + }, + + onLockedHeaderSortChange: function(headerCt, header, sortState) { + if (sortState) { + + + this.normalGrid.headerCt.clearOtherSortStates(null, true); + } + }, + + onNormalHeaderSortChange: function(headerCt, header, sortState) { + if (sortState) { + + + this.lockedGrid.headerCt.clearOtherSortStates(null, true); + } + }, + + + + lock: function(activeHd, toIdx) { + var me = this, + normalGrid = me.normalGrid, + lockedGrid = me.lockedGrid, + normalHCt = normalGrid.headerCt, + lockedHCt = lockedGrid.headerCt, + refreshFlags, + ownerCt; + + activeHd = activeHd || normalHCt.getMenu().activeHeader; + ownerCt = activeHd.ownerCt; + + + if (!activeHd.isLockable()) { + return; + } + + + + if (activeHd.flex) { + activeHd.width = activeHd.getWidth(); + activeHd.flex = null; + } + + Ext.suspendLayouts(); + ownerCt.remove(activeHd, false); + activeHd.locked = true; + + + me.ignoreAddLockedColumn = true; + if (Ext.isDefined(toIdx)) { + lockedHCt.insert(toIdx, activeHd); + } else { + lockedHCt.add(activeHd); + } + me.ignoreAddLockedColumn = false; + + refreshFlags = me.syncLockedWidth(); + if (refreshFlags[0]) { + lockedGrid.getView().refresh(); + } + if (refreshFlags[1]) { + normalGrid.getView().refresh(); + } + Ext.resumeLayouts(true); + + me.fireEvent('lockcolumn', me, activeHd); + }, + + + + unlock: function(activeHd, toIdx) { + var me = this, + normalGrid = me.normalGrid, + lockedGrid = me.lockedGrid, + normalHCt = normalGrid.headerCt, + lockedHCt = lockedGrid.headerCt, + refreshFlags; + + + if (!Ext.isDefined(toIdx)) { + toIdx = 0; + } + activeHd = activeHd || lockedHCt.getMenu().activeHeader; + + Ext.suspendLayouts(); + activeHd.ownerCt.remove(activeHd, false); + activeHd.locked = false; + normalHCt.insert(toIdx, activeHd); + + + + refreshFlags = me.syncLockedWidth(); + + if (refreshFlags[0]) { + lockedGrid.getView().refresh(); + } + if (refreshFlags[1]) { + normalGrid.getView().refresh(); + } + Ext.resumeLayouts(true); + + me.fireEvent('unlockcolumn', me, activeHd); + }, + + + reconfigureLockable: function(store, columns) { + var me = this, + oldStore = me.store, + lockedGrid = me.lockedGrid, + normalGrid = me.normalGrid; + + Ext.suspendLayouts(); + if (columns) { + lockedGrid.headerCt.removeAll(); + normalGrid.headerCt.removeAll(); + + columns = me.processColumns(columns); + + + me.ignoreAddLockedColumn = true; + lockedGrid.headerCt.add(columns.locked.items); + me.ignoreAddLockedColumn = false; + normalGrid.headerCt.add(columns.normal.items); + + + + me.syncLockedWidth(); + } + + if (store && store !== oldStore) { + store = Ext.data.StoreManager.lookup(store); + me.store = store; + lockedGrid.bindStore(store); + normalGrid.bindStore(store); + } else { + lockedGrid.getView().refresh(); + normalGrid.getView().refresh(); + } + Ext.resumeLayouts(true); + }, + + constructLockableFeatures: function() { + var features = this.features, + feature, + featureClone, + lockedFeatures, + normalFeatures, + i = 0, len; + + if (features) { + lockedFeatures = []; + normalFeatures = []; + len = features.length; + for (; i < len; i++) { + feature = features[i]; + if (!feature.isFeature) { + feature = Ext.create('feature.' + feature.ftype, feature); + } + switch (feature.lockableScope) { + case 'locked': + lockedFeatures.push(feature); + break; + case 'normal': + normalFeatures.push(feature); + break; + default: + feature.lockableScope = 'both'; + lockedFeatures.push(feature); + normalFeatures.push(featureClone = feature.clone()); + + + featureClone.lockingPartner = feature; + feature.lockingPartner = featureClone; + } + } + } + return { + normalFeatures: normalFeatures, + lockedFeatures: lockedFeatures + }; + }, + + constructLockablePlugins: function() { + var plugins = this.plugins, + plugin, + normalPlugin, + lockedPlugin, + topPlugins, + lockedPlugins, + normalPlugins, + i = 0, len; + + if (plugins) { + topPlugins = []; + lockedPlugins = []; + normalPlugins = []; + len = plugins.length; + for (; i < len; i++) { + + plugin = plugins[i]; + + switch (plugin.lockableScope) { + case 'both': + lockedPlugins.push(lockedPlugin = plugin.clonePlugin()); + normalPlugins.push(normalPlugin = plugin.clonePlugin()); + + + lockedPlugin.lockingPartner = normalPlugin; + normalPlugin.lockingPartner = lockedPlugin; + + + + Ext.destroy(plugin); + break; + case 'locked': + lockedPlugins.push(plugin); + break; + case 'normal': + normalPlugins.push(plugin); + break; + default: + topPlugins.push(plugin); + } + } + } + return { + topPlugins: topPlugins, + normalPlugins: normalPlugins, + lockedPlugins: lockedPlugins + }; + }, + + destroyLockable: function(){ + + Ext.destroy(this.view); + } +}, function() { + this.borrow(Ext.AbstractComponent, ['constructPlugin']); +}); + + +Ext.define('Ext.tree.View', { + extend: Ext.view.Table , + alias: 'widget.treeview', + + + + + + + isTreeView: true, + + loadingCls: Ext.baseCSSPrefix + 'grid-tree-loading', + expandedCls: Ext.baseCSSPrefix + 'grid-tree-node-expanded', + leafCls: Ext.baseCSSPrefix + 'grid-tree-node-leaf', + + expanderSelector: '.' + Ext.baseCSSPrefix + 'tree-expander', + checkboxSelector: '.' + Ext.baseCSSPrefix + 'tree-checkbox', + expanderIconOverCls: Ext.baseCSSPrefix + 'tree-expander-over', + + + + + nodeAnimWrapCls: Ext.baseCSSPrefix + 'tree-animator-wrap', + + blockRefresh: true, + + + loadMask: false, + + + rootVisible: true, + + + deferInitialRefresh: false, + + + + expandDuration: 250, + collapseDuration: 250, + + toggleOnDblClick: true, + + stripeRows: false, + + + uiFields: ['expanded', 'loaded', 'checked', 'expandable', 'leaf', 'icon', 'iconCls', 'loading', 'qtip', 'qtitle'], + + + treeRowTpl: [ + '{%', + 'this.processRowValues(values);', + 'this.nextTpl.applyOut(values, out, parent);', + 'delete values.rowAttr["data-qtip"];', + 'delete values.rowAttr["data-qtitle"];', + '%}', { + priority: 10, + processRowValues: function(rowValues) { + var record = rowValues.record, + view = rowValues.view, + qtip = record.get('qtip'), + qtitle = record.get('qttle'); + + rowValues.rowAttr = {}; + if (qtip) { + rowValues.rowAttr['data-qtip'] = qtip; + } + if (qtitle) { + rowValues.rowAttr['data-qtitle'] = qtitle; + } + if (record.isExpanded()) { + rowValues.rowClasses.push(view.expandedCls); + } + if (record.isLeaf()) { + rowValues.rowClasses.push(view.leafCls); + } + if (record.isLoading()) { + rowValues.rowClasses.push(view.loadingCls); + } + } + } + ], + + initComponent: function() { + var me = this, + treeStore = me.panel.getStore(), + store = me.store; + + if (me.initialConfig.animate === undefined) { + me.animate = Ext.enableFx; + } + + if (!store || store === treeStore) { + me.store = store = new Ext.data.NodeStore({ + treeStore: treeStore, + recursive: true, + rootVisible: me.rootVisible + }); + } + + if (me.node) { + me.setRootNode(me.node); + } + me.animQueue = {}; + me.animWraps = {}; + me.addEvents( + + 'afteritemexpand', + + 'afteritemcollapse', + + 'nodedragover' + ); + me.callParent(arguments); + me.addRowTpl(Ext.XTemplate.getTpl(me, 'treeRowTpl')); + }, + + onBeforeFill: function(treeStore, fillRoot) { + this.store.suspendEvents(); + }, + + onFillComplete: function(treeStore, fillRoot, newNodes) { + var me = this, + store = me.store, + start = store.indexOf(newNodes[0]); + + store.resumeEvents(); + + + + fillRoot.triggerUIUpdate(); + + + + if (!newNodes.length || start === -1) { + return; + } + + + me.onAdd(me.store, newNodes, start); + + me.refreshPartner(); + }, + + onBeforeSort: function() { + this.store.suspendEvents(); + }, + + onSort: function(o) { + + + if (o.isStore) { + this.store.resumeEvents(); + this.refresh(); + this.refreshPartner(); + } + }, + + refreshPartner: function() { + var partner = this.lockingPartner; + if (partner) { + partner.refresh(); + } + }, + + getMaskStore: function() { + return this.panel.getStore(); + }, + + afterRender: function() { + var me = this; + me.callParent(arguments); + + me.el.on({ + scope: me, + delegate: me.expanderSelector, + mouseover: me.onExpanderMouseOver, + mouseout: me.onExpanderMouseOut, + click: { + delegate: me.checkboxSelector, + fn: me.onCheckboxChange, + scope: me + } + }); + }, + + afterComponentLayout: function() { + this.callParent(arguments); + var stretcher = this.stretcher; + if (stretcher) { + stretcher.setWidth((this.getWidth() - Ext.getScrollbarSize().width)); + } + }, + + processUIEvent: function(e) { + + + + if (e.getTarget('.' + this.nodeAnimWrapCls, this.el)) { + return false; + } + return this.callParent(arguments); + }, + + onClear: function() { + this.store.removeAll(); + }, + + setRootNode: function(node) { + var me = this; + me.store.setNode(node); + me.node = node; + }, + + onCheckboxChange: function(e, t) { + var me = this, + item = e.getTarget(me.getItemSelector(), me.getTargetEl()); + + if (item) { + me.onCheckChange(me.getRecord(item)); + } + }, + + onCheckChange: function(record) { + var checked = record.get('checked'); + if (Ext.isBoolean(checked)) { + checked = !checked; + record.set('checked', checked); + this.fireEvent('checkchange', record, checked); + } + }, + + getChecked: function() { + var checked = []; + this.node.cascadeBy(function(rec){ + if (rec.get('checked')) { + checked.push(rec); + } + }); + return checked; + }, + + isItemChecked: function(rec) { + return rec.get('checked'); + }, + + + createAnimWrap: function(record, index) { + var me = this, + node = me.getNode(record), + tmpEl, nodeEl, + columnSizer = []; + + me.renderColumnSizer(columnSizer); + nodeEl = Ext.get(node); + tmpEl = nodeEl.insertSibling({ + tag: 'tr', + html: [ + '', + '
    ', + + '', + columnSizer.join(''), + '
    ', + '
    ', + '' + ].join('') + }, 'after'); + + return { + record: record, + node: node, + el: tmpEl, + expanding: false, + collapsing: false, + animating: false, + animateEl: tmpEl.down('div'), + targetEl: tmpEl.down('tbody') + }; + }, + + + getAnimWrap: function(parent, bubble) { + if (!this.animate) { + return null; + } + + var wraps = this.animWraps, + wrap = wraps[parent.internalId]; + + if (bubble !== false) { + while (!wrap && parent) { + parent = parent.parentNode; + if (parent) { + wrap = wraps[parent.internalId]; + } + } + } + return wrap; + }, + + doAdd: function(records, index) { + + + var me = this, + nodes = me.bufferRender(records, index, true), + record = records[0], + parent = record.parentNode, + all = me.all, + relativeIndex, + animWrap = me.getAnimWrap(parent), + targetEl, children, len; + + if (!animWrap || !animWrap.expanding) { + return me.callParent(arguments); + } + + + parent = animWrap.record; + + + targetEl = animWrap.targetEl; + children = targetEl.dom.childNodes; + len = children.length; + + + relativeIndex = index - me.indexInStore(parent) - 1; + + + + if (!len || relativeIndex >= len) { + targetEl.appendChild(nodes); + } + + + else { + Ext.fly(children[relativeIndex]).insertSibling(nodes, 'before', true); + } + + + all.insert(index, nodes); + + + + if (animWrap.isAnimating) { + me.onExpand(parent); + } + }, + + onRemove : function(ds, records, indexes) { + var me = this, + empty, i; + + if (me.viewReady) { + empty = me.store.getCount() === 0; + + + if (empty) { + me.refresh(); + } + else { + + for (i = indexes.length - 1; i >= 0; --i) { + me.doRemove(records[i], indexes[i]); + } + } + + + if (me.hasListeners.itemremove) { + for (i = indexes.length - 1; i >= 0; --i) { + me.fireEvent('itemremove', records[i], indexes[i]); + } + } + } + }, + + doRemove: function(record, index) { + + + var me = this, + all = me.all, + animWrap = me.getAnimWrap(record), + item = all.item(index), + node = item ? item.dom : null; + + if (!node || !animWrap || !animWrap.collapsing) { + return me.callParent(arguments); + } + + + + animWrap.targetEl.dom.insertBefore(node, animWrap.targetEl.dom.firstChild); + all.removeElement(index); + }, + + onBeforeExpand: function(parent, records, index) { + var me = this, + animWrap; + + if (me.rendered && me.all.getCount() && me.animate) { + if (me.getNode(parent)) { + animWrap = me.getAnimWrap(parent, false); + if (!animWrap) { + animWrap = me.animWraps[parent.internalId] = me.createAnimWrap(parent); + animWrap.animateEl.setHeight(0); + } + else if (animWrap.collapsing) { + + + animWrap.targetEl.select(me.itemSelector).remove(); + } + animWrap.expanding = true; + animWrap.collapsing = false; + } + } + }, + + onExpand: function(parent) { + var me = this, + queue = me.animQueue, + id = parent.getId(), + node = me.getNode(parent), + index = node ? me.indexOf(node) : -1, + animWrap, + animateEl, + targetEl, + fromHeight = Ext.isIEQuirks ? 1 : 0 + + if (me.singleExpand) { + me.ensureSingleExpand(parent); + } + + + if (index === -1) { + return; + } + + animWrap = me.getAnimWrap(parent, false); + + if (!animWrap) { + parent.isExpandingOrCollapsing = false; + me.fireEvent('afteritemexpand', parent, index, node); + me.refreshSize(); + return; + } + + animateEl = animWrap.animateEl; + targetEl = animWrap.targetEl; + + animateEl.stopAnimation(); + queue[id] = true; + + + animateEl.dom.style.height = fromHeight + 'px'; + animateEl.animate({ + from: { + height: fromHeight + }, + to: { + height: targetEl.getHeight() + }, + duration: me.expandDuration, + listeners: { + afteranimate: function() { + + + + var items = targetEl.query(me.itemSelector); + if (items.length) { + animWrap.el.insertSibling(items, 'before', true); + } + animWrap.el.remove(); + me.refreshSize(); + delete me.animWraps[animWrap.record.internalId]; + delete queue[id]; + } + }, + callback: function() { + parent.isExpandingOrCollapsing = false; + me.fireEvent('afteritemexpand', parent, index, node); + } + }); + + animWrap.isAnimating = true; + }, + + + onBeforeCollapse: function(parent, records, index, callback, scope) { + var me = this, + animWrap; + + if (me.rendered && me.all.getCount()) { + if (me.animate) { + + + + if (Ext.Array.contains(parent.stores, me.store)) { + animWrap = me.getAnimWrap(parent); + if (!animWrap) { + animWrap = me.animWraps[parent.internalId] = me.createAnimWrap(parent, index); + } + else if (animWrap.expanding) { + + + animWrap.targetEl.select(this.itemSelector).remove(); + } + animWrap.expanding = false; + animWrap.collapsing = true; + animWrap.callback = callback; + animWrap.scope = scope; + } + } else { + + me.onCollapseCallback = callback; + me.onCollapseScope = scope; + } + } + }, + + onCollapse: function(parent) { + var me = this, + queue = me.animQueue, + id = parent.getId(), + node = me.getNode(parent), + index = node ? me.indexOf(node) : -1, + animWrap = me.getAnimWrap(parent), + animateEl; + + + + + if (!me.all.getCount() || !Ext.Array.contains(parent.stores, me.store)) { + return; + } + + + if (!animWrap) { + parent.isExpandingOrCollapsing = false; + me.fireEvent('afteritemcollapse', parent, index, node); + me.refreshSize(); + + + Ext.callback(me.onCollapseCallback, me.onCollapseScope); + me.onCollapseCallback = me.onCollapseScope = null; + return; + } + + animateEl = animWrap.animateEl; + + queue[id] = true; + + animateEl.stopAnimation(); + animateEl.animate({ + to: { + height: Ext.isIEQuirks ? 1 : 0 + }, + duration: me.collapseDuration, + listeners: { + afteranimate: function() { + + animWrap.el.remove(); + me.refreshSize(); + delete me.animWraps[animWrap.record.internalId]; + delete queue[id]; + } + }, + callback: function() { + parent.isExpandingOrCollapsing = false; + me.fireEvent('afteritemcollapse', parent, index, node); + + + Ext.callback(animWrap.callback, animWrap.scope); + animWrap.callback = animWrap.scope = null; + } + }); + animWrap.isAnimating = true; + }, + + + isAnimating: function(node) { + return !!this.animQueue[node.getId()]; + }, + + + expand: function(record, deep, callback, scope) { + var me = this, + doAnimate = !!me.animate, + result; + + + if (!doAnimate || !record.isExpandingOrCollapsing) { + if (!record.isLeaf()) { + record.isExpandingOrCollapsing = doAnimate; + } + + + + + Ext.suspendLayouts(); + result = record.expand(deep, callback, scope); + Ext.resumeLayouts(true); + return result; + } + }, + + + collapse: function(record, deep, callback, scope) { + var me = this, + doAnimate = !!me.animate; + + + if (!doAnimate || !record.isExpandingOrCollapsing) { + if (!record.isLeaf()) { + record.isExpandingOrCollapsing = doAnimate; + } + return record.collapse(deep, callback, scope); + } + }, + + + toggle: function(record, deep, callback, scope) { + if (record.isExpanded()) { + this.collapse(record, deep, callback, scope); + } else { + this.expand(record, deep, callback, scope); + } + }, + + onItemDblClick: function(record, item, index) { + var me = this, + editingPlugin = me.editingPlugin; + + me.callParent(arguments); + if (me.toggleOnDblClick && record.isExpandable() && !(editingPlugin && editingPlugin.clicksToEdit === 2)) { + me.toggle(record); + } + }, + + onBeforeItemMouseDown: function(record, item, index, e) { + if (e.getTarget(this.expanderSelector, item)) { + return false; + } + return this.callParent(arguments); + }, + + onItemClick: function(record, item, index, e) { + if (e.getTarget(this.expanderSelector, item) && record.isExpandable()) { + this.toggle(record, e.ctrlKey); + return false; + } + return this.callParent(arguments); + }, + + onExpanderMouseOver: function(e, t) { + e.getTarget(this.cellSelector, 10, true).addCls(this.expanderIconOverCls); + }, + + onExpanderMouseOut: function(e, t) { + e.getTarget(this.cellSelector, 10, true).removeCls(this.expanderIconOverCls); + }, + + getStoreListeners: function(){ + var me = this, + listeners = me.callParent(arguments); + + return Ext.apply(listeners, { + beforeexpand: me.onBeforeExpand, + expand: me.onExpand, + beforecollapse: me.onBeforeCollapse, + collapse: me.onCollapse, + write: me.onStoreWrite, + datachanged: me.onStoreDataChanged + }); + }, + + onBindStore: function(){ + var me = this, + treeStore = me.getTreeStore(); + + me.callParent(arguments); + + me.mon(treeStore, { + scope: me, + beforefill: me.onBeforeFill, + fillcomplete: me.onFillComplete + }); + + if (!treeStore.remoteSort) { + + + me.mon(treeStore, { + scope: me, + beforesort: me.onBeforeSort, + sort: me.onSort + }); + } + }, + + onUnbindStore: function(){ + var me = this, + treeStore = me.getTreeStore(); + + me.callParent(arguments); + + me.mun(treeStore, { + scope: me, + beforefill: me.onBeforeFill, + fillcomplete: me.onFillComplete + }); + + if (!treeStore.remoteSort) { + me.mun(treeStore, { + scope: me, + beforesort: me.onBeforeSort, + sort: me.onSort + }); + } + }, + + + getTreeStore: function() { + return this.panel.store; + }, + + ensureSingleExpand: function(node) { + var parent = node.parentNode; + if (parent) { + parent.eachChild(function(child) { + if (child !== node && child.isExpanded()) { + child.collapse(); + } + }); + } + }, + + shouldUpdateCell: function(record, column, changedFieldNames){ + if (changedFieldNames) { + var i = 0, + len = changedFieldNames.length; + + for (; i < len; ++i) { + if (Ext.Array.contains(this.uiFields, changedFieldNames[i])) { + return true; + } + } + } + return this.callParent(arguments); + }, + + + onStoreWrite: function(store, operation) { + var treeStore = this.panel.store; + treeStore.fireEvent('write', treeStore, operation); + }, + + + onStoreDataChanged: function(store, operation) { + var treeStore = this.panel.store; + treeStore.fireEvent('datachanged', treeStore); + } +}); + + +Ext.define('Ext.grid.plugin.BufferedRendererTreeView', { + override: 'Ext.tree.View', + + onRemove: function(store, records, indices) { + var me = this; + + + if (me.rendered && me.bufferedRenderer) { + me.refreshView(); + } + + else { + me.callParent([store, records, indices]); + } + } +}); + + +Ext.define('Ext.grid.plugin.BufferedRenderer', { + extend: Ext.AbstractPlugin , + + + + + alias: 'plugin.bufferedrenderer', + lockableScope: 'both', + + + percentageFromEdge: 0.35, + + + variableRowHeight: false, + + + numFromEdge: 8, + + + trailingBufferZone: 10, + + + leadingBufferZone: 20, + + + synchronousRender: true, + + + scrollToLoadBuffer: 200, + + + viewSize: 0, + + rowHeight: 21, + + position: 0, + lastScrollDirection: 1, + bodyTop: 0, + + + init: function(grid) { + var me = this, + view = grid.view, + viewListeners = { + scroll: { + fn: me.onViewScroll, + element: 'el', + scope: me + }, + boxready: me.onViewResize, + resize: me.onViewResize, + refresh: me.onViewRefresh, + scope: me, + destroyable: true + }; + + + if (!me.variableRowHeight && grid.ownerLockable) { + grid.ownerLockable.syncRowHeight = false; + } + + + + if (grid.isTree || grid.ownerLockable && grid.ownerLockable.isTree) { + view.blockRefresh = false; + view.loadMask = true; + } + if (view.positionBody) { + viewListeners.refresh = me.onViewRefresh; + } + me.grid = grid; + me.view = view; + view.bufferedRenderer = me; + view.preserveScrollOnRefresh = true; + + me.bindStore(view.dataSource); + view.getViewRange = function() { + return me.getViewRange(); + }; + + me.position = 0; + + me.gridListeners = grid.on('reconfigure', me.onReconfigure, me); + me.viewListeners = view.on(viewListeners); + }, + + bindStore: function(store) { + var me = this; + if (me.store) { + me.unbindStore(); + } + me.storeListeners = store.on({ + scope: me, + clear: me.onStoreClear, + destroyable: true + }); + me.store = store; + + + if (me.view.componentLayout.layoutCount) { + me.onViewResize(me.view, 0, me.view.getHeight()); + } + }, + + onReconfigure: function(grid, store){ + if (store && store !== this.store) { + this.bindStore(store); + } + }, + + unbindStore: function() { + this.storeListeners.destroy(); + this.store = null; + }, + + onStoreClear: function() { + var me = this; + + + if (me.view.rendered && !me.store.isDestroyed) { + + + if (me.scrollTop !== 0) { + me.ignoreNextScrollEvent = true; + me.view.el.dom.scrollTop = me.bodyTop = me.scrollTop = 0; + } + + me.position = me.scrollHeight = 0; + me.lastScrollDirection = me.scrollOffset = null; + + + delete me.rowHeight; + } + }, + + onViewRefresh: function() { + var me = this, + view = me.view, + oldScrollHeight = me.scrollHeight, + scrollHeight; + + + if (view.all.getCount()) { + + + delete me.rowHeight; + } + + + + scrollHeight = me.getScrollHeight(); + + if (!oldScrollHeight || scrollHeight != oldScrollHeight) { + me.stretchView(view, scrollHeight); + } + + if (me.scrollTop !== view.el.dom.scrollTop) { + + + + me.onViewScroll(); + } else { + me.setBodyTop(me.bodyTop); + + + if (view.all.getCount()) { + me.viewSize = 0; + me.onViewResize(view, null, view.getHeight()); + } + } + }, + + onViewResize: function(view, width, height, oldWidth, oldHeight) { + + if (!oldHeight || height !== oldHeight) { + var me = this, + newViewSize; + + + newViewSize = Math.ceil(height / me.rowHeight) + me.trailingBufferZone + me.leadingBufferZone; + me.viewSize = me.setViewSize(newViewSize); + } + }, + + stretchView: function(view, scrollRange) { + var me = this, + recordCount = (me.store.buffered ? me.store.getTotalCount() : me.store.getCount()); + + if (me.stretcher) { + me.stretcher.dom.style.marginTop = (scrollRange - 1) + 'px'; + } else { + var el = view.el; + + + + if (view.refreshCounter) { + view.fixedNodes++; + } + + + if (recordCount && (me.view.all.endIndex === recordCount - 1)) { + scrollRange = me.bodyTop + view.body.dom.offsetHeight; + } + this.stretcher = el.createChild({ + style: { + width: '1px', + height: '1px', + 'marginTop': (scrollRange - 1) + 'px', + left: 0, + position: 'absolute' + } + }, el.dom.firstChild); + } + }, + + setViewSize: function(viewSize) { + if (viewSize !== this.viewSize) { + + + this.scrollTop = this.view.el.dom.scrollTop; + + var me = this, + store = me.store, + elCount = me.view.all.getCount(), + start, end, + lockingPartner = me.lockingPartner; + + me.viewSize = store.viewSize = viewSize; + + + + if (elCount) { + start = me.view.all.startIndex; + end = Math.min(start + viewSize - 1, (store.buffered ? store.getTotalCount() : store.getCount()) - 1); + + + if (lockingPartner) { + lockingPartner.disable(); + } + me.renderRange(start, end); + if (lockingPartner) { + lockingPartner.enable(); + } + } + } + return viewSize; + }, + + getViewRange: function() { + var me = this, + rows = me.view.all, + store = me.store; + + if (store.data.getCount()) { + return store.getRange(rows.startIndex, rows.startIndex + (me.viewSize || me.store.defaultViewSize) - 1); + } else { + return []; + } + }, + + + scrollTo: function(recordIdx, doSelect, callback, scope) { + var me = this, + view = me.view, + viewDom = view.el.dom, + store = me.store, + total = store.buffered ? store.getTotalCount() : store.getCount(), + startIdx, endIdx, + targetRec, + targetRow, + tableTop; + + + recordIdx = Math.min(Math.max(recordIdx, 0), total - 1); + + + startIdx = Math.max(Math.min(recordIdx - ((me.leadingBufferZone + me.trailingBufferZone) / 2), total - me.viewSize + 1), 0); + tableTop = startIdx * me.rowHeight; + endIdx = Math.min(startIdx + me.viewSize - 1, total - 1); + + store.getRange(startIdx, endIdx, { + callback: function(range, start, end) { + + me.renderRange(start, end, true); + + targetRec = store.data.getRange(recordIdx, recordIdx)[0]; + targetRow = view.getNode(targetRec, false); + view.body.dom.style.top = tableTop + 'px'; + me.position = me.scrollTop = viewDom.scrollTop = tableTop = Math.min(Math.max(0, tableTop - view.body.getOffsetsTo(targetRow)[1]), viewDom.scrollHeight - viewDom.clientHeight); + + + if (Ext.isIE) { + viewDom.scrollTop = tableTop; + } + if (doSelect) { + view.selModel.select(targetRec); + } + if (callback) { + callback.call(scope||me, recordIdx, targetRec); + } + } + }); + }, + + onViewScroll: function(e, t) { + var me = this, + store = me.store, + totalCount = (store.buffered ? store.getTotalCount() : store.getCount()), + vscrollDistance, + scrollDirection, + scrollTop = me.scrollTop = me.view.el.dom.scrollTop, + scrollHandled = false; + + + + if (me.ignoreNextScrollEvent) { + me.ignoreNextScrollEvent = false; + return; + } + + + + if (!(me.disabled || totalCount < me.viewSize)) { + + vscrollDistance = scrollTop - me.position; + scrollDirection = vscrollDistance > 0 ? 1 : -1; + + + if (Math.abs(vscrollDistance) >= 20 || (scrollDirection !== me.lastScrollDirection)) { + me.lastScrollDirection = scrollDirection; + me.handleViewScroll(me.lastScrollDirection); + scrollHandled = true; + } + } + + + if (!scrollHandled) { + if (me.lockingPartner && me.lockingPartner.scrollTop !== scrollTop) { + me.lockingPartner.view.el.dom.scrollTop = scrollTop; + } + } + }, + + handleViewScroll: function(direction) { + var me = this, + rows = me.view.all, + store = me.store, + viewSize = me.viewSize, + totalCount = (store.buffered ? store.getTotalCount() : store.getCount()), + requestStart, + requestEnd; + + + if (direction == -1) { + + + if (rows.startIndex) { + if ((me.getFirstVisibleRowIndex() - rows.startIndex) < me.numFromEdge) { + requestStart = Math.max(0, me.getLastVisibleRowIndex() + me.trailingBufferZone - viewSize); + } + } + } + + else { + + + if (rows.endIndex < totalCount - 1) { + if ((rows.endIndex - me.getLastVisibleRowIndex()) < me.numFromEdge) { + requestStart = Math.max(0, me.getFirstVisibleRowIndex() - me.trailingBufferZone); + } + } + } + + + if (requestStart != null) { + requestEnd = Math.min(requestStart + viewSize - 1, totalCount - 1); + + + if (requestStart !== rows.startIndex || requestEnd !== rows.endIndex) { + me.renderRange(requestStart, requestEnd); + return; + } + } + + + if (me.lockingPartner && me.lockingPartner.view.el && me.lockingPartner.scrollTop !== me.scrollTop) { + me.lockingPartner.view.el.dom.scrollTop = me.scrollTop; + } + }, + + renderRange: function(start, end, forceSynchronous) { + var me = this, + store = me.store; + + + if (store.rangeCached(start, end)) { + me.cancelLoad(); + + if (me.synchronousRender || forceSynchronous) { + me.onRangeFetched(null, start, end); + } else { + if (!me.renderTask) { + me.renderTask = new Ext.util.DelayedTask(me.onRangeFetched, me, null, false); + } + + + + + me.renderTask.delay(1, null, null, [null, start, end]); + } + } + + + else { + me.attemptLoad(start, end); + } + }, + + onRangeFetched: function(range, start, end, fromLockingPartner) { + var me = this, + view = me.view, + oldStart, + rows = view.all, + removeCount, + increment = 0, + calculatedTop = start * me.rowHeight, + top, + lockingPartner = me.lockingPartner; + + + if (view.isDestroyed) { + return; + } + + + if (!range) { + range = me.store.getRange(start, end); + + + if (!range) { + return; + } + } + + + if (start > rows.endIndex || end < rows.startIndex) { + rows.clear(true); + top = calculatedTop; + } + + if (!rows.getCount()) { + view.doAdd(range, start); + } + + else if (end > rows.endIndex) { + removeCount = Math.max(start - rows.startIndex, 0); + + + if (me.variableRowHeight) { + increment = rows.item(rows.startIndex + removeCount, true).offsetTop; + } + rows.scroll(Ext.Array.slice(range, rows.endIndex + 1 - start), 1, removeCount, start, end); + + + if (me.variableRowHeight) { + + top = me.bodyTop + increment; + } else { + top = calculatedTop; + } + } + + else { + removeCount = Math.max(rows.endIndex - end, 0); + oldStart = rows.startIndex; + rows.scroll(Ext.Array.slice(range, 0, rows.startIndex - start), -1, removeCount, start, end); + + + if (me.variableRowHeight) { + + top = me.bodyTop - rows.item(oldStart, true).offsetTop; + } else { + top = calculatedTop; + } + } + + + me.position = me.scrollTop; + + + + if (view.positionBody) { + me.setBodyTop(top, calculatedTop); + } + + + + if (lockingPartner && !lockingPartner.disabled && !fromLockingPartner) { + lockingPartner.onRangeFetched(range, start, end, true); + if (lockingPartner.scrollTop !== me.scrollTop) { + lockingPartner.view.el.dom.scrollTop = me.scrollTop; + } + } + }, + + setBodyTop: function(bodyTop, calculatedTop) { + var me = this, + view = me.view, + store = me.store, + body = view.body.dom, + delta; + + bodyTop = Math.floor(bodyTop); + + + + + if (calculatedTop !== undefined) { + delta = bodyTop - calculatedTop; + bodyTop = calculatedTop; + } + body.style.position = 'absolute'; + body.style.top = (me.bodyTop = bodyTop) + 'px'; + + + + if (delta) { + me.scrollTop = me.position = view.el.dom.scrollTop -= delta; + } + + + if (view.all.endIndex === (store.buffered ? store.getTotalCount() : store.getCount()) - 1) { + me.stretchView(view, me.bodyTop + body.offsetHeight); + } + }, + + getFirstVisibleRowIndex: function(startRow, endRow, viewportTop, viewportBottom) { + var me = this, + view = me.view, + rows = view.all, + elements = rows.elements, + clientHeight = view.el.dom.clientHeight, + target, + targetTop; + + + if (rows.getCount() && me.variableRowHeight) { + if (!arguments.length) { + startRow = rows.startIndex; + endRow = rows.endIndex; + viewportTop = me.scrollTop; + viewportBottom = viewportTop + clientHeight; + + + if (me.bodyTop > viewportBottom || me.bodyTop + view.body.getHeight() < viewportTop) { + return Math.floor(me.scrollTop / me.rowHeight); + } + + + target = startRow + Math.min(me.numFromEdge + ((me.lastScrollDirection == -1) ? me.leadingBufferZone : me.trailingBufferZone), Math.floor((endRow - startRow) / 2)); + } else { + target = startRow + Math.floor((endRow - startRow) / 2); + } + targetTop = me.bodyTop + elements[target].offsetTop; + + + if (targetTop + elements[target].offsetHeight < viewportTop) { + return me.getFirstVisibleRowIndex(target + 1, endRow, viewportTop, viewportBottom); + } + + + if (targetTop <= viewportTop) { + return target; + } + + else if (target !== startRow) { + return me.getFirstVisibleRowIndex(startRow, target - 1, viewportTop, viewportBottom); + } + } + return Math.floor(me.scrollTop / me.rowHeight); + }, + + getLastVisibleRowIndex: function(startRow, endRow, viewportTop, viewportBottom) { + var me = this, + view = me.view, + rows = view.all, + elements = rows.elements, + clientHeight = view.el.dom.clientHeight, + target, + targetTop, targetBottom; + + + if (rows.getCount() && me.variableRowHeight) { + if (!arguments.length) { + startRow = rows.startIndex; + endRow = rows.endIndex; + viewportTop = me.scrollTop; + viewportBottom = viewportTop + clientHeight; + + + if (me.bodyTop > viewportBottom || me.bodyTop + view.body.getHeight() < viewportTop) { + return Math.floor(me.scrollTop / me.rowHeight) + Math.ceil(clientHeight / me.rowHeight); + } + + + target = endRow - Math.min(me.numFromEdge + ((me.lastScrollDirection == 1) ? me.leadingBufferZone : me.trailingBufferZone), Math.floor((endRow - startRow) / 2)); + } else { + target = startRow + Math.floor((endRow - startRow) / 2); + } + targetTop = me.bodyTop + elements[target].offsetTop; + + + if (targetTop > viewportBottom) { + return me.getLastVisibleRowIndex(startRow, target - 1, viewportTop, viewportBottom); + } + targetBottom = targetTop + elements[target].offsetHeight; + + + if (targetBottom >= viewportBottom) { + return target; + } + + else if (target !== endRow) { + return me.getLastVisibleRowIndex(target + 1, endRow, viewportTop, viewportBottom); + } + } + return me.getFirstVisibleRowIndex() + Math.ceil(clientHeight / me.rowHeight); + }, + + getScrollHeight: function() { + var me = this, + view = me.view, + store = me.store, + doCalcHeight = !me.hasOwnProperty('rowHeight'), + storeCount = me.store.getCount(); + + if (!storeCount) { + return 0; + } + if (doCalcHeight) { + if (view.all.getCount()) { + me.rowHeight = Math.floor(view.body.getHeight() / view.all.getCount()); + } + } + return this.scrollHeight = Math.floor((store.buffered ? store.getTotalCount() : store.getCount()) * me.rowHeight); + }, + + attemptLoad: function(start, end) { + var me = this; + if (me.scrollToLoadBuffer) { + if (!me.loadTask) { + me.loadTask = new Ext.util.DelayedTask(me.doAttemptLoad, me, []); + } + me.loadTask.delay(me.scrollToLoadBuffer, me.doAttemptLoad, me, [start, end]); + } else { + me.store.getRange(start, end, { + callback: me.onRangeFetched, + scope: me, + fireEvent: false + }); + } + }, + + cancelLoad: function() { + if (this.loadTask) { + this.loadTask.cancel(); + } + }, + + doAttemptLoad: function(start, end) { + this.store.getRange(start, end, { + callback: this.onRangeFetched, + scope: this, + fireEvent: false + }); + }, + + destroy: function() { + var me = this, + view = me.view; + + if (view && view.el) { + view.el.un('scroll', me.onViewScroll, me); + } + + + Ext.destroy(me.viewListeners, me.storeListeners, me.gridListeners); + } +}); + + +Ext.define('Ext.grid.plugin.Editing', { + alias: 'editing.editing', + extend: Ext.AbstractPlugin , + + + + + + + mixins: { + observable: Ext.util.Observable + }, + + + clicksToEdit: 2, + + + triggerEvent: undefined, + + relayedEvents: [ + 'beforeedit', + 'edit', + 'validateedit', + 'canceledit' + ], + + + defaultFieldXType: 'textfield', + + + editStyle: '', + + constructor: function(config) { + var me = this; + + me.addEvents( + + 'beforeedit', + + + 'edit', + + + 'validateedit', + + 'canceledit' + + ); + me.callParent(arguments); + me.mixins.observable.constructor.call(me); + + me.on("edit", function(editor, e) { + me.fireEvent("afteredit", editor, e); + }); + }, + + + init: function(grid) { + var me = this; + + me.grid = grid; + me.view = grid.view; + me.initEvents(); + + + me.mon(grid, { + reconfigure: me.onReconfigure, + scope: me, + beforerender: { + fn: me.onReconfigure, + single: true, + scope: me + } + }); + + grid.relayEvents(me, me.relayedEvents); + + + if (me.grid.ownerLockable) { + me.grid.ownerLockable.relayEvents(me, me.relayedEvents); + } + + + grid.isEditable = true; + grid.editingPlugin = grid.view.editingPlugin = me; + }, + + + onReconfigure: function() { + var grid = this.grid; + + + + grid = grid.ownerLockable ? grid.ownerLockable : grid; + this.initFieldAccessors(grid.getView().getGridColumns()); + }, + + + destroy: function() { + var me = this, + grid = me.grid; + + Ext.destroy(me.keyNav); + + me.clearListeners(); + + if (grid) { + me.removeFieldAccessors(grid.columnManager.getColumns()); + grid.editingPlugin = grid.view.editingPlugin = me.grid = me.view = me.editor = me.keyNav = null; + } + }, + + + getEditStyle: function() { + return this.editStyle; + }, + + + initFieldAccessors: function(columns) { + + if (columns.isGroupHeader) { + columns = columns.getGridColumns(); + } + + + else if (!Ext.isArray(columns)) { + columns = [columns]; + } + + var me = this, + c, + cLen = columns.length, + column; + + for (c = 0; c < cLen; c++) { + column = columns[c]; + + if (!column.getEditor) { + column.getEditor = function(record, defaultField) { + return me.getColumnField(this, defaultField); + }; + } + if (!column.hasEditor) { + column.hasEditor = function() { + return me.hasColumnField(this); + }; + } + if (!column.setEditor) { + column.setEditor = function(field) { + me.setColumnField(this, field); + }; + } + } + }, + + + removeFieldAccessors: function(columns) { + + if (columns.isGroupHeader) { + columns = columns.getGridColumns(); + } + + + else if (!Ext.isArray(columns)) { + columns = [columns]; + } + + var c, + cLen = columns.length, + column; + + for (c = 0; c < cLen; c++) { + column = columns[c]; + + column.getEditor = column.hasEditor = column.setEditor = null; + } + }, + + + + getColumnField: function(columnHeader, defaultField) { + var field = columnHeader.field; + if (!(field && field.isFormField)) { + field = columnHeader.field = this.createColumnField(columnHeader, defaultField); + } + return field; + }, + + + + hasColumnField: function(columnHeader) { + return !!columnHeader.field; + }, + + + + setColumnField: function(columnHeader, field) { + columnHeader.field = field; + columnHeader.field = this.createColumnField(columnHeader); + }, + + createColumnField: function(columnHeader, defaultField) { + var field = columnHeader.field; + + if (!field && columnHeader.editor) { + field = columnHeader.editor; + columnHeader.editor = null; + } + + if (!field && defaultField) { + field = defaultField; + } + + if (field) { + if (field.isFormField) { + field.column = columnHeader; + } else { + if (Ext.isString(field)) { + field = { + name: columnHeader.dataIndex, + xtype: field, + column: columnHeader + }; + } else { + field = Ext.apply({ + name: columnHeader.dataIndex, + column: columnHeader + }, field); + } + field = Ext.ComponentManager.create(field, this.defaultFieldXType); + } + columnHeader.field = field; + } + return field; + }, + + + initEvents: function() { + var me = this; + me.initEditTriggers(); + me.initCancelTriggers(); + }, + + + initCancelTriggers: Ext.emptyFn, + + + initEditTriggers: function() { + var me = this, + view = me.view; + + + if (me.triggerEvent == 'cellfocus') { + me.mon(view, 'cellfocus', me.onCellFocus, me); + } else if (me.triggerEvent == 'rowfocus') { + me.mon(view, 'rowfocus', me.onRowFocus, me); + } else { + + + + + + + + if (view.getSelectionModel().isCellModel) { + view.onCellFocus = Ext.Function.bind(me.beforeViewCellFocus, me); + } + + + me.mon(view, me.triggerEvent || ('cell' + (me.clicksToEdit === 1 ? 'click' : 'dblclick')), me.onCellClick, me); + } + + + + me.initAddRemoveHeaderEvents() + + view.on('render', me.initKeyNavHeaderEvents, me, {single: true}); + }, + + + beforeViewCellFocus: function(position) { + + if (this.view.selModel.keyNavigation || !this.editing || !this.isCellEditable || !this.isCellEditable(position.row, position.columnHeader)) { + this.view.focusCell.apply(this.view, arguments); + } + }, + + + onRowFocus: function(record, row, rowIdx) { + this.startEdit(row, 0); + }, + + + onCellFocus: function(record, cell, position) { + this.startEdit(position.row, position.column); + }, + + + onCellClick: function(view, cell, colIdx, record, row, rowIdx, e) { + + if(!view.expanderSelector || !e.getTarget(view.expanderSelector)) { + this.startEdit(record, view.ownerCt.columnManager.getHeaderAtIndex(colIdx)); + } + }, + + initAddRemoveHeaderEvents: function(){ + var me = this; + me.mon(me.grid.headerCt, { + scope: me, + add: me.onColumnAdd, + remove: me.onColumnRemove, + columnmove: me.onColumnMove + }); + }, + + initKeyNavHeaderEvents: function() { + var me = this; + + me.keyNav = Ext.create('Ext.util.KeyNav', me.view.el, { + enter: me.onEnterKey, + esc: me.onEscKey, + scope: me + }); + }, + + + onColumnAdd: function(ct, column) { + this.initFieldAccessors(column); + }, + + + onColumnRemove: function(ct, column) { + this.removeFieldAccessors(column); + }, + + + + + onColumnMove: function(headerCt, column, fromIdx, toIdx) { + this.initFieldAccessors(column); + }, + + + onEnterKey: function(e) { + var me = this, + grid = me.grid, + selModel = grid.getSelectionModel(), + record, + pos, + columnHeader; + + + + if (selModel.getCurrentPosition && (pos = selModel.getCurrentPosition())) { + record = pos.record; + columnHeader = pos.columnHeader; + } + + else { + record = selModel.getLastSelected(); + columnHeader = grid.columnManager.getHeaderAtIndex(0); + } + + + if (record && columnHeader) { + me.startEdit(record, columnHeader); + } + }, + + + onEscKey: function(e) { + return this.cancelEdit(); + }, + + + beforeEdit: Ext.emptyFn, + + + startEdit: function(record, columnHeader) { + var me = this, + context, + layoutView = me.grid.lockable ? me.grid : me.view; + + + + if (!layoutView.componentLayoutCounter) { + layoutView.on({ + boxready: Ext.Function.bind(me.startEdit, me, [record, columnHeader]), + single: true + }); + return false; + } + + + if (me.grid.collapsed || !me.grid.view.isVisible(true)) { + return false; + } + + context = me.getEditingContext(record, columnHeader); + if (context == null) { + return false; + } + if (!me.preventBeforeCheck) { + if (me.beforeEdit(context) === false || me.fireEvent('beforeedit', me, context) === false || context.cancel) { + return false; + } + } + + + me.editing = true; + return context; + }, + + + + getEditingContext: function(record, columnHeader) { + var me = this, + grid = me.grid, + view = me.view, + gridRow = view.getNode(record, true), + rowIdx, colIdx; + + + if (!gridRow) { + return; + } + + + columnHeader = grid.columnManager.getVisibleHeaderClosestToIndex(Ext.isNumber(columnHeader) ? columnHeader : columnHeader.getVisibleIndex()); + + + if (!columnHeader) { + return; + } + + colIdx = columnHeader.getVisibleIndex(); + + if (Ext.isNumber(record)) { + + rowIdx = record; + record = view.getRecord(gridRow); + } else { + rowIdx = view.indexOf(gridRow); + } + + + + if (!record) { + return; + } + + return { + grid : grid, + view : view, + store : view.dataSource, + record : record, + field : columnHeader.dataIndex, + value : record.get(columnHeader.dataIndex), + row : gridRow, + column : columnHeader, + rowIdx : rowIdx, + colIdx : colIdx + }; + }, + + + cancelEdit: function() { + var me = this; + + me.editing = false; + me.fireEvent('canceledit', me, me.context); + }, + + + completeEdit: function() { + var me = this; + + if (me.editing && me.validateEdit()) { + me.fireEvent('edit', me, me.context); + } + + me.context = null; + me.editing = false; + }, + + + validateEdit: function() { + var me = this, + context = me.context; + + return me.fireEvent('validateedit', me, context) !== false && !context.cancel; + } +}); + + +Ext.define('Ext.grid.plugin.CellEditing', { + alias: 'plugin.cellediting', + extend: Ext.grid.plugin.Editing , + + lockableScope: 'both', + + + + + + + init: function(grid) { + var me = this, + lockingPartner = me.lockingPartner; + + me.callParent(arguments); + + + if (lockingPartner) { + if (lockingPartner.editors) { + me.editors = lockingPartner.editors; + } else { + me.editors = lockingPartner.editors = new Ext.util.MixedCollection(false, function(editor) { + return editor.editorId; + }); + } + } else { + me.editors = new Ext.util.MixedCollection(false, function(editor) { + return editor.editorId; + }); + } + }, + + onReconfigure: function(grid, store, columns){ + + if (columns) { + this.editors.clear(); + } + this.callParent(); + }, + + + destroy: function() { + var me = this; + if (me.editors) { + me.editors.each(Ext.destroy, Ext); + me.editors.clear(); + } + me.callParent(arguments); + }, + + onBodyScroll: function() { + var me = this, + ed = me.getActiveEditor(), + scroll = me.view.el.getScroll(); + + + + if (ed && ed.editing && ed.editingPlugin === me) { + + if (scroll.top !== me.scroll.top) { + if (ed.field) { + if (ed.field.triggerBlur) { + ed.field.triggerBlur(); + } else { + ed.field.blur(); + } + } + } + + else { + ed.realign(); + } + } + me.scroll = scroll; + }, + + + + initCancelTriggers: function() { + var me = this, + grid = me.grid, + view = grid.view; + + me.mon(view, 'bodyscroll', me.onBodyScroll, me); + me.mon(grid, { + columnresize: me.cancelEdit, + columnmove: me.cancelEdit, + scope: me + }); + }, + + isCellEditable: function(record, columnHeader) { + var me = this, + context = me.getEditingContext(record, columnHeader); + + if (me.grid.view.isVisible(true) && context) { + columnHeader = context.column; + record = context.record; + if (columnHeader && me.getEditor(record, columnHeader)) { + return true; + } + } + }, + + + startEdit: function(record, columnHeader, context) { + var me = this, + ed; + + if (!context) { + me.preventBeforeCheck = true; + context = me.callParent(arguments); + delete me.preventBeforeCheck; + if (context === false) { + return false; + } + } + + + + if (context && me.grid.view.isVisible(true)) { + + record = context.record; + columnHeader = context.column; + + + + + me.completeEdit(); + + + if (columnHeader && !columnHeader.getEditor(record)) { + return false; + } + + + me.context = context; + + context.originalValue = context.value = record.get(columnHeader.dataIndex); + + if (me.beforeEdit(context) === false || me.fireEvent('beforeedit', me, context) === false || context.cancel) { + return false; + } + + ed = me.getEditor(record, columnHeader); + + + me.grid.view.cancelFocus(); + me.view.scrollCellIntoView(me.getCell(record, columnHeader)); + if (ed) { + me.showEditor(ed, context, context.value); + return true; + } + return false; + } + }, + + showEditor: function(ed, context, value) { + var me = this, + record = context.record, + columnHeader = context.column, + sm = me.grid.getSelectionModel(), + selection = sm.getCurrentPosition(), + otherView = selection && selection.view; + + + + if (otherView && otherView !== me.view) { + return me.lockingPartner.showEditor(ed, me.lockingPartner.getEditingContext(selection.record, selection.columnHeader), value); + } + + me.setEditingContext(context); + me.setActiveEditor(ed); + me.setActiveRecord(record); + me.setActiveColumn(columnHeader); + + + if (sm.selectByPosition && (!selection || selection.column !== context.colIdx || selection.row !== context.rowIdx)) { + sm.selectByPosition({ + row: context.rowIdx, + column: context.colIdx, + view: me.view + }); + } + + ed.startEdit(me.getCell(record, columnHeader), value, context); + me.editing = true; + me.scroll = me.view.el.getScroll(); + }, + + completeEdit: function() { + var activeEd = this.getActiveEditor(); + if (activeEd) { + activeEd.completeEdit(); + this.editing = false; + } + }, + + + setEditingContext: function(context) { + this.context = context; + if (this.lockingPartner) { + this.lockingPartner.context = context; + } + }, + + setActiveEditor: function(ed) { + this.activeEditor = ed; + if (this.lockingPartner) { + this.lockingPartner.activeEditor = ed; + } + }, + + getActiveEditor: function() { + return this.activeEditor; + }, + + setActiveColumn: function(column) { + this.activeColumn = column; + if (this.lockingPartner) { + this.lockingPartner.activeColumn = column; + } + }, + + getActiveColumn: function() { + return this.activeColumn; + }, + + setActiveRecord: function(record) { + this.activeRecord = record; + if (this.lockingPartner) { + this.lockingPartner.activeRecord = record; + } + }, + + getActiveRecord: function() { + return this.activeRecord; + }, + + getEditor: function(record, column) { + var me = this, + editors = me.editors, + editorId = column.getItemId(), + editor = editors.getByKey(editorId), + + editorOwner = me.grid.ownerLockable || me.grid; + + if (!editor) { + editor = column.getEditor(record); + if (!editor) { + return false; + } + + + if (editor instanceof Ext.grid.CellEditor) { + editor.floating = true; + } + + else { + editor = new Ext.grid.CellEditor({ + floating: true, + editorId: editorId, + field: editor + }); + } + + editorOwner.add(editor); + editor.on({ + scope: me, + specialkey: me.onSpecialKey, + complete: me.onEditComplete, + canceledit: me.cancelEdit + }); + column.on('removed', me.cancelActiveEdit, me); + editors.add(editor); + } + + if (column.isTreeColumn) { + editor.isForTree = column.isTreeColumn; + editor.addCls(Ext.baseCSSPrefix + 'tree-cell-editor') + } + editor.grid = me.grid; + + + editor.editingPlugin = me; + return editor; + }, + + cancelActiveEdit: function(column){ + var context = this.context + if (context && context.column === column) { + this.cancelEdit(); + } + }, + + + setColumnField: function(column, field) { + var ed = this.editors.getByKey(column.getItemId()); + Ext.destroy(ed, column.field); + this.editors.removeAtKey(column.getItemId()); + this.callParent(arguments); + }, + + + getCell: function(record, column) { + return this.grid.getView().getCell(record, column); + }, + + onSpecialKey: function(ed, field, e) { + var sm; + + if (e.getKey() === e.TAB) { + e.stopEvent(); + + if (ed) { + + + ed.onEditorTab(e); + } + + sm = ed.up('tablepanel').getSelectionModel(); + if (sm.onEditorTab) { + return sm.onEditorTab(ed.editingPlugin, e); + } + } + }, + + onEditComplete : function(ed, value, startValue) { + var me = this, + activeColumn = me.getActiveColumn(), + context = me.context, + record; + + if (activeColumn) { + record = context.record; + + me.setActiveEditor(null); + me.setActiveColumn(null); + me.setActiveRecord(null); + + context.value = value; + if (!me.validateEdit()) { + return; + } + + + + if (!record.isEqual(value, startValue)) { + record.set(activeColumn.dataIndex, value); + } + + + + context.view.focus(false, true); + me.fireEvent('edit', me, context); + me.editing = false; + } + }, + + + cancelEdit: function() { + var me = this, + activeEd = me.getActiveEditor(); + + me.setActiveEditor(null); + me.setActiveColumn(null); + me.setActiveRecord(null); + if (activeEd) { + activeEd.cancelEdit(); + me.context.view.focus(); + me.callParent(arguments); + return; + } + + return true; + }, + + + startEditByPosition: function(position) { + + + if (!position.isCellContext) { + position = new Ext.grid.CellContext(this.view).setPosition(position); + } + + + position.setColumn(this.view.getHeaderCt().getVisibleHeaderClosestToIndex(position.column).getIndex()); + + return this.startEdit(position.record, position.columnHeader); + } +}); + +Ext.define('Ext.grid.plugin.DivRenderer', { + alias: 'plugin.divrenderer', + extend: Ext.AbstractPlugin , + + tableTpl: [ + '
    ', + '{%', + 'values.view.renderRows(values.rows, values.viewStartIndex, out);', + '%}', + '
    ', + { + priority: 0 + } + ], + + rowTpl: [ + '{%', + 'var dataRowCls = values.recordIndex === -1 ? "" : " ' + Ext.baseCSSPrefix + 'grid-data-row";', + '%}', + '
    ', + '' + + '{%', + 'parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)', + '%}', + '', + '
    ', + { + priority: 0 + } + ], + + cellTpl: [ + '
    ', + '
    {style}">{value}
    ', + '
    ', { + priority: 0 + } + ], + + selectors: { + + bodySelector: 'div', + + + nodeContainerSelector: 'div', + + + itemSelector: 'dl.' + Ext.baseCSSPrefix + 'grid-row', + + + dataRowSelector: 'dl.' + Ext.baseCSSPrefix + 'grid-data-row', + + + cellSelector: 'dt.' + Ext.baseCSSPrefix + 'grid-cell', + + innerSelector: 'div.' + Ext.baseCSSPrefix + 'grid-cell-inner', + + getNodeContainerSelector: function() { + return this.getBodySelector(); + }, + + getNodeContainer: function() { + return this.el.getById(this.id + '-table', true); + } + }, + + init: function(grid) { + var view = grid.getView(); + view.tableTpl = Ext.XTemplate.getTpl(this, 'tableTpl'); + view.rowTpl = Ext.XTemplate.getTpl(this, 'rowTpl'); + view.cellTpl = Ext.XTemplate.getTpl(this, 'cellTpl'); + Ext.apply(view, this.selectors); + } +}); + + +Ext.define('Ext.grid.plugin.DragDrop', { + extend: Ext.AbstractPlugin , + alias: 'plugin.gridviewdragdrop', + + + + + + + + + + + + + dragText : '{0} selected row{1}', + + + + ddGroup : "GridDD", + + + + + + + enableDrop: true, + + + enableDrag: true, + + + containerScroll: false, + + init : function(view) { + view.on('render', this.onViewRender, this, {single: true}); + }, + + + destroy: function() { + Ext.destroy(this.dragZone, this.dropZone); + }, + + enable: function() { + var me = this; + if (me.dragZone) { + me.dragZone.unlock(); + } + if (me.dropZone) { + me.dropZone.unlock(); + } + me.callParent(); + }, + + disable: function() { + var me = this; + if (me.dragZone) { + me.dragZone.lock(); + } + if (me.dropZone) { + me.dropZone.lock(); + } + me.callParent(); + }, + + onViewRender : function(view) { + var me = this, + scrollEl; + + if (me.enableDrag) { + if (me.containerScroll) { + scrollEl = view.getEl(); + } + + me.dragZone = new Ext.view.DragZone({ + view: view, + ddGroup: me.dragGroup || me.ddGroup, + dragText: me.dragText, + containerScroll: me.containerScroll, + scrollEl: scrollEl + }); + } + + if (me.enableDrop) { + me.dropZone = new Ext.grid.ViewDropZone({ + view: view, + ddGroup: me.dropGroup || me.ddGroup + }); + } + } +}); + + +Ext.define('Ext.grid.plugin.RowEditing', { + extend: Ext.grid.plugin.Editing , + alias: 'plugin.rowediting', + + + + + + lockableScope: 'top', + + editStyle: 'row', + + + autoCancel: true, + + + + + errorSummary: true, + + constructor: function() { + var me = this; + + me.callParent(arguments); + + if (!me.clicksToMoveEditor) { + me.clicksToMoveEditor = me.clicksToEdit; + } + + me.autoCancel = !!me.autoCancel; + }, + + + destroy: function() { + Ext.destroy(this.editor); + this.callParent(arguments); + }, + + + startEdit: function(record, columnHeader) { + var me = this, + editor = me.getEditor(), + context; + + if (editor.beforeEdit() !== false) { + context = me.callParent(arguments); + if (context) { + me.context = context; + + + if (me.lockingPartner) { + me.lockingPartner.cancelEdit(); + } + editor.startEdit(context.record, context.column, context); + return true; + } + } + return false; + }, + + + cancelEdit: function() { + var me = this; + + if (me.editing) { + me.getEditor().cancelEdit(); + me.callParent(arguments); + return; + } + + return true; + }, + + + completeEdit: function() { + var me = this; + + if (me.editing && me.validateEdit()) { + me.editing = false; + me.fireEvent('edit', me, me.context); + } + }, + + + validateEdit: function() { + var me = this, + editor = me.editor, + context = me.context, + record = context.record, + newValues = {}, + originalValues = {}, + editors = editor.query('>[isFormField]'), + e, + eLen = editors.length, + name, item; + + for (e = 0; e < eLen; e++) { + item = editors[e]; + name = item.name; + + newValues[name] = item.getValue(); + originalValues[name] = record.get(name); + } + + Ext.apply(context, { + newValues : newValues, + originalValues : originalValues + }); + + return me.callParent(arguments) && me.getEditor().completeEdit(); + }, + + + getEditor: function() { + var me = this; + + if (!me.editor) { + me.editor = me.initEditor(); + } + return me.editor; + }, + + + initEditor: function() { + return new Ext.grid.RowEditor(this.initEditorConfig()); + }, + + initEditorConfig: function(){ + var me = this, + grid = me.grid, + view = me.view, + headerCt = grid.headerCt, + btns = ['saveBtnText', 'cancelBtnText', 'errorsText', 'dirtyText'], + b, + bLen = btns.length, + cfg = { + autoCancel: me.autoCancel, + errorSummary: me.errorSummary, + fields: headerCt.getGridColumns(), + hidden: true, + view: view, + + editingPlugin: me + }, + item; + + for (b = 0; b < bLen; b++) { + item = btns[b]; + + if (Ext.isDefined(me[item])) { + cfg[item] = me[item]; + } + } + return cfg; + }, + + + initEditTriggers: function() { + var me = this, + view = me.view, + moveEditorEvent = me.clicksToMoveEditor === 1 ? 'click' : 'dblclick'; + + me.callParent(arguments); + + if (me.clicksToMoveEditor !== me.clicksToEdit) { + me.mon(view, 'cell' + moveEditorEvent, me.moveEditorByClick, me); + } + + view.on({ + render: function() { + me.mon(me.grid.headerCt, { + scope: me, + columnresize: me.onColumnResize, + columnhide: me.onColumnHide, + columnshow: me.onColumnShow + }); + }, + single: true + }); + }, + + startEditByClick: function() { + var me = this; + if (!me.editing || me.clicksToMoveEditor === me.clicksToEdit) { + me.callParent(arguments); + } + }, + + moveEditorByClick: function() { + var me = this; + if (me.editing) { + me.superclass.onCellClick.apply(me, arguments); + } + }, + + + onColumnAdd: function(ct, column) { + if (column.isHeader) { + var me = this, + editor; + + me.initFieldAccessors(column); + + + + editor = me.editor; + if (editor && editor.onColumnAdd) { + editor.onColumnAdd(column); + } + } + }, + + + onColumnRemove: function(ct, column) { + if (column.isHeader) { + var me = this, + editor = me.getEditor(); + + if (editor && editor.onColumnRemove) { + editor.onColumnRemove(ct, column); + } + me.removeFieldAccessors(column); + } + }, + + + onColumnResize: function(ct, column, width) { + if (column.isHeader) { + var me = this, + editor = me.getEditor(); + + if (editor && editor.onColumnResize) { + editor.onColumnResize(column, width); + } + } + }, + + + onColumnHide: function(ct, column) { + + var me = this, + editor = me.getEditor(); + + if (editor && editor.onColumnHide) { + editor.onColumnHide(column); + } + }, + + + onColumnShow: function(ct, column) { + + var me = this, + editor = me.getEditor(); + + if (editor && editor.onColumnShow) { + editor.onColumnShow(column); + } + }, + + + onColumnMove: function(ct, column, fromIdx, toIdx) { + + var me = this, + editor = me.getEditor(); + + + + me.initFieldAccessors(column); + + if (editor && editor.onColumnMove) { + + + editor.onColumnMove(column, fromIdx, toIdx); + } + }, + + + setColumnField: function(column, field) { + var me = this, + editor = me.getEditor(); + + editor.removeField(column); + me.callParent(arguments); + me.getEditor().setField(column); + } +}); + + + + + + +Ext.define('Ext.grid.plugin.RowExpander', { + extend: Ext.AbstractPlugin , + lockableScope: 'normal', + + + + + + + alias: 'plugin.rowexpander', + + rowBodyTpl: null, + + + expandOnEnter: true, + + + expandOnDblClick: true, + + + selectRowOnExpand: false, + + rowBodyTrSelector: '.x-grid-rowbody-tr', + rowBodyHiddenCls: 'x-grid-row-body-hidden', + rowCollapsedCls: 'x-grid-row-collapsed', + + addCollapsedCls: { + before: function(values, out) { + var me = this.rowExpander; + if (!me.recordsExpanded[values.record.internalId]) { + values.itemClasses.push(me.rowCollapsedCls); + } + }, + priority: 500 + }, + + + + + setCmp: function(grid) { + var me = this, + rowBodyTpl, + features; + + me.callParent(arguments); + + me.recordsExpanded = {}; + + me.rowBodyTpl = Ext.XTemplate.getTpl(me, 'rowBodyTpl'); + rowBodyTpl = this.rowBodyTpl; + features = [{ + ftype: 'rowbody', + lockableScope: 'normal', + recordsExpanded: me.recordsExpanded, + rowBodyHiddenCls: me.rowBodyHiddenCls, + rowCollapsedCls: me.rowCollapsedCls, + setupRowData: me.getRowBodyFeatureData, + setup: me.setup, + getRowBodyContents: function(record) { + return rowBodyTpl.applyTemplate(record.getData()); + } + },{ + ftype: 'rowwrap', + lockableScope: 'normal' + }]; + + if (grid.features) { + grid.features = Ext.Array.push(features, grid.features); + } else { + grid.features = features; + } + + }, + + init: function(grid) { + var me = this, + reconfigurable = grid, + view, lockedView; + + me.callParent(arguments); + me.grid = grid; + view = me.view = grid.getView(); + + + me.addExpander(); + + + + me.bindView(view); + view.addRowTpl(me.addCollapsedCls).rowExpander = me; + + + + if (grid.ownerLockable) { + + reconfigurable = grid.ownerLockable; + reconfigurable.syncRowHeight = false; + lockedView = reconfigurable.lockedGrid.getView(); + + + + me.bindView(lockedView); + lockedView.addRowTpl(me.addCollapsedCls).rowExpander = me; + + + + reconfigurable.mon(reconfigurable, 'columnschanged', me.refreshRowHeights, me); + reconfigurable.mon(reconfigurable.store, 'datachanged', me.refreshRowHeights, me); + } + reconfigurable.on('beforereconfigure', me.beforeReconfigure, me); + + if (grid.ownerLockable && !grid.rowLines) { + + + + + view.on('rowfocus', me.refreshRowHeights, me); + } + }, + + beforeReconfigure: function(grid, store, columns, oldStore, oldColumns) { + var expander = this.getHeaderConfig(); + expander.locked = true; + columns.unshift(expander); + }, + + + addExpander: function() { + var me = this, + expanderGrid = me.grid, + expanderHeader = me.getHeaderConfig(); + + + if (expanderGrid.ownerLockable) { + expanderGrid = expanderGrid.ownerLockable.lockedGrid; + expanderGrid.width += expanderHeader.width; + } + expanderGrid.headerCt.insert(0, expanderHeader); + }, + + getRowBodyFeatureData: function(record, idx, rowValues) { + var me = this + me.self.prototype.setupRowData.apply(me, arguments); + + rowValues.rowBody = me.getRowBodyContents(record); + rowValues.rowBodyCls = me.recordsExpanded[record.internalId] ? '' : me.rowBodyHiddenCls; + }, + + setup: function(rows, rowValues){ + var me = this; + me.self.prototype.setup.apply(me, arguments); + + if (!me.grid.ownerLockable) { + rowValues.rowBodyColspan -= 1; + } + }, + + bindView: function(view) { + if (this.expandOnEnter) { + view.on('itemkeydown', this.onKeyDown, this); + } + if (this.expandOnDblClick) { + view.on('itemdblclick', this.onDblClick, this); + } + }, + + onKeyDown: function(view, record, row, rowIdx, e) { + if (e.getKey() == e.ENTER) { + var ds = view.store, + sels = view.getSelectionModel().getSelection(), + ln = sels.length, + i = 0; + + for (; i < ln; i++) { + rowIdx = ds.indexOf(sels[i]); + this.toggleRow(rowIdx, sels[i]); + } + } + }, + + onDblClick: function(view, record, row, rowIdx, e) { + this.toggleRow(rowIdx, record); + }, + + toggleRow: function(rowIdx, record) { + var me = this, + view = me.view, + rowNode = view.getNode(rowIdx), + row = Ext.fly(rowNode, '_rowExpander'), + nextBd = row.down(me.rowBodyTrSelector, true), + isCollapsed = row.hasCls(me.rowCollapsedCls), + addOrRemoveCls = isCollapsed ? 'removeCls' : 'addCls', + ownerLock, rowHeight, fireView; + + + Ext.suspendLayouts(); + row[addOrRemoveCls](me.rowCollapsedCls); + Ext.fly(nextBd)[addOrRemoveCls](me.rowBodyHiddenCls); + me.recordsExpanded[record.internalId] = isCollapsed; + view.refreshSize(); + + + if (me.grid.ownerLockable) { + ownerLock = me.grid.ownerLockable; + fireView = ownerLock.getView(); + view = ownerLock.lockedGrid.view; + rowHeight = row.getHeight(); + row = Ext.fly(view.getNode(rowIdx), '_rowExpander'); + row.setHeight(rowHeight); + row[addOrRemoveCls](me.rowCollapsedCls); + view.refreshSize(); + } else { + fireView = view; + } + fireView.fireEvent(isCollapsed ? 'expandbody' : 'collapsebody', row.dom, record, nextBd); + + Ext.resumeLayouts(true); + }, + + + + + + + + refreshRowHeights: function() { + Ext.globalEvents.on({ + idle: this.doRefreshRowHeights, + scope: this, + single: true + }); + }, + + doRefreshRowHeights: function() { + var me = this, + recordsExpanded = me.recordsExpanded, + key, record, + lockedView = me.grid.ownerLockable.lockedGrid.view, + normalView = me.grid.ownerLockable.normalGrid.view, + normalRow, + lockedRow, + lockedHeight, + normalHeight; + + for (key in recordsExpanded) { + if (recordsExpanded.hasOwnProperty(key)) { + record = this.view.store.data.get(key); + lockedRow = lockedView.getNode(record, false); + normalRow = normalView.getNode(record, false); + lockedRow.style.height = normalRow.style.height = ''; + lockedHeight = lockedRow.offsetHeight; + normalHeight = normalRow.offsetHeight; + if (normalHeight > lockedHeight) { + lockedRow.style.height = normalHeight + 'px'; + } else if (lockedHeight > normalHeight) { + normalRow.style.height = lockedHeight + 'px'; + } + } + } + }, + + getHeaderConfig: function() { + var me = this; + + return { + width: 24, + lockable: false, + sortable: false, + resizable: false, + draggable: false, + hideable: false, + menuDisabled: true, + tdCls: Ext.baseCSSPrefix + 'grid-cell-special', + innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-row-expander', + renderer: function(value, metadata) { + + if (!me.grid.ownerLockable) { + metadata.tdAttr += ' rowspan="2"'; + } + return '
    '; + }, + processEvent: function(type, view, cell, rowIndex, cellIndex, e, record) { + if (type == "mousedown" && e.getTarget('.x-grid-row-expander')) { + me.toggleRow(rowIndex, record); + return me.selectRowOnExpand; + } + } + }; + } +}); + + +Ext.define('Ext.grid.property.Grid', { + + extend: Ext.grid.Panel , + + alias: 'widget.propertygrid', + + alternateClassName: 'Ext.grid.PropertyGrid', + + + + + + + + + + + + + + + + + + + + + + + + + valueField: 'value', + + + nameField: 'name', + + + inferTypes: true, + + + + + enableColumnMove: false, + columnLines: true, + stripeRows: false, + trackMouseOver: false, + clicksToEdit: 1, + enableHdMenu: false, + + gridCls: Ext.baseCSSPrefix + 'property-grid', + + + initComponent : function(){ + var me = this; + + me.source = me.source || {}; + me.addCls(me.gridCls); + me.plugins = me.plugins || []; + + + me.plugins.push(new Ext.grid.plugin.CellEditing({ + clicksToEdit: me.clicksToEdit, + + + startEdit: function(record, column) { + + return this.self.prototype.startEdit.call(this, record, me.headerCt.child('#' + me.valueField)); + } + })); + + me.selModel = { + selType: 'cellmodel', + onCellSelect: function(position) { + if (position.column != 1) { + position.column = 1; + } + return this.self.prototype.onCellSelect.call(this, position); + } + }; + + me.sourceConfig = Ext.apply({}, me.sourceConfig); + + + if (!me.store) { + me.propStore = me.store = new Ext.grid.property.Store(me, me.source); + } + me.configure(me.sourceConfig); + + if (me.sortableColumns) { + me.store.sort('name', 'ASC'); + } + me.columns = new Ext.grid.property.HeaderContainer(me, me.store); + + me.addEvents( + + 'beforepropertychange', + + 'propertychange' + ); + me.callParent(); + + + me.getView().walkCells = this.walkCells; + + + me.editors = { + 'date' : new Ext.grid.CellEditor({ field: new Ext.form.field.Date({selectOnFocus: true})}), + 'string' : new Ext.grid.CellEditor({ field: new Ext.form.field.Text({selectOnFocus: true})}), + 'number' : new Ext.grid.CellEditor({ field: new Ext.form.field.Number({selectOnFocus: true})}), + 'boolean' : new Ext.grid.CellEditor({ field: new Ext.form.field.ComboBox({ + editable: false, + store: [[ true, me.headerCt.trueText ], [false, me.headerCt.falseText ]] + })}) + }; + + + me.store.on('update', me.onUpdate, me); + }, + + configure: function(config){ + var me = this, + store = me.store, + i = 0, + len = me.store.getCount(), + nameField = me.nameField, + valueField = me.valueField, + name, value, rec, type; + + me.configureLegacy(config); + + if (me.inferTypes) { + for (; i < len; ++i) { + rec = store.getAt(i); + name = rec.get(nameField); + if (!me.getConfig(name, 'type')) { + value = rec.get(valueField); + if (Ext.isDate(value)) { + type = 'date'; + } else if (Ext.isNumber(value)) { + type = 'number'; + } else if (Ext.isBoolean(value)) { + type = 'boolean'; + } else { + type = 'string'; + } + me.setConfig(name, 'type', type); + } + } + } + }, + + getConfig: function(fieldName, key, defaultValue) { + var config = this.sourceConfig[fieldName], + out; + + if (config) { + out = config[key]; + } + return out || defaultValue; + }, + + setConfig: function(fieldName, key, value) { + var sourceCfg = this.sourceConfig, + o = sourceCfg[fieldName]; + + if (!o) { + o = sourceCfg[fieldName] = { + __copied: true + }; + } else if (!o.__copied) { + o = Ext.apply({ + __copied: true + }, o); + sourceCfg[fieldName] = o; + } + o[key] = value; + return value; + }, + + + configureLegacy: function(config){ + var me = this, + o, key, value; + + me.copyLegacyObject(config, me.customRenderers, 'renderer'); + me.copyLegacyObject(config, me.customEditors, 'editor'); + me.copyLegacyObject(config, me.propertyNames, 'displayName'); + + }, + + copyLegacyObject: function(config, o, keyName){ + var key, value; + + for (key in o) { + if (o.hasOwnProperty(key)) { + if (!config[key]) { + config[key] = {}; + } + config[key][keyName] = o[key]; + } + } + }, + + + onUpdate : function(store, record, operation) { + var me = this, + v, oldValue; + + if (me.rendered && operation == Ext.data.Model.EDIT) { + v = record.get(me.valueField); + oldValue = record.modified.value; + if (me.fireEvent('beforepropertychange', me.source, record.getId(), v, oldValue) !== false) { + if (me.source) { + me.source[record.getId()] = v; + } + record.commit(); + me.fireEvent('propertychange', me.source, record.getId(), v, oldValue); + } else { + record.reject(); + } + } + }, + + + walkCells: function(pos, direction, e, preventWrap, verifierFn, scope) { + if (direction == 'left') { + direction = 'up'; + } else if (direction == 'right') { + direction = 'down'; + } + pos = Ext.view.Table.prototype.walkCells.call(this, pos, direction, e, preventWrap, verifierFn, scope); + if (pos && !pos.column) { + pos.column = 1; + } + return pos; + }, + + + + getCellEditor : function(record, column) { + var me = this, + propName = record.get(me.nameField), + val = record.get(me.valueField), + editor = me.getConfig(propName, 'editor'), + type = me.getConfig(propName, 'type'), + editors = me.editors; + + + + if (editor) { + if (!(editor instanceof Ext.grid.CellEditor)) { + if (!(editor instanceof Ext.form.field.Base)) { + editor = Ext.ComponentManager.create(editor, 'textfield'); + } + editor = me.setConfig(propName, 'editor', new Ext.grid.CellEditor({ field: editor })); + } + } else if (type) { + switch (type) { + case 'date': + editor = editors.date; + break; + case 'number': + editor = editors.number; + break; + case 'boolean': + editor = me.editors['boolean']; + break; + default: + editor = editors.string; + } + } else if (Ext.isDate(val)) { + editor = editors.date; + } else if (Ext.isNumber(val)) { + editor = editors.number; + } else if (Ext.isBoolean(val)) { + editor = editors['boolean']; + } else { + editor = editors.string; + } + + + editor.editorId = propName; + return editor; + }, + + beforeDestroy: function() { + var me = this; + me.callParent(); + me.destroyEditors(me.editors); + me.destroyEditors(me.customEditors); + delete me.source; + }, + + destroyEditors: function (editors) { + for (var ed in editors) { + if (editors.hasOwnProperty(ed)) { + Ext.destroy(editors[ed]); + } + } + }, + + + setSource: function(source, sourceConfig) { + var me = this; + + me.source = source; + if (sourceConfig !== undefined) { + me.sourceConfig = Ext.apply({}, sourceConfig); + me.configure(me.sourceConfig); + } + me.propStore.setSource(source); + }, + + + getSource: function() { + return this.propStore.getSource(); + }, + + + setProperty: function(prop, value, create) { + this.propStore.setValue(prop, value, create); + }, + + + removeProperty: function(prop) { + this.propStore.remove(prop); + } + + + +}); + + +Ext.define('Ext.grid.property.HeaderContainer', { + + extend: Ext.grid.header.Container , + + alternateClassName: 'Ext.grid.PropertyColumnModel', + + nameWidth: 115, + + + + nameText : 'Name', + + + valueText : 'Value', + + + dateFormat : 'm/j/Y', + + + trueText: 'true', + + + falseText: 'false', + + + + nameColumnCls: Ext.baseCSSPrefix + 'grid-property-name', + nameColumnInnerCls: Ext.baseCSSPrefix + 'grid-cell-inner-property-name', + + + constructor : function(grid, store) { + var me = this; + + me.grid = grid; + me.store = store; + me.callParent([{ + isRootHeader: true, + enableColumnResize: Ext.isDefined(grid.enableColumnResize) ? grid.enableColumnResize : me.enableColumnResize, + enableColumnMove: Ext.isDefined(grid.enableColumnMove) ? grid.enableColumnMove : me.enableColumnMove, + items: [{ + header: me.nameText, + width: grid.nameColumnWidth || me.nameWidth, + sortable: grid.sortableColumns, + dataIndex: grid.nameField, + renderer: Ext.Function.bind(me.renderProp, me), + itemId: grid.nameField, + menuDisabled :true, + tdCls: me.nameColumnCls, + innerCls: me.nameColumnInnerCls + }, { + header: me.valueText, + renderer: Ext.Function.bind(me.renderCell, me), + getEditor: Ext.Function.bind(me.getCellEditor, me), + sortable: grid.sortableColumns, + flex: 1, + fixed: true, + dataIndex: grid.valueField, + itemId: grid.valueField, + menuDisabled: true + }] + }]); + }, + + getCellEditor: function(record){ + return this.grid.getCellEditor(record, this); + }, + + + + renderProp : function(v) { + return this.getPropertyName(v); + }, + + + + renderCell : function(val, meta, rec) { + var me = this, + grid = me.grid, + renderer = grid.getConfig(rec.get(grid.nameField), 'renderer'), + result = val; + + if (renderer) { + return renderer.apply(me, arguments); + } + if (Ext.isDate(val)) { + result = me.renderDate(val); + } else if (Ext.isBoolean(val)) { + result = me.renderBool(val); + } + return Ext.util.Format.htmlEncode(result); + }, + + + renderDate : Ext.util.Format.date, + + + renderBool : function(bVal) { + return this[bVal ? 'trueText' : 'falseText']; + }, + + + + getPropertyName : function(name) { + return this.grid.getConfig(name, 'displayName', name); + } +}); + + +Ext.define('Ext.grid.property.Property', { + extend: Ext.data.Model , + + alternateClassName: 'Ext.PropGridProperty', + + fields: [{ + name: 'name', + type: 'string' + }, { + name: 'value' + }], + idProperty: 'name' +}); + + +Ext.define('Ext.grid.property.Store', { + + extend: Ext.data.Store , + + alternateClassName: 'Ext.grid.PropertyStore', + + sortOnLoad: false, + + + + + constructor : function(grid, source){ + var me = this; + + me.grid = grid; + me.source = source; + me.callParent([{ + data: source, + model: Ext.grid.property.Property, + proxy: me.getProxy() + }]); + }, + + + getProxy: function() { + if (!this.proxy) { + Ext.grid.property.Store.prototype.proxy = new Ext.data.proxy.Memory({ + model: Ext.grid.property.Property, + reader: this.getReader() + }); + } + return this.proxy; + }, + + + getReader: function() { + if (!this.reader) { + Ext.grid.property.Store.prototype.reader = new Ext.data.reader.Reader({ + model: Ext.grid.property.Property, + + buildExtractors: Ext.emptyFn, + + read: function(dataObject) { + return this.readRecords(dataObject); + }, + + readRecords: function(dataObject) { + var val, + propName, + result = { + records: [], + success: true + }; + + for (propName in dataObject) { + if (dataObject.hasOwnProperty(propName)) { + val = dataObject[propName]; + if (this.isEditableValue(val)) { + result.records.push(new Ext.grid.property.Property({ + name: propName, + value: val + }, propName)); + } + } + } + result.total = result.count = result.records.length; + return new Ext.data.ResultSet(result); + }, + + + isEditableValue: function(val){ + return Ext.isPrimitive(val) || Ext.isDate(val) || val === null; + } + }); + } + return this.reader; + }, + + + + setSource : function(dataObject) { + var me = this; + + me.source = dataObject; + me.suspendEvents(); + me.removeAll(); + me.proxy.data = dataObject; + me.load(); + me.resumeEvents(); + me.fireEvent('datachanged', me); + me.fireEvent('refresh', me); + }, + + + getProperty : function(row) { + return Ext.isNumber(row) ? this.getAt(row) : this.getById(row); + }, + + + setValue : function(prop, value, create){ + var me = this, + rec = me.getRec(prop); + + if (rec) { + rec.set('value', value); + me.source[prop] = value; + } else if (create) { + + me.source[prop] = value; + rec = new Ext.grid.property.Property({name: prop, value: value}, prop); + me.add(rec); + } + }, + + + remove : function(prop) { + var rec = this.getRec(prop); + if (rec) { + this.callParent([rec]); + delete this.source[prop]; + } + }, + + + getRec : function(prop) { + return this.getById(prop); + }, + + + + getSource : function() { + return this.source; + } +}); + + +Ext.define('Ext.layout.ClassList', (function () { + + var splitWords = Ext.String.splitWords, + toMap = Ext.Array.toMap; + + return { + dirty: false, + + constructor: function (owner) { + this.owner = owner; + this.map = toMap(this.classes = splitWords(owner.el.className)); + }, + + + add: function (cls) { + var me = this; + + if (!me.map[cls]) { + me.map[cls] = true; + me.classes.push(cls); + if (!me.dirty) { + me.dirty = true; + me.owner.markDirty(); + } + } + }, + + + addMany: function (classes) { + Ext.each(splitWords(classes), this.add, this); + }, + + contains: function (cls) { + return this.map[cls]; + }, + + flush: function () { + this.owner.el.className = this.classes.join(' '); + this.dirty = false; + }, + + + remove: function (cls) { + var me = this; + + if (me.map[cls]) { + delete me.map[cls]; + me.classes = Ext.Array.filter(me.classes, function (c) { + return c != cls; + }); + if (!me.dirty) { + me.dirty = true; + me.owner.markDirty(); + } + } + }, + + + removeMany: function (classes) { + var me = this, + remove = toMap(splitWords(classes)); + + me.classes = Ext.Array.filter(me.classes, function (c) { + if (!remove[c]) { + return true; + } + + delete me.map[c]; + if (!me.dirty) { + me.dirty = true; + me.owner.markDirty(); + } + return false; + }); + } + }; +}())); + + +Ext.define('Ext.util.Queue', { + + constructor: function() { + this.clear(); + }, + + add : function(obj) { + var me = this, + key = me.getKey(obj); + + if (!me.map[key]) { + ++me.length; + me.items.push(obj); + me.map[key] = obj; + } + + return obj; + }, + + + clear : function(){ + var me = this, + items = me.items; + + me.items = []; + me.map = {}; + me.length = 0; + + return items; + }, + + contains: function (obj) { + var key = this.getKey(obj); + + return this.map.hasOwnProperty(key); + }, + + + getCount : function(){ + return this.length; + }, + + getKey : function(obj){ + return obj.id; + }, + + + remove : function(obj){ + var me = this, + key = me.getKey(obj), + items = me.items, + index; + + if (me.map[key]) { + index = Ext.Array.indexOf(items, obj); + Ext.Array.erase(items, index, 1); + delete me.map[key]; + --me.length; + } + + return obj; + } +}); + + +Ext.define('Ext.layout.ContextItem', { + + + + heightModel: null, + widthModel: null, + sizeModel: null, + + + optOut: false, + + ownerSizePolicy: null, + + boxChildren: null, + + boxParent: null, + isBorderBoxValue: null, + + children: [], + + dirty: null, + + + dirtyCount: 0, + + hasRawContent: true, + + isContextItem: true, + + isTopLevel: false, + + consumersContentHeight: 0, + consumersContentWidth: 0, + consumersContainerHeight: 0, + consumersContainerWidth: 0, + consumersHeight: 0, + consumersWidth: 0, + + ownerCtContext: null, + + remainingChildDimensions: 0, + + + props: null, + + + state: null, + + + wrapsComponent: false, + + constructor: function (config) { + var me = this, + sizeModels = Ext.layout.SizeModel.sizeModels, + configured = sizeModels.configured, + shrinkWrap = sizeModels.shrinkWrap, + el, lastBox, ownerCt, ownerCtContext, props, sizeModel, target, + lastWidth, lastHeight, sameWidth, sameHeight, widthModel, heightModel, optOut; + + Ext.apply(me, config); + + el = me.el; + me.id = el.id; + + + + + + + + + + + + + + + + + + + + + + me.flushedProps = {}; + me.props = props = {}; + + + me.styles = {}; + + target = me.target; + + if (!target.isComponent) { + lastBox = el.lastBox; + } else { + me.wrapsComponent = true; + me.framing = target.frameSize || null; + me.isComponentChild = target.ownerLayout && target.ownerLayout.isComponentLayout; + + lastBox = target.lastBox; + + + + ownerCt = target.ownerCt; + if (ownerCt && (ownerCtContext = ownerCt.el && me.context.items[ownerCt.el.id])) { + me.ownerCtContext = ownerCtContext; + } + + + + me.sizeModel = sizeModel = target.getSizeModel(ownerCtContext && + ownerCtContext.widthModel.pairsByHeightOrdinal[ownerCtContext.heightModel.ordinal]); + + + + + + + + me.widthModel = widthModel = sizeModel.width; + me.heightModel = heightModel = sizeModel.height; + + + + + if (lastBox && lastBox.invalid === false) { + sameWidth = (target.width === (lastWidth = lastBox.width)); + sameHeight = (target.height === (lastHeight = lastBox.height)); + + if (widthModel === shrinkWrap && heightModel === shrinkWrap) { + optOut = true; + } else if (widthModel === configured && sameWidth) { + optOut = heightModel === shrinkWrap || + (heightModel === configured && sameHeight); + } + + if (optOut) { + + me.optOut = true; + props.width = lastWidth; + props.height = lastHeight; + } + } + } + + me.lastBox = lastBox; + }, + + + init: function (full, options) { + var me = this, + oldProps = me.props, + oldDirty = me.dirty, + ownerCtContext = me.ownerCtContext, + ownerLayout = me.target.ownerLayout, + firstTime = !me.state, + ret = full || firstTime, + children, i, n, ownerCt, sizeModel, target, + oldHeightModel = me.heightModel, + oldWidthModel = me.widthModel, + newHeightModel, newWidthModel, + remainingCount = 0; + + me.dirty = me.invalid = false; + me.props = {}; + + + me.remainingChildDimensions = 0; + + if (me.boxChildren) { + me.boxChildren.length = 0; + } + + if (!firstTime) { + me.clearAllBlocks('blocks'); + me.clearAllBlocks('domBlocks'); + } + + + if (!me.wrapsComponent) { + return ret; + } + + + target = me.target; + me.state = {}; + + if (firstTime) { + + + if (target.beforeLayout && target.beforeLayout !== Ext.emptyFn) { + target.beforeLayout(); + } + + + + + + + + if (!ownerCtContext && (ownerCt = target.ownerCt)) { + ownerCtContext = me.context.items[ownerCt.el.id]; + } + + if (ownerCtContext) { + me.ownerCtContext = ownerCtContext; + me.isBoxParent = target.ownerLayout.isItemBoxParent(me); + } else { + me.isTopLevel = true; + } + + me.frameBodyContext = me.getEl('frameBody'); + } else { + ownerCtContext = me.ownerCtContext; + + + me.isTopLevel = !ownerCtContext; + + + + children = me.children; + for (i = 0, n = children.length; i < n; ++i) { + children[i].init(true); + } + } + + + + + me.hasRawContent = !(target.isContainer && target.items.items.length > 0); + + if (full) { + + + me.widthModel = me.heightModel = null; + sizeModel = target.getSizeModel(ownerCtContext && + ownerCtContext.widthModel.pairsByHeightOrdinal[ownerCtContext.heightModel.ordinal]); + + if (firstTime) { + me.sizeModel = sizeModel; + } + + me.widthModel = sizeModel.width; + me.heightModel = sizeModel.height; + + + + + if (ownerCtContext && !me.isComponentChild) { + ownerCtContext.remainingChildDimensions += 2; + } + } else if (oldProps) { + + + me.recoverProp('x', oldProps, oldDirty); + me.recoverProp('y', oldProps, oldDirty); + + + if (me.widthModel.calculated) { + me.recoverProp('width', oldProps, oldDirty); + } else if ('width' in oldProps) { + ++remainingCount; + } + if (me.heightModel.calculated) { + me.recoverProp('height', oldProps, oldDirty); + } else if ('height' in oldProps) { + ++remainingCount; + } + + + + + + + if (ownerCtContext && !me.isComponentChild) { + ownerCtContext.remainingChildDimensions += remainingCount; + } + } + + if (oldProps && ownerLayout && ownerLayout.manageMargins) { + me.recoverProp('margin-top', oldProps, oldDirty); + me.recoverProp('margin-right', oldProps, oldDirty); + me.recoverProp('margin-bottom', oldProps, oldDirty); + me.recoverProp('margin-left', oldProps, oldDirty); + } + + + + if (options) { + + + + + + + + + + + + + + + + + + + + + + newHeightModel = options.heightModel; + newWidthModel = options.widthModel; + if (newWidthModel && newHeightModel && oldWidthModel && oldHeightModel) { + if (oldWidthModel.shrinkWrap && oldHeightModel.shrinkWrap) { + if (newWidthModel.constrainedMax && newHeightModel.constrainedMin) { + newHeightModel = null; + } + } + } + + + if (newWidthModel) { + me.widthModel = newWidthModel; + } + if (newHeightModel) { + me.heightModel = newHeightModel; + } + + if (options.state) { + Ext.apply(me.state, options.state); + } + } + + return ret; + }, + + + initContinue: function (full) { + var me = this, + ownerCtContext = me.ownerCtContext, + comp = me.target, + widthModel = me.widthModel, + hierarchyState = comp.getHierarchyState(), + boxParent; + + if (widthModel.fixed) { + hierarchyState.inShrinkWrapTable = false; + } else { + delete hierarchyState.inShrinkWrapTable; + } + + if (full) { + if (ownerCtContext && widthModel.shrinkWrap) { + boxParent = ownerCtContext.isBoxParent ? ownerCtContext : ownerCtContext.boxParent; + if (boxParent) { + boxParent.addBoxChild(me); + } + } else if (widthModel.natural) { + me.boxParent = ownerCtContext; + } + } + + return full; + }, + + + initDone: function(containerLayoutDone) { + var me = this, + props = me.props, + state = me.state; + + + if (me.remainingChildDimensions === 0) { + props.containerChildrenSizeDone = true; + } + if (containerLayoutDone) { + props.containerLayoutDone = true; + } + + if (me.boxChildren && me.boxChildren.length && me.widthModel.shrinkWrap) { + + + me.el.setWidth(10000); + + + state.blocks = (state.blocks || 0) + 1; + } + }, + + + initAnimation: function() { + var me = this, + target = me.target, + ownerCtContext = me.ownerCtContext; + + if (ownerCtContext && ownerCtContext.isTopLevel) { + + + me.animatePolicy = target.ownerLayout.getAnimatePolicy(me); + } else if (!ownerCtContext && target.isCollapsingOrExpanding && target.animCollapse) { + + + + me.animatePolicy = target.componentLayout.getAnimatePolicy(me); + } + + if (me.animatePolicy) { + me.context.queueAnimation(me); + } + }, + + + addCls: function(newCls) { + this.getClassList().addMany(newCls); + }, + + + removeCls: function(removeCls) { + this.getClassList().removeMany(removeCls); + }, + + + addBlock: function (name, layout, propName) { + var me = this, + collection = me[name] || (me[name] = {}), + blockedLayouts = collection[propName] || (collection[propName] = {}); + + if (!blockedLayouts[layout.id]) { + blockedLayouts[layout.id] = layout; + ++layout.blockCount; + ++me.context.blockCount; + } + }, + + addBoxChild: function (boxChildItem) { + var me = this, + children, + widthModel = boxChildItem.widthModel; + + boxChildItem.boxParent = this; + + + + + + + + boxChildItem.measuresBox = widthModel.shrinkWrap ? boxChildItem.hasRawContent : widthModel.natural; + + if (boxChildItem.measuresBox) { + children = me.boxChildren; + + if (children) { + children.push(boxChildItem); + } else { + me.boxChildren = [ boxChildItem ]; + } + } + }, + + + addPositionStyles: function(styles, props) { + var x = props.x, + y = props.y, + count = 0; + + if (x !== undefined) { + styles.left = x + 'px'; + ++count; + } + if (y !== undefined) { + styles.top = y + 'px'; + ++count; + } + return count; + }, + + + addTrigger: function (propName, inDom) { + var me = this, + name = inDom ? 'domTriggers' : 'triggers', + collection = me[name] || (me[name] = {}), + context = me.context, + layout = context.currentLayout, + triggers = collection[propName] || (collection[propName] = {}); + + if (!triggers[layout.id]) { + triggers[layout.id] = layout; + ++layout.triggerCount; + + triggers = context.triggers[inDom ? 'dom' : 'data']; + (triggers[layout.id] || (triggers[layout.id] = [])).push({ + item: this, + prop: propName + }); + + if (me.props[propName] !== undefined) { + if (!inDom || !(me.dirty && (propName in me.dirty))) { + ++layout.firedTriggers; + } + } + } + }, + + boxChildMeasured: function () { + var me = this, + state = me.state, + count = (state.boxesMeasured = (state.boxesMeasured || 0) + 1); + + if (count == me.boxChildren.length) { + + + state.clearBoxWidth = 1; + ++me.context.progressCount; + me.markDirty(); + } + }, + + borderNames: [ 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'], + marginNames: [ 'margin-top', 'margin-right', 'margin-bottom', 'margin-left' ], + paddingNames: [ 'padding-top', 'padding-right', 'padding-bottom', 'padding-left' ], + trblNames: [ 'top', 'right', 'bottom', 'left' ], + + cacheMissHandlers: { + borderInfo: function (me) { + var info = me.getStyles(me.borderNames, me.trblNames); + + info.width = info.left + info.right; + info.height = info.top + info.bottom; + + return info; + }, + + marginInfo: function (me) { + var info = me.getStyles(me.marginNames, me.trblNames); + + info.width = info.left + info.right; + info.height = info.top + info.bottom; + + return info; + }, + + paddingInfo: function (me) { + + var item = me.frameBodyContext || me, + info = item.getStyles(me.paddingNames, me.trblNames); + + info.width = info.left + info.right; + info.height = info.top + info.bottom; + + return info; + } + }, + + checkCache: function (entry) { + return this.cacheMissHandlers[entry](this); + }, + + clearAllBlocks: function (name) { + var collection = this[name], + propName; + + if (collection) { + for (propName in collection) { + this.clearBlocks(name, propName); + } + } + }, + + + clearBlocks: function (name, propName) { + var collection = this[name], + blockedLayouts = collection && collection[propName], + context, layout, layoutId; + + if (blockedLayouts) { + delete collection[propName]; + + context = this.context; + + for (layoutId in blockedLayouts) { + layout = blockedLayouts[layoutId]; + + --context.blockCount; + if (! --layout.blockCount && !layout.pending && !layout.done) { + context.queueLayout(layout); + } + } + } + }, + + + block: function (layout, propName) { + this.addBlock('blocks', layout, propName); + }, + + + domBlock: function (layout, propName) { + this.addBlock('domBlocks', layout, propName); + }, + + + fireTriggers: function (name, propName) { + var collection = this[name], + triggers = collection && collection[propName], + context = this.context, + layout, layoutId; + + if (triggers) { + for (layoutId in triggers) { + layout = triggers[layoutId]; + ++layout.firedTriggers; + if (!layout.done && !layout.blockCount && !layout.pending) { + context.queueLayout(layout); + } + } + } + }, + + + flush: function () { + var me = this, + dirty = me.dirty, + state = me.state, + targetEl = me.el; + + me.dirtyCount = 0; + + + if (me.classList && me.classList.dirty) { + me.classList.flush(); + } + + + if ('attributes' in me) { + targetEl.set(me.attributes); + delete me.attributes; + } + + + if ('innerHTML' in me) { + targetEl.innerHTML = me.innerHTML; + delete me.innerHTML; + } + + if (state && state.clearBoxWidth) { + state.clearBoxWidth = 0; + me.el.setStyle('width', null); + + if (! --state.blocks) { + me.context.queueItemLayouts(me); + } + } + + if (dirty) { + delete me.dirty; + me.writeProps(dirty, true); + } + }, + + + flushAnimations: function() { + var me = this, + animateFrom = me.previousSize, + target, targetAnim, duration, animateProps, anim, + changeCount, j, propsLen, propName, oldValue, newValue; + + + if (animateFrom) { + target = me.target; + targetAnim = target.layout && target.layout.animate; + if (targetAnim) { + duration = Ext.isNumber(targetAnim) ? targetAnim : targetAnim.duration; + } + animateProps = Ext.Object.getKeys(me.animatePolicy); + + + + anim = Ext.apply({}, { + from: {}, + to: {}, + duration: duration || Ext.fx.Anim.prototype.duration + }, targetAnim); + + for (changeCount = 0, j = 0, propsLen = animateProps.length; j < propsLen; j++) { + propName = animateProps[j]; + oldValue = animateFrom[propName]; + newValue = me.peek(propName); + if (oldValue != newValue) { + propName = me.translateProps[propName]||propName; + anim.from[propName] = oldValue; + anim.to[propName] = newValue; + ++changeCount; + } + } + + + if (changeCount) { + + if (me.isCollapsingOrExpanding === 1) { + target.componentLayout.undoLayout(me); + } + + + else { + me.writeProps(anim.from); + } + me.el.animate(anim); + + Ext.fx.Manager.getFxQueue(me.el.id)[0].on({ + afteranimate: function() { + if (me.isCollapsingOrExpanding === 1) { + target.componentLayout.redoLayout(me); + target.afterCollapse(true); + } else if (me.isCollapsingOrExpanding === 2) { + target.afterExpand(true); + } + } + }); + } + } + }, + + + getBorderInfo: function () { + var me = this, + info = me.borderInfo; + + if (!info) { + me.borderInfo = info = me.checkCache('borderInfo'); + } + + return info; + }, + + + getClassList: function () { + return this.classList || (this.classList = new Ext.layout.ClassList(this)); + }, + + + getEl: function (nameOrEl, owner) { + var me = this, + src, el, elContext; + + if (nameOrEl) { + if (nameOrEl.dom) { + el = nameOrEl; + } else { + src = me.target; + if (owner) { + src = owner; + } + + el = src[nameOrEl]; + if (typeof el == 'function') { + el = el.call(src); + if (el === me.el) { + return this; + } + } + } + + if (el) { + elContext = me.context.getEl(me, el); + } + } + + return elContext || null; + }, + + + getFrameInfo: function () { + var me = this, + info = me.frameInfo, + framing, border; + + if (!info) { + framing = me.framing; + border = me.getBorderInfo(); + + me.frameInfo = info = + framing ? { + top : framing.top + border.top, + right : framing.right + border.right, + bottom: framing.bottom + border.bottom, + left : framing.left + border.left, + width : framing.width + border.width, + height: framing.height + border.height + } : border; + } + + return info; + }, + + + getMarginInfo: function () { + var me = this, + info = me.marginInfo, + comp, manageMargins, margins, ownerLayout, ownerLayoutId; + + if (!info) { + if (!me.wrapsComponent) { + info = me.checkCache('marginInfo'); + } else { + comp = me.target; + ownerLayout = comp.ownerLayout; + ownerLayoutId = ownerLayout ? ownerLayout.id : null; + manageMargins = ownerLayout && ownerLayout.manageMargins; + + + + + + + + + + + + + + + + + info = comp.margin$; + if (info && info.ownerId !== ownerLayoutId) { + + info = null; + + + + + } + + if (!info) { + + info = me.parseMargins(comp, comp.margin) || me.checkCache('marginInfo'); + + + if (manageMargins) { + margins = me.parseMargins(comp, comp.margins, ownerLayout.defaultMargins); + + if (margins) { + + info = { + top: info.top + margins.top, + right: info.right + margins.right, + bottom: info.bottom + margins.bottom, + left: info.left + margins.left + }; + } + + me.setProp('margin-top', 0); + me.setProp('margin-right', 0); + me.setProp('margin-bottom', 0); + me.setProp('margin-left', 0); + } + + + info.ownerId = ownerLayoutId; + comp.margin$ = info; + } + + info.width = info.left + info.right; + info.height = info.top + info.bottom; + } + + me.marginInfo = info; + } + + return info; + }, + + + clearMarginCache: function() { + delete this.marginInfo; + delete this.target.margin$; + }, + + + getPaddingInfo: function () { + var me = this, + info = me.paddingInfo; + + if (!info) { + me.paddingInfo = info = me.checkCache('paddingInfo'); + } + + return info; + }, + + + getProp: function (propName) { + var me = this, + result = me.props[propName]; + + me.addTrigger(propName); + return result; + }, + + + getDomProp: function (propName) { + var me = this, + result = (me.dirty && (propName in me.dirty)) ? undefined : me.props[propName]; + + me.addTrigger(propName, true); + return result; + }, + + + getStyle: function (styleName) { + var me = this, + styles = me.styles, + info, value; + + if (styleName in styles) { + value = styles[styleName]; + } else { + info = me.styleInfo[styleName]; + value = me.el.getStyle(styleName); + + if (info && info.parseInt) { + value = parseInt(value, 10) || 0; + } + + styles[styleName] = value; + } + + return value; + }, + + + getStyles: function (styleNames, altNames) { + var me = this, + styleCache = me.styles, + values = {}, + hits = 0, + n = styleNames.length, + i, missing, missingAltNames, name, info, styleInfo, styles, value; + + altNames = altNames || styleNames; + + + + for (i = 0; i < n; ++i) { + name = styleNames[i]; + + if (name in styleCache) { + values[altNames[i]] = styleCache[name]; + ++hits; + + if (i && hits==1) { + missing = styleNames.slice(0, i); + missingAltNames = altNames.slice(0, i); + } + } else if (hits) { + (missing || (missing = [])).push(name); + (missingAltNames || (missingAltNames = [])).push(altNames[i]); + } + } + + if (hits < n) { + missing = missing || styleNames; + missingAltNames = missingAltNames || altNames; + styleInfo = me.styleInfo; + + styles = me.el.getStyle(missing); + + for (i = missing.length; i--; ) { + name = missing[i]; + info = styleInfo[name]; + value = styles[name]; + + if (info && info.parseInt) { + value = parseInt(value, 10) || 0; + } + + values[missingAltNames[i]] = value; + styleCache[name] = value; + } + } + + return values; + }, + + + hasProp: function (propName) { + return this.getProp(propName) != null; + }, + + + hasDomProp: function (propName) { + return this.getDomProp(propName) != null; + }, + + + invalidate: function (options) { + this.context.queueInvalidate(this, options); + }, + + markDirty: function () { + if (++this.dirtyCount == 1) { + + this.context.queueFlush(this); + } + }, + + onBoxMeasured: function () { + var boxParent = this.boxParent, + state = this.state; + + if (boxParent && boxParent.widthModel.shrinkWrap && !state.boxMeasured && this.measuresBox) { + + + state.boxMeasured = 1; + boxParent.boxChildMeasured(); + } + }, + + parseMargins: function (comp, margins, defaultMargins) { + if (margins === true) { + margins = 5; + } + + var type = typeof margins, + ret; + + if (type == 'string' || type == 'number') { + ret = comp.parseBox(margins); + } else if (margins || defaultMargins) { + ret = { top: 0, right: 0, bottom: 0, left: 0 }; + + if (defaultMargins) { + Ext.apply(ret, this.parseMargins(comp, defaultMargins)); + } + + if (margins) { + margins = Ext.apply(ret, comp.parseBox(margins)); + } + } + + return ret; + }, + + peek: function (propName) { + return this.props[propName]; + }, + + + recoverProp: function (propName, oldProps, oldDirty) { + var me = this, + props = me.props, + dirty; + + if (propName in oldProps) { + props[propName] = oldProps[propName]; + + if (oldDirty && propName in oldDirty) { + dirty = me.dirty || (me.dirty = {}); + dirty[propName] = oldDirty[propName]; + } + } + }, + + redo: function(deep) { + var me = this, + items, len, i; + + me.revertProps(me.props); + + if (deep && me.wrapsComponent) { + + if (me.childItems) { + for (i = 0, items = me.childItems, len = items.length; i < len; i++) { + items[i].redo(deep); + } + } + + + for (i = 0, items = me.children, len = items.length; i < len; i++) { + items[i].redo(); + } + } + }, + + + removeEl: function(nameOrEl, owner) { + var me = this, + src, el; + + if (nameOrEl) { + if (nameOrEl.dom) { + el = nameOrEl; + } else { + src = me.target; + if (owner) { + src = owner; + } + + el = src[nameOrEl]; + if (typeof el == 'function') { + el = el.call(src); + if (el === me.el) { + return this; + } + } + } + + if (el) { + me.context.removeEl(me, el); + } + } + }, + + revertProps: function (props) { + var name, + flushed = this.flushedProps, + reverted = {}; + + for (name in props) { + if (flushed.hasOwnProperty(name)) { + reverted[name] = props[name]; + } + } + + this.writeProps(reverted); + }, + + + setAttribute: function(name, value) { + var me = this; + if (!me.attributes) { + me.attributes = {}; + } + me.attributes[name] = value; + me.markDirty(); + }, + + setBox: function (box) { + var me = this; + + if ('left' in box) { + me.setProp('x', box.left); + } + if ('top' in box) { + me.setProp('y', box.top); + } + + + + + me.setSize(box.width, box.height); + }, + + + setContentHeight: function (height, measured) { + if (!measured && this.hasRawContent) { + return 1; + } + + return this.setProp('contentHeight', height); + }, + + + setContentWidth: function (width, measured) { + if (!measured && this.hasRawContent) { + return 1; + } + + return this.setProp('contentWidth', width); + }, + + + setContentSize: function (width, height, measured) { + return this.setContentWidth(width, measured) + + this.setContentHeight(height, measured) == 2; + }, + + + setProp: function (propName, value, dirty) { + var me = this, + valueType = typeof value, + borderBox, info; + + if (valueType == 'undefined' || (valueType === 'number' && isNaN(value))) { + return 0; + } + if (me.props[propName] === value) { + return 1; + } + + me.props[propName] = value; + ++me.context.progressCount; + + if (dirty === false) { + + + me.fireTriggers('domTriggers', propName); + me.clearBlocks('domBlocks', propName); + } else { + info = me.styleInfo[propName]; + if (info) { + if (!me.dirty) { + me.dirty = {}; + } + + if (propName == 'width' || propName == 'height') { + borderBox = me.isBorderBoxValue; + if (borderBox === null) { + me.isBorderBoxValue = borderBox = !!me.el.isBorderBox(); + } + + if (!borderBox) { + me.borderInfo || me.getBorderInfo(); + me.paddingInfo || me.getPaddingInfo(); + } + } + me.dirty[propName] = value; + me.markDirty(); + } + } + + + me.fireTriggers('triggers', propName); + me.clearBlocks('blocks', propName); + return 1; + }, + + + setHeight: function (height, dirty ) { + var me = this, + comp = me.target, + ownerCtContext = me.ownerCtContext, + frameBody, frameInfo, min, oldHeight, rem; + + if (height < 0) { + height = 0; + } + if (!me.wrapsComponent) { + if (!me.setProp('height', height, dirty)) { + return NaN; + } + } else { + min = me.collapsedVert ? 0 : (comp.minHeight || 0); + height = Ext.Number.constrain(height, min, comp.maxHeight); + oldHeight = me.props.height; + if (!me.setProp('height', height, dirty)) { + return NaN; + } + + + + if (ownerCtContext && !me.isComponentChild && isNaN(oldHeight)) { + rem = --ownerCtContext.remainingChildDimensions; + if (!rem) { + + + + ownerCtContext.setProp('containerChildrenSizeDone', true); + } + } + + frameBody = me.frameBodyContext; + if (frameBody){ + frameInfo = me.getFrameInfo(); + frameBody.setHeight(height - frameInfo.height, dirty); + } + } + + return height; + }, + + + setWidth: function (width, dirty ) { + var me = this, + comp = me.target, + ownerCtContext = me.ownerCtContext, + frameBody, frameInfo, min, oldWidth, rem; + + if (width < 0) { + width = 0; + } + if (!me.wrapsComponent) { + if (!me.setProp('width', width, dirty)) { + return NaN; + } + } else { + min = me.collapsedHorz ? 0 : (comp.minWidth || 0); + width = Ext.Number.constrain(width, min, comp.maxWidth); + oldWidth = me.props.width + if (!me.setProp('width', width, dirty)) { + return NaN; + } + + + + if (ownerCtContext && !me.isComponentChild && isNaN(oldWidth)) { + rem = --ownerCtContext.remainingChildDimensions; + if (!rem) { + + + + ownerCtContext.setProp('containerChildrenSizeDone', true); + } + } + + + frameBody = me.frameBodyContext; + if (frameBody) { + frameInfo = me.getFrameInfo(); + frameBody.setWidth(width - frameInfo.width, dirty); + } + + + } + + return width; + }, + + setSize: function (width, height, dirty) { + this.setWidth(width, dirty); + this.setHeight(height, dirty); + }, + + translateProps: { + x: 'left', + y: 'top' + }, + + undo: function(deep) { + var me = this, + items, len, i; + + me.revertProps(me.lastBox); + + if (deep && me.wrapsComponent) { + + if (me.childItems) { + for (i = 0, items = me.childItems, len = items.length; i < len; i++) { + items[i].undo(deep); + } + } + + + for (i = 0, items = me.children, len = items.length; i < len; i++) { + items[i].undo(); + } + } + }, + + unsetProp: function (propName) { + var dirty = this.dirty; + + delete this.props[propName]; + if (dirty) { + delete dirty[propName]; + } + }, + + writeProps: function(dirtyProps, flushing) { + if (!(dirtyProps && typeof dirtyProps == 'object')) { + return; + } + + var me = this, + el = me.el, + styles = {}, + styleCount = 0, + styleInfo = me.styleInfo, + + info, + propName, + numericValue, + width = dirtyProps.width, + height = dirtyProps.height, + isBorderBox = me.isBorderBoxValue, + target = me.target, + max = Math.max, + paddingWidth = 0, + paddingHeight = 0, + hasWidth, hasHeight, isAbsolute, scrollbarSize, style, targetEl; + + + if ('displayed' in dirtyProps) { + el.setDisplayed(dirtyProps.displayed); + } + + + for (propName in dirtyProps) { + if (flushing) { + me.fireTriggers('domTriggers', propName); + me.clearBlocks('domBlocks', propName); + me.flushedProps[propName] = 1; + } + + info = styleInfo[propName]; + if (info && info.dom) { + + if (info.suffix && (numericValue = parseInt(dirtyProps[propName], 10))) { + styles[propName] = numericValue + info.suffix; + } + + else { + styles[propName] = dirtyProps[propName]; + } + ++styleCount; + } + } + + + if ('x' in dirtyProps || 'y' in dirtyProps) { + if (target.isComponent) { + target.setPosition(dirtyProps.x, dirtyProps.y); + } else { + + styleCount += me.addPositionStyles(styles, dirtyProps); + } + } + + + if (!isBorderBox && (width > 0 || height > 0)) { + + + if(!me.frameBodyContext) { + + paddingWidth = me.paddingInfo.width; + paddingHeight = me.paddingInfo.height; + } + if (width) { + width = max(parseInt(width, 10) - (me.borderInfo.width + paddingWidth), 0); + styles.width = width + 'px'; + ++styleCount; + } + if (height) { + height = max(parseInt(height, 10) - (me.borderInfo.height + paddingHeight), 0); + styles.height = height + 'px'; + ++styleCount; + } + } + + + + + + + + if (me.wrapsComponent && Ext.isIE9 && Ext.isStrict) { + + + if ((hasWidth = width !== undefined && me.hasOverflowY) || + (hasHeight = height !== undefined && me.hasOverflowX)) { + + isAbsolute = me.isAbsolute; + if (isAbsolute === undefined) { + isAbsolute = false; + targetEl = me.target.getTargetEl(); + style = targetEl.getStyle('position'); + + if (style == 'absolute') { + style = targetEl.getStyle('box-sizing'); + isAbsolute = (style == 'border-box'); + } + + me.isAbsolute = isAbsolute; + } + + if (isAbsolute) { + scrollbarSize = Ext.getScrollbarSize(); + + if (hasWidth) { + width = parseInt(width, 10) + scrollbarSize.width; + styles.width = width + 'px'; + ++styleCount; + } + if (hasHeight) { + height = parseInt(height, 10) + scrollbarSize.height; + styles.height = height + 'px'; + ++styleCount; + } + } + } + } + + + if (styleCount) { + el.setStyle(styles); + } + } +}, function () { + + var px = { dom: true, parseInt: true, suffix: 'px' }, + isDom = { dom: true }, + faux = { dom: false }; + + + + + + + + + + this.prototype.styleInfo = { + containerChildrenSizeDone: faux, + containerLayoutDone: faux, + displayed: faux, + done: faux, + x: faux, + y: faux, + + + columnWidthsDone: faux, + + left: px, + top: px, + right: px, + bottom: px, + width: px, + height: px, + + 'border-top-width': px, + 'border-right-width': px, + 'border-bottom-width': px, + 'border-left-width': px, + + 'margin-top': px, + 'margin-right': px, + 'margin-bottom': px, + 'margin-left': px, + + 'padding-top': px, + 'padding-right': px, + 'padding-bottom': px, + 'padding-left': px, + + 'line-height': isDom, + display: isDom + }; +}); + + +Ext.define('Ext.layout.Context', { + + + + + + + + + remainingLayouts: 0, + + + state: 0, + + constructor: function (config) { + var me = this; + + Ext.apply(me, config); + + + me.items = {}; + + + me.layouts = {}; + + + me.blockCount = 0; + + me.cycleCount = 0; + + me.flushCount = 0; + + me.calcCount = 0; + + me.animateQueue = me.newQueue(); + me.completionQueue = me.newQueue(); + me.finalizeQueue = me.newQueue(); + me.finishQueue = me.newQueue(); + me.flushQueue = me.newQueue(); + + me.invalidateData = {}; + + + me.layoutQueue = me.newQueue(); + + + + me.invalidQueue = []; + + me.triggers = { + data: { + + }, + dom: {} + }; + }, + + callLayout: function (layout, methodName) { + this.currentLayout = layout; + layout[methodName](this.getCmp(layout.owner)); + }, + + cancelComponent: function (comp, isChild, isDestroying) { + var me = this, + components = comp, + isArray = !comp.isComponent, + length = isArray ? components.length : 1, + i, k, klen, items, layout, newQueue, oldQueue, entry, temp, + ownerCtContext; + + for (i = 0; i < length; ++i) { + if (isArray) { + comp = components[i]; + } + + + if (isDestroying && comp.ownerCt) { + ownerCtContext = this.items[comp.ownerCt.el.id]; + if (ownerCtContext) { + Ext.Array.remove(ownerCtContext.childItems, me.getCmp(comp)); + } + } + + if (!isChild) { + oldQueue = me.invalidQueue; + klen = oldQueue.length; + + if (klen) { + me.invalidQueue = newQueue = []; + for (k = 0; k < klen; ++k) { + entry = oldQueue[k]; + temp = entry.item.target; + if (temp != comp && !temp.isDescendant(comp)) { + newQueue.push(entry); + } + } + } + } + + layout = comp.componentLayout; + me.cancelLayout(layout); + + if (layout.getLayoutItems) { + items = layout.getLayoutItems(); + if (items.length) { + me.cancelComponent(items, true); + } + } + + if (comp.isContainer && !comp.collapsed) { + layout = comp.layout; + me.cancelLayout(layout); + + items = layout.getVisibleItems(); + if (items.length) { + me.cancelComponent(items, true); + } + } + } + }, + + cancelLayout: function (layout) { + var me = this; + + me.completionQueue.remove(layout); + me.finalizeQueue.remove(layout); + me.finishQueue.remove(layout); + me.layoutQueue.remove(layout); + + if (layout.running) { + me.layoutDone(layout); + } + + layout.ownerContext = null; + }, + + clearTriggers: function (layout, inDom) { + var id = layout.id, + collection = this.triggers[inDom ? 'dom' : 'data'], + triggers = collection && collection[id], + length = (triggers && triggers.length) || 0, + i, item, trigger; + + for (i = 0; i < length; ++i) { + trigger = triggers[i]; + item = trigger.item; + + collection = inDom ? item.domTriggers : item.triggers; + delete collection[trigger.prop][id]; + } + }, + + + flush: function () { + var me = this, + items = me.flushQueue.clear(), + length = items.length, i; + + if (length) { + ++me.flushCount; + + for (i = 0; i < length; ++i) { + items[i].flush(); + } + } + }, + + flushAnimations: function() { + var me = this, + items = me.animateQueue.clear(), + len = items.length, + i; + + if (len) { + for (i = 0; i < len; i++) { + + + + if (items[i].target.animate !== false) { + items[i].flushAnimations(); + } + } + + + + Ext.fx.Manager.runner(); + } + }, + + flushInvalidates: function () { + var me = this, + queue = me.invalidQueue, + length = queue && queue.length, + comp, components, entry, i; + + me.invalidQueue = []; + + if (length) { + components = []; + for (i = 0; i < length; ++i) { + comp = (entry = queue[i]).item.target; + + + + + if (!comp.container.isDetachedBody) { + components.push(comp); + + if (entry.options) { + me.invalidateData[comp.id] = entry.options; + } + } + } + + me.invalidate(components, null); + } + }, + + flushLayouts: function (queueName, methodName, dontClear) { + var me = this, + layouts = dontClear ? me[queueName].items : me[queueName].clear(), + length = layouts.length, + i, layout; + + if (length) { + for (i = 0; i < length; ++i) { + layout = layouts[i]; + if (!layout.running) { + me.callLayout(layout, methodName); + } + } + me.currentLayout = null; + } + }, + + + getCmp: function (cmp) { + return this.getItem(cmp, cmp.el); + }, + + + getEl: function (parent, el) { + var item = this.getItem(el, el); + + if (!item.parent) { + item.parent = parent; + + + + + if (parent.children.length) { + parent.children.push(item); + } else { + parent.children = [ item ]; + } + } + + return item; + }, + + getItem: function (target, el) { + var id = el.id, + items = this.items, + item = items[id] || + (items[id] = new Ext.layout.ContextItem({ + context: this, + target: target, + el: el + })); + + return item; + }, + + handleFailure: function () { + + + + var layouts = this.layouts, + layout, key; + + Ext.failedLayouts = (Ext.failedLayouts || 0) + 1; + + for (key in layouts) { + layout = layouts[key]; + + if (layouts.hasOwnProperty(key)) { + layout.running = false; + layout.ownerContext = null; + } + } + + }, + + + invalidate: function (components, full) { + var me = this, + isArray = !components.isComponent, + containerLayoutDone, + firstTime, i, comp, item, items, length, componentLayout, layout, + invalidateOptions, token; + + for (i = 0, length = isArray ? components.length : 1; i < length; ++i) { + comp = isArray ? components[i] : components; + + if (comp.rendered && !comp.hidden) { + item = me.getCmp(comp); + + + + + + + + componentLayout = comp.componentLayout; + firstTime = !componentLayout.ownerContext; + layout = (comp.isContainer && !comp.collapsed) ? comp.layout : null; + + + invalidateOptions = me.invalidateData[item.id]; + delete me.invalidateData[item.id]; + + + + + + + + token = item.init(full, invalidateOptions); + + if (invalidateOptions) { + me.processInvalidate(invalidateOptions, item, 'before'); + } + + + + + if (componentLayout.beforeLayoutCycle) { + componentLayout.beforeLayoutCycle(item); + } + + if (layout && layout.beforeLayoutCycle) { + + + + + layout.beforeLayoutCycle(item); + } + + + + token = item.initContinue(token); + + + + containerLayoutDone = true; + + + + + + if (componentLayout.getLayoutItems) { + componentLayout.renderChildren(); + + items = componentLayout.getLayoutItems(); + if (items.length) { + me.invalidate(items, true); + } + } + + if (layout) { + containerLayoutDone = false; + layout.renderChildren(); + + items = layout.getVisibleItems(); + if (items.length) { + me.invalidate(items, true); + } + } + + + + item.initDone(containerLayoutDone); + + + + me.resetLayout(componentLayout, item, firstTime); + if (layout) { + me.resetLayout(layout, item, firstTime); + } + + + + + item.initAnimation(); + + if (invalidateOptions) { + me.processInvalidate(invalidateOptions, item, 'after'); + } + } + } + + me.currentLayout = null; + }, + + layoutDone: function (layout) { + var ownerContext = layout.ownerContext; + + layout.running = false; + + + if (layout.isComponentLayout) { + if (ownerContext.measuresBox) { + ownerContext.onBoxMeasured(); + } + + ownerContext.setProp('done', true); + } else { + ownerContext.setProp('containerLayoutDone', true); + } + + --this.remainingLayouts; + ++this.progressCount; + }, + + newQueue: function () { + return new Ext.util.Queue(); + }, + + processInvalidate: function (options, item, name) { + + + if (options[name]) { + var me = this, + currentLayout = me.currentLayout; + + me.currentLayout = options.layout || null; + + options[name](item, options); + + me.currentLayout = currentLayout; + } + }, + + + queueAnimation: function (item) { + this.animateQueue.add(item); + }, + + + queueCompletion: function (layout) { + this.completionQueue.add(layout); + }, + + + queueFinalize: function (layout) { + this.finalizeQueue.add(layout); + }, + + + queueFlush: function (item) { + this.flushQueue.add(item); + }, + + chainFns: function (oldOptions, newOptions, funcName) { + var me = this, + oldLayout = oldOptions.layout, + newLayout = newOptions.layout, + oldFn = oldOptions[funcName], + newFn = newOptions[funcName]; + + + + return function (contextItem) { + var prev = me.currentLayout; + if (oldFn) { + me.currentLayout = oldLayout; + oldFn.call(oldOptions.scope || oldOptions, contextItem, oldOptions); + } + me.currentLayout = newLayout; + newFn.call(newOptions.scope || newOptions, contextItem, newOptions); + me.currentLayout = prev; + }; + }, + + + queueInvalidate: function (item, options) { + var me = this, + newQueue = [], + oldQueue = me.invalidQueue, + index = oldQueue.length, + comp, old, oldComp, oldOptions, oldState; + + if (item.isComponent) { + item = me.getCmp(comp = item); + } else { + comp = item.target; + } + + item.invalid = true; + + + + + while (index--) { + old = oldQueue[index]; + oldComp = old.item.target; + + if (comp.isDescendant(oldComp)) { + return; + } + + if (oldComp == comp) { + + if (!(oldOptions = old.options)) { + old.options = options; + } else if (options) { + if (options.widthModel) { + oldOptions.widthModel = options.widthModel; + } + if (options.heightModel) { + oldOptions.heightModel = options.heightModel; + } + if (!(oldState = oldOptions.state)) { + oldOptions.state = options.state; + } else if (options.state) { + Ext.apply(oldState, options.state); + } + + if (options.before) { + oldOptions.before = me.chainFns(oldOptions, options, 'before'); + } + if (options.after) { + oldOptions.after = me.chainFns(oldOptions, options, 'after'); + } + } + + + return; + } + + if (!oldComp.isDescendant(comp)) { + newQueue.push(old); + } + + } + + + + + newQueue.push({ item: item, options: options }); + + me.invalidQueue = newQueue; + }, + + queueItemLayouts: function (item) { + var comp = item.isComponent ? item : item.target, + layout = comp.componentLayout; + + if (!layout.pending && !layout.invalid && !layout.done) { + this.queueLayout(layout); + } + + layout = comp.layout; + if (layout && !layout.pending && !layout.invalid && !layout.done) { + this.queueLayout(layout); + } + }, + + + queueLayout: function (layout) { + this.layoutQueue.add(layout); + layout.pending = true; + }, + + + removeEl: function (parent, el) { + var id = el.id, + children = parent.children, + items = this.items; + + if(children) { + Ext.Array.remove(children, items[id]); + } + delete items[id]; + }, + + + resetLayout: function (layout, ownerContext, firstTime) { + var me = this; + + me.currentLayout = layout; + + layout.done = false; + layout.pending = true; + layout.firedTriggers = 0; + + me.layoutQueue.add(layout); + + if (firstTime) { + me.layouts[layout.id] = layout; + layout.running = true; + + if (layout.finishedLayout) { + me.finishQueue.add(layout); + } + + + + ++me.remainingLayouts; + ++layout.layoutCount; + + layout.ownerContext = ownerContext; + layout.beginCount = 0; + layout.blockCount = 0; + layout.calcCount = 0; + layout.triggerCount = 0; + + if (!layout.initialized) { + layout.initLayout(); + } + + layout.beginLayout(ownerContext); + } else { + ++layout.beginCount; + + if (!layout.running) { + + ++me.remainingLayouts; + layout.running = true; + + if (layout.isComponentLayout) { + + + + ownerContext.unsetProp('done'); + } + + + me.completionQueue.remove(layout); + me.finalizeQueue.remove(layout); + } + } + + layout.beginLayoutCycle(ownerContext, firstTime); + }, + + + run: function () { + var me = this, + flushed = false, + watchDog = 100; + + me.flushInvalidates(); + + me.state = 1; + me.totalCount = me.layoutQueue.getCount(); + + + + + + + + me.flush(); + + + while ((me.remainingLayouts || me.invalidQueue.length) && watchDog--) { + if (me.invalidQueue.length) { + me.flushInvalidates(); + } + + + if (me.runCycle()) { + flushed = false; + + } else if (!flushed) { + + + me.flush(); + flushed = true; + + me.flushLayouts('completionQueue', 'completeLayout'); + } else if (!me.invalidQueue.length) { + + me.state = 2; + break; + } + + if (!(me.remainingLayouts || me.invalidQueue.length)) { + me.flush(); + me.flushLayouts('completionQueue', 'completeLayout'); + me.flushLayouts('finalizeQueue', 'finalizeLayout'); + } + } + + return me.runComplete(); + }, + + runComplete: function () { + var me = this; + + me.state = 2; + + if (me.remainingLayouts) { + me.handleFailure(); + return false; + } + + me.flush(); + + + me.flushLayouts('finishQueue', 'finishedLayout', true); + + + me.flushLayouts('finishQueue', 'notifyOwner'); + + me.flush(); + + me.flushAnimations(); + + return true; + }, + + + runCycle: function () { + var me = this, + layouts = me.layoutQueue.clear(), + length = layouts.length, + i; + + ++me.cycleCount; + + + + me.progressCount = 0; + + for (i = 0; i < length; ++i) { + me.runLayout(me.currentLayout = layouts[i]); + } + + me.currentLayout = null; + + return me.progressCount > 0; + }, + + + runLayout: function (layout) { + var me = this, + ownerContext = me.getCmp(layout.owner); + + layout.pending = false; + + if (ownerContext.state.blocks) { + return; + } + + + + + + layout.done = true; + + ++layout.calcCount; + ++me.calcCount; + + layout.calculate(ownerContext); + + if (layout.done) { + me.layoutDone(layout); + + if (layout.completeLayout) { + me.queueCompletion(layout); + } + if (layout.finalizeLayout) { + me.queueFinalize(layout); + } + } else if (!layout.pending && !layout.invalid && !(layout.blockCount + layout.triggerCount - layout.firedTriggers)) { + + + me.queueLayout(layout); + } + }, + + + setItemSize: function(item, width, height) { + var items = item, + len = 1, + contextItem, i; + + + + + + + + if (item.isComposite) { + items = item.elements; + len = items.length; + item = items[0]; + } else if (!item.dom && !item.el) { + len = items.length; + item = items[0]; + } + + + for (i = 0; i < len; ) { + contextItem = this.get(item); + contextItem.setSize(width, height); + + item = items[++i]; + } + } +}); + + + + + + + + + + + + + + +Ext.define('Ext.layout.component.Body', { + + + + alias: ['layout.body'], + + extend: Ext.layout.component.Auto , + + + + type: 'body', + + beginLayout: function (ownerContext) { + this.callParent(arguments); + + ownerContext.bodyContext = ownerContext.getEl('body'); + }, + + beginLayoutCycle: function(ownerContext, firstCycle){ + var me = this, + lastWidthModel = me.lastWidthModel, + lastHeightModel = me.lastHeightModel, + body = me.owner.body; + + me.callParent(arguments); + + if (lastWidthModel && lastWidthModel.fixed && ownerContext.widthModel.shrinkWrap) { + body.setWidth(null); + } + + if (lastHeightModel && lastHeightModel.fixed && ownerContext.heightModel.shrinkWrap) { + body.setHeight(null); + } + }, + + + + + + + + + calculateOwnerHeightFromContentHeight: function (ownerContext, contentHeight) { + var height = this.callParent(arguments); + + if (ownerContext.targetContext != ownerContext) { + height += ownerContext.getPaddingInfo().height; + } + + return height; + }, + + calculateOwnerWidthFromContentWidth: function (ownerContext, contentWidth) { + var width = this.callParent(arguments); + + if (ownerContext.targetContext != ownerContext) { + width += ownerContext.getPaddingInfo().width; + } + + return width; + }, + + measureContentWidth: function (ownerContext) { + return ownerContext.bodyContext.setWidth(ownerContext.bodyContext.el.dom.offsetWidth, false); + }, + + measureContentHeight: function (ownerContext) { + return ownerContext.bodyContext.setHeight(ownerContext.bodyContext.el.dom.offsetHeight, false); + }, + + publishInnerHeight: function (ownerContext, height) { + var innerHeight = height - ownerContext.getFrameInfo().height, + targetContext = ownerContext.targetContext; + + if (targetContext != ownerContext) { + innerHeight -= ownerContext.getPaddingInfo().height; + } + + + return ownerContext.bodyContext.setHeight(innerHeight, !ownerContext.heightModel.natural); + }, + + publishInnerWidth: function (ownerContext, width) { + var innerWidth = width - ownerContext.getFrameInfo().width, + targetContext = ownerContext.targetContext; + + if (targetContext != ownerContext) { + innerWidth -= ownerContext.getPaddingInfo().width; + } + + ownerContext.bodyContext.setWidth(innerWidth, !ownerContext.widthModel.natural); + } +}); + + +Ext.define('Ext.layout.component.FieldSet', { + extend: Ext.layout.component.Body , + alias: ['layout.fieldset'], + + type: 'fieldset', + + defaultCollapsedWidth: 100, + + beforeLayoutCycle: function (ownerContext) { + if (ownerContext.target.collapsed) { + ownerContext.heightModel = this.sizeModels.shrinkWrap; + } + }, + + beginLayoutCycle: function (ownerContext) { + var target = ownerContext.target, + lastSize; + + this.callParent(arguments); + + + + + if (target.collapsed) { + ownerContext.setContentHeight(0); + + + ownerContext.restoreMinHeight = target.minHeight; + delete target.minHeight; + + + + + if (ownerContext.widthModel.shrinkWrap) { + lastSize = target.lastComponentSize; + ownerContext.setContentWidth((lastSize && lastSize.contentWidth) || this.defaultCollapsedWidth); + } + } + }, + + finishedLayout: function(ownerContext) { + var owner = this.owner, + restore = ownerContext.restoreMinHeight; + + this.callParent(arguments); + if (restore) { + owner.minHeight = restore; + } + }, + + calculateOwnerHeightFromContentHeight: function (ownerContext, contentHeight) { + var border = ownerContext.getBorderInfo(), + legend = ownerContext.target.legend; + + + + return ownerContext.getProp('contentHeight') + + ownerContext.getPaddingInfo().height + + + ((Ext.isIEQuirks || Ext.isIE8m) ? + ownerContext.bodyContext.getPaddingInfo().top : 0) + + (legend ? legend.getHeight() : border.top) + + border.bottom; + }, + + publishInnerHeight: function (ownerContext, height) { + + + + var legend = ownerContext.target.legend; + if (legend) { + height -= legend.getHeight(); + } + this.callParent([ownerContext, height]); + }, + + getLayoutItems : function() { + var legend = this.owner.legend; + return legend ? [legend] : []; + } +}); + + +Ext.define('Ext.layout.component.field.Slider', { + + + + alias: ['layout.sliderfield'], + + extend: Ext.layout.component.field.Field , + + + + type: 'sliderfield', + + beginLayout: function(ownerContext) { + this.callParent(arguments); + + ownerContext.endElContext = ownerContext.getEl('endEl'); + ownerContext.innerElContext = ownerContext.getEl('innerEl'); + ownerContext.bodyElContext = ownerContext.getEl('bodyEl'); + }, + + publishInnerHeight: function (ownerContext, height) { + var innerHeight = height - this.measureLabelErrorHeight(ownerContext), + endElPad, + inputPad; + if (this.owner.vertical) { + endElPad = ownerContext.endElContext.getPaddingInfo(); + inputPad = ownerContext.inputContext.getPaddingInfo(); + ownerContext.innerElContext.setHeight(innerHeight - inputPad.height - endElPad.height); + } else { + ownerContext.bodyElContext.setHeight(innerHeight); + } + }, + + publishInnerWidth: function (ownerContext, width) { + if (!this.owner.vertical) { + var endElPad = ownerContext.endElContext.getPaddingInfo(), + inputPad = ownerContext.inputContext.getPaddingInfo(); + + ownerContext.innerElContext.setWidth(width - inputPad.left - endElPad.right - ownerContext.labelContext.getProp('width')); + } + }, + + beginLayoutFixed: function(ownerContext, width, suffix) { + var me = this, + ieInputWidthAdjustment = me.ieInputWidthAdjustment; + + if (ieInputWidthAdjustment) { + + + me.owner.bodyEl.setStyle('padding-right', ieInputWidthAdjustment + 'px'); + } + + me.callParent(arguments); + } +}); + + +Ext.define('Ext.layout.container.Absolute', { + + + + alias: 'layout.absolute', + extend: Ext.layout.container.Anchor , + alternateClassName: 'Ext.layout.AbsoluteLayout', + + + + targetCls: Ext.baseCSSPrefix + 'abs-layout-ct', + itemCls: Ext.baseCSSPrefix + 'abs-layout-item', + + + ignoreOnContentChange: true, + + type: 'absolute', + + + adjustWidthAnchor: function(value, childContext) { + var padding = this.targetPadding, + x = childContext.getStyle('left'); + + return value - x + padding.left; + }, + + + adjustHeightAnchor: function(value, childContext) { + var padding = this.targetPadding, + y = childContext.getStyle('top'); + + return value - y + padding.top; + }, + + isItemLayoutRoot: function (item) { + return this.ignoreOnContentChange || this.callParent(arguments); + }, + + isItemShrinkWrap: function (item) { + return true; + }, + + beginLayout: function (ownerContext) { + var me = this, + target = me.getTarget(); + + me.callParent(arguments); + + + if (target.dom !== document.body) { + target.position(); + } + + me.targetPadding = ownerContext.targetContext.getPaddingInfo(); + }, + + isItemBoxParent: function (itemContext) { + return true; + }, + + onContentChange: function () { + if (this.ignoreOnContentChange) { + return false; + } + return this.callParent(arguments); + }, + + calculateContentSize: function (ownerContext, dimensions) { + var me = this, + containerDimensions = (dimensions || 0) | + ((ownerContext.widthModel.shrinkWrap ? 1 : 0) | + (ownerContext.heightModel.shrinkWrap ? 2 : 0)), + calcWidth = (containerDimensions & 1) || undefined, + calcHeight = (containerDimensions & 2) || undefined, + childItems = ownerContext.childItems, + length = childItems.length, + contentHeight = 0, + contentWidth = 0, + needed = 0, + props = ownerContext.props, + targetPadding, child, childContext, height, i, margins, width; + + if (calcWidth) { + if (isNaN(props.contentWidth)) { + ++needed; + } else { + calcWidth = undefined; + } + } + if (calcHeight) { + if (isNaN(props.contentHeight)) { + ++needed; + } else { + calcHeight = undefined; + } + } + + if (needed) { + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + child = childContext.target; + height = calcHeight && childContext.getProp('height'); + width = calcWidth && childContext.getProp('width'); + margins = childContext.getMarginInfo(); + + height += margins.bottom; + width += margins.right; + + contentHeight = Math.max(contentHeight, (child.y || 0) + height); + contentWidth = Math.max(contentWidth, (child.x || 0) + width); + + if (isNaN(contentHeight) && isNaN(contentWidth)) { + me.done = false; + return; + } + } + + if (calcWidth || calcHeight) { + targetPadding = ownerContext.targetContext.getPaddingInfo(); + } + if (calcWidth && !ownerContext.setContentWidth(contentWidth + targetPadding.width)) { + me.done = false; + } + if (calcHeight && !ownerContext.setContentHeight(contentHeight + targetPadding.height)) { + me.done = false; + } + + + } + } +}); + + +Ext.define('Ext.layout.container.Accordion', { + extend: Ext.layout.container.VBox , + alias: ['layout.accordion'], + alternateClassName: 'Ext.layout.AccordionLayout', + + targetCls: Ext.baseCSSPrefix + 'accordion-layout-ct', + itemCls: [Ext.baseCSSPrefix + 'box-item', Ext.baseCSSPrefix + 'accordion-item'], + + align: 'stretch', + + + fill : true, + + + + + titleCollapse : true, + + + hideCollapseTool : false, + + + collapseFirst : undefined, + + + animate : true, + + activeOnTop : false, + + multi: false, + + defaultAnimatePolicy: { + y: true, + height: true + }, + + constructor: function() { + var me = this; + + me.callParent(arguments); + + if (!me.multi && me.animate) { + me.animatePolicy = Ext.apply({}, me.defaultAnimatePolicy); + } else { + me.animatePolicy = null; + } + }, + + beforeRenderItems: function (items) { + var me = this, + ln = items.length, + i = 0, + owner = me.owner, + collapseFirst = me.collapseFirst, + hasCollapseFirst = Ext.isDefined(collapseFirst), + expandedItem = me.getExpanded(true)[0], + multi = me.multi, + comp; + + for (; i < ln; i++) { + comp = items[i]; + if (!comp.rendered) { + + if (!multi || comp.collapsible !== false) { + comp.collapsible = true; + } + + if (comp.collapsible) { + if (hasCollapseFirst) { + comp.collapseFirst = collapseFirst; + } + if (me.hideCollapseTool) { + comp.hideCollapseTool = me.hideCollapseTool; + comp.titleCollapse = true; + } else if (me.titleCollapse && comp.titleCollapse === undefined) { + + + comp.titleCollapse = me.titleCollapse; + } + } + + delete comp.hideHeader; + delete comp.width; + comp.title = comp.title || ' '; + comp.addBodyCls(Ext.baseCSSPrefix + 'accordion-body'); + + + + + if (!multi) { + if (expandedItem) { + comp.collapsed = expandedItem !== comp; + } else if (comp.hasOwnProperty('collapsed') && comp.collapsed === false) { + expandedItem = comp; + } else { + comp.collapsed = true; + } + + + owner.mon(comp, { + show: me.onComponentShow, + beforeexpand: me.onComponentExpand, + beforecollapse: me.onComponentCollapse, + scope: me + }); + } + + + owner.mon(comp, 'beforecollapse', me.onComponentCollapse, me); + comp.headerOverCls = Ext.baseCSSPrefix + 'accordion-hd-over'; + } + } + + + if (!multi) { + if (!expandedItem) { + if (ln) { + items[0].collapsed = false; + } + } else if (me.activeOnTop) { + expandedItem.collapsed = false; + me.configureItem(expandedItem); + if (owner.items.indexOf(expandedItem) > 0) { + owner.insert(0, expandedItem); + } + } + } + }, + + getItemsRenderTree: function(items) { + this.beforeRenderItems(items); + return this.callParent(arguments); + }, + + renderItems : function(items, target) { + this.beforeRenderItems(items); + + this.callParent(arguments); + }, + + configureItem: function(item) { + this.callParent(arguments); + + + + item.animCollapse = item.border = false; + + + if (this.fill) { + item.flex = 1; + } + }, + + beginLayout: function (ownerContext) { + this.callParent(arguments); + this.updatePanelClasses(ownerContext); + }, + + updatePanelClasses: function(ownerContext) { + var children = ownerContext.visibleItems, + ln = children.length, + siblingCollapsed = true, + i, child, header; + + for (i = 0; i < ln; i++) { + child = children[i]; + header = child.header; + header.addCls(Ext.baseCSSPrefix + 'accordion-hd'); + + if (siblingCollapsed) { + header.removeCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded'); + } else { + header.addCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded'); + } + + if (i + 1 == ln && child.collapsed) { + header.addCls(Ext.baseCSSPrefix + 'accordion-hd-last-collapsed'); + } else { + header.removeCls(Ext.baseCSSPrefix + 'accordion-hd-last-collapsed'); + } + + siblingCollapsed = child.collapsed; + } + }, + + + + + onComponentExpand: function(toExpand) { + var me = this, + owner = me.owner, + multi = me.multi, + animate = me.animate, + moveToTop = !multi && !me.animate && me.activeOnTop, + expanded, + expandedCount, i, + previousValue; + + if (!me.processing) { + me.processing = true; + previousValue = owner.deferLayouts; + owner.deferLayouts = true; + expanded = multi ? [] : me.getExpanded(); + expandedCount = expanded.length; + + + for (i = 0; i < expandedCount; i++) { + expanded[i].collapse(); + } + + if (moveToTop) { + + Ext.suspendLayouts(); + owner.insert(0, toExpand); + Ext.resumeLayouts(); + } + + owner.deferLayouts = previousValue; + me.processing = false; + } + }, + + onComponentCollapse: function(comp) { + var me = this, + owner = me.owner, + toExpand, + expanded, + previousValue; + + if (me.owner.items.getCount() === 1) { + + return false; + } + + if (!me.processing) { + me.processing = true; + previousValue = owner.deferLayouts; + owner.deferLayouts = true; + toExpand = comp.next() || comp.prev(); + + + + if (me.multi) { + expanded = me.getExpanded(); + + + + if (expanded.length === 1) { + toExpand.expand(); + } + + } else if (toExpand) { + toExpand.expand(); + } + owner.deferLayouts = previousValue; + me.processing = false; + } + }, + + onComponentShow: function(comp) { + + this.onComponentExpand(comp); + }, + + getExpanded: function(explicitCheck){ + var items = this.owner.items.items, + len = items.length, + i = 0, + out = [], + add, + item; + + for (; i < len; ++i) { + item = items[i]; + if (explicitCheck) { + add = item.hasOwnProperty('collapsed') && item.collapsed === false; + } else { + add = !item.collapsed; + } + if (add) { + out.push(item); + } + } + return out; + + } +}); + + +Ext.define('Ext.resizer.Splitter', { + extend: Ext.Component , + + + alias: 'widget.splitter', + + childEls: [ + 'collapseEl' + ], + + renderTpl: [ + '', + '
     ', + '
    ', + '
    ' + ], + + baseCls: Ext.baseCSSPrefix + 'splitter', + collapsedClsInternal: Ext.baseCSSPrefix + 'splitter-collapsed', + + + canResize: true, + + + collapsible: false, + + + + + collapseOnDblClick: true, + + + defaultSplitMin: 40, + + + defaultSplitMax: 1000, + + + + + collapseTarget: 'next', + + + + horizontal: false, + vertical: false, + + + size: 5, + + + getTrackerConfig: function () { + return { + xclass: 'Ext.resizer.SplitterTracker', + el: this.el, + splitter: this + }; + }, + + beforeRender: function() { + var me = this, + target = me.getCollapseTarget(); + + me.callParent(); + + if (target.collapsed) { + me.addCls(me.collapsedClsInternal); + } + if (!me.canResize) { + me.addCls(me.baseCls + '-noresize'); + } + + Ext.applyIf(me.renderData, { + collapseDir: me.getCollapseDirection(), + collapsible: me.collapsible || target.collapsible + }); + + me.protoEl.unselectable(); + }, + + onRender: function() { + var me = this, + collapseEl; + + me.callParent(arguments); + + + if (me.performCollapse !== false) { + if (me.renderData.collapsible) { + me.mon(me.collapseEl, 'click', me.toggleTargetCmp, me); + } + if (me.collapseOnDblClick) { + me.mon(me.el, 'dblclick', me.toggleTargetCmp, me); + } + } + + + me.mon(me.getCollapseTarget(), { + collapse: me.onTargetCollapse, + expand: me.onTargetExpand, + beforeexpand: me.onBeforeTargetExpand, + beforecollapse: me.onBeforeTargetCollapse, + scope: me + }); + + if (me.canResize) { + me.tracker = Ext.create(me.getTrackerConfig()); + + me.relayEvents(me.tracker, [ 'beforedragstart', 'dragstart', 'dragend' ]); + } + + collapseEl = me.collapseEl; + if (collapseEl) { + collapseEl.lastCollapseDirCls = me.collapseDirProps[me.collapseDirection].cls; + } + }, + + getCollapseDirection: function() { + var me = this, + dir = me.collapseDirection, + collapseTarget, idx, items, type; + + if (!dir) { + collapseTarget = me.collapseTarget; + if (collapseTarget.isComponent) { + dir = collapseTarget.collapseDirection; + } + + if (!dir) { + + + + + + + + type = me.ownerCt.layout.type; + if (collapseTarget.isComponent) { + items = me.ownerCt.items; + idx = Number(items.indexOf(collapseTarget) === items.indexOf(me) - 1) << 1 | Number(type === 'hbox'); + } else { + idx = Number(me.collapseTarget === 'prev') << 1 | Number(type === 'hbox'); + } + + + dir = ['bottom', 'right', 'top', 'left'][idx]; + } + + me.collapseDirection = dir; + } + + me.setOrientation((dir === 'top' || dir === 'bottom') ? 'horizontal' : 'vertical'); + + return dir; + }, + + getCollapseTarget: function() { + var me = this; + + return me.collapseTarget.isComponent ? me.collapseTarget + : me.collapseTarget === 'prev' ? me.previousSibling() : me.nextSibling(); + }, + + setCollapseEl: function(display){ + var el = this.collapseEl; + if (el) { + el.setDisplayed(display); + } + }, + + onBeforeTargetExpand: function(target) { + this.setCollapseEl('none'); + }, + + onBeforeTargetCollapse: function(){ + this.setCollapseEl('none'); + }, + + onTargetCollapse: function(target) { + this.el.addCls([this.collapsedClsInternal, this.collapsedCls]); + this.setCollapseEl(''); + }, + + onTargetExpand: function(target) { + this.el.removeCls([this.collapsedClsInternal, this.collapsedCls]); + this.setCollapseEl(''); + }, + + collapseDirProps: { + top: { + cls: Ext.baseCSSPrefix + 'layout-split-top' + }, + right: { + cls: Ext.baseCSSPrefix + 'layout-split-right' + }, + bottom: { + cls: Ext.baseCSSPrefix + 'layout-split-bottom' + }, + left: { + cls: Ext.baseCSSPrefix + 'layout-split-left' + } + }, + + orientationProps: { + horizontal: { + opposite: 'vertical', + fixedAxis: 'height', + stretchedAxis: 'width' + }, + vertical: { + opposite: 'horizontal', + fixedAxis: 'width', + stretchedAxis: 'height' + } + }, + + applyCollapseDirection: function () { + var me = this, + collapseEl = me.collapseEl, + collapseDirProps = me.collapseDirProps[me.collapseDirection], + cls; + + if (collapseEl) { + cls = collapseEl.lastCollapseDirCls; + if (cls) { + collapseEl.removeCls(cls); + } + + collapseEl.addCls(collapseEl.lastCollapseDirCls = collapseDirProps.cls); + } + }, + + applyOrientation: function () { + var me = this, + orientation = me.orientation, + orientationProps = me.orientationProps[orientation], + defaultSize = me.size, + fixedSizeProp = orientationProps.fixedAxis, + stretchSizeProp = orientationProps.stretchedAxis, + cls = me.baseCls + '-'; + + me[orientation] = true; + me[orientationProps.opposite] = false; + + if (!me.hasOwnProperty(fixedSizeProp) || me[fixedSizeProp] === '100%') { + me[fixedSizeProp] = defaultSize; + } + if (!me.hasOwnProperty(stretchSizeProp) || me[stretchSizeProp] === defaultSize) { + me[stretchSizeProp] = '100%'; + } + + me.removeCls(cls + orientationProps.opposite); + me.addCls(cls + orientation); + }, + + setOrientation: function (orientation) { + var me = this; + + if (me.orientation !== orientation) { + me.orientation = orientation; + me.applyOrientation(); + } + }, + + updateOrientation: function () { + delete this.collapseDirection; + this.getCollapseDirection(); + this.applyCollapseDirection(); + }, + + toggleTargetCmp: function(e, t) { + var cmp = this.getCollapseTarget(), + placeholder = cmp.placeholder, + toggle; + + + if (Ext.isFunction(cmp.expand) && Ext.isFunction(cmp.collapse)) { + if (placeholder && !placeholder.hidden) { + toggle = true; + } else { + toggle = !cmp.hidden; + } + + if (toggle) { + if (cmp.collapsed) { + cmp.expand(); + } else if (cmp.collapseDirection) { + cmp.collapse(); + } else { + cmp.collapse(this.renderData.collapseDir); + } + } + } + }, + + + setSize: function() { + var me = this; + me.callParent(arguments); + if (Ext.isIE && me.el) { + me.el.repaint(); + } + }, + + beforeDestroy: function(){ + Ext.destroy(this.tracker); + this.callParent(); + } +}); + + +Ext.define('Ext.resizer.BorderSplitter', { + extend: Ext.resizer.Splitter , + + + + alias: 'widget.bordersplitter', + + + collapseTarget: null, + + getTrackerConfig: function () { + var trackerConfig = this.callParent(); + + trackerConfig.xclass = 'Ext.resizer.BorderSplitterTracker'; + + return trackerConfig; + } +}); + + +Ext.define('Ext.layout.container.Border', { + + extend: Ext.layout.container.Container , + alias: 'layout.border', + alternateClassName: 'Ext.layout.BorderLayout', + + + + + + + + + + + targetCls: Ext.baseCSSPrefix + 'border-layout-ct', + + itemCls: [Ext.baseCSSPrefix + 'border-item', Ext.baseCSSPrefix + 'box-item'], + + type: 'border', + + isBorderLayout: true, + + + + + + + padding: undefined, + + percentageRe: /(\d+)%/, + + horzMarginProp: 'left', + padOnContainerProp: 'left', + padNotOnContainerProp: 'right', + + + axisProps: { + horz: { + borderBegin: 'west', + borderEnd: 'east', + horizontal: true, + posProp: 'x', + sizeProp: 'width', + sizePropCap: 'Width' + }, + vert: { + borderBegin: 'north', + borderEnd: 'south', + horizontal: false, + posProp: 'y', + sizeProp: 'height', + sizePropCap: 'Height' + } + }, + + + centerRegion: null, + + manageMargins: true, + + panelCollapseAnimate: true, + + panelCollapseMode: 'placeholder', + + + regionWeights: { + north: 20, + south: 10, + center: 0, + west: -10, + east: -20 + }, + + + + + + beginAxis: function (ownerContext, regions, name) { + var me = this, + props = me.axisProps[name], + isVert = !props.horizontal, + sizeProp = props.sizeProp, + totalFlex = 0, + childItems = ownerContext.childItems, + length = childItems.length, + center, i, childContext, centerFlex, comp, region, match, size, type, target, placeholder; + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + comp = childContext.target; + + childContext.layoutPos = {}; + + if (comp.region) { + childContext.region = region = comp.region; + + childContext.isCenter = comp.isCenter; + childContext.isHorz = comp.isHorz; + childContext.isVert = comp.isVert; + + childContext.weight = comp.weight || me.regionWeights[region] || 0; + regions[comp.id] = childContext; + + if (comp.isCenter) { + center = childContext; + centerFlex = comp.flex; + ownerContext.centerRegion = center; + + continue; + } + + if (isVert !== childContext.isVert) { + continue; + } + + + + childContext.reverseWeighting = (region == props.borderEnd); + + size = comp[sizeProp]; + type = typeof size; + + if (!comp.collapsed) { + if (type == 'string' && (match = me.percentageRe.exec(size))) { + childContext.percentage = parseInt(match[1], 10); + } else if (comp.flex) { + totalFlex += childContext.flex = comp.flex; + } + } + } + } + + + if (center) { + target = center.target; + + if ((placeholder = target.placeholderFor)) { + if (!centerFlex && isVert === placeholder.collapsedVertical()) { + + centerFlex = 0; + center.collapseAxis = name; + } + } else if (target.collapsed && (isVert === target.collapsedVertical())) { + + centerFlex = 0; + center.collapseAxis = name; + } + } + + if (centerFlex == null) { + + centerFlex = 1; + } + + totalFlex += centerFlex; + + return Ext.apply({ + before : isVert ? 'top' : 'left', + totalFlex : totalFlex + }, props); + }, + + beginLayout: function (ownerContext) { + var me = this, + items = me.getLayoutItems(), + pad = me.padding, + type = typeof pad, + padOnContainer = false, + childContext, item, length, i, regions, collapseTarget, + doShow, hidden, region; + + + if (pad) { + if (type == 'string' || type == 'number') { + pad = Ext.util.Format.parseBox(pad); + } + } else { + pad = ownerContext.getEl('getTargetEl').getPaddingInfo(); + padOnContainer = true; + } + ownerContext.outerPad = pad; + ownerContext.padOnContainer = padOnContainer; + + for (i = 0, length = items.length; i < length; ++i) { + item = items[i]; + collapseTarget = me.getSplitterTarget(item); + if (collapseTarget) { + doShow = undefined; + hidden = !!item.hidden; + if (!collapseTarget.split) { + if (collapseTarget.isCollapsingOrExpanding) { + doShow = !!collapseTarget.collapsed; + } + } else if (hidden !== collapseTarget.hidden) { + doShow = !collapseTarget.hidden; + } + + if (doShow) { + item.show(); + } else if (doShow === false) { + item.hide(); + } + } + } + + + + + me.callParent(arguments); + + items = ownerContext.childItems; + length = items.length; + regions = {}; + + ownerContext.borderAxisHorz = me.beginAxis(ownerContext, regions, 'horz'); + ownerContext.borderAxisVert = me.beginAxis(ownerContext, regions, 'vert'); + + + + + for (i = 0; i < length; ++i) { + childContext = items[i]; + collapseTarget = me.getSplitterTarget(childContext.target); + + if (collapseTarget) { + region = regions[collapseTarget.id] + if (!region) { + + + + region = ownerContext.getEl(collapseTarget.el, me); + region.region = collapseTarget.region; + } + childContext.collapseTarget = collapseTarget = region; + childContext.weight = collapseTarget.weight; + childContext.reverseWeighting = collapseTarget.reverseWeighting; + collapseTarget.splitter = childContext; + childContext.isHorz = collapseTarget.isHorz; + childContext.isVert = collapseTarget.isVert; + } + } + + + me.sortWeightedItems(items, 'reverseWeighting'); + me.setupSplitterNeighbors(items); + }, + + calculate: function (ownerContext) { + var me = this, + containerSize = me.getContainerSize(ownerContext), + childItems = ownerContext.childItems, + length = childItems.length, + horz = ownerContext.borderAxisHorz, + vert = ownerContext.borderAxisVert, + pad = ownerContext.outerPad, + padOnContainer = ownerContext.padOnContainer, + i, childContext, childMargins, size, horzPercentTotal, vertPercentTotal; + + horz.begin = pad[me.padOnContainerProp]; + vert.begin = pad.top; + + + + horzPercentTotal = horz.end = horz.flexSpace = containerSize.width + (padOnContainer ? pad[me.padOnContainerProp] : -pad[me.padNotOnContainerProp]); + vertPercentTotal = vert.end = vert.flexSpace = containerSize.height + (padOnContainer ? pad.top : -pad.bottom); + + + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + childMargins = childContext.getMarginInfo(); + + + if (childContext.isHorz || childContext.isCenter) { + horz.addUnflexed(childMargins.width); + horzPercentTotal -= childMargins.width; + } + + if (childContext.isVert || childContext.isCenter) { + vert.addUnflexed(childMargins.height); + vertPercentTotal -= childMargins.height; + } + + + if (!childContext.flex && !childContext.percentage) { + if (childContext.isHorz || (childContext.isCenter && childContext.collapseAxis === 'horz')) { + size = childContext.getProp('width'); + + horz.addUnflexed(size); + + + if (childContext.collapseTarget) { + horzPercentTotal -= size; + } + } else if (childContext.isVert || (childContext.isCenter && childContext.collapseAxis === 'vert')) { + size = childContext.getProp('height'); + + vert.addUnflexed(size); + + + if (childContext.collapseTarget) { + vertPercentTotal -= size; + } + } + + } + } + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + childMargins = childContext.getMarginInfo(); + + + if (childContext.percentage) { + if (childContext.isHorz) { + size = Math.ceil(horzPercentTotal * childContext.percentage / 100); + size = childContext.setWidth(size); + horz.addUnflexed(size); + } else if (childContext.isVert) { + size = Math.ceil(vertPercentTotal * childContext.percentage / 100); + size = childContext.setHeight(size); + vert.addUnflexed(size); + } + + } + } + + + + + + for (i = 0; i < length; ++i) { + childContext = childItems[i]; + + if (!childContext.isCenter) { + me.calculateChildAxis(childContext, horz); + me.calculateChildAxis(childContext, vert); + } + } + + + + + if (me.finishAxis(ownerContext, vert) + me.finishAxis(ownerContext, horz) < 2) { + me.done = false; + } else { + + + + me.finishPositions(childItems); + } + }, + + + calculateChildAxis: function (childContext, axis) { + var collapseTarget = childContext.collapseTarget, + setSizeMethod = 'set' + axis.sizePropCap, + sizeProp = axis.sizeProp, + childMarginSize = childContext.getMarginInfo()[sizeProp], + region, isBegin, flex, pos, size; + + if (collapseTarget) { + region = collapseTarget.region; + } else { + region = childContext.region; + flex = childContext.flex; + } + + isBegin = region == axis.borderBegin; + + if (!isBegin && region != axis.borderEnd) { + + + childContext[setSizeMethod](axis.end - axis.begin - childMarginSize); + pos = axis.begin; + } else { + if (flex) { + size = Math.ceil(axis.flexSpace * (flex / axis.totalFlex)); + size = childContext[setSizeMethod](size); + } else if (childContext.percentage) { + + size = childContext.peek(sizeProp); + } else { + size = childContext.getProp(sizeProp); + } + + size += childMarginSize; + + if (isBegin) { + pos = axis.begin; + axis.begin += size; + } else { + axis.end = pos = axis.end - size; + } + } + + childContext.layoutPos[axis.posProp] = pos; + }, + + + finishAxis: function (ownerContext, axis) { + var size = axis.end - axis.begin, + center = ownerContext.centerRegion; + + if (center) { + center['set' + axis.sizePropCap](size - center.getMarginInfo()[axis.sizeProp]); + center.layoutPos[axis.posProp] = axis.begin; + } + + return Ext.isNumber(size) ? 1 : 0; + }, + + + finishPositions: function (childItems) { + var length = childItems.length, + index, childContext, + marginProp = this.horzMarginProp; + + for (index = 0; index < length; ++index) { + childContext = childItems[index]; + + childContext.setProp('x', childContext.layoutPos.x + childContext.marginInfo[marginProp]); + childContext.setProp('y', childContext.layoutPos.y + childContext.marginInfo.top); + } + }, + + getLayoutItems: function() { + var owner = this.owner, + ownerItems = (owner && owner.items && owner.items.items) || [], + length = ownerItems.length, + items = [], + i = 0, + ownerItem, placeholderFor; + + for (; i < length; i++) { + ownerItem = ownerItems[i]; + placeholderFor = ownerItem.placeholderFor; + + + + + + + + + + + + + + + + + + + + + + if (ownerItem.hidden || ((!ownerItem.floated || ownerItem.isCollapsingOrExpanding === 2) && + !(placeholderFor && placeholderFor.isCollapsingOrExpanding === 2))) { + items.push(ownerItem); + } + } + + return items; + }, + + getPlaceholder: function (comp) { + return comp.getPlaceholder && comp.getPlaceholder(); + }, + + getSplitterTarget: function (splitter) { + var collapseTarget = splitter.collapseTarget; + + if (collapseTarget && collapseTarget.collapsed) { + return collapseTarget.placeholder || collapseTarget; + } + + return collapseTarget; + }, + + isItemBoxParent: function (itemContext) { + return true; + }, + + isItemShrinkWrap: function (item) { + return true; + }, + + + + + + insertSplitter: function (item, index, hidden, splitterCfg) { + var region = item.region, + splitter = Ext.apply({ + xtype: 'bordersplitter', + collapseTarget: item, + id: item.id + '-splitter', + hidden: hidden, + canResize: item.splitterResize !== false, + splitterFor: item + }, splitterCfg), + at = index + ((region === 'south' || region === 'east') ? 0 : 1); + + if (item.collapseMode === 'mini') { + splitter.collapsedCls = item.collapsedCls; + } + + item.splitter = this.owner.add(at, splitter); + }, + + + onAdd: function (item, index) { + var me = this, + placeholderFor = item.placeholderFor, + region = item.region, + split, + hidden, + cfg; + + me.callParent(arguments); + + if (region) { + Ext.apply(item, me.regionFlags[region]); + + if (item.initBorderRegion) { + + + item.initBorderRegion(); + } + + if (region === 'center') { + me.centerRegion = item; + } else { + split = item.split; + hidden = !!item.hidden; + + if (typeof split === 'object') { + cfg = split; + split = true; + } + + if ((item.isHorz || item.isVert) && (split || item.collapseMode == 'mini')) { + me.insertSplitter(item, index, hidden || !split, cfg); + } + } + + if (!item.hasOwnProperty('collapseMode')) { + item.collapseMode = me.panelCollapseMode; + } + + if (!item.hasOwnProperty('animCollapse')) { + if (item.collapseMode !== 'placeholder') { + + + item.animCollapse = false; + } else { + item.animCollapse = me.panelCollapseAnimate; + } + } + } else if (placeholderFor) { + Ext.apply(item, me.regionFlags[placeholderFor.region]); + item.region = placeholderFor.region; + item.weight = placeholderFor.weight; + } + }, + + onDestroy: function() { + this.centerRegion = null; + this.callParent(); + }, + + onRemove: function (item) { + var me = this, + region = item.region, + splitter = item.splitter; + + if (region) { + if (item.isCenter) { + me.centerRegion = null; + } + + delete item.isCenter; + delete item.isHorz; + delete item.isVert; + + if (splitter) { + me.owner.doRemove(splitter, true); + delete item.splitter; + } + } + + me.callParent(arguments); + }, + + + + + regionMeta: { + center: { splitterDelta: 0 }, + + north: { splitterDelta: 1 }, + south: { splitterDelta: -1 }, + + west: { splitterDelta: 1 }, + east: { splitterDelta: -1 } + }, + + + regionFlags: { + center: { isCenter: true, isHorz: false, isVert: false }, + + north: { isCenter: false, isHorz: false, isVert: true, collapseDirection: 'top' }, + south: { isCenter: false, isHorz: false, isVert: true, collapseDirection: 'bottom' }, + + west: { isCenter: false, isHorz: true, isVert: false, collapseDirection: 'left' }, + east: { isCenter: false, isHorz: true, isVert: false, collapseDirection: 'right' } + }, + + setupSplitterNeighbors: function (items) { + var edgeRegions = { + + + + + }, + length = items.length, + touchedRegions = this.touchedRegions, + i, j, center, count, edge, comp, region, splitter, touched; + + for (i = 0; i < length; ++i) { + comp = items[i].target; + region = comp.region; + + if (comp.isCenter) { + center = comp; + } else if (region) { + touched = touchedRegions[region]; + + for (j = 0, count = touched.length; j < count; ++j) { + edge = edgeRegions[touched[j]]; + if (edge) { + edge.neighbors.push(comp); + } + } + + if (comp.placeholderFor) { + + splitter = comp.placeholderFor.splitter; + } else { + splitter = comp.splitter; + } + if (splitter) { + splitter.neighbors = []; + } + + edgeRegions[region] = splitter; + } + } + + if (center) { + touched = touchedRegions.center; + + for (j = 0, count = touched.length; j < count; ++j) { + edge = edgeRegions[touched[j]]; + if (edge) { + edge.neighbors.push(center); + } + } + } + }, + + + touchedRegions: { + center: [ 'north', 'south', 'east', 'west' ], + + north: [ 'north', 'east', 'west' ], + south: [ 'south', 'east', 'west' ], + east: [ 'east', 'north', 'south' ], + west: [ 'west', 'north', 'south' ] + }, + + sizePolicies: { + vert: { + readsWidth: 0, + readsHeight: 1, + setsWidth: 1, + setsHeight: 0 + }, + horz: { + readsWidth: 1, + readsHeight: 0, + setsWidth: 0, + setsHeight: 1 + }, + flexAll: { + readsWidth: 0, + readsHeight: 0, + setsWidth: 1, + setsHeight: 1 + } + }, + + getItemSizePolicy: function (item) { + var me = this, + policies = this.sizePolicies, + collapseTarget, size, policy, placeholderFor; + + if (item.isCenter) { + placeholderFor = item.placeholderFor; + + if (placeholderFor) { + if (placeholderFor.collapsedVertical()) { + return policies.vert; + } + return policies.horz; + } + if (item.collapsed) { + if (item.collapsedVertical()) { + return policies.vert; + } + return policies.horz; + } + return policies.flexAll; + } + + collapseTarget = item.collapseTarget; + + if (collapseTarget) { + return collapseTarget.isVert ? policies.vert : policies.horz; + } + + if (item.region) { + if (item.isVert) { + size = item.height; + policy = policies.vert; + } else { + size = item.width; + policy = policies.horz; + } + + if (item.flex || (typeof size == 'string' && me.percentageRe.test(size))) { + return policies.flexAll; + } + + return policy; + } + + return me.autoSizePolicy; + } +}, function () { + var methods = { + addUnflexed: function (px) { + this.flexSpace = Math.max(this.flexSpace - px, 0); + } + }, + props = this.prototype.axisProps; + + Ext.apply(props.horz, methods); + Ext.apply(props.vert, methods); +}); + + +Ext.define('Ext.layout.container.Card', { + + + + extend: Ext.layout.container.Fit , + + alternateClassName: 'Ext.layout.CardLayout', + + alias: 'layout.card', + + + + type: 'card', + + hideInactive: true, + + + deferredRender : false, + + getRenderTree: function () { + var me = this, + activeItem = me.getActiveItem(); + + if (activeItem) { + + + if (activeItem.hasListeners.beforeactivate && activeItem.fireEvent('beforeactivate', activeItem) === false) { + + + + + activeItem = me.activeItem = me.owner.activeItem = null; + } + + + else if (activeItem.hasListeners.activate) { + activeItem.on({ + boxready: function() { + activeItem.fireEvent('activate', activeItem); + }, + single: true + }); + } + + if (me.deferredRender) { + if (activeItem) { + return me.getItemsRenderTree([activeItem]); + } + } else { + return me.callParent(arguments); + } + } + }, + + renderChildren: function () { + var me = this, + active = me.getActiveItem(); + + if (!me.deferredRender) { + me.callParent(); + } else if (active) { + + me.renderItems([active], me.getRenderTarget()); + } + }, + + isValidParent : function(item, target, position) { + + + var itemEl = item.el ? item.el.dom : Ext.getDom(item); + return (itemEl && itemEl.parentNode === (target.dom || target)) || false; + }, + + + getActiveItem: function() { + var me = this, + + result = me.parseActiveItem(me.activeItem || (me.owner && me.owner.activeItem)); + + + if (result && me.owner.items.indexOf(result) != -1) { + me.activeItem = result; + } else { + me.activeItem = null; + } + + return me.activeItem; + }, + + + parseActiveItem: function(item) { + if (item && item.isComponent) { + return item; + } else if (typeof item == 'number' || item === undefined) { + return this.getLayoutItems()[item || 0]; + } else { + return this.owner.getComponent(item); + } + }, + + + + configureItem: function(item) { + if (item === this.getActiveItem()) { + item.hidden = false; + } else { + item.hidden = true; + } + this.callParent(arguments); + }, + + onRemove: function(component) { + var me = this; + + if (component === me.activeItem) { + me.activeItem = null; + } + }, + + + getAnimation: function(newCard, owner) { + var newAnim = (newCard || {}).cardSwitchAnimation; + if (newAnim === false) { + return false; + } + return newAnim || owner.cardSwitchAnimation; + }, + + + getNext: function() { + var wrap = arguments[0], + items = this.getLayoutItems(), + index = Ext.Array.indexOf(items, this.activeItem); + + return items[index + 1] || (wrap ? items[0] : false); + }, + + + next: function() { + var anim = arguments[0], + wrap = arguments[1]; + return this.setActiveItem(this.getNext(wrap), anim); + }, + + + getPrev: function() { + var wrap = arguments[0], + items = this.getLayoutItems(), + index = Ext.Array.indexOf(items, this.activeItem); + + return items[index - 1] || (wrap ? items[items.length - 1] : false); + }, + + + prev: function() { + var anim = arguments[0], + wrap = arguments[1]; + return this.setActiveItem(this.getPrev(wrap), anim); + }, + + + setActiveItem: function(newCard) { + var me = this, + owner = me.owner, + oldCard = me.activeItem, + rendered = owner.rendered, + newIndex; + + newCard = me.parseActiveItem(newCard); + newIndex = owner.items.indexOf(newCard); + + + + if (newIndex == -1) { + newIndex = owner.items.items.length; + Ext.suspendLayouts(); + newCard = owner.add(newCard); + Ext.resumeLayouts(); + } + + + if (newCard && oldCard != newCard) { + + if (newCard.fireEvent('beforeactivate', newCard, oldCard) === false) { + return false; + } + if (oldCard && oldCard.fireEvent('beforedeactivate', oldCard, newCard) === false) { + return false; + } + + if (rendered) { + Ext.suspendLayouts(); + + + if (!newCard.rendered) { + me.renderItem(newCard, me.getRenderTarget(), owner.items.length); + } + + if (oldCard) { + if (me.hideInactive) { + oldCard.hide(); + oldCard.hiddenByLayout = true; + } + oldCard.fireEvent('deactivate', oldCard, newCard); + } + + if (newCard.hidden) { + newCard.show(); + } + + + if (!newCard.hidden) { + me.activeItem = newCard; + } + Ext.resumeLayouts(true); + } else { + me.activeItem = newCard; + } + + newCard.fireEvent('activate', newCard, oldCard); + + return me.activeItem; + } + return false; + } +}); + + +Ext.define('Ext.layout.container.Column', { + + extend: Ext.layout.container.Auto , + alias: ['layout.column'], + alternateClassName: 'Ext.layout.ColumnLayout', + + type: 'column', + + itemCls: Ext.baseCSSPrefix + 'column', + + targetCls: Ext.baseCSSPrefix + 'column-layout-ct', + + + columnWidthSizePolicy: { + readsWidth: 0, + readsHeight: 1, + setsWidth: 1, + setsHeight: 0 + }, + + createsInnerCt: true, + + manageOverflow: true, + + isItemShrinkWrap: function(ownerContext){ + return true; + }, + + getItemSizePolicy: function (item, ownerSizeModel) { + if (item.columnWidth) { + if (!ownerSizeModel) { + ownerSizeModel = this.owner.getSizeModel(); + } + + if (!ownerSizeModel.width.shrinkWrap) { + return this.columnWidthSizePolicy; + } + } + return this.autoSizePolicy; + }, + + calculateItems: function (ownerContext, containerSize) { + var me = this, + targetContext = ownerContext.targetContext, + items = ownerContext.childItems, + len = items.length, + contentWidth = 0, + gotWidth = containerSize.gotWidth, + blocked, availableWidth, i, itemContext, itemMarginWidth, itemWidth; + + + if (gotWidth === false) { + + targetContext.domBlock(me, 'width'); + blocked = true; + } else if (gotWidth) { + availableWidth = containerSize.width; + } else { + + + return true; + } + + + + for (i = 0; i < len; ++i) { + itemContext = items[i]; + + + + + itemMarginWidth = itemContext.getMarginInfo().width; + + if (!itemContext.widthModel.calculated) { + itemWidth = itemContext.getProp('width'); + if (typeof itemWidth != 'number') { + itemContext.block(me, 'width'); + blocked = true; + } + + contentWidth += itemWidth + itemMarginWidth; + } + } + + if (!blocked) { + availableWidth = (availableWidth < contentWidth) ? 0 : availableWidth - contentWidth; + + for (i = 0; i < len; ++i) { + itemContext = items[i]; + if (itemContext.widthModel.calculated) { + itemMarginWidth = itemContext.marginInfo.width; + itemWidth = itemContext.target.columnWidth; + itemWidth = Math.floor(itemWidth * availableWidth) - itemMarginWidth; + itemWidth = itemContext.setWidth(itemWidth); + contentWidth += itemWidth + itemMarginWidth; + } + } + + ownerContext.setContentWidth(contentWidth + ownerContext.paddingContext.getPaddingInfo().width); + } + + + return !blocked; + }, + + setCtSizeIfNeeded: function(ownerContext, containerSize) { + var me = this, + padding = ownerContext.paddingContext.getPaddingInfo(); + + me.callParent(arguments); + + + + if ((Ext.isIEQuirks || Ext.isIE7m) && me.isShrinkWrapTpl && padding.right) { + ownerContext.outerCtContext.setProp('width', + containerSize.width + padding.left); + } + } + +}); + + +Ext.define('Ext.layout.container.Form', { + + + + alias: 'layout.form', + extend: Ext.layout.container.Container , + alternateClassName: 'Ext.layout.FormLayout', + + + + tableCls: Ext.baseCSSPrefix + 'form-layout-table', + + type: 'form', + + createsInnerCt: true, + + manageOverflow: true, + + + lastOverflowAdjust: { + width: 0, + height: 0 + }, + + childEls: ['formTable'], + + padRow: '', + + renderTpl: [ + '', + '{%this.renderBody(out,values)%}', + '
    ', + '{%this.renderPadder(out,values)%}' + ], + + getRenderData: function(){ + var data = this.callParent(); + data.tableCls = this.tableCls; + return data; + }, + + calculate : function (ownerContext) { + var me = this, + containerSize = me.getContainerSize(ownerContext, true), + tableWidth, + childItems, + i = 0, length, + shrinkwrapHeight = ownerContext.sizeModel.height.shrinkWrap; + + if (shrinkwrapHeight) { + if (ownerContext.hasDomProp('containerChildrenSizeDone')) { + ownerContext.setProp('contentHeight', me.formTable.dom.offsetHeight + ownerContext.targetContext.getPaddingInfo().height); + } else { + me.done = false; + } + } + + + if (containerSize.gotWidth) { + tableWidth = me.formTable.dom.offsetWidth; + childItems = ownerContext.childItems; + + for (length = childItems.length; i < length; ++i) { + childItems[i].setWidth(tableWidth, false); + } + } else { + me.done = false; + } + }, + + getRenderTarget: function() { + return this.formTable; + }, + + getRenderTree: function() { + var me = this, + result = me.callParent(arguments), + i, len; + + for (i = 0, len = result.length; i < len; i++) { + result[i] = me.transformItemRenderTree(result[i]); + } + return result; + }, + + transformItemRenderTree: function(item) { + + if (item.tag && item.tag == 'table') { + item.tag = 'tbody'; + delete item.cellspacing; + delete item.cellpadding; + + + + + + if (Ext.isIE6) { + item.cn = this.padRow; + } + + return item; + } + + return { + tag: 'tbody', + cn: { + tag: 'tr', + cn: { + tag: 'td', + colspan: 3, + style: 'width:100%', + cn: item + } + } + }; + + }, + + isValidParent: function(item, target, position) { + return true; + }, + + isItemShrinkWrap: function(item) { + return ((item.shrinkWrap === true) ? 3 : item.shrinkWrap||0) & 2; + }, + + getItemSizePolicy: function(item) { + return { + setsWidth: 1, + setsHeight: 0 + }; + }, + + + + + + beginLayoutCycle: function (ownerContext, firstCycle) { + var padEl = this.overflowPadderEl; + + if (padEl) { + padEl.setStyle('display', 'none'); + } + + + + if (!ownerContext.state.overflowAdjust) { + ownerContext.state.overflowAdjust = this.lastOverflowAdjust; + } + }, + + + calculateOverflow: function (ownerContext, containerSize, dimensions) { + var me = this, + targetContext = ownerContext.targetContext, + manageOverflow = me.manageOverflow, + state = ownerContext.state, + overflowAdjust = state.overflowAdjust, + padWidth, padHeight, padElContext, padding, scrollRangeFlags, + scrollbarSize, contentW, contentH, ownerW, ownerH, scrollbars, + xauto, yauto; + + if (manageOverflow && !state.secondPass && !me.reserveScrollbar) { + + + xauto = (me.getOverflowXStyle(ownerContext) === 'auto'); + yauto = (me.getOverflowYStyle(ownerContext) === 'auto'); + + + + + if (!containerSize.gotWidth) { + xauto = false; + } + if (!containerSize.gotHeight) { + yauto = false; + } + + if (xauto || yauto) { + scrollbarSize = Ext.getScrollbarSize(); + + + + contentW = ownerContext.peek('contentWidth'); + contentH = ownerContext.peek('contentHeight'); + + + + + padding = targetContext.getPaddingInfo(); + contentW -= padding.width; + contentH -= padding.height; + ownerW = containerSize.width; + ownerH = containerSize.height; + + scrollbars = me.getScrollbarsNeeded(ownerW, ownerH, contentW, contentH); + state.overflowState = scrollbars; + + if (typeof dimensions == 'number') { + scrollbars &= ~dimensions; + } + + overflowAdjust = { + width: (xauto && (scrollbars & 2)) ? scrollbarSize.width : 0, + height: (yauto && (scrollbars & 1)) ? scrollbarSize.height : 0 + }; + + + + if (overflowAdjust.width !== me.lastOverflowAdjust.width || overflowAdjust.height !== me.lastOverflowAdjust.height) { + me.done = false; + + + + ownerContext.invalidate({ + state: { + overflowAdjust: overflowAdjust, + overflowState: state.overflowState, + secondPass: true + } + }); + } + } + } + + if (!me.done) { + return; + } + + padElContext = ownerContext.padElContext || + (ownerContext.padElContext = ownerContext.getEl('overflowPadderEl', me)); + + + + if (padElContext) { + scrollbars = state.overflowState; + padWidth = ownerContext.peek('contentWidth'); + + + padHeight = 1; + + if (scrollbars) { + padding = targetContext.getPaddingInfo(); + scrollRangeFlags = me.scrollRangeFlags; + + if ((scrollbars & 2) && (scrollRangeFlags & 1)) { + padHeight += padding.bottom; + } + + if ((scrollbars & 1) && (scrollRangeFlags & 4)) { + padWidth += padding.right; + } + padElContext.setProp('display', ''); + padElContext.setSize(padWidth, padHeight); + } else { + padElContext.setProp('display', 'none'); + } + } + }, + + completeLayout: function (ownerContext) { + + this.lastOverflowAdjust = ownerContext.state.overflowAdjust; + }, + + + doRenderPadder: function (out, renderData) { + + + + var me = renderData.$layout, + owner = me.owner, + scrollRangeFlags = me.getScrollRangeFlags(); + + if (me.manageOverflow) { + if (scrollRangeFlags & 5) { + out.push('
    '); + + me.scrollRangeFlags = scrollRangeFlags; + } + } + }, + + + getContainerSize : function(ownerContext, inDom, ignoreOverflow) { + + + + + + + var targetContext = ownerContext.targetContext, + frameInfo = targetContext.getFrameInfo(), + + padding = targetContext.getPaddingInfo(), + got = 0, + needed = 0, + overflowAdjust = ignoreOverflow ? null : ownerContext.state.overflowAdjust, + gotWidth, gotHeight, width, height; + + + + + + + + + + if (!ownerContext.widthModel.shrinkWrap) { + ++needed; + width = inDom ? targetContext.getDomProp('width') : targetContext.getProp('width'); + gotWidth = (typeof width == 'number'); + if (gotWidth) { + ++got; + width -= frameInfo.width + padding.width; + if (overflowAdjust) { + width -= overflowAdjust.width; + } + } + } + + if (!ownerContext.heightModel.shrinkWrap) { + ++needed; + height = inDom ? targetContext.getDomProp('height') : targetContext.getProp('height'); + gotHeight = (typeof height == 'number'); + if (gotHeight) { + ++got; + height -= frameInfo.height + padding.height; + if (overflowAdjust) { + height -= overflowAdjust.height; + } + } + } + + return { + width: width, + height: height, + needed: needed, + got: got, + gotAll: got == needed, + gotWidth: gotWidth, + gotHeight: gotHeight + }; + }, + + + getOverflowXStyle: function(ownerContext) { + var me = this; + + return me.overflowXStyle || + (me.overflowXStyle = me.owner.scrollFlags.overflowX || ownerContext.targetContext.getStyle('overflow-x')); + }, + + + getOverflowYStyle: function(ownerContext) { + var me = this; + + return me.overflowYStyle || + (me.overflowYStyle = me.owner.scrollFlags.overflowY || ownerContext.targetContext.getStyle('overflow-y')); + }, + + + getScrollRangeFlags: (function () { + var flags = -1; + + return function () { + if (flags < 0) { + var div = Ext.getBody().createChild({ + + cls: Ext.baseCSSPrefix + 'border-box', + style: { + width: '100px', height: '100px', padding: '10px', + overflow: 'auto' + }, + children: [{ + style: { + border: '1px solid red', + width: '150px', height: '150px', + margin: '0 5px 5px 0' + } + }] + }), + scrollHeight = div.dom.scrollHeight, + scrollWidth = div.dom.scrollWidth, + heightFlags = { + + 175: 0, + + 165: 1, + + 170: 2, + + 160: 3 + }, + widthFlags = { + + 175: 0, + + 165: 4, + + 170: 8, + + 160: 12 + }; + + flags = (heightFlags[scrollHeight] || 0) | (widthFlags[scrollWidth] || 0); + + div.remove(); + } + + return flags; + }; + }()), + + initLayout: function() { + var me = this, + scrollbarWidth = Ext.getScrollbarSize().width; + + me.callParent(); + + + + + if (scrollbarWidth && me.manageOverflow && !me.hasOwnProperty('lastOverflowAdjust')) { + if (me.owner.scrollFlags.y || me.reserveScrollbar) { + me.lastOverflowAdjust = { + width: scrollbarWidth, + height: 0 + }; + } + } + }, + + setupRenderTpl: function (renderTpl) { + this.callParent(arguments); + + renderTpl.renderPadder = this.doRenderPadder; + } +}); + + +Ext.define('Ext.menu.Item', { + extend: Ext.Component , + alias: 'widget.menuitem', + alternateClassName: 'Ext.menu.TextItem', + + mixins: { + queryable: Ext.Queryable + }, + + + + + + + activeCls: Ext.baseCSSPrefix + 'menu-item-active', + + + ariaRole: 'menuitem', + + + canActivate: true, + + + clickHideDelay: 0, + + + destroyMenu: true, + + + disabledCls: Ext.baseCSSPrefix + 'menu-item-disabled', + + + + + + + hideOnClick: true, + + + + + + + + isMenuItem: true, + + + + + + + menuAlign: 'tl-tr?', + + + menuExpandDelay: 200, + + + menuHideDelay: 200, + + + + + + + tooltipType: 'qtip', + + arrowCls: Ext.baseCSSPrefix + 'menu-item-arrow', + + childEls: [ + 'itemEl', 'iconEl', 'textEl', 'arrowEl' + ], + + renderTpl: [ + '', + '{text}', + '', + ' target="{hrefTarget}"', + ' hidefocus="true"', + + ' unselectable="on"', + '', + ' tabIndex="{tabIndex}"', + '', + '>', + '', + '{text}', + '', + '', + '' + ], + + maskOnDisable: false, + + + + + + activate: function() { + var me = this; + + if (!me.activated && me.canActivate && me.rendered && !me.isDisabled() && me.isVisible()) { + me.el.addCls(me.activeCls); + me.focus(); + me.activated = true; + me.fireEvent('activate', me); + } + }, + + getFocusEl: function() { + return this.itemEl; + }, + + deactivate: function() { + var me = this; + + if (me.activated) { + me.el.removeCls(me.activeCls); + me.blur(); + me.hideMenu(); + me.activated = false; + me.fireEvent('deactivate', me); + } + }, + + deferHideMenu: function() { + if (this.menu.isVisible()) { + this.menu.hide(); + } + }, + + cancelDeferHide: function(){ + clearTimeout(this.hideMenuTimer); + }, + + deferHideParentMenus: function() { + var ancestor; + Ext.menu.Manager.hideAll(); + + if (!Ext.Element.getActiveElement()) { + + ancestor = this.up(':not([hidden])'); + if (ancestor) { + ancestor.focus(); + } + } + }, + + expandMenu: function(delay) { + var me = this; + + if (me.menu) { + me.cancelDeferHide(); + if (delay === 0) { + me.doExpandMenu(); + } else { + clearTimeout(me.expandMenuTimer); + me.expandMenuTimer = Ext.defer(me.doExpandMenu, Ext.isNumber(delay) ? delay : me.menuExpandDelay, me); + } + } + }, + + doExpandMenu: function() { + var me = this, + menu = me.menu; + + if (me.activated && (!menu.rendered || !menu.isVisible())) { + me.parentMenu.activeChild = menu; + menu.parentItem = me; + menu.parentMenu = me.parentMenu; + menu.showBy(me, me.menuAlign); + } + }, + + getRefItems: function(deep) { + var menu = this.menu, + items; + + if (menu) { + items = menu.getRefItems(deep); + items.unshift(menu); + } + return items || []; + }, + + hideMenu: function(delay) { + var me = this; + + if (me.menu) { + clearTimeout(me.expandMenuTimer); + me.hideMenuTimer = Ext.defer(me.deferHideMenu, Ext.isNumber(delay) ? delay : me.menuHideDelay, me); + } + }, + + initComponent: function() { + var me = this, + prefix = Ext.baseCSSPrefix, + cls = [prefix + 'menu-item'], + menu; + + me.addEvents( + + 'activate', + + + 'click', + + + 'deactivate', + + + 'textchange', + + + 'iconchange' + ); + + if (me.plain) { + cls.push(prefix + 'menu-item-plain'); + } + + if (me.cls) { + cls.push(me.cls); + } + + me.cls = cls.join(' '); + + if (me.menu) { + menu = me.menu; + delete me.menu; + me.setMenu(menu); + } + + me.callParent(arguments); + }, + + onClick: function(e) { + var me = this, + clickHideDelay = me.clickHideDelay; + + if (!me.href) { + e.stopEvent(); + } + + if (me.disabled) { + return; + } + + if (me.hideOnClick) { + if (!clickHideDelay) { + me.deferHideParentMenus(); + } else { + me.deferHideParentMenusTimer = Ext.defer(me.deferHideParentMenus, clickHideDelay, me); + } + } + + Ext.callback(me.handler, me.scope || me, [me, e]); + me.fireEvent('click', me, e); + + if (!me.hideOnClick) { + me.focus(); + } + }, + + onRemoved: function() { + var me = this; + + + if (me.activated && me.parentMenu.activeItem === me) { + me.parentMenu.deactivateActiveItem(); + } + me.callParent(arguments); + me.parentMenu = me.ownerButton = null; + }, + + + beforeDestroy: function() { + var me = this; + if (me.rendered) { + me.clearTip(); + } + me.callParent(); + }, + + onDestroy: function() { + var me = this; + + clearTimeout(me.expandMenuTimer); + me.cancelDeferHide(); + clearTimeout(me.deferHideParentMenusTimer); + + me.setMenu(null); + me.callParent(arguments); + }, + + beforeRender: function() { + var me = this, + blank = Ext.BLANK_IMAGE_URL, + glyph = me.glyph, + glyphFontFamily = Ext._glyphFontFamily, + glyphParts, iconCls, arrowCls; + + me.callParent(); + + if (me.iconAlign === 'right') { + iconCls = me.checkChangeDisabled ? me.disabledCls : ''; + arrowCls = Ext.baseCSSPrefix + 'menu-item-icon-right ' + me.iconCls; + } else { + iconCls = (me.iconCls || '') + (me.checkChangeDisabled ? ' ' + me.disabledCls : ''); + arrowCls = me.menu ? me.arrowCls : ''; + } + + if (typeof glyph === 'string') { + glyphParts = glyph.split('@'); + glyph = glyphParts[0]; + glyphFontFamily = glyphParts[1]; + } + + Ext.applyIf(me.renderData, { + href: me.href || '#', + hrefTarget: me.hrefTarget, + icon: me.icon, + iconCls: iconCls, + glyph: glyph, + glyphCls: glyph ? Ext.baseCSSPrefix + 'menu-item-glyph' : undefined, + glyphFontFamily: glyphFontFamily, + hasIcon: !!(me.icon || me.iconCls || glyph), + iconAlign: me.iconAlign, + plain: me.plain, + text: me.text, + arrowCls: arrowCls, + blank: blank, + tabIndex: me.tabIndex + }); + }, + + onRender: function() { + var me = this; + + me.callParent(arguments); + + if (me.tooltip) { + me.setTooltip(me.tooltip, true); + } + }, + + + setMenu: function(menu, destroyMenu) { + var me = this, + oldMenu = me.menu, + arrowEl = me.arrowEl; + + if (oldMenu) { + delete oldMenu.parentItem; + delete oldMenu.parentMenu; + delete oldMenu.ownerItem; + + if (destroyMenu === true || (destroyMenu !== false && me.destroyMenu)) { + Ext.destroy(oldMenu); + } + } + if (menu) { + me.menu = Ext.menu.Manager.get(menu); + me.menu.ownerItem = me; + } else { + me.menu = null; + } + + if (me.rendered && !me.destroying && arrowEl) { + arrowEl[me.menu ? 'addCls' : 'removeCls'](me.arrowCls); + } + }, + + + setHandler: function(fn, scope) { + this.handler = fn || null; + this.scope = scope; + }, + + + setIcon: function(icon){ + var iconEl = this.iconEl, + oldIcon = this.icon; + if (iconEl) { + iconEl.src = icon || Ext.BLANK_IMAGE_URL; + } + this.icon = icon; + this.fireEvent('iconchange', this, oldIcon, icon); + }, + + + setIconCls: function(iconCls) { + var me = this, + iconEl = me.iconEl, + oldCls = me.iconCls; + + if (iconEl) { + if (me.iconCls) { + iconEl.removeCls(me.iconCls); + } + + if (iconCls) { + iconEl.addCls(iconCls); + } + } + + me.iconCls = iconCls; + me.fireEvent('iconchange', me, oldCls, iconCls); + }, + + + setText: function(text) { + var me = this, + el = me.textEl || me.el, + oldText = me.text; + + me.text = text; + + if (me.rendered) { + el.update(text || ''); + + me.ownerCt.updateLayout(); + } + me.fireEvent('textchange', me, oldText, text); + }, + + getTipAttr: function(){ + return this.tooltipType == 'qtip' ? 'data-qtip' : 'title'; + }, + + + clearTip: function() { + if (Ext.quickTipsActive && Ext.isObject(this.tooltip)) { + Ext.tip.QuickTipManager.unregister(this.itemEl); + } + }, + + + setTooltip: function(tooltip, initial) { + var me = this; + + if (me.rendered) { + if (!initial) { + me.clearTip(); + } + + if (Ext.quickTipsActive && Ext.isObject(tooltip)) { + Ext.tip.QuickTipManager.register(Ext.apply({ + target: me.itemEl.id + }, + tooltip)); + me.tooltip = tooltip; + } else { + me.itemEl.dom.setAttribute(me.getTipAttr(), tooltip); + } + } else { + me.tooltip = tooltip; + } + + return me; + } +}); + + +Ext.define('Ext.menu.CheckItem', { + extend: Ext.menu.Item , + alias: 'widget.menucheckitem', + + + + + + + + + + + checkedCls: Ext.baseCSSPrefix + 'menu-item-checked', + + uncheckedCls: Ext.baseCSSPrefix + 'menu-item-unchecked', + + groupCls: Ext.baseCSSPrefix + 'menu-group-icon', + + + hideOnClick: false, + + + checkChangeDisabled: false, + + childEls: [ + 'itemEl', 'iconEl', 'textEl', 'checkEl' + ], + + showCheckbox: true, + + renderTpl: [ + '', + '{text}', + '', + '{%var showCheckbox = values.showCheckbox,', + ' rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "' + Ext.baseCSSPrefix + 'right-check-item-text" : "";%}', + 'target="{hrefTarget}" hidefocus="true" unselectable="on"', + '', + ' tabIndex="{tabIndex}"', + '', + '>', + '{%if (values.hasIcon && (values.iconAlign !== "left")) {%}', + '', + '{%} else if (showCheckbox){%}', + '', + '{%}%}', + 'style="margin-right: 17px;" >{text}', + + + '{%if (rightCheckbox) {%}', + '', + '{%} else if (values.arrowCls) {%}', + '', + '{%}%}', + '', + '' + ], + + initComponent: function() { + var me = this; + + + me.checked = !!me.checked; + me.addEvents( + + 'beforecheckchange', + + + 'checkchange' + ); + + me.callParent(arguments); + + Ext.menu.Manager.registerCheckable(me); + + if (me.group) { + me.showCheckbox = false + if (!(me.iconCls || me.icon || me.glyph)) { + me.iconCls = me.groupCls; + } + if (me.initialConfig.hideOnClick !== false) { + me.hideOnClick = true; + } + } + }, + + beforeRender: function() { + this.callParent(); + this.renderData.showCheckbox = this.showCheckbox; + }, + + afterRender: function() { + var me = this; + me.callParent(); + me.checked = !me.checked; + me.setChecked(!me.checked, true); + if (me.checkChangeDisabled) { + me.disableCheckChange(); + } + }, + + + disableCheckChange: function() { + var me = this, + checkEl = me.checkEl; + + if (checkEl) { + checkEl.addCls(me.disabledCls); + } + + + if (!(Ext.isIE10p || (Ext.isIE9 && Ext.isStrict)) && me.rendered) { + me.el.repaint(); + } + me.checkChangeDisabled = true; + }, + + + enableCheckChange: function() { + var me = this, + checkEl = me.checkEl; + + if (checkEl) { + checkEl.removeCls(me.disabledCls); + } + me.checkChangeDisabled = false; + }, + + onClick: function(e) { + var me = this; + if(!me.disabled && !me.checkChangeDisabled && !(me.checked && me.group)) { + me.setChecked(!me.checked); + } + this.callParent([e]); + }, + + onDestroy: function() { + Ext.menu.Manager.unregisterCheckable(this); + this.callParent(arguments); + }, + + + setChecked: function(checked, suppressEvents) { + var me = this; + if (me.checked !== checked && (suppressEvents || me.fireEvent('beforecheckchange', me, checked) !== false)) { + if (me.el) { + me.el[checked ? 'addCls' : 'removeCls'](me.checkedCls)[!checked ? 'addCls' : 'removeCls'](me.uncheckedCls); + } + me.checked = checked; + Ext.menu.Manager.onCheckChange(me, checked); + if (!suppressEvents) { + Ext.callback(me.checkHandler, me.scope, [me, checked]); + me.fireEvent('checkchange', me, checked); + } + } + } +}); + + +Ext.define('Ext.menu.KeyNav', { + extend: Ext.util.KeyNav , + + + + constructor: function(config) { + var me = this; + + me.menu = config.target; + me.callParent([Ext.apply({ + down: me.down, + enter: me.enter, + esc: me.escape, + left: me.left, + right: me.right, + space: me.enter, + tab: me.tab, + up: me.up + }, config)]); + }, + + down: function(e) { + var me = this, + fi = me.menu.focusedItem; + + if (fi && e.getKey() == Ext.EventObject.DOWN && me.isWhitelisted(fi)) { + return true; + } + me.focusNextItem(1); + }, + + enter: function(e) { + var menu = this.menu, + focused = menu.focusedItem; + + if (menu.activeItem) { + menu.onClick(e); + } else if (focused && focused.isFormField) { + + return true; + } + }, + + escape: function(e) { + Ext.menu.Manager.hideAll(); + }, + + focusNextItem: function(step) { + var menu = this.menu, + items = menu.items, + focusedItem = menu.focusedItem, + startIdx = focusedItem ? items.indexOf(focusedItem) : -1, + idx = startIdx + step, + len = items.length, + count = 0, + item; + + + while (count < len && idx !== startIdx) { + if (idx < 0) { + idx = len - 1; + } else if (idx >= len) { + idx = 0; + } + + item = items.getAt(idx); + if (menu.canActivateItem(item)) { + menu.setActiveItem(item); + break; + } + idx += step; + ++count; + } + }, + + isWhitelisted: function(item) { + return Ext.FocusManager.isWhitelisted(item); + }, + + left: function(e) { + var menu = this.menu, + fi = menu.focusedItem; + + if (fi && this.isWhitelisted(fi)) { + return true; + } + + menu.hide(); + if (menu.parentMenu) { + menu.parentMenu.focus(); + } + }, + + right: function(e) { + var menu = this.menu, + fi = menu.focusedItem, + ai = menu.activeItem, + am; + + if (fi && this.isWhitelisted(fi)) { + return true; + } + + if (ai) { + am = menu.activeItem.menu; + if (am) { + ai.expandMenu(0); + am.setActiveItem(am.child(':focusable')); + } + } + }, + + tab: function(e) { + var me = this; + + if (e.shiftKey) { + me.up(e); + } else { + me.down(e); + } + }, + + up: function(e) { + var me = this, + fi = me.menu.focusedItem; + + if (fi && e.getKey() == Ext.EventObject.UP && me.isWhitelisted(fi)) { + return true; + } + me.focusNextItem(-1); + } +}); + + +Ext.define('Ext.menu.Separator', { + extend: Ext.menu.Item , + alias: 'widget.menuseparator', + + + + + canActivate: false, + + + + + + + + focusable: false, + + + + + + + hideOnClick: false, + + + + + + + + + + + + + + + plain: true, + + + separatorCls: Ext.baseCSSPrefix + 'menu-item-separator', + + + text: ' ', + + beforeRender: function(ct, pos) { + var me = this; + + me.callParent(); + + me.addCls(me.separatorCls); + } +}); + + +Ext.define('Ext.menu.Menu', { + extend: Ext.panel.Panel , + alias: 'widget.menu', + + + + + + + + + + + + + + enableKeyNav: true, + + + allowOtherMenus: false, + + + ariaRole: 'menu', + + + + + floating: true, + + + constrain: true, + + + hidden: true, + + hideMode: 'visibility', + + + ignoreParentClicks: false, + + + isMenu: true, + + + + + showSeparator : true, + + + minWidth: undefined, + + defaultMinWidth: 120, + + + + initComponent: function() { + var me = this, + prefix = Ext.baseCSSPrefix, + cls = [prefix + 'menu'], + bodyCls = me.bodyCls ? [me.bodyCls] : [], + isFloating = me.floating !== false; + + me.addEvents( + + 'click', + + + 'mouseenter', + + + 'mouseleave', + + + 'mouseover' + ); + + Ext.menu.Manager.register(me); + + + if (me.plain) { + cls.push(prefix + 'menu-plain'); + } + me.cls = cls.join(' '); + + + bodyCls.push(prefix + 'menu-body', Ext.dom.Element.unselectableCls); + me.bodyCls = bodyCls.join(' '); + + + + + + if (!me.layout) { + me.layout = { + type: 'vbox', + align: 'stretchmax', + overflowHandler: 'Scroller' + }; + } + + if (isFloating) { + + if (me.minWidth === undefined) { + me.minWidth = me.defaultMinWidth; + } + } else { + + me.hidden = !!me.initialConfig.hidden; + me.constrain = false; + } + + me.callParent(arguments); + }, + + + + registerWithOwnerCt: function() { + if (this.floating) { + this.ownerCt = null; + Ext.WindowManager.register(this); + } + }, + + + + initHierarchyEvents: Ext.emptyFn, + + + isVisible: function() { + return this.callParent(); + }, + + + + getHierarchyState: function() { + var result = this.callParent(); + result.hidden = this.hidden; + return result; + }, + + beforeRender: function() { + this.callParent(arguments); + + + + if (!this.getSizeModel().width.shrinkWrap) { + this.layout.align = 'stretch'; + } + }, + + onBoxReady: function() { + var me = this; + + me.callParent(arguments); + + + if (me.showSeparator) { + me.iconSepEl = me.layout.getElementTarget().insertFirst({ + cls: Ext.baseCSSPrefix + 'menu-icon-separator', + html: ' ' + }); + } + + me.mon(me.el, { + click: me.onClick, + mouseover: me.onMouseOver, + scope: me + }); + me.mouseMonitor = me.el.monitorMouseLeave(100, me.onMouseLeave, me); + + + if (me.enableKeyNav) { + me.keyNav = new Ext.menu.KeyNav({ + target: me, + keyMap: me.getKeyMap() + }); + } + }, + + getRefOwner: function() { + + + + return this.parentMenu || this.ownerButton || this.callParent(arguments); + }, + + + canActivateItem: function(item) { + return item && !item.isDisabled() && item.isVisible() && (item.canActivate || item.getXTypes().indexOf('menuitem') < 0); + }, + + + deactivateActiveItem: function(andBlurFocusedItem) { + var me = this, + activeItem = me.activeItem, + focusedItem = me.focusedItem; + + if (activeItem) { + activeItem.deactivate(); + if (!activeItem.activated) { + delete me.activeItem; + } + } + + + + if (focusedItem && andBlurFocusedItem) { + focusedItem.blur(); + delete me.focusedItem; + } + }, + + + getFocusEl: function() { + return this.focusedItem || this.el; + }, + + + hide: function() { + this.deactivateActiveItem(true); + this.callParent(arguments); + }, + + + getItemFromEvent: function(e) { + return this.getChildByElement(e.getTarget()); + }, + + lookupComponent: function(cmp) { + var me = this; + + if (typeof cmp == 'string') { + cmp = me.lookupItemFromString(cmp); + } else if (Ext.isObject(cmp)) { + cmp = me.lookupItemFromObject(cmp); + } + + + + cmp.minWidth = cmp.minWidth || me.minWidth; + + return cmp; + }, + + + lookupItemFromObject: function(cmp) { + var me = this, + prefix = Ext.baseCSSPrefix, + cls; + + if (!cmp.isComponent) { + if (!cmp.xtype) { + cmp = Ext.create('Ext.menu.' + (Ext.isBoolean(cmp.checked) ? 'Check': '') + 'Item', cmp); + } else { + cmp = Ext.ComponentManager.create(cmp, cmp.xtype); + } + } + + if (cmp.isMenuItem) { + cmp.parentMenu = me; + } + + if (!cmp.isMenuItem && !cmp.dock) { + cls = [prefix + 'menu-item-cmp']; + + + + + if (!me.plain && (cmp.indent !== false || cmp.iconCls === 'no-icon')) { + cls.push(prefix + 'menu-item-indent'); + } + + if (cmp.rendered) { + cmp.el.addCls(cls); + } else { + cmp.cls = (cmp.cls || '') + ' ' + cls.join(' '); + } + } + return cmp; + }, + + + lookupItemFromString: function(cmp) { + return (cmp == 'separator' || cmp == '-') ? + new Ext.menu.Separator() + : new Ext.menu.Item({ + canActivate: false, + hideOnClick: false, + plain: true, + text: cmp + }); + }, + + onClick: function(e) { + var me = this, + item; + + if (me.disabled) { + e.stopEvent(); + return; + } + + item = (e.type === 'click') ? me.getItemFromEvent(e) : me.activeItem; + if (item && item.isMenuItem) { + if (!item.menu || !me.ignoreParentClicks) { + item.onClick(e); + } else { + e.stopEvent(); + } + } + + if (!item || item.disabled) { + item = undefined; + } + me.fireEvent('click', me, item, e); + }, + + onDestroy: function() { + var me = this; + + Ext.menu.Manager.unregister(me); + me.parentMenu = me.ownerButton = null; + if (me.rendered) { + me.el.un(me.mouseMonitor); + Ext.destroy(me.keyNav); + me.keyNav = null; + } + me.callParent(arguments); + }, + + onMouseLeave: function(e) { + var me = this; + + me.deactivateActiveItem(); + + if (me.disabled) { + return; + } + + me.fireEvent('mouseleave', me, e); + }, + + onMouseOver: function(e) { + var me = this, + fromEl = e.getRelatedTarget(), + mouseEnter = !me.el.contains(fromEl), + item = me.getItemFromEvent(e), + parentMenu = me.parentMenu, + parentItem = me.parentItem; + + if (mouseEnter && parentMenu) { + parentMenu.setActiveItem(parentItem); + parentItem.cancelDeferHide(); + parentMenu.mouseMonitor.mouseenter(); + } + + if (me.disabled) { + return; + } + + + if (item && !item.activated) { + me.setActiveItem(item); + if (item.activated && item.expandMenu) { + item.expandMenu(); + } + } + if (mouseEnter) { + me.fireEvent('mouseenter', me, e); + } + me.fireEvent('mouseover', me, item, e); + }, + + setActiveItem: function(item) { + var me = this; + + if (item && (item != me.activeItem)) { + me.deactivateActiveItem(); + if (me.canActivateItem(item)) { + if (item.activate) { + item.activate(); + if (item.activated) { + me.activeItem = item; + me.focusedItem = item; + me.focus(); + } + } else { + item.focus(); + me.focusedItem = item; + } + } + item.el.scrollIntoView(me.layout.getRenderTarget()); + } + }, + + showBy: function(cmp, pos, off) { + var me = this; + + me.callParent(arguments); + if (!me.hidden) { + + me.setVerticalPosition(); + } + return me; + }, + + beforeShow: function() { + var me = this, + viewHeight; + + + if (me.floating) { + me.savedMaxHeight = me.maxHeight; + viewHeight = me.container.getViewSize().height; + me.maxHeight = Math.min(me.maxHeight || viewHeight, viewHeight); + } + + me.callParent(arguments); + }, + + afterShow: function() { + var me = this; + + me.callParent(arguments); + + + if (me.floating) { + me.maxHeight = me.savedMaxHeight; + } + }, + + + + + setVerticalPosition: function() { + var me = this, + max, + y = me.getY(), + returnY = y, + height = me.getHeight(), + viewportHeight = Ext.Element.getViewportHeight().height, + parentEl = me.el.parent(), + viewHeight = parentEl.getViewSize().height, + normalY = y - parentEl.getScroll().top; + + parentEl = null; + + if (me.floating) { + max = me.maxHeight ? me.maxHeight : viewHeight - normalY; + if (height > viewHeight) { + returnY = y - normalY; + } else if (max < height) { + returnY = y - (height - max); + } else if((y + height) > viewportHeight){ + returnY = viewportHeight - height; + } + } + me.setY(returnY); + } +}); + + + Ext.define('Ext.menu.ColorPicker', { + extend: Ext.menu.Menu , + + alias: 'widget.colormenu', + + + + + + + hideOnClick : true, + + + pickerId : null, + + + + + + + + initComponent : function(){ + var me = this, + cfg = Ext.apply({}, me.initialConfig); + + + delete cfg.listeners; + Ext.apply(me, { + plain: true, + showSeparator: false, + items: Ext.applyIf({ + cls: Ext.baseCSSPrefix + 'menu-color-item', + id: me.pickerId, + xtype: 'colorpicker' + }, cfg) + }); + + me.callParent(arguments); + + me.picker = me.down('colorpicker'); + + + me.relayEvents(me.picker, ['select']); + + if (me.hideOnClick) { + me.on('select', me.hidePickerOnSelect, me); + } + }, + + + hidePickerOnSelect: function() { + Ext.menu.Manager.hideAll(); + } + }); + + + Ext.define('Ext.menu.DatePicker', { + extend: Ext.menu.Menu , + + alias: 'widget.datemenu', + + + + + + + hideOnClick : true, + + + pickerId : null, + + + + + + initComponent : function(){ + var me = this, + cfg = Ext.apply({}, me.initialConfig); + + + delete cfg.listeners; + + Ext.apply(me, { + showSeparator: false, + plain: true, + border: false, + bodyPadding: 0, + items: Ext.applyIf({ + cls: Ext.baseCSSPrefix + 'menu-date-item', + id: me.pickerId, + xtype: 'datepicker' + }, cfg) + }); + + me.callParent(arguments); + + me.picker = me.down('datepicker'); + + me.relayEvents(me.picker, ['select']); + + if (me.hideOnClick) { + me.on('select', me.hidePickerOnSelect, me); + } + }, + + hidePickerOnSelect: function() { + Ext.menu.Manager.hideAll(); + } + }); + + +Ext.define('Ext.panel.Tool', { + extend: Ext.Component , + + alias: 'widget.tool', + + + isTool: true, + + baseCls: Ext.baseCSSPrefix + 'tool', + disabledCls: Ext.baseCSSPrefix + 'tool-disabled', + + + toolPressedCls: Ext.baseCSSPrefix + 'tool-pressed', + + toolOverCls: Ext.baseCSSPrefix + 'tool-over', + + ariaRole: 'button', + + childEls: [ + 'toolEl' + ], + + renderTpl: [ + '' + ], + + + toolOwner: null, + + + + + + + + + + + + + tooltipType: 'qtip', + + + stopEvent: true, + + + height: 15, + width: 15, + + + initComponent: function() { + var me = this; + me.addEvents( + + 'click' + ); + + + me.type = me.type || me.id; + + Ext.applyIf(me.renderData, { + baseCls: me.baseCls, + blank: Ext.BLANK_IMAGE_URL, + type: me.type + }); + + + me.tooltip = me.tooltip || me.qtip; + me.callParent(); + }, + + + afterRender: function() { + var me = this, + attr; + + me.callParent(arguments); + + me.el.on({ + click: me.onClick, + mousedown: me.onMouseDown, + mouseover: me.onMouseOver, + mouseout: me.onMouseOut, + scope: me + }); + + if (me.tooltip) { + if (Ext.quickTipsActive && Ext.isObject(me.tooltip)) { + Ext.tip.QuickTipManager.register(Ext.apply({ + target: me.id + }, me.tooltip)); + } + else { + attr = me.tooltipType == 'qtip' ? 'data-qtip' : 'title'; + me.el.dom.setAttribute(attr, me.tooltip); + } + } + }, + + getFocusEl: function() { + return this.el; + }, + + + setType: function(type) { + var me = this, + oldType = me.type; + + me.type = type; + if (me.rendered) { + if (oldType) { + me.toolEl.removeCls(me.baseCls + '-' + oldType); + } + me.toolEl.addCls(me.baseCls + '-' + type); + } else { + me.renderData.type = type; + } + return me; + }, + + + onClick: function(e, target) { + var me = this; + + if (me.disabled) { + return false; + } + + + me.el.removeCls(me.toolPressedCls); + me.el.removeCls(me.toolOverCls); + + if (me.stopEvent !== false) { + e.stopEvent(); + } + + if (me.handler) { + Ext.callback(me.handler, me.scope || me, [e, target, me.ownerCt, me]); + } else if (me.callback) { + Ext.callback(me.callback, me.scope || me, [me.toolOwner || me.ownerCt, me, e]); + } + me.fireEvent('click', me, e); + return true; + }, + + + onDestroy: function(){ + if (Ext.quickTipsActive && Ext.isObject(this.tooltip)) { + Ext.tip.QuickTipManager.unregister(this.id); + } + this.callParent(); + }, + + + onMouseDown: function() { + if (this.disabled) { + return false; + } + + this.el.addCls(this.toolPressedCls); + }, + + + onMouseOver: function() { + if (this.disabled) { + return false; + } + this.el.addCls(this.toolOverCls); + }, + + + onMouseOut: function() { + this.el.removeCls(this.toolOverCls); + } +}); + + +Ext.define('Ext.resizer.SplitterTracker', { + extend: Ext.dd.DragTracker , + + enabled: true, + + overlayCls: Ext.baseCSSPrefix + 'resizable-overlay', + + createDragOverlay: function () { + var overlay; + + overlay = this.overlay = Ext.getBody().createChild({ + cls: this.overlayCls, + html: ' ' + }); + + overlay.unselectable(); + overlay.setSize(Ext.Element.getViewWidth(true), Ext.Element.getViewHeight(true)); + overlay.show(); + }, + + getPrevCmp: function() { + var splitter = this.getSplitter(); + return splitter.previousSibling(':not([hidden])'); + }, + + getNextCmp: function() { + var splitter = this.getSplitter(); + return splitter.nextSibling(':not([hidden])'); + }, + + + + onBeforeStart: function(e) { + var me = this, + prevCmp = me.getPrevCmp(), + nextCmp = me.getNextCmp(), + collapseEl = me.getSplitter().collapseEl, + target = e.getTarget(), + box; + + if (!prevCmp || !nextCmp) { + return false; + } + + if (collapseEl && target === me.getSplitter().collapseEl.dom) { + return false; + } + + + if (nextCmp.collapsed || prevCmp.collapsed) { + return false; + } + + + me.prevBox = prevCmp.getEl().getBox(); + me.nextBox = nextCmp.getEl().getBox(); + me.constrainTo = box = me.calculateConstrainRegion(); + + if (!box) { + return false; + } + + return box; + }, + + + onStart: function(e) { + var splitter = this.getSplitter(); + this.createDragOverlay(); + splitter.addCls(splitter.baseCls + '-active'); + }, + + + calculateConstrainRegion: function() { + var me = this, + splitter = me.getSplitter(), + splitWidth = splitter.getWidth(), + defaultMin = splitter.defaultSplitMin, + orient = splitter.orientation, + prevBox = me.prevBox, + prevCmp = me.getPrevCmp(), + nextBox = me.nextBox, + nextCmp = me.getNextCmp(), + + + + prevConstrainRegion, nextConstrainRegion, constrainOptions; + + + if (orient === 'vertical') { + constrainOptions = { + prevCmp: prevCmp, + nextCmp: nextCmp, + prevBox: prevBox, + nextBox: nextBox, + defaultMin: defaultMin, + splitWidth: splitWidth + }; + + + prevConstrainRegion = new Ext.util.Region( + prevBox.y, + me.getVertPrevConstrainRight(constrainOptions), + prevBox.bottom, + me.getVertPrevConstrainLeft(constrainOptions) + ); + + nextConstrainRegion = new Ext.util.Region( + nextBox.y, + me.getVertNextConstrainRight(constrainOptions), + nextBox.bottom, + me.getVertNextConstrainLeft(constrainOptions) + ); + } else { + + prevConstrainRegion = new Ext.util.Region( + prevBox.y + (prevCmp.minHeight || defaultMin), + prevBox.right, + + + (prevCmp.maxHeight ? prevBox.y + prevCmp.maxHeight : nextBox.bottom - (nextCmp.minHeight || defaultMin)) + splitWidth, + prevBox.x + ); + + nextConstrainRegion = new Ext.util.Region( + + + (nextCmp.maxHeight ? nextBox.bottom - nextCmp.maxHeight : prevBox.y + (prevCmp.minHeight || defaultMin)) - splitWidth, + nextBox.right, + nextBox.bottom - (nextCmp.minHeight || defaultMin), + nextBox.x + ); + } + + + return prevConstrainRegion.intersect(nextConstrainRegion); + }, + + + performResize: function(e, offset) { + var me = this, + splitter = me.getSplitter(), + orient = splitter.orientation, + prevCmp = me.getPrevCmp(), + nextCmp = me.getNextCmp(), + owner = splitter.ownerCt, + flexedSiblings = owner.query('>[flex]'), + len = flexedSiblings.length, + vertical = orient === 'vertical', + i = 0, + dimension = vertical ? 'width' : 'height', + totalFlex = 0, + item, size; + + + for (; i < len; i++) { + item = flexedSiblings[i]; + size = vertical ? item.getWidth() : item.getHeight(); + totalFlex += size; + item.flex = size; + } + + offset = vertical ? offset[0] : offset[1]; + + if (prevCmp) { + size = me.prevBox[dimension] + offset; + if (prevCmp.flex) { + prevCmp.flex = size; + } else { + prevCmp[dimension] = size; + } + } + if (nextCmp) { + size = me.nextBox[dimension] - offset; + if (nextCmp.flex) { + nextCmp.flex = size; + } else { + nextCmp[dimension] = size; + } + } + + owner.updateLayout(); + }, + + + + + endDrag: function () { + var me = this; + + if (me.overlay) { + me.overlay.remove(); + delete me.overlay; + } + + me.callParent(arguments); + }, + + + onEnd: function(e) { + var me = this, + splitter = me.getSplitter(); + + splitter.removeCls(splitter.baseCls + '-active'); + me.performResize(e, me.getResizeOffset()); + }, + + + + onDrag: function(e) { + var me = this, + offset = me.getOffset('dragTarget'), + splitter = me.getSplitter(), + splitEl = splitter.getEl(), + orient = splitter.orientation; + + if (orient === "vertical") { + splitEl.setX(me.startRegion.left + offset[0]); + } else { + splitEl.setY(me.startRegion.top + offset[1]); + } + }, + + getSplitter: function() { + return this.splitter; + }, + + getVertPrevConstrainRight: function(o) { + + + return (o.prevCmp.maxWidth ? o.prevBox.x + o.prevCmp.maxWidth : + o.nextBox.right - (o.nextCmp.minWidth || o.defaultMin)) + o.splitWidth; + }, + + getVertPrevConstrainLeft: function(o) { + return o.prevBox.x + (o.prevCmp.minWidth || o.defaultMin); + }, + + + getVertNextConstrainRight: function(o) { + return o.nextBox.right - (o.nextCmp.minWidth || o.defaultMin); + }, + + getVertNextConstrainLeft: function(o) { + + + return (o.nextCmp.maxWidth ? o.nextBox.right - o.nextCmp.maxWidth : + o.prevBox.x + (o.prevBox.minWidth || o.defaultMin)) - o.splitWidth; + }, + + getResizeOffset: function() { + return this.getOffset('dragTarget'); + } +}); + + +Ext.define('Ext.resizer.BorderSplitterTracker', { + extend: Ext.resizer.SplitterTracker , + + + getPrevCmp: null, + getNextCmp: null, + + + calculateConstrainRegion: function() { + var me = this, + splitter = me.splitter, + collapseTarget = splitter.collapseTarget, + defaultSplitMin = splitter.defaultSplitMin, + sizePropCap = splitter.vertical ? 'Width' : 'Height', + minSizeProp = 'min' + sizePropCap, + maxSizeProp = 'max' + sizePropCap, + getSizeMethod = 'get' + sizePropCap, + neighbors = splitter.neighbors, + length = neighbors.length, + box = collapseTarget.el.getBox(), + left = box.x, + top = box.y, + right = box.right, + bottom = box.bottom, + size = splitter.vertical ? (right - left) : (bottom - top), + + i, neighbor, minRange, maxRange, maxGrowth, maxShrink, targetSize; + + + minRange = (collapseTarget[minSizeProp] || Math.min(size,defaultSplitMin)) - size; + + + maxRange = collapseTarget[maxSizeProp]; + if (!maxRange) { + maxRange = 1e9; + } else { + maxRange -= size; + } + targetSize = size; + + for (i = 0; i < length; ++i) { + neighbor = neighbors[i]; + size = neighbor[getSizeMethod](); + + + maxGrowth = size - neighbor[maxSizeProp]; + maxShrink = size - (neighbor[minSizeProp] || Math.min(size,defaultSplitMin)); + + if (!isNaN(maxGrowth)) { + + + if (minRange < maxGrowth) { + minRange = maxGrowth; + } + } + + + + if (maxRange > maxShrink) { + maxRange = maxShrink; + } + } + + if (maxRange - minRange < 2) { + return null; + } + + box = new Ext.util.Region(top, right, bottom, left); + + me.constraintAdjusters[me.getCollapseDirection()](box, minRange, maxRange, splitter); + + me.dragInfo = { + minRange: minRange, + maxRange: maxRange, + + targetSize: targetSize + }; + + return box; + }, + + constraintAdjusters: { + + left: function (box, minRange, maxRange, splitter) { + box[0] = box.x = box.left = box.right + minRange; + box.right += maxRange + splitter.getWidth(); + }, + + + top: function (box, minRange, maxRange, splitter) { + box[1] = box.y = box.top = box.bottom + minRange; + box.bottom += maxRange + splitter.getHeight(); + }, + + + bottom: function (box, minRange, maxRange, splitter) { + box.bottom = box.top - minRange; + box.top -= maxRange + splitter.getHeight(); + }, + + + right: function (box, minRange, maxRange, splitter) { + box.right = box.left - minRange; + box[0] = box.x = box.left = box.x - maxRange + splitter.getWidth(); + } + }, + + onBeforeStart: function(e) { + var me = this, + splitter = me.splitter, + collapseTarget = splitter.collapseTarget, + neighbors = splitter.neighbors, + collapseEl = me.getSplitter().collapseEl, + target = e.getTarget(), + length = neighbors.length, + i, neighbor; + + if (collapseEl && target === splitter.collapseEl.dom) { + return false; + } + + if (collapseTarget.collapsed) { + return false; + } + + + for (i = 0; i < length; ++i) { + neighbor = neighbors[i]; + + if (neighbor.collapsed && neighbor.isHorz === collapseTarget.isHorz) { + return false; + } + } + + if (!(me.constrainTo = me.calculateConstrainRegion())) { + return false; + } + + return true; + }, + + performResize: function(e, offset) { + var me = this, + splitter = me.splitter, + collapseDirection = splitter.getCollapseDirection(), + collapseTarget = splitter.collapseTarget, + + adjusters = me.splitAdjusters[splitter.vertical ? 'horz' : 'vert'], + delta = offset[adjusters.index], + dragInfo = me.dragInfo, + + + + + + owner; + + if (collapseDirection == 'right' || collapseDirection == 'bottom') { + + delta = -delta; + } + + + delta = Math.min(Math.max(dragInfo.minRange, delta), dragInfo.maxRange); + + if (delta) { + (owner = splitter.ownerCt).suspendLayouts(); + + adjusters.adjustTarget(collapseTarget, dragInfo.targetSize, delta); + + + + + + + + + + owner.resumeLayouts(true); + } + }, + + splitAdjusters: { + horz: { + index: 0, + + + + adjustTarget: function (target, size, delta) { + target.flex = null; + target.setSize(size + delta); + } + }, + vert: { + index: 1, + + + + adjustTarget: function (target, targetSize, delta) { + target.flex = null; + target.setSize(undefined, targetSize + delta); + } + } + }, + + getCollapseDirection: function() { + return this.splitter.getCollapseDirection(); + } +}); + + +Ext.define('Ext.resizer.Handle', { + extend: Ext.Component , + handleCls: '', + baseHandleCls: Ext.baseCSSPrefix + 'resizable-handle', + + + region: '', + + beforeRender: function() { + var me = this; + + me.callParent(); + + me.protoEl.unselectable(); + + me.addCls( + me.baseHandleCls, + me.baseHandleCls + '-' + me.region, + me.handleCls + ); + } +}); + + +Ext.define('Ext.resizer.ResizeTracker', { + extend: Ext.dd.DragTracker , + dynamic: true, + preserveRatio: false, + + + constrainTo: null, + + proxyCls: Ext.baseCSSPrefix + 'resizable-proxy', + + constructor: function(config) { + var me = this, + widthRatio, heightRatio, + throttledResizeFn; + + if (!config.el) { + if (config.target.isComponent) { + me.el = config.target.getEl(); + } else { + me.el = config.target; + } + } + this.callParent(arguments); + + + if (me.preserveRatio && me.minWidth && me.minHeight) { + widthRatio = me.minWidth / me.el.getWidth(); + heightRatio = me.minHeight / me.el.getHeight(); + + + + + if (heightRatio > widthRatio) { + me.minWidth = me.el.getWidth() * heightRatio; + } else { + me.minHeight = me.el.getHeight() * widthRatio; + } + } + + + + if (me.throttle) { + throttledResizeFn = Ext.Function.createThrottled(function() { + Ext.resizer.ResizeTracker.prototype.resize.apply(me, arguments); + }, me.throttle); + + me.resize = function(box, direction, atEnd) { + if (atEnd) { + Ext.resizer.ResizeTracker.prototype.resize.apply(me, arguments); + } else { + throttledResizeFn.apply(null, arguments); + } + }; + } + }, + + onBeforeStart: function(e) { + + this.startBox = this.target.getBox(); + }, + + + getDynamicTarget: function() { + var me = this, + target = me.target; + + if (me.dynamic) { + return target; + } else if (!me.proxy) { + me.proxy = me.createProxy(target); + } + me.proxy.show(); + return me.proxy; + }, + + + createProxy: function(target){ + var proxy, + cls = this.proxyCls; + + if (target.isComponent) { + proxy = target.getProxy().addCls(cls); + } else { + proxy = target.createProxy({ + tag: 'div', + cls: cls, + id: target.id + '-rzproxy' + }, Ext.getBody()); + } + proxy.removeCls(Ext.baseCSSPrefix + 'proxy-el'); + return proxy; + }, + + onStart: function(e) { + + this.activeResizeHandle = Ext.get(this.getDragTarget().id); + + + if (!this.dynamic) { + this.resize(this.startBox, { + horizontal: 'none', + vertical: 'none' + }); + } + }, + + onDrag: function(e) { + + if (this.dynamic || this.proxy) { + this.updateDimensions(e); + } + }, + + updateDimensions: function(e, atEnd) { + var me = this, + region = me.activeResizeHandle.region, + offset = me.getOffset(me.constrainTo ? 'dragTarget' : null), + box = me.startBox, + ratio, + widthAdjust = 0, + heightAdjust = 0, + snappedWidth, + snappedHeight, + adjustX = 0, + adjustY = 0, + dragRatio, + horizDir = offset[0] < 0 ? 'right' : 'left', + vertDir = offset[1] < 0 ? 'down' : 'up', + oppositeCorner, + axis, + newBox, + newHeight, newWidth; + + region = me.convertRegionName(region); + + switch (region) { + case 'south': + heightAdjust = offset[1]; + axis = 2; + break; + case 'north': + heightAdjust = -offset[1]; + adjustY = -heightAdjust; + axis = 2; + break; + case 'east': + widthAdjust = offset[0]; + axis = 1; + break; + case 'west': + widthAdjust = -offset[0]; + adjustX = -widthAdjust; + axis = 1; + break; + case 'northeast': + heightAdjust = -offset[1]; + adjustY = -heightAdjust; + widthAdjust = offset[0]; + oppositeCorner = [box.x, box.y + box.height]; + axis = 3; + break; + case 'southeast': + heightAdjust = offset[1]; + widthAdjust = offset[0]; + oppositeCorner = [box.x, box.y]; + axis = 3; + break; + case 'southwest': + widthAdjust = -offset[0]; + adjustX = -widthAdjust; + heightAdjust = offset[1]; + oppositeCorner = [box.x + box.width, box.y]; + axis = 3; + break; + case 'northwest': + heightAdjust = -offset[1]; + adjustY = -heightAdjust; + widthAdjust = -offset[0]; + adjustX = -widthAdjust; + oppositeCorner = [box.x + box.width, box.y + box.height]; + axis = 3; + break; + } + + newBox = { + width: box.width + widthAdjust, + height: box.height + heightAdjust, + x: box.x + adjustX, + y: box.y + adjustY + }; + + + snappedWidth = Ext.Number.snap(newBox.width, me.widthIncrement); + snappedHeight = Ext.Number.snap(newBox.height, me.heightIncrement); + if (snappedWidth != newBox.width || snappedHeight != newBox.height){ + switch (region) { + case 'northeast': + newBox.y -= snappedHeight - newBox.height; + break; + case 'north': + newBox.y -= snappedHeight - newBox.height; + break; + case 'southwest': + newBox.x -= snappedWidth - newBox.width; + break; + case 'west': + newBox.x -= snappedWidth - newBox.width; + break; + case 'northwest': + newBox.x -= snappedWidth - newBox.width; + newBox.y -= snappedHeight - newBox.height; + } + newBox.width = snappedWidth; + newBox.height = snappedHeight; + } + + + if (newBox.width < me.minWidth || newBox.width > me.maxWidth) { + newBox.width = Ext.Number.constrain(newBox.width, me.minWidth, me.maxWidth); + + + if (adjustX) { + newBox.x = box.x + (box.width - newBox.width); + } + } else { + me.lastX = newBox.x; + } + if (newBox.height < me.minHeight || newBox.height > me.maxHeight) { + newBox.height = Ext.Number.constrain(newBox.height, me.minHeight, me.maxHeight); + + + if (adjustY) { + newBox.y = box.y + (box.height - newBox.height); + } + } else { + me.lastY = newBox.y; + } + + + if (me.preserveRatio || e.shiftKey) { + ratio = me.startBox.width / me.startBox.height; + + + newHeight = Math.min(Math.max(me.minHeight, newBox.width / ratio), me.maxHeight); + newWidth = Math.min(Math.max(me.minWidth, newBox.height * ratio), me.maxWidth); + + + if (axis == 1) { + newBox.height = newHeight; + } + + + else if (axis == 2) { + newBox.width = newWidth; + } + + + else { + + + dragRatio = Math.abs(oppositeCorner[0] - this.lastXY[0]) / Math.abs(oppositeCorner[1] - this.lastXY[1]); + + + if (dragRatio > ratio) { + newBox.height = newHeight; + } else { + newBox.width = newWidth; + } + + + if (region == 'northeast') { + newBox.y = box.y - (newBox.height - box.height); + } else if (region == 'northwest') { + newBox.y = box.y - (newBox.height - box.height); + newBox.x = box.x - (newBox.width - box.width); + } else if (region == 'southwest') { + newBox.x = box.x - (newBox.width - box.width); + } + } + } + + if (heightAdjust === 0) { + vertDir = 'none'; + } + if (widthAdjust === 0) { + horizDir = 'none'; + } + me.resize(newBox, { + horizontal: horizDir, + vertical: vertDir + }, atEnd); + }, + + getResizeTarget: function(atEnd) { + return atEnd ? this.target : this.getDynamicTarget(); + }, + + resize: function(box, direction, atEnd) { + var me = this, + target = me.getResizeTarget(atEnd); + + target.setBox(box); + + + if (me.originalTarget && (me.dynamic || atEnd)) { + me.originalTarget.setBox(box); + } + }, + + onEnd: function(e) { + this.updateDimensions(e, true); + if (this.proxy) { + this.proxy.hide(); + } + }, + + convertRegionName: function(name) { + return name; + } +}); + + +Ext.define('Ext.resizer.Resizer', { + mixins: { + observable: Ext.util.Observable + }, + + + alternateClassName: 'Ext.Resizable', + + handleCls: Ext.baseCSSPrefix + 'resizable-handle', + pinnedCls: Ext.baseCSSPrefix + 'resizable-pinned', + overCls: Ext.baseCSSPrefix + 'resizable-over', + wrapCls: Ext.baseCSSPrefix + 'resizable-wrap', + delimiterRe: /(?:\s*[,;]\s*)|\s+/, + + + dynamic: true, + + + handles: 's e se', + + + height : null, + + + width : null, + + + heightIncrement : 0, + + + widthIncrement : 0, + + + minHeight : 20, + + + minWidth : 20, + + + maxHeight : 10000, + + + maxWidth : 10000, + + + pinned: false, + + + preserveRatio: false, + + + transparent: false, + + + + possiblePositions: { + n: 'north', + s: 'south', + e: 'east', + w: 'west', + se: 'southeast', + sw: 'southwest', + nw: 'northwest', + ne: 'northeast' + }, + + + + + + constructor: function(config) { + var me = this, + target, + targetEl, + tag, + handles = me.handles, + handleCls, + possibles, + len, + i = 0, + pos, + handleEls = [], + eastWestStyle, style, + box, targetBaseCls, + unselectableCls = Ext.dom.Element.unselectableCls; + + me.addEvents( + + 'beforeresize', + + 'resizedrag', + + 'resize' + ); + + if (Ext.isString(config) || Ext.isElement(config) || config.dom) { + target = config; + config = arguments[1] || {}; + config.target = target; + } + + me.mixins.observable.constructor.call(me, config); + + + + target = me.target; + if (target) { + if (target.isComponent) { + + + + + target.addClsWithUI('resizable'); + + me.el = target.getEl(); + if (target.minWidth) { + me.minWidth = target.minWidth; + } + if (target.minHeight) { + me.minHeight = target.minHeight; + } + if (target.maxWidth) { + me.maxWidth = target.maxWidth; + } + if (target.maxHeight) { + me.maxHeight = target.maxHeight; + } + if (target.floating) { + if (!me.hasOwnProperty('handles')) { + me.handles = 'n ne e se s sw w nw'; + } + } + } else { + me.el = me.target = Ext.get(target); + } + } + + else { + me.target = me.el = Ext.get(me.el); + } + + + + + tag = me.el.dom.tagName.toUpperCase(); + if (tag == 'TEXTAREA' || tag == 'IMG' || tag == 'TABLE') { + + me.originalTarget = me.target; + targetEl = me.el; + box = targetEl.getBox(); + me.target = me.el = me.el.wrap({ + cls: me.wrapCls, + id: me.el.id + '-rzwrap', + style: targetEl.getStyles('margin-top', 'margin-bottom') + }); + + + me.el.setPositioning(targetEl.getPositioning()); + targetEl.clearPositioning(); + me.el.setBox(box); + + + targetEl.setStyle('position', 'absolute'); + } + + + + me.el.position(); + if (me.pinned) { + me.el.addCls(me.pinnedCls); + } + + + me.resizeTracker = new Ext.resizer.ResizeTracker({ + disabled: me.disabled, + target: me.target, + constrainTo: me.constrainTo, + overCls: me.overCls, + throttle: me.throttle, + originalTarget: me.originalTarget, + delegate: '.' + me.handleCls, + dynamic: me.dynamic, + preserveRatio: me.preserveRatio, + heightIncrement: me.heightIncrement, + widthIncrement: me.widthIncrement, + minHeight: me.minHeight, + maxHeight: me.maxHeight, + minWidth: me.minWidth, + maxWidth: me.maxWidth + }); + + + me.resizeTracker.on({ + mousedown: me.onBeforeResize, + drag: me.onResize, + dragend: me.onResizeEnd, + scope: me + }); + + if (me.handles == 'all') { + me.handles = 'n s e w ne nw se sw'; + } + + handles = me.handles = me.handles.split(me.delimiterRe); + possibles = me.possiblePositions; + len = handles.length; + + handleCls = me.handleCls + ' ' + me.handleCls + '-{0}'; + if (me.target.isComponent) { + targetBaseCls = me.target.baseCls + handleCls += ' ' + targetBaseCls + '-handle ' + targetBaseCls + '-handle-{0}'; + if (Ext.supports.CSS3BorderRadius) { + handleCls += ' ' + targetBaseCls + '-handle-{0}-br'; + } + } + + + eastWestStyle = Ext.isIE6 ? ' style="height:' + me.el.getHeight() + 'px"' : ''; + + for (; i < len; i++){ + + if (handles[i] && possibles[handles[i]]) { + pos = possibles[handles[i]]; + if (pos === 'east' || pos === 'west') { + style = eastWestStyle; + } else { + style = ''; + } + + handleEls.push( + '
    ' + ); + } + } + Ext.DomHelper.append(me.el, handleEls.join('')); + + + for (i = 0; i < len; i++){ + + if (handles[i] && possibles[handles[i]]) { + pos = possibles[handles[i]]; + me[pos] = me.el.getById(me.el.id + '-' + pos + '-handle'); + me[pos].region = pos; + + if (me.transparent) { + me[pos].setOpacity(0); + } + } + } + + + if (Ext.isNumber(me.width)) { + me.width = Ext.Number.constrain(me.width, me.minWidth, me.maxWidth); + } + if (Ext.isNumber(me.height)) { + me.height = Ext.Number.constrain(me.height, me.minHeight, me.maxHeight); + } + + + if (me.width !== null || me.height !== null) { + if (me.originalTarget) { + me.originalTarget.setWidth(me.width); + me.originalTarget.setHeight(me.height); + } + me.resizeTo(me.width, me.height); + } + + me.forceHandlesHeight(); + }, + + disable: function() { + this.resizeTracker.disable(); + }, + + enable: function() { + this.resizeTracker.enable(); + }, + + + onBeforeResize: function(tracker, e) { + var box = this.el.getBox(); + return this.fireEvent('beforeresize', this, box.width, box.height, e); + }, + + + onResize: function(tracker, e) { + var me = this, + box = me.el.getBox(); + + me.forceHandlesHeight(); + return me.fireEvent('resizedrag', me, box.width, box.height, e); + }, + + + onResizeEnd: function(tracker, e) { + var me = this, + box = me.el.getBox(); + + me.forceHandlesHeight(); + return me.fireEvent('resize', me, box.width, box.height, e); + }, + + + resizeTo : function(width, height) { + var me = this; + me.target.setSize(width, height); + me.fireEvent('resize', me, width, height, null); + }, + + + getEl : function() { + return this.el; + }, + + + getTarget: function() { + return this.target; + }, + + destroy: function() { + var me = this, + i, + handles = me.handles, + len = handles.length, + positions = me.possiblePositions, + handle; + + me.resizeTracker.destroy(); + for (i = 0; i < len; i++) { + if (handle = me[positions[handles[i]]]) { + handle.remove(); + } + } + }, + + + forceHandlesHeight : function() { + var me = this, + handle; + if (Ext.isIE6) { + handle = me.east; + if (handle) { + handle.setHeight(me.el.getHeight()); + } + handle = me.west; + if (handle) { + handle.setHeight(me.el.getHeight()); + } + me.el.repaint(); + } + } +}); + + +Ext.define('Ext.selection.CellModel', { + extend: Ext.selection.Model , + alias: 'selection.cellmodel', + + + + + + + + + isCellModel: true, + + + enableKeyNav: true, + + + preventWrap: false, + + + noSelection: { + row: -1, + column: -1 + }, + + constructor: function() { + this.addEvents( + + 'deselect', + + + 'select' + ); + this.callParent(arguments); + }, + + bindComponent: function(view) { + var me = this, + grid = view.ownerCt; + me.primaryView = view; + me.views = me.views || []; + me.views.push(view); + me.bindStore(view.getStore(), true); + + view.on({ + cellmousedown: me.onMouseDown, + refresh: me.onViewRefresh, + scope: me + }); + if (grid.optimizedColumnMove !== false) { + grid.on('columnmove', me.onColumnMove, me); + } + + if (me.enableKeyNav) { + me.initKeyNav(view); + } + }, + + initKeyNav: function(view) { + var me = this; + + if (!view.rendered) { + view.on('render', Ext.Function.bind(me.initKeyNav, me, [view], 0), me, {single: true}); + return; + } + + view.el.set({ + tabIndex: -1 + }); + + + + me.keyNav = new Ext.util.KeyNav({ + target: view.el, + ignoreInputFields: true, + up: me.onKeyUp, + down: me.onKeyDown, + right: me.onKeyRight, + left: me.onKeyLeft, + tab: me.onKeyTab, + scope: me + }); + }, + + getHeaderCt: function() { + var selection = this.getCurrentPosition(), + view = selection ? selection.view : this.primaryView; + + return view.headerCt; + }, + + onKeyUp: function(e) { + this.doMove('up', e); + }, + + onKeyDown: function(e) { + this.doMove('down', e); + }, + + onKeyLeft: function(e) { + this.doMove('left', e); + }, + + onKeyRight: function(e) { + this.doMove('right', e); + }, + + doMove: function(direction, e){ + this.keyNavigation = true; + this.move(direction, e); + this.keyNavigation = false; + }, + + onVetoUIEvent: Ext.emptyFn, + + select: function(pos, keepExisting, suppressEvent) { + var me = this, + row, + oldPos = me.getCurrentPosition(), + store = me.view.store; + + if (pos || pos === 0) { + if (pos.isModel) { + row = store.indexOf(pos); + if (row !== -1) { + pos = { + row: row, + column: oldPos ? oldPos.column : 0 + }; + } else { + pos = null; + } + } else if (typeof pos === 'number') { + pos = { + row: pos, + column: 0 + } + } + } + + if (pos) { + me.selectByPosition(pos, suppressEvent); + } else { + me.deselect(); + } + }, + + deselect: function(record, suppressEvent){ + this.selectByPosition(null, suppressEvent); + }, + + move: function(dir, e) { + var me = this, + pos = me.getCurrentPosition(), + newPos; + + if (pos) { + + newPos = pos.view.walkCells(pos, dir, e, me.preventWrap); + + if (newPos) { + newPos.view = pos.view; + return me.setCurrentPosition(newPos); + } + } + }, + + + getCurrentPosition: function() { + + + return this.selecting ? this.nextSelection : this.selection; + }, + + + setCurrentPosition: function(pos, suppressEvent) { + var me = this, + last = me.selection; + + + me.lastSelection = last; + if (last) { + + if (pos && (pos.record === last.record && pos.columnHeader === last.columnHeader && pos.view === last.view)) { + pos = null; + } else { + me.onCellDeselect(me.selection, suppressEvent); + } + } + + if (pos) { + me.nextSelection = new Ext.grid.CellContext(me.primaryView).setPosition(pos); + + + me.selecting = true; + me.onCellSelect(me.nextSelection, suppressEvent); + me.selecting = false; + + return (me.selection = me.nextSelection); + } + }, + + isCellSelected: function(view, row, column) { + var me = this, + testPos, + pos = me.getCurrentPosition(); + + if (pos && pos.view === view) { + testPos = new Ext.grid.CellContext(view).setPosition({ + row: row, + column: column + }); + return (testPos.record === pos.record) && (testPos.columnHeader === pos.columnHeader); + } + }, + + + onStoreRemove: function(store, records, indexes) { + var me = this, + pos = me.getCurrentPosition(), + i, length = records.length, + index, shuffleCount = 0; + + me.callParent(arguments); + if (pos) { + + if (indexes[0] > pos.row) { + return; + } + + for (i = 0; i < length; i++) { + index = indexes[i]; + + + if (index < pos.row) { + shuffleCount++; + } + + else { + break; + } + } + + + if (shuffleCount) { + pos.setRow(pos.row - shuffleCount); + } + } + }, + + + onMouseDown: function(view, cell, cellIndex, record, row, recordIndex, e) { + + + if (recordIndex !== -1) { + this.setCurrentPosition({ + view: view, + row: row, + column: cellIndex + }); + } + }, + + + + onCellSelect: function(position, supressEvent) { + if (position && position.row !== undefined && position.row > -1) { + this.doSelect(position.record, false, supressEvent); + } + }, + + + + onCellDeselect: function(position, supressEvent) { + if (position && position.row !== undefined) { + this.doDeselect(position.record, supressEvent); + } + }, + + onSelectChange: function(record, isSelected, suppressEvent, commitFn) { + var me = this, + pos, + eventName, + view; + + if (isSelected) { + pos = me.nextSelection; + eventName = 'select'; + } else { + pos = me.lastSelection || me.noSelection; + eventName = 'deselect'; + } + + + + + view = pos.view || me.primaryView; + + if ((suppressEvent || me.fireEvent('before' + eventName, me, record, pos.row, pos.column)) !== false && + commitFn() !== false) { + + if (isSelected) { + view.focusRow(record, true); + view.onCellSelect(pos); + } else { + view.onCellDeselect(pos); + delete me.selection; + } + + if (!suppressEvent) { + me.fireEvent(eventName, me, record, pos.row, pos.column); + } + } + }, + + + onKeyTab: function(e, t) { + var me = this, + pos = me.getCurrentPosition(), + editingPlugin; + + if (pos) { + editingPlugin = pos.view.editingPlugin; + + if (editingPlugin && me.wasEditing) { + me.onEditorTab(editingPlugin, e) + } else { + me.move(e.shiftKey ? 'left' : 'right', e); + } + } + }, + + onEditorTab: function(editingPlugin, e) { + var me = this, + direction = e.shiftKey ? 'left' : 'right', + position = me.move(direction, e); + + + if (position) { + + if (editingPlugin.startEdit(position.record, position.columnHeader)) { + me.wasEditing = false; + } + + + else { + me.wasEditing = true; + } + } + }, + + refresh: function() { + var pos = this.getCurrentPosition(), + selRowIdx; + + + if (pos && (selRowIdx = this.store.indexOf(this.selected.last())) !== -1) { + pos.row = selRowIdx; + } + }, + + + onColumnMove: function(headerCt, header, fromIdx, toIdx) { + var grid = headerCt.up('tablepanel'); + if (grid) { + this.onViewRefresh(grid.view); + } + }, + + onUpdate: function(record) { + var me = this, + pos; + + if (me.isSelected(record)) { + pos = me.selecting ? me.nextSelection : me.selection; + me.view.onCellSelect(pos); + } + }, + + onViewRefresh: function(view) { + var me = this, + pos = me.getCurrentPosition(), + headerCt = view.headerCt, + record, columnHeader; + + + + if (pos && pos.view === view) { + record = pos.record; + columnHeader = pos.columnHeader; + + + if (!columnHeader.isDescendantOf(headerCt)) { + + + + columnHeader = headerCt.queryById(columnHeader.id) || + headerCt.down('[text="' + columnHeader.text + '"]') || + headerCt.down('[dataIndex="' + columnHeader.dataIndex + '"]'); + } + + + + + + if (columnHeader && (view.store.indexOfId(record.getId()) !== -1)) { + me.setCurrentPosition({ + row: record, + column: columnHeader, + view: view + }); + } + } + }, + + selectByPosition: function(position, suppressEvent) { + this.setCurrentPosition(position, suppressEvent); + } +}); + + +Ext.define('Ext.selection.RowModel', { + extend: Ext.selection.Model , + alias: 'selection.rowmodel', + + + + deltaScroll: 5, + + + enableKeyNav: true, + + + ignoreRightMouseSelection: false, + + constructor: function() { + this.addEvents( + + 'beforedeselect', + + + 'beforeselect', + + + 'deselect', + + + 'select' + ); + this.views = []; + this.callParent(arguments); + }, + + bindComponent: function(view) { + var me = this; + + view.on({ + itemmousedown: me.onRowMouseDown, + itemclick: me.onRowClick, + scope: me + }); + + if (me.enableKeyNav) { + me.initKeyNav(view); + } + }, + + initKeyNav: function(view) { + var me = this; + + if (!view.rendered) { + view.on('render', Ext.Function.bind(me.initKeyNav, me, [view], 0), me, {single: true}); + return; + } + + + + view.el.set({ + tabIndex: -1 + }); + + + me.keyNav = new Ext.util.KeyNav({ + target: view, + ignoreInputFields: true, + eventName: 'itemkeydown', + processEvent: function(view, record, node, index, event) { + event.record = record; + event.recordIndex = index; + return event; + }, + up: me.onKeyUp, + down: me.onKeyDown, + right: me.onKeyRight, + left: me.onKeyLeft, + pageDown: me.onKeyPageDown, + pageUp: me.onKeyPageUp, + home: me.onKeyHome, + end: me.onKeyEnd, + space: me.onKeySpace, + enter: me.onKeyEnter, + scope: me + }); + }, + + onUpdate: function(record) { + var me = this, + view = me.view, + index; + + if (view && me.isSelected(record)) { + index = view.indexOf(record); + view.onRowSelect(index); + if (record === me.lastFocused) { + view.onRowFocus(index, true); + } + } + }, + + + + + getRowsVisible: function() { + var rowsVisible = false, + view = this.views[0], + firstRow = view.all.first(), + rowHeight, gridViewHeight; + + if (firstRow) { + rowHeight = firstRow.getHeight(); + gridViewHeight = view.el.getHeight(); + rowsVisible = Math.floor(gridViewHeight / rowHeight); + } + + return rowsVisible; + }, + + + onKeyEnd: function(e) { + var me = this, + view = me.views[0]; + + if (view.bufferedRenderer) { + + + + view.bufferedRenderer.scrollTo(me.store.getCount() - 1, false, function(newIdx, newRecord) { + me.afterKeyNavigate(e, newRecord) + }); + } else { + me.afterKeyNavigate(e, view.getRecord(view.all.getCount() - 1)) + } + }, + + + onKeyHome: function(e) { + var me = this, + view = me.views[0]; + + if (view.bufferedRenderer) { + + + + view.bufferedRenderer.scrollTo(0, false, function(newIdx, newRecord) { + me.afterKeyNavigate(e, newRecord) + }); + } else { + me.afterKeyNavigate(e, view.getRecord(0)); + } + }, + + + onKeyPageUp: function(e) { + var me = this, + view = me.views[0], + rowsVisible = me.getRowsVisible(), + newIdx, + newRecord; + + if (rowsVisible) { + + + + if (view.bufferedRenderer) { + newIdx = Math.max(e.recordIndex - rowsVisible, 0); + (me.lastKeyEvent || (me.lastKeyEvent = new Ext.EventObjectImpl())).setEvent(e.browserEvent); + view.bufferedRenderer.scrollTo(newIdx, false, me.afterBufferedScrollTo, me); + } else { + newRecord = view.walkRecs(e.record, -rowsVisible); + me.afterKeyNavigate(e, newRecord); + } + } + }, + + + onKeyPageDown: function(e) { + var me = this, + view = me.views[0], + rowsVisible = me.getRowsVisible(), + newIdx, + newRecord; + + if (rowsVisible) { + + + + if (view.bufferedRenderer) { + newIdx = Math.min(e.recordIndex + rowsVisible, me.store.getCount() - 1); + (me.lastKeyEvent || (me.lastKeyEvent = new Ext.EventObjectImpl())).setEvent(e.browserEvent); + view.bufferedRenderer.scrollTo(newIdx, false, me.afterBufferedScrollTo, me); + } else { + newRecord = view.walkRecs(e.record, rowsVisible); + me.afterKeyNavigate(e, newRecord); + } + } + }, + + + onKeySpace: function(e) { + var record = this.lastFocused; + + if (record) { + this.afterKeyNavigate(e, record); + } + }, + + onKeyEnter: Ext.emptyFn, + + + + + onKeyUp: function(e) { + var newRecord = this.views[0].walkRecs(e.record, -1); + + if (newRecord) { + this.afterKeyNavigate(e, newRecord); + } + }, + + + + + onKeyDown: function(e) { + var newRecord = this.views[0].walkRecs(e.record, 1); + + if (newRecord) { + this.afterKeyNavigate(e, newRecord); + } + }, + + afterBufferedScrollTo: function(newIdx, newRecord) { + this.afterKeyNavigate(this.lastKeyEvent, newRecord) + }, + + scrollByDeltaX: function(delta) { + var view = this.views[0], + section = view.up(), + hScroll = section.horizontalScroller; + + if (hScroll) { + hScroll.scrollByDeltaX(delta); + } + }, + + onKeyLeft: function(e) { + this.scrollByDeltaX(-this.deltaScroll); + }, + + onKeyRight: function(e) { + this.scrollByDeltaX(this.deltaScroll); + }, + + + + onRowMouseDown: function(view, record, item, index, e) { + var me = this; + + + if (index !== -1) { + if (!me.allowRightMouseSelection(e)) { + return; + } + + if (!me.isSelected(record)) { + me.mousedownAction = true; + me.processSelection(view, record, item, index, e); + } else { + me.mousedownAction = false; + } + } + }, + + + + + onVetoUIEvent: function(type, view, cell, rowIndex, cellIndex, e, record){ + if (type == 'mousedown') { + this.mousedownAction = !this.isSelected(record); + } + }, + + onRowClick: function(view, record, item, index, e) { + if (this.mousedownAction) { + this.mousedownAction = false; + } else { + this.processSelection(view, record, item, index, e); + } + }, + + processSelection: function(view, record, item, index, e) { + this.selectWithEvent(record, e); + }, + + + allowRightMouseSelection: function(e) { + var disallow = this.ignoreRightMouseSelection && e.button !== 0; + if (disallow) { + disallow = this.hasSelection(); + } + return !disallow; + }, + + + + onSelectChange: function(record, isSelected, suppressEvent, commitFn) { + var me = this, + views = me.views, + viewsLn = views.length, + rowIdx = views[0].indexOf(record), + eventName = isSelected ? 'select' : 'deselect', + i = 0; + + if ((suppressEvent || me.fireEvent('before' + eventName, me, record, rowIdx)) !== false && + commitFn() !== false) { + + for (; i < viewsLn; i++) { + if (isSelected) { + views[i].onRowSelect(rowIdx, suppressEvent); + } else { + views[i].onRowDeselect(rowIdx, suppressEvent); + } + } + + if (!suppressEvent) { + me.fireEvent(eventName, me, record, rowIdx); + } + } + }, + + + + onLastFocusChanged: function(oldFocused, newFocused, supressFocus) { + var views = this.views, + viewsLn = views.length, + rowIdx, + i = 0; + + if (oldFocused) { + rowIdx = views[0].indexOf(oldFocused); + if (rowIdx != -1) { + for (; i < viewsLn; i++) { + views[i].onRowFocus(rowIdx, false, true); + } + } + } + + if (newFocused) { + rowIdx = views[0].indexOf(newFocused); + if (rowIdx != -1) { + for (i = 0; i < viewsLn; i++) { + views[i].onRowFocus(rowIdx, true, supressFocus); + } + } + } + this.callParent(arguments); + }, + + onEditorTab: function(editingPlugin, e) { + var me = this, + view = me.views[0], + record = editingPlugin.getActiveRecord(), + header = editingPlugin.getActiveColumn(), + position = view.getPosition(record, header), + direction = e.shiftKey ? 'left' : 'right'; + + + + + + + do { + position = view.walkCells(position, direction, e, me.preventWrap); + } while (position && (!position.columnHeader.getEditor(record) || !editingPlugin.startEditByPosition(position))); + }, + + + getCurrentPosition: function() { + var firstSelection = this.selected.items[0]; + if (firstSelection) { + return new Ext.grid.CellContext(this.view).setPosition(this.store.indexOf(firstSelection), 0); + } + }, + + selectByPosition: function(position) { + this.select(this.store.getAt(position.row)); + }, + + + selectNext: function(keepExisting, suppressEvent) { + var me = this, + store = me.store, + selection = me.getSelection(), + record = selection[selection.length - 1], + index = me.views[0].indexOf(record) + 1, + success; + + if (index === store.getCount() || index === 0) { + success = false; + } else { + me.doSelect(index, keepExisting, suppressEvent); + success = true; + } + return success; + }, + + + selectPrevious: function(keepExisting, suppressEvent) { + var me = this, + selection = me.getSelection(), + record = selection[0], + index = me.views[0].indexOf(record) - 1, + success; + + if (index < 0) { + success = false; + } else { + me.doSelect(index, keepExisting, suppressEvent); + success = true; + } + return success; + }, + + isRowSelected: function(record, index) { + return this.isSelected(record); + } +}); + + +Ext.define('Ext.selection.TreeModel', { + extend: Ext.selection.RowModel , + alias: 'selection.treemodel', + + + + constructor: function(config) { + this.callParent(arguments); + + + + if (this.pruneRemoved) { + this.pruneRemoved = false; + this.pruneRemovedNodes = true; + } + }, + + + bindStore: function(store, initial) { + var me = this; + me.callParent(arguments); + + + + if (me.pruneRemovedNodes) { + me.view.mon(me.treeStore, { + remove: me.onNodeRemove, + scope: me + }); + } + }, + + onNodeRemove: function(parent, node, isMove) { + + if (!isMove) { + this.deselectDeletedRecords([node]); + } + }, + + onKeyRight: function(e, t) { + this.navExpand(e, t); + }, + + navExpand: function(e, t) { + var focused = this.getLastFocused(), + view = this.view; + + if (focused) { + + + + if (focused.isExpanded()) { + this.onKeyDown(e, t); + + } else if (focused.isExpandable()) { + + if (!view.isTreeView) { + view = view.lockingPartner; + } + + view.expand(focused); + } + } + }, + + onKeyLeft: function(e, t) { + this.navCollapse(e, t); + }, + + navCollapse: function(e, t) { + var me = this, + focused = this.getLastFocused(), + view = this.view, + parentNode; + + if (focused) { + parentNode = focused.parentNode; + + if (focused.isExpanded()) { + + if (!view.isTreeView) { + view = view.lockingPartner; + } + + view.collapse(focused); + + + } else if (parentNode && !parentNode.isRoot()) { + + if (e.shiftKey) { + me.selectRange(parentNode, focused, e.ctrlKey, 'up'); + me.setLastFocused(parentNode); + + } else if (e.ctrlKey) { + me.setLastFocused(parentNode); + + } else { + me.select(parentNode); + } + } + } + }, + + onKeySpace: function(e, t) { + if (e.record.data.checked != null) { + this.toggleCheck(e); + } else { + this.callParent(arguments); + } + }, + + onKeyEnter: function(e, t) { + if (e.record.data.checked != null) { + this.toggleCheck(e); + } else { + this.callParent(arguments); + } + }, + + toggleCheck: function(e) { + var view = this.view, + selected = this.getLastSelected(); + + e.stopEvent(); + if (selected) { + + if (!view.isTreeView) { + view = view.lockingPartner; + } + + view.onCheckChange(selected); + } + } +}); + + +Ext.define('Ext.slider.Thumb', { + + + topZIndex: 10000, + + + + + constructor: function(config) { + var me = this; + + + Ext.apply(me, config || {}, { + cls: Ext.baseCSSPrefix + 'slider-thumb', + + + constrain: false + }); + me.callParent([config]); + }, + + + render: function() { + var me = this; + me.el = me.slider.innerEl.insertFirst(me.getElConfig()); + me.onRender(); + }, + + onRender: function() { + if (this.disabled) { + this.disable(); + } + this.initEvents(); + }, + + getElConfig: function() { + var me = this, + slider = me.slider, + style = {}; + + style[slider.vertical ? 'bottom' : slider.horizontalProp] = slider.calculateThumbPosition(slider.normalizeValue(me.value)) + '%'; + return { + style: style, + id : this.id, + cls : this.cls + }; + }, + + + move: function(v, animate) { + var me = this, + el = me.el, + slider = me.slider, + styleProp = slider.vertical ? 'bottom' : slider.horizontalProp, + to, + from; + + v += '%'; + + if (!animate) { + el.dom.style[styleProp] = v; + } else { + to = {}; + to[styleProp] = v; + + if (!Ext.supports.GetPositionPercentage) { + from = {}; + from[styleProp] = el.dom.style[styleProp]; + } + + new Ext.fx.Anim({ + target: el, + duration: 350, + from: from, + to: to + }); + } + }, + + + bringToFront: function() { + this.el.setStyle('zIndex', this.topZIndex); + }, + + + sendToBack: function() { + this.el.setStyle('zIndex', ''); + }, + + + enable: function() { + var me = this; + + me.disabled = false; + if (me.el) { + me.el.removeCls(me.slider.disabledCls); + } + }, + + + disable: function() { + var me = this; + + me.disabled = true; + if (me.el) { + me.el.addCls(me.slider.disabledCls); + } + }, + + + initEvents: function() { + var me = this, + el = me.el; + + me.tracker = new Ext.dd.DragTracker({ + onBeforeStart: Ext.Function.bind(me.onBeforeDragStart, me), + onStart : Ext.Function.bind(me.onDragStart, me), + onDrag : Ext.Function.bind(me.onDrag, me), + onEnd : Ext.Function.bind(me.onDragEnd, me), + tolerance : 3, + autoStart : 300, + overCls : Ext.baseCSSPrefix + 'slider-thumb-over' + }); + + me.tracker.initEl(el); + }, + + + onBeforeDragStart : function(e) { + if (this.disabled) { + return false; + } else { + this.slider.promoteThumb(this); + return true; + } + }, + + + onDragStart: function(e){ + var me = this, + slider = me.slider; + + slider.onDragStart(me, e); + me.el.addCls(Ext.baseCSSPrefix + 'slider-thumb-drag'); + me.dragging = me.slider.dragging = true; + me.dragStartValue = me.value; + + slider.fireEvent('dragstart', slider, e, me); + }, + + + onDrag: function(e) { + var me = this, + slider = me.slider, + index = me.index, + newValue = me.getValueFromTracker(), + above, + below; + + + if (newValue !== undefined) { + if (me.constrain) { + above = slider.thumbs[index + 1]; + below = slider.thumbs[index - 1]; + + if (below !== undefined && newValue <= below.value) { + newValue = below.value; + } + + if (above !== undefined && newValue >= above.value) { + newValue = above.value; + } + } + slider.setValue(index, newValue, false); + slider.fireEvent('drag', slider, e, me); + } + }, + + getValueFromTracker: function() { + var slider = this.slider, + trackPoint = slider.getTrackpoint(this.tracker.getXY()); + + + if (trackPoint !== undefined) { + return slider.reversePixelValue(trackPoint); + } + }, + + + onDragEnd: function(e) { + var me = this, + slider = me.slider, + value = me.value; + + slider.onDragEnd(me, e); + me.el.removeCls(Ext.baseCSSPrefix + 'slider-thumb-drag'); + + me.dragging = slider.dragging = false; + slider.fireEvent('dragend', slider, e); + + if (me.dragStartValue != value) { + slider.fireEvent('changecomplete', slider, value, me); + } + }, + + destroy: function() { + Ext.destroy(this.tracker); + } +}); + + +Ext.define('Ext.slider.Tip', { + extend: Ext.tip.Tip , + minWidth: 10, + alias: 'widget.slidertip', + + + offsets : null, + + + align: null, + + + position: '', + + defaultVerticalPosition: 'left', + + defaultHorizontalPosition: 'top', + + isSliderTip: true, + + init: function(slider) { + var me = this, + align, + offsets; + + if (!me.position) { + me.position = slider.vertical ? me.defaultVerticalPosition : me.defaultHorizontalPosition; + } + + switch (me.position) { + case 'top': + offsets = [0, -10]; + align = 'b-t?'; + break; + case 'bottom': + offsets = [0, 10]; + align = 't-b?'; + break; + case 'left': + offsets = [-10, 0]; + align = 'r-l?'; + break; + case 'right': + offsets = [10, 0]; + align = 'l-r?'; + } + + if (!me.align) { + me.align = align; + } + + if (!me.offsets) { + me.offsets = offsets; + } + + slider.on({ + scope : me, + dragstart: me.onSlide, + drag : me.onSlide, + dragend : me.hide, + destroy : me.destroy + }); + }, + + onSlide : function(slider, e, thumb) { + var me = this; + me.show(); + me.update(me.getText(thumb)); + me.el.alignTo(thumb.el, me.align, me.offsets); + }, + + + getText : function(thumb) { + return String(thumb.value); + } +}); + + +Ext.define('Ext.slider.Multi', { + extend: Ext.form.field.Base , + alias: 'widget.multislider', + alternateClassName: 'Ext.slider.MultiSlider', + + + + + + + + + + + childEls: [ + 'endEl', 'innerEl' + ], + + + fieldSubTpl: [ + '
    ', + '', + '
    ', + { + renderThumbs: function(out, values) { + var me = values.$comp, + i = 0, + thumbs = me.thumbs, + len = thumbs.length, + thumb, + thumbConfig; + + for (; i < len; i++) { + thumb = thumbs[i]; + thumbConfig = thumb.getElConfig(); + thumbConfig.id = me.id + '-thumb-' + i; + Ext.DomHelper.generateMarkup(thumbConfig, out); + } + }, + disableFormats: true + } + ], + + horizontalProp: 'left', + + + + + + + vertical: false, + + + minValue: 0, + + + maxValue: 100, + + + decimalPrecision: 0, + + + keyIncrement: 1, + + + increment: 0, + + + + + clickRange: [5,15], + + + clickToChange : true, + + + animate: true, + + + dragging: false, + + + constrainThumbs: true, + + componentLayout: 'sliderfield', + + + useTips : true, + + + tipText : null, + + ariaRole: 'slider', + + + initValue: function() { + var me = this, + extValue = Ext.value, + + values = extValue(me.values, [extValue(me.value, extValue(me.minValue, 0))]), + i = 0, + len = values.length; + + + me.originalValue = values; + + + for (; i < len; i++) { + me.addThumb(values[i]); + } + }, + + + initComponent : function() { + var me = this, + tipPlug, + hasTip, + p, pLen, plugins; + + + me.thumbs = []; + + me.keyIncrement = Math.max(me.increment, me.keyIncrement); + + me.addEvents( + + 'beforechange', + + + 'change', + + + 'changecomplete', + + + 'dragstart', + + + 'drag', + + + 'dragend' + ); + + me.callParent(); + + + if (me.useTips) { + if (Ext.isObject(me.useTips)) { + tipPlug = Ext.apply({}, me.useTips); + } else { + tipPlug = me.tipText ? {getText: me.tipText} : {}; + } + + plugins = me.plugins = me.plugins || []; + pLen = plugins.length; + + for (p = 0; p < pLen; p++) { + if (plugins[p].isSliderTip) { + hasTip = true; + break; + } + } + + if (!hasTip) { + me.plugins.push(new Ext.slider.Tip(tipPlug)); + } + } + }, + + + addThumb: function(value) { + var me = this, + thumb = new Ext.slider.Thumb({ + ownerCt : me, + ownerLayout : me.getComponentLayout(), + value : value, + slider : me, + index : me.thumbs.length, + constrain : me.constrainThumbs, + disabled : !!me.readOnly + }); + + me.thumbs.push(thumb); + + + if (me.rendered) { + thumb.render(); + } + + return thumb; + }, + + + promoteThumb: function(topThumb) { + var thumbs = this.thumbs, + ln = thumbs.length, + zIndex, thumb, i; + + for (i = 0; i < ln; i++) { + thumb = thumbs[i]; + + if (thumb == topThumb) { + thumb.bringToFront(); + } else { + thumb.sendToBack(); + } + } + }, + + + getSubTplData : function() { + var me = this; + + return Ext.apply(me.callParent(), { + $comp: me, + vertical: me.vertical ? Ext.baseCSSPrefix + 'slider-vert' : Ext.baseCSSPrefix + 'slider-horz', + minValue: me.minValue, + maxValue: me.maxValue, + value: me.value, + childElCls: '' + }); + }, + + onRender : function() { + var me = this, + thumbs = me.thumbs, + len = thumbs.length, + i = 0, + thumb; + + me.callParent(arguments); + + for (i = 0; i < len; i++) { + thumb = thumbs[i]; + thumb.el = me.el.getById(me.id + '-thumb-' + i); + thumb.onRender(); + } + }, + + + initEvents : function() { + var me = this; + me.mon(me.el, { + scope : me, + mousedown: me.onMouseDown, + keydown : me.onKeyDown + }); + }, + + onDragStart: Ext.emptyFn, + onDragEnd: Ext.emptyFn, + + + getTrackpoint : function(xy) { + var me = this, + vertical = me.vertical, + sliderTrack = me.innerEl, + trackLength, result, + positionProperty; + + if (vertical) { + positionProperty = 'top'; + trackLength = sliderTrack.getHeight(); + } else { + positionProperty = me.horizontalProp; + trackLength = sliderTrack.getWidth(); + } + xy = me.transformTrackPoints(sliderTrack.translatePoints(xy)); + result = Ext.Number.constrain(xy[positionProperty], 0, trackLength); + return vertical ? trackLength - result : result; + }, + + transformTrackPoints: Ext.identityFn, + + + onMouseDown : function(e) { + var me = this, + thumbClicked = false, + i = 0, + thumbs = me.thumbs, + len = thumbs.length, + trackPoint; + + if (me.disabled) { + return; + } + + + for (; i < len; i++) { + thumbClicked = thumbClicked || e.target == thumbs[i].el.dom; + } + + if (me.clickToChange && !thumbClicked) { + trackPoint = me.getTrackpoint(e.getXY()); + if (trackPoint !== undefined) { + me.onClickChange(trackPoint); + } + } + me.focus(); + }, + + + onClickChange : function(trackPoint) { + var me = this, + thumb, index; + + + + + + thumb = me.getNearest(trackPoint); + if (!thumb.disabled) { + index = thumb.index; + me.setValue(index, Ext.util.Format.round(me.reversePixelValue(trackPoint), me.decimalPrecision), undefined, true); + } + }, + + + getNearest: function(trackPoint) { + var me = this, + clickValue = me.reversePixelValue(trackPoint), + nearestDistance = me.getRange() + 5, + nearest = null, + thumbs = me.thumbs, + i = 0, + len = thumbs.length, + thumb, + value, + dist; + + for (; i < len; i++) { + thumb = me.thumbs[i]; + value = thumb.value; + dist = Math.abs(value - clickValue); + + if (Math.abs(dist <= nearestDistance)) { + nearest = thumb; + nearestDistance = dist; + } + } + return nearest; + }, + + + onKeyDown : function(e) { + + var me = this, + k, + val; + + if(me.disabled || me.thumbs.length !== 1) { + e.preventDefault(); + return; + } + k = e.getKey(); + + switch(k) { + case e.UP: + case e.RIGHT: + e.stopEvent(); + val = e.ctrlKey ? me.maxValue : me.getValue(0) + me.keyIncrement; + me.setValue(0, val, undefined, true); + break; + case e.DOWN: + case e.LEFT: + e.stopEvent(); + val = e.ctrlKey ? me.minValue : me.getValue(0) - me.keyIncrement; + me.setValue(0, val, undefined, true); + break; + default: + e.preventDefault(); + } + }, + + + normalizeValue : function(v) { + var me = this, + snapFn = me.zeroBasedSnapping ? 'snap' : 'snapInRange'; + + v = Ext.Number[snapFn](v, me.increment, me.minValue, me.maxValue); + v = Ext.util.Format.round(v, me.decimalPrecision); + v = Ext.Number.constrain(v, me.minValue, me.maxValue); + return v; + }, + + + setMinValue : function(val) { + var me = this, + thumbs = me.thumbs, + len = thumbs.length, + thumb, i; + + me.minValue = val; + if (me.rendered) { + me.inputEl.dom.setAttribute('aria-valuemin', val); + } + + for (i = 0; i < len; ++i) { + thumb = thumbs[i]; + if (thumb.value < val) { + me.setValue(i, val, false); + } + } + me.syncThumbs(); + }, + + + setMaxValue : function(val) { + var me = this, + thumbs = me.thumbs, + len = thumbs.length, + thumb, i; + + me.maxValue = val; + if (me.rendered) { + me.inputEl.dom.setAttribute('aria-valuemax', val); + } + + for (i = 0; i < len; ++i) { + thumb = thumbs[i]; + if (thumb.value > val) { + me.setValue(i, val, false); + } + } + me.syncThumbs(); + }, + + + setValue : function(index, value, animate, changeComplete) { + var me = this, + thumbs = me.thumbs, + thumb, len, i, values; + + if (Ext.isArray(index)) { + values = index; + animate = value; + + for (i = 0, len = values.length; i < len; ++i) { + thumb = thumbs[i]; + if (thumb) { + me.setValue(i, values[i], animate); + } + } + return me; + } + + thumb = me.thumbs[index]; + + value = me.normalizeValue(value); + + if (value !== thumb.value && me.fireEvent('beforechange', me, value, thumb.value, thumb) !== false) { + thumb.value = value; + if (me.rendered) { + + + me.inputEl.set({ + 'aria-valuenow': value, + 'aria-valuetext': value + }); + + thumb.move(me.calculateThumbPosition(value), Ext.isDefined(animate) ? animate !== false : me.animate); + + me.fireEvent('change', me, value, thumb); + me.checkDirty(); + if (changeComplete) { + me.fireEvent('changecomplete', me, value, thumb); + } + } + } + return me; + }, + + + calculateThumbPosition : function(v) { + var me = this, + minValue = me.minValue, + pos = (v - minValue) / me.getRange() * 100; + + + if (isNaN(pos)) { + pos = minValue; + } + + return pos; + }, + + + getRatio : function() { + var me = this, + innerEl = me.innerEl, + trackLength = me.vertical ? innerEl.getHeight() : innerEl.getWidth(), + valueRange = me.getRange(); + + return valueRange === 0 ? trackLength : (trackLength / valueRange); + }, + + getRange: function(){ + return this.maxValue - this.minValue; + }, + + + reversePixelValue : function(pos) { + return this.minValue + (pos / this.getRatio()); + }, + + + reversePercentageValue : function(pos) { + return this.minValue + this.getRange() * (pos / 100); + }, + + + onDisable: function() { + var me = this, + i = 0, + thumbs = me.thumbs, + len = thumbs.length, + thumb, + el, + xy; + + me.callParent(); + + for (; i < len; i++) { + thumb = thumbs[i]; + el = thumb.el; + + thumb.disable(); + + if(Ext.isIE) { + + + xy = el.getXY(); + el.hide(); + + me.innerEl.addCls(me.disabledCls).dom.disabled = true; + + if (!me.thumbHolder) { + me.thumbHolder = me.endEl.createChild({cls: Ext.baseCSSPrefix + 'slider-thumb ' + me.disabledCls}); + } + + me.thumbHolder.show().setXY(xy); + } + } + }, + + + onEnable: function() { + var me = this, + i = 0, + thumbs = me.thumbs, + len = thumbs.length, + thumb, + el; + + this.callParent(); + + for (; i < len; i++) { + thumb = thumbs[i]; + el = thumb.el; + + thumb.enable(); + + if (Ext.isIE) { + me.innerEl.removeCls(me.disabledCls).dom.disabled = false; + + if (me.thumbHolder) { + me.thumbHolder.hide(); + } + + el.show(); + me.syncThumbs(); + } + } + }, + + + syncThumbs : function() { + if (this.rendered) { + var thumbs = this.thumbs, + length = thumbs.length, + i = 0; + + for (; i < length; i++) { + thumbs[i].move(this.calculateThumbPosition(thumbs[i].value)); + } + } + }, + + + getValue : function(index) { + return Ext.isNumber(index) ? this.thumbs[index].value : this.getValues(); + }, + + + getValues: function() { + var values = [], + i = 0, + thumbs = this.thumbs, + len = thumbs.length; + + for (; i < len; i++) { + values.push(thumbs[i].value); + } + + return values; + }, + + getSubmitValue: function() { + var me = this; + return (me.disabled || !me.submitValue) ? null : me.getValue(); + }, + + reset: function() { + var me = this, + arr = [].concat(me.originalValue), + a = 0, + aLen = arr.length, + val; + + for (; a < aLen; a++) { + val = arr[a]; + + me.setValue(a, val); + } + + me.clearInvalid(); + + delete me.wasValid; + }, + + setReadOnly: function(readOnly){ + var me = this, + thumbs = me.thumbs, + len = thumbs.length, + i = 0; + + me.callParent(arguments); + readOnly = me.readOnly; + + for (; i < len; ++i) { + if (readOnly) { + thumbs[i].disable(); + } else { + thumbs[i].enable(); + } + + } + + }, + + + beforeDestroy : function() { + var me = this, + thumbs = me.thumbs, + t = 0, + tLen = thumbs.length, + thumb; + + Ext.destroy(me.innerEl, me.endEl, me.focusEl); + + for (; t < tLen; t++) { + thumb = thumbs[t]; + + Ext.destroy(thumb); + } + + me.callParent(); + } +}); + + +Ext.define('Ext.tab.Tab', { + extend: Ext.button.Button , + alias: 'widget.tab', + + + + + + + isTab: true, + + baseCls: Ext.baseCSSPrefix + 'tab', + closeElOverCls: Ext.baseCSSPrefix + 'tab-close-btn-over', + + + activeCls: 'active', + + + + + closableCls: 'closable', + + + closable: true, + + + + closeText: 'Close Tab', + + + + active: false, + + + + childEls: [ + 'closeEl' + ], + + scale: false, + + position: 'top', + + initComponent: function() { + var me = this; + + me.addEvents( + + 'activate', + + + 'deactivate', + + + 'beforeclose', + + + 'close' + ); + + me.callParent(arguments); + + if (me.card) { + me.setCard(me.card); + } + + me.overCls = ['over', me.position + '-over']; + }, + + getTemplateArgs: function() { + var me = this, + result = me.callParent(); + + result.closable = me.closable; + result.closeText = me.closeText; + + return result; + }, + + getFramingInfoCls: function(){ + return this.baseCls + '-' + this.ui + '-' + this.position; + }, + + beforeRender: function() { + var me = this, + tabBar = me.up('tabbar'), + tabPanel = me.up('tabpanel'); + + me.callParent(); + + me.addClsWithUI(me.position); + + if (me.active) { + me.addClsWithUI([me.activeCls, me.position + '-' + me.activeCls]); + } + + + + + me.syncClosableUI(); + + + if (!me.minWidth) { + me.minWidth = (tabBar) ? tabBar.minTabWidth : me.minWidth; + if (!me.minWidth && tabPanel) { + me.minWidth = tabPanel.minTabWidth; + } + if (me.minWidth && me.iconCls) { + me.minWidth += 25; + } + } + if (!me.maxWidth) { + me.maxWidth = (tabBar) ? tabBar.maxTabWidth : me.maxWidth; + if (!me.maxWidth && tabPanel) { + me.maxWidth = tabPanel.maxTabWidth; + } + } + }, + + onRender: function() { + var me = this; + + me.setElOrientation(); + + me.callParent(arguments); + + if (me.closable) { + me.closeEl.addClsOnOver(me.closeElOverCls); + } + + me.keyNav = new Ext.util.KeyNav(me.el, { + enter: me.onEnterKey, + del: me.onDeleteKey, + scope: me + }); + }, + + setElOrientation: function() { + var position = this.position; + + if (position === 'left' || position === 'right') { + this.el.setVertical(position === 'right' ? 90 : 270); + } + }, + + + enable : function(silent) { + var me = this; + + me.callParent(arguments); + + me.removeClsWithUI(me.position + '-disabled'); + + return me; + }, + + + disable : function(silent) { + var me = this; + + me.callParent(arguments); + + me.addClsWithUI(me.position + '-disabled'); + + return me; + }, + + onDestroy: function() { + var me = this; + + Ext.destroy(me.keyNav); + delete me.keyNav; + + me.callParent(arguments); + }, + + + setClosable: function(closable) { + var me = this; + + + closable = (!arguments.length || !!closable); + + if (me.closable != closable) { + me.closable = closable; + + + if (me.card) { + me.card.closable = closable; + } + + me.syncClosableUI(); + + if (me.rendered) { + me.syncClosableElements(); + + + me.updateLayout(); + } + } + }, + + + syncClosableElements: function () { + var me = this, + closeEl = me.closeEl; + + if (me.closable) { + if (!closeEl) { + closeEl = me.closeEl = me.btnWrap.insertSibling({ + tag: 'a', + cls: me.baseCls + '-close-btn', + href: '#', + title: me.closeText + }, 'after'); + } + closeEl.addClsOnOver(me.closeElOverCls); + } else if (closeEl) { + closeEl.remove(); + delete me.closeEl; + } + }, + + + syncClosableUI: function () { + var me = this, + classes = [me.closableCls, me.closableCls + '-' + me.position]; + + if (me.closable) { + me.addClsWithUI(classes); + } else { + me.removeClsWithUI(classes); + } + }, + + + setCard: function(card) { + var me = this; + + me.card = card; + me.setText(me.title || card.title); + me.setIconCls(me.iconCls || card.iconCls); + me.setIcon(me.icon || card.icon); + me.setGlyph(me.glyph || card.glyph); + }, + + + onCloseClick: function() { + var me = this; + + if (me.fireEvent('beforeclose', me) !== false) { + if (me.tabBar) { + if (me.tabBar.closeTab(me) === false) { + + return; + } + } else { + + me.fireClose(); + } + } + }, + + + fireClose: function(){ + this.fireEvent('close', this); + }, + + + onEnterKey: function(e) { + var me = this; + + if (me.tabBar) { + me.tabBar.onClick(e, me.el); + } + }, + + + onDeleteKey: function(e) { + if (this.closable) { + this.onCloseClick(); + } + }, + + + activate : function(supressEvent) { + var me = this; + + me.active = true; + me.addClsWithUI([me.activeCls, me.position + '-' + me.activeCls]); + + if (supressEvent !== true) { + me.fireEvent('activate', me); + } + }, + + + deactivate : function(supressEvent) { + var me = this; + + me.active = false; + me.removeClsWithUI([me.activeCls, me.position + '-' + me.activeCls]); + + if (supressEvent !== true) { + me.fireEvent('deactivate', me); + } + } +}); + + +Ext.define('Ext.util.Point', { + + + extend: Ext.util.Region , + + statics: { + + + fromEvent: function(e) { + e = e.browserEvent || e; + e = (e.changedTouches && e.changedTouches.length > 0) ? e.changedTouches[0] : e; + return new this(e.pageX, e.pageY); + } + }, + + + + + constructor: function(x, y) { + this.callParent([y, x, y, x]); + }, + + + toString: function() { + return "Point[" + this.x + "," + this.y + "]"; + }, + + + equals: function(p) { + return (this.x == p.x && this.y == p.y); + }, + + + isWithin: function(p, threshold) { + if (!Ext.isObject(threshold)) { + threshold = { + x: threshold, + y: threshold + }; + } + + return (this.x <= p.x + threshold.x && this.x >= p.x - threshold.x && + this.y <= p.y + threshold.y && this.y >= p.y - threshold.y); + }, + + + isContainedBy: function(region) { + if (!(region instanceof Ext.util.Region)) { + region = Ext.get(region.el || region).getRegion(); + } + return region.contains(this); + }, + + + roundedEquals: function(p) { + return (Math.round(this.x) == Math.round(p.x) && Math.round(this.y) == Math.round(p.y)); + } +}, function() { + + this.prototype.translate = Ext.util.Region.prototype.translateBy; +}); + + +Ext.define('Ext.tab.Bar', { + extend: Ext.panel.Header , + alias: 'widget.tabbar', + baseCls: Ext.baseCSSPrefix + 'tab-bar', + + + + + + + + isTabBar: true, + + + + + + + defaultType: 'tab', + + + plain: false, + + childEls: [ + 'body', 'strip' + ], + + + renderTpl: [ + '
    {baseCls}-body-{ui} {parent.baseCls}-body-{parent.ui}-{.}" style="{bodyStyle}">', + '{%this.renderContainer(out,values)%}', + '
    ', + '
    {baseCls}-strip-{ui}', + ' {parent.baseCls}-strip-{parent.ui}-{.}', + '">', + '
    ' + ], + + + + + + _reverseDockNames: { + left: 'right', + right: 'left' + }, + + + initComponent: function() { + var me = this; + + if (me.plain) { + me.addCls(me.baseCls + '-plain'); + } + + me.addClsWithUI(me.orientation); + + me.addEvents( + + 'change' + ); + + + me.callParent(arguments); + Ext.merge(me.layout, me.initialConfig.layout); + + + me.layout.align = (me.orientation == 'vertical') ? 'left' : 'top'; + me.layout.overflowHandler = new Ext.layout.container.boxOverflow.Scroller(me.layout); + + me.remove(me.titleCmp); + delete me.titleCmp; + + Ext.apply(me.renderData, { + bodyCls: me.bodyCls, + dock: me.dock + }); + }, + + onRender: function() { + var me = this; + + me.callParent(); + + if (me.orientation === 'vertical' && (Ext.isIE8 || Ext.isIE9) && Ext.isStrict) { + me.el.on({ + mousemove: me.onMouseMove, + scope: me + }); + } + }, + + afterRender: function() { + var layout = this.layout; + + this.callParent(); + if (Ext.isIE9 && Ext.isStrict && this.orientation === 'vertical') { + + + layout.innerCt.on('scroll', function() { + layout.innerCt.dom.scrollLeft = 0; + }); + } + }, + + afterLayout: function() { + this.adjustTabPositions(); + this.callParent(arguments); + }, + + adjustTabPositions: function() { + var items = this.items.items, + i = items.length, + tab; + + + + + + + if (!Ext.isIE9m) { + if (this.dock === 'right') { + + + while (i--) { + tab = items[i]; + if (tab.isVisible()) { + tab.el.setStyle('left', tab.lastBox.width + 'px'); + } + } + } else if (this.dock === 'left') { + + + while (i--) { + tab = items[i]; + if (tab.isVisible()) { + tab.el.setStyle('left', -tab.lastBox.height + 'px'); + } + } + } + } + }, + + getLayout: function() { + var me = this; + me.layout.type = (me.orientation === 'horizontal') ? 'hbox' : 'vbox'; + return me.callParent(arguments); + }, + + + onAdd: function(tab) { + tab.position = this.dock; + this.callParent(arguments); + }, + + onRemove: function(tab) { + var me = this; + + if (tab === me.previousTab) { + me.previousTab = null; + } + me.callParent(arguments); + }, + + afterComponentLayout : function(width) { + var me = this, + needsScroll = me.needsScroll; + + me.callParent(arguments); + + if (needsScroll) { + me.layout.overflowHandler.scrollToItem(me.activeTab); + } + delete me.needsScroll; + }, + + + onClick: function(e, target) { + var me = this, + tabPanel = me.tabPanel, + tabEl, tab, isCloseClick, tabInfo; + + if (e.getTarget('.' + Ext.baseCSSPrefix + 'box-scroller')) { + return; + } + + if (me.orientation === 'vertical' && (Ext.isIE8 || Ext.isIE9) && Ext.isStrict) { + tabInfo = me.getTabInfoFromPoint(e.getXY()); + tab = tabInfo.tab; + isCloseClick = tabInfo.close; + } else { + + tabEl = e.getTarget('.' + Ext.tab.Tab.prototype.baseCls); + tab = tabEl && Ext.getCmp(tabEl.id); + isCloseClick = tab && tab.closeEl && (target === tab.closeEl.dom); + } + + if (isCloseClick) { + e.preventDefault(); + } + if (tab && tab.isDisabled && !tab.isDisabled()) { + if (tab.closable && isCloseClick) { + tab.onCloseClick(); + } else { + if (tabPanel) { + + tabPanel.setActiveTab(tab.card); + } else { + me.setActiveTab(tab); + } + tab.focus(); + } + } + }, + + + onMouseMove: function(e) { + var me = this, + overTab = me._overTab, + tabInfo, tab; + + if (e.getTarget('.' + Ext.baseCSSPrefix + 'box-scroller')) { + return; + } + + tabInfo = me.getTabInfoFromPoint(e.getXY()); + tab = tabInfo.tab; + + if (tab !== overTab) { + if (overTab && overTab.rendered) { + overTab.onMouseLeave(e); + me._overTab = null; + } + if (tab) { + tab.onMouseEnter(e); + me._overTab = tab; + if (!tab.disabled) { + me.el.setStyle('cursor', 'pointer'); + } + } else { + me.el.setStyle('cursor', 'default'); + } + } + }, + + onMouseLeave: function(e) { + var overTab = this._overTab; + + if (overTab && overTab.rendered) { + overTab.onMouseLeave(e); + } + }, + + + + + + + + getTabInfoFromPoint: function(xy) { + var me = this, + tabs = me.items.items, + length = tabs.length, + innerCt = me.layout.innerCt, + innerCtXY = innerCt.getXY(), + point = new Ext.util.Point(xy[0], xy[1]), + i = 0, + lastBox, tabRegion, closeEl, close, closeXY, closeX, closeY, closeWidth, + closeHeight, tabX, tabY, tabWidth, tabHeight, closeRegion, isTabReversed, + direction, tab; + + for (; i < length; i++) { + lastBox = tabs[i].lastBox; + tabX = innerCtXY[0] + lastBox.x; + tabY = innerCtXY[1] - innerCt.dom.scrollTop + lastBox.y; + tabWidth = lastBox.width; + tabHeight = lastBox.height; + tabRegion = new Ext.util.Region( + tabY, + tabX + tabWidth, + tabY + tabHeight, + tabX + ); + if (tabRegion.contains(point)) { + tab = tabs[i]; + closeEl = tab.closeEl; + if (closeEl) { + closeXY = closeEl.getXY(); + closeWidth = closeEl.getWidth(); + closeHeight = closeEl.getHeight(); + + + + if (me._isTabReversed === undefined) { + me._isTabReversed = isTabReversed = + + + (tab.btnWrap.dom.currentStyle.filter.indexOf('rotation=2') !== -1); + } + + direction = isTabReversed ? this._reverseDockNames[me.dock] : me.dock; + + if (direction === 'right') { + closeX = tabX + tabWidth - ((closeXY[1] - tabY) + closeEl.getHeight()); + closeY = tabY + (closeXY[0] - tabX); + } else { + closeX = tabX + (closeXY[1] - tabY); + closeY = tabY + tabX + tabHeight - closeXY[0] - closeEl.getWidth(); + } + + closeRegion = new Ext.util.Region( + closeY, + closeX + closeWidth, + closeY + closeHeight, + closeX + ); + + close = closeRegion.contains(point); + } + break; + } + } + + return { + tab: tab, + close: close + }; + }, + + + closeTab: function(toClose) { + var me = this, + card = toClose.card, + tabPanel = me.tabPanel, + toActivate; + + if (card && card.fireEvent('beforeclose', card) === false) { + return false; + } + + + + + toActivate = me.findNextActivatable(toClose); + + + + Ext.suspendLayouts(); + + if (tabPanel && card) { + + + delete toClose.ownerCt; + + + + card.fireEvent('close', card); + tabPanel.remove(card); + + + if (!tabPanel.getComponent(card)) { + + toClose.fireClose(); + me.remove(toClose); + } else { + + toClose.ownerCt = me; + Ext.resumeLayouts(true); + return false; + } + } + + + if (toActivate) { + + + if (tabPanel) { + tabPanel.setActiveTab(toActivate.card); + } else { + me.setActiveTab(toActivate); + } + toActivate.focus(); + } + Ext.resumeLayouts(true); + }, + + + + findNextActivatable: function(toClose) { + var me = this; + if (toClose.active && me.items.getCount() > 1) { + return (me.previousTab && me.previousTab !== toClose && !me.previousTab.disabled) ? me.previousTab : (toClose.next('tab[disabled=false]') || toClose.prev('tab[disabled=false]')); + } + }, + + + setActiveTab: function(tab, initial) { + var me = this; + + if (!tab.disabled && tab !== me.activeTab) { + if (me.activeTab) { + if (me.activeTab.isDestroyed) { + me.previousTab = null; + } else { + me.previousTab = me.activeTab; + me.activeTab.deactivate(); + } + } + tab.activate(); + + me.activeTab = tab; + me.needsScroll = true; + + + + if (!initial) { + me.fireEvent('change', me, tab, tab.card); + + me.updateLayout(); + } + } + } +}); + + +Ext.define('Ext.tree.Column', { + extend: Ext.grid.column.Column , + alias: 'widget.treecolumn', + + tdCls: Ext.baseCSSPrefix + 'grid-cell-treecolumn', + + autoLock: true, + lockable: false, + draggable: false, + hideable: false, + + iconCls: Ext.baseCSSPrefix + 'tree-icon', + checkboxCls: Ext.baseCSSPrefix + 'tree-checkbox', + elbowCls: Ext.baseCSSPrefix + 'tree-elbow', + expanderCls: Ext.baseCSSPrefix + 'tree-expander', + textCls: Ext.baseCSSPrefix + 'tree-node-text', + innerCls: Ext.baseCSSPrefix + 'grid-cell-inner-treecolumn', + isTreeColumn: true, + + cellTpl: [ + '', + 'lineempty"/>', + '', + '-end-plus {expanderCls}"/>', + '', + 'aria-checked="true" ', + 'class="{childCls} {checkboxCls} {checkboxCls}-checked"/>', + '', + 'leafparent {iconCls}"', + 'style="background-image:url({icon})"/>', + '', + '{value}', + '', + '{value}', + '' + ], + + initComponent: function() { + var me = this; + + me.origRenderer = me.renderer; + me.origScope = me.scope || window; + + me.renderer = me.treeRenderer; + me.scope = me; + + me.callParent(); + }, + + treeRenderer: function(value, metaData, record, rowIdx, colIdx, store, view){ + var me = this, + cls = record.get('cls'), + renderer = me.origRenderer, + data = record.data, + parent = record.parentNode, + rootVisible = view.rootVisible, + lines = [], + parentData; + + if (cls) { + metaData.tdCls += ' ' + cls; + } + + while (parent && (rootVisible || parent.data.depth > 0)) { + parentData = parent.data; + lines[rootVisible ? parentData.depth : parentData.depth - 1] = + parentData.isLast ? 0 : 1; + parent = parent.parentNode; + } + + return me.getTpl('cellTpl').apply({ + record: record, + baseIconCls: me.iconCls, + iconCls: data.iconCls, + icon: data.icon, + checkboxCls: me.checkboxCls, + checked: data.checked, + elbowCls: me.elbowCls, + expanderCls: me.expanderCls, + textCls: me.textCls, + leaf: data.leaf, + expandable: record.isExpandable(), + isLast: data.isLast, + blankUrl: Ext.BLANK_IMAGE_URL, + href: data.href, + hrefTarget: data.hrefTarget, + lines: lines, + metaData: metaData, + + + + + childCls: me.getChildCls ? me.getChildCls() + ' ' : '', + value: renderer ? renderer.apply(me.origScope, arguments) : value + }); + } +}); + + +Ext.define('Ext.selection.CheckboxModel', { + alias: 'selection.checkboxmodel', + extend: Ext.selection.RowModel , + + + mode: 'MULTI', + + + injectCheckbox: 0, + + + checkOnly: false, + + + showHeaderCheckbox: undefined, + + + checkSelector: '.' + Ext.baseCSSPrefix + 'grid-row-checker', + + headerWidth: 24, + + + checkerOnCls: Ext.baseCSSPrefix + 'grid-hd-checker-on', + + constructor: function(){ + var me = this; + me.callParent(arguments); + + + + if (me.mode === 'SINGLE' && me.showHeaderCheckbox !== true) { + me.showHeaderCheckbox = false; + } + }, + + beforeViewRender: function(view) { + var me = this, + owner; + + me.callParent(arguments); + + + if (!me.hasLockedHeader() || view.headerCt.lockedCt) { + if (me.showHeaderCheckbox !== false) { + view.headerCt.on('headerclick', me.onHeaderClick, me); + } + me.addCheckbox(view, true); + owner = view.ownerCt; + + if (view.headerCt.lockedCt) { + owner = owner.ownerCt; + } + me.mon(owner, 'reconfigure', me.onReconfigure, me); + } + }, + + bindComponent: function(view) { + var me = this; + me.sortable = false; + me.callParent(arguments); + }, + + hasLockedHeader: function(){ + var views = this.views, + vLen = views.length, + v; + + for (v = 0; v < vLen; v++) { + if (views[v].headerCt.lockedCt) { + return true; + } + } + return false; + }, + + + addCheckbox: function(view, initial){ + var me = this, + checkbox = me.injectCheckbox, + headerCt = view.headerCt; + + + if (checkbox !== false) { + if (checkbox == 'first') { + checkbox = 0; + } else if (checkbox == 'last') { + checkbox = headerCt.getColumnCount(); + } + Ext.suspendLayouts(); + if (view.getStore().buffered) { + me.showHeaderCheckbox = false; + } + headerCt.add(checkbox, me.getHeaderConfig()); + Ext.resumeLayouts(); + } + + if (initial !== true) { + view.refresh(); + } + }, + + + onReconfigure: function(grid, store, columns) { + if(columns) { + this.addCheckbox(this.views[0]); + } + }, + + + toggleUiHeader: function(isChecked) { + var view = this.views[0], + headerCt = view.headerCt, + checkHd = headerCt.child('gridcolumn[isCheckerHd]'), + cls = this.checkerOnCls; + + if (checkHd) { + if (isChecked) { + checkHd.addCls(cls); + } else { + checkHd.removeCls(cls); + } + } + }, + + + onHeaderClick: function(headerCt, header, e) { + if (header.isCheckerHd) { + e.stopEvent(); + var me = this, + isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on'); + + + me.preventFocus = true; + if (isChecked) { + me.deselectAll(); + } else { + me.selectAll(); + } + delete me.preventFocus; + } + }, + + + getHeaderConfig: function() { + var me = this, + showCheck = me.showHeaderCheckbox !== false; + + return { + isCheckerHd: showCheck, + text : ' ', + clickTargetName: 'el', + width: me.headerWidth, + sortable: false, + draggable: false, + resizable: false, + hideable: false, + menuDisabled: true, + dataIndex: '', + cls: showCheck ? Ext.baseCSSPrefix + 'column-header-checkbox ' : '', + renderer: Ext.Function.bind(me.renderer, me), + editRenderer: me.editRenderer || me.renderEmpty, + locked: me.hasLockedHeader() + }; + }, + + renderEmpty: function() { + return ' '; + }, + + + refresh: function() { + this.callParent(arguments); + this.updateHeaderState(); + }, + + + renderer: function(value, metaData, record, rowIndex, colIndex, store, view) { + var baseCSSPrefix = Ext.baseCSSPrefix; + metaData.tdCls = baseCSSPrefix + 'grid-cell-special ' + baseCSSPrefix + 'grid-cell-row-checker'; + return '
     
    '; + }, + + processSelection: function(view, record, item, index, e){ + var me = this, + checker = e.getTarget(me.checkSelector), + mode; + + + if (me.checkOnly && !checker) { + return; + } + + if (checker) { + mode = me.getSelectionMode(); + + + if (mode !== 'SINGLE') { + me.setSelectionMode('SIMPLE'); + } + me.selectWithEvent(record, e); + me.setSelectionMode(mode); + } else { + me.selectWithEvent(record, e); + } + }, + + + onSelectChange: function() { + this.callParent(arguments); + if (!this.suspendChange) { + this.updateHeaderState(); + } + }, + + + onStoreLoad: function() { + this.callParent(arguments); + this.updateHeaderState(); + }, + + onStoreAdd: function() { + this.callParent(arguments); + this.updateHeaderState(); + }, + + onStoreRemove: function() { + this.callParent(arguments); + this.updateHeaderState(); + }, + + onStoreRefresh: function(){ + this.callParent(arguments); + this.updateHeaderState(); + }, + + maybeFireSelectionChange: function(fireEvent) { + if (fireEvent && !this.suspendChange) { + this.updateHeaderState(); + } + this.callParent(arguments); + }, + + resumeChanges: function(){ + this.callParent(); + if (!this.suspendChange) { + this.updateHeaderState(); + } + }, + + + updateHeaderState: function() { + + var me = this, + store = me.store, + storeCount = store.getCount(), + views = me.views, + hdSelectStatus = false, + selectedCount = 0, + selected, len, i; + + if (!store.buffered && storeCount > 0) { + selected = me.selected; + hdSelectStatus = true; + for (i = 0, len = selected.getCount(); i < len; ++i) { + if (!me.storeHasSelected(selected.getAt(i))) { + break; + } + ++selectedCount; + } + hdSelectStatus = storeCount === selectedCount; + } + + if (views && views.length) { + me.toggleUiHeader(hdSelectStatus); + } + } +}); + + +Ext.define('Ext.slider.Single', { + extend: Ext.slider.Multi , + alias: ['widget.slider', 'widget.sliderfield'], + alternateClassName: ['Ext.Slider', 'Ext.form.SliderField', 'Ext.slider.SingleSlider', 'Ext.slider.Slider'], + + + getValue: function() { + + return this.callParent([0]); + }, + + + setValue: function(value, animate) { + var args = arguments, + len = args.length; + + + + + if (len == 1 || (len <= 3 && typeof args[1] != 'number')) { + args = Ext.toArray(args); + args.unshift(0); + } + return this.callParent(args); + }, + + + getNearest : function(){ + + return this.thumbs[0]; + } +}); + + +Ext.define('Ext.state.CookieProvider', { + extend: Ext.state.Provider , + + + + + + + + + + + constructor : function(config){ + var me = this; + me.path = "/"; + me.expires = new Date(Ext.Date.now() + (1000*60*60*24*7)); + me.domain = null; + me.secure = false; + me.callParent(arguments); + me.state = me.readCookies(); + }, + + + set : function(name, value){ + var me = this; + + if(typeof value == "undefined" || value === null){ + me.clear(name); + return; + } + me.setCookie(name, value); + me.callParent(arguments); + }, + + + clear : function(name){ + this.clearCookie(name); + this.callParent(arguments); + }, + + + readCookies : function(){ + var cookies = {}, + c = document.cookie + ";", + re = /\s?(.*?)=(.*?);/g, + prefix = this.prefix, + len = prefix.length, + matches, + name, + value; + + while((matches = re.exec(c)) != null){ + name = matches[1]; + value = matches[2]; + if (name && name.substring(0, len) == prefix){ + cookies[name.substr(len)] = this.decodeValue(value); + } + } + return cookies; + }, + + + setCookie : function(name, value){ + var me = this; + + document.cookie = me.prefix + name + "=" + me.encodeValue(value) + + ((me.expires == null) ? "" : ("; expires=" + me.expires.toGMTString())) + + ((me.path == null) ? "" : ("; path=" + me.path)) + + ((me.domain == null) ? "" : ("; domain=" + me.domain)) + + ((me.secure == true) ? "; secure" : ""); + }, + + + clearCookie : function(name){ + var me = this; + + document.cookie = me.prefix + name + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" + + ((me.path == null) ? "" : ("; path=" + me.path)) + + ((me.domain == null) ? "" : ("; domain=" + me.domain)) + + ((me.secure == true) ? "; secure" : ""); + } +}); + + + +Ext.define('Ext.state.LocalStorageProvider', { + + + extend: Ext.state.Provider , + + alias: 'state.localstorage', + + + + constructor: function(){ + var me = this; + me.callParent(arguments); + me.store = me.getStorageObject(); + if (me.store) { + me.state = me.readLocalStorage(); + } else { + me.state = {}; + } + }, + + readLocalStorage: function(){ + var store = this.store, + i = 0, + len = store.length, + prefix = this.prefix, + prefixLen = prefix.length, + data = {}, + key; + + for (; i < len; ++i) { + key = store.key(i); + if (key.substring(0, prefixLen) == prefix) { + data[key.substr(prefixLen)] = this.decodeValue(store.getItem(key)); + } + } + return data; + }, + + set : function(name, value){ + var me = this; + + me.clear(name); + if (typeof value == "undefined" || value === null) { + return; + } + me.store.setItem(me.prefix + name, me.encodeValue(value)); + me.callParent(arguments); + }, + + + clear : function(name){ + this.store.removeItem(this.prefix + name); + this.callParent(arguments); + }, + + getStorageObject: function(){ + if (Ext.supports.LocalStorage) { + return window.localStorage; + } + return false; + } +}); + + +Ext.define('Ext.tab.Panel', { + extend: Ext.panel.Panel , + alias: 'widget.tabpanel', + alternateClassName: ['Ext.TabPanel'], + + + + + tabPosition : 'top', + + + + + + + + + + + removePanelHeader: true, + + + plain: false, + + + itemCls: Ext.baseCSSPrefix + 'tabpanel-child', + + + minTabWidth: undefined, + + + maxTabWidth: undefined, + + + deferredRender : true, + + + initComponent: function() { + var me = this, + dockedItems = [].concat(me.dockedItems || []), + activeTab = me.activeTab || (me.activeTab = 0), + tabPosition = me.tabPosition; + + + me.layout = new Ext.layout.container.Card(Ext.apply({ + owner: me, + deferredRender: me.deferredRender, + itemCls: me.itemCls, + activeItem: activeTab + }, me.layout)); + + + me.tabBar = new Ext.tab.Bar(Ext.apply({ + ui: me.ui, + dock: me.tabPosition, + orientation: (tabPosition == 'top' || tabPosition == 'bottom') ? 'horizontal' : 'vertical', + plain: me.plain, + cardLayout: me.layout, + tabPanel: me + }, me.tabBar)); + + dockedItems.push(me.tabBar); + me.dockedItems = dockedItems; + + me.addEvents( + + 'beforetabchange', + + + 'tabchange' + ); + + me.callParent(arguments); + + + activeTab = me.activeTab = me.getComponent(activeTab); + + + if (activeTab) { + me.tabBar.setActiveTab(activeTab.tab, true); + } + }, + + + setActiveTab: function(card) { + var me = this, + previous; + + card = me.getComponent(card); + if (card) { + previous = me.getActiveTab(); + + if (previous !== card && me.fireEvent('beforetabchange', me, card, previous) === false) { + return false; + } + + + + if (!card.isComponent) { + Ext.suspendLayouts(); + card = me.add(card); + Ext.resumeLayouts(); + } + + + + me.activeTab = card; + + + + + Ext.suspendLayouts(); + me.layout.setActiveItem(card); + + + card = me.activeTab = me.layout.getActiveItem(); + + + if (card && card !== previous) { + + + me.tabBar.setActiveTab(card.tab); + Ext.resumeLayouts(true); + + + if (previous !== card) { + me.fireEvent('tabchange', me, card, previous); + } + } + + else { + Ext.resumeLayouts(true); + } + return card; + } + }, + + + getActiveTab: function() { + var me = this, + + result = me.getComponent(me.activeTab); + + + if (result && me.items.indexOf(result) != -1) { + me.activeTab = result; + } else { + me.activeTab = null; + } + + return me.activeTab; + }, + + + getTabBar: function() { + return this.tabBar; + }, + + + onAdd: function(item, index) { + var me = this, + cfg = item.tabConfig || {}, + defaultConfig = { + xtype: 'tab', + ui: me.tabBar.ui, + card: item, + disabled: item.disabled, + closable: item.closable, + hidden: item.hidden && !item.hiddenByLayout, + tooltip: item.tooltip, + tabBar: me.tabBar, + position: me.tabPosition, + closeText: item.closeText + }; + + cfg = Ext.applyIf(cfg, defaultConfig); + + + item.tab = me.tabBar.insert(index, cfg); + + item.on({ + scope : me, + enable: me.onItemEnable, + disable: me.onItemDisable, + beforeshow: me.onItemBeforeShow, + iconchange: me.onItemIconChange, + iconclschange: me.onItemIconClsChange, + titlechange: me.onItemTitleChange + }); + + if (item.isPanel) { + if (me.removePanelHeader) { + if (item.rendered) { + if (item.header) { + item.header.hide(); + } + } else { + item.header = false; + } + } + if (item.isPanel && me.border) { + item.setBorder(false); + } + } + }, + + + onItemEnable: function(item){ + item.tab.enable(); + }, + + + onItemDisable: function(item){ + item.tab.disable(); + }, + + + onItemBeforeShow: function(item) { + if (item !== this.activeTab) { + this.setActiveTab(item); + return false; + } + }, + + + onItemIconChange: function(item, newIcon) { + item.tab.setIcon(newIcon); + }, + + + onItemIconClsChange: function(item, newIconCls) { + item.tab.setIconCls(newIconCls); + }, + + + onItemTitleChange: function(item, newTitle) { + item.tab.setText(newTitle); + }, + + + doRemove: function(item, autoDestroy) { + var me = this, + toActivate; + + + if (me.destroying || me.items.getCount() == 1) { + me.activeTab = null; + } + + + + else if ((toActivate = me.tabBar.items.indexOf(me.tabBar.findNextActivatable(item.tab))) !== -1) { + me.setActiveTab(toActivate); + } + this.callParent(arguments); + + + delete item.tab.card; + delete item.tab; + }, + + + onRemove: function(item, destroying) { + var me = this; + + item.un({ + scope : me, + enable: me.onItemEnable, + disable: me.onItemDisable, + beforeshow: me.onItemBeforeShow + }); + if (!me.destroying && item.tab.ownerCt === me.tabBar) { + me.tabBar.remove(item.tab); + } + } +}); + + +Ext.define('Ext.toolbar.Spacer', { + extend: Ext.Component , + alias: 'widget.tbspacer', + alternateClassName: 'Ext.Toolbar.Spacer', + baseCls: Ext.baseCSSPrefix + 'toolbar-spacer', + focusable: false +}); + + +Ext.define('Ext.tree.Panel', { + extend: Ext.panel.Table , + alias: 'widget.treepanel', + alternateClassName: ['Ext.tree.TreePanel', 'Ext.TreePanel'], + + viewType: 'treeview', + selType: 'treemodel', + + treeCls: Ext.baseCSSPrefix + 'tree-panel', + + deferRowRender: false, + + + rowLines: false, + + + lines: true, + + + useArrows: false, + + + singleExpand: false, + + ddConfig: { + enableDrag: true, + enableDrop: true + }, + + + + + rootVisible: true, + + + displayField: 'text', + + + root: null, + + + + normalCfgCopy: ['displayField', 'root', 'singleExpand', 'useArrows', 'lines', 'rootVisible', 'scroll'], + lockedCfgCopy: ['displayField', 'root', 'singleExpand', 'useArrows', 'lines', 'rootVisible'], + + isTree: true, + + + + + + + + arrowCls: Ext.baseCSSPrefix + 'tree-arrows', + linesCls: Ext.baseCSSPrefix + 'tree-lines', + noLinesCls: Ext.baseCSSPrefix + 'tree-no-lines', + autoWidthCls: Ext.baseCSSPrefix + 'autowidth-table', + + constructor: function(config) { + config = config || {}; + if (config.animate === undefined) { + config.animate = Ext.isBoolean(this.animate) ? this.animate : Ext.enableFx; + } + this.enableAnimations = config.animate; + delete config.animate; + + this.callParent([config]); + }, + + initComponent: function() { + var me = this, + cls = [me.treeCls], + store = me.store, + view; + + if (me.useArrows) { + cls.push(me.arrowCls); + me.lines = false; + } + + if (me.lines) { + cls.push(me.linesCls); + } else if (!me.useArrows) { + cls.push(me.noLinesCls); + } + + if (Ext.isString(store)) { + store = me.store = Ext.StoreMgr.lookup(store); + } else if (!store || Ext.isObject(store) && !store.isStore) { + store = me.store = new Ext.data.TreeStore(Ext.apply({ + root: me.root, + fields: me.fields, + model: me.model, + folderSort: me.folderSort + }, store)); + } else if (me.root) { + store = me.store = Ext.data.StoreManager.lookup(store); + store.setRootNode(me.root); + if (me.folderSort !== undefined) { + store.folderSort = me.folderSort; + store.sort(); + } + } + + + + + + + me.viewConfig = Ext.apply({ + rootVisible: me.rootVisible, + animate: me.enableAnimations, + singleExpand: me.singleExpand, + node: store.getRootNode(), + hideHeaders: me.hideHeaders + }, me.viewConfig); + + + if (!me.columns) { + if (me.initialConfig.hideHeaders === undefined) { + me.hideHeaders = true; + } + me.addCls(me.autoWidthCls); + me.columns = [{ + xtype : 'treecolumn', + text : 'Name', + width : Ext.isIE6 ? '100%' : 10000, + dataIndex: me.displayField + }]; + } + + if (me.cls) { + cls.push(me.cls); + } + me.cls = cls.join(' '); + + me.callParent(); + + + + me.selModel.treeStore = me.store; + + view = me.getView(); + + + + me.relayEvents(view, [ + + 'checkchange', + + 'afteritemexpand', + + 'afteritemcollapse' + ]); + + + if (!view.isLockingView) { + + if (!view.rootVisible && !me.getRootNode()) { + me.setRootNode({ + expanded: true + }); + } + } + }, + + + + + + bindStore: function(store, initial) { + var me = this; + + me.store = store; + + + me.storeListeners = me.mon(store, { + destroyable: true, + load: me.onStoreLoad, + rootchange: me.onRootChange, + clear: me.onClear, + scope: me + }); + + + me.storeRelayers = me.relayEvents(store, [ + + 'beforeload', + + + 'load' + ]); + + + me.storeRelayers1 = me.mon(store, { + destroyable: true, + + + append: me.createRelayer('itemappend'), + + + remove: me.createRelayer('itemremove'), + + + move: me.createRelayer('itemmove', [0, 4]), + + + insert: me.createRelayer('iteminsert'), + + + beforeappend: me.createRelayer('beforeitemappend'), + + + beforeremove: me.createRelayer('beforeitemremove'), + + + beforemove: me.createRelayer('beforeitemmove'), + + + beforeinsert: me.createRelayer('beforeiteminsert'), + + + expand: me.createRelayer('itemexpand', [0, 1]), + + + collapse: me.createRelayer('itemcollapse', [0, 1]), + + + beforeexpand: me.createRelayer('beforeitemexpand', [0, 1]), + + + beforecollapse: me.createRelayer('beforeitemcollapse', [0, 1]) + }); + + + store.ownerTree = me; + + if (!initial) { + me.view.setRootNode(me.getRootNode()); + } + }, + + + + unbindStore: function() { + var me = this, + store = me.store; + + if (store) { + Ext.destroy(me.storeListeners, me.storeRelayers, me.storeRelayers1); + delete store.ownerTree; + } + }, + + onClear: function(){ + this.view.onClear(); + }, + + + setRootNode: function() { + return this.store.setRootNode.apply(this.store, arguments); + }, + + + getRootNode: function() { + return this.store.getRootNode(); + }, + + onRootChange: function(root) { + this.view.setRootNode(root); + }, + + + getChecked: function() { + return this.getView().getChecked(); + }, + + isItemChecked: function(rec) { + return rec.get('checked'); + }, + + + expandNode: function(record, deep, callback, scope) { + return this.getView().expand(record, deep, callback, scope || this); + }, + + + collapseNode: function(record, deep, callback, scope) { + return this.getView().collapse(record, deep, callback, scope || this); + }, + + + expandAll : function(callback, scope) { + var me = this, + root = me.getRootNode(), + animate = me.enableAnimations; + if (root) { + if (!animate) { + Ext.suspendLayouts(); + } + root.expand(true, callback, scope || me); + if (!animate) { + Ext.resumeLayouts(true); + } + } + }, + + + collapseAll : function(callback, scope) { + var me = this, + root = me.getRootNode(), + animate = me.enableAnimations, + view = me.getView(); + + if (root) { + if (!animate) { + Ext.suspendLayouts(); + } + scope = scope || me; + if (view.rootVisible) { + root.collapse(true, callback, scope); + } else { + root.collapseChildren(true, callback, scope); + } + if (!animate) { + Ext.resumeLayouts(true); + } + } + }, + + + expandPath: function(path, field, separator, callback, scope) { + var me = this, + current = me.getRootNode(), + index = 1, + view = me.getView(), + keys, + expander; + + field = field || me.getRootNode().idProperty; + separator = separator || '/'; + + if (Ext.isEmpty(path)) { + Ext.callback(callback, scope || me, [false, null]); + return; + } + + keys = path.split(separator); + if (current.get(field) != keys[1]) { + + Ext.callback(callback, scope || me, [false, current]); + return; + } + + expander = function(){ + if (++index === keys.length) { + Ext.callback(callback, scope || me, [true, current]); + return; + } + var node = current.findChild(field, keys[index]); + if (!node) { + Ext.callback(callback, scope || me, [false, current]); + return; + } + current = node; + current.expand(false, expander); + }; + current.expand(false, expander); + }, + + + selectPath: function(path, field, separator, callback, scope) { + var me = this, + root, + keys, + last; + + field = field || me.getRootNode().idProperty; + separator = separator || '/'; + + keys = path.split(separator); + last = keys.pop(); + if (keys.length > 1) { + me.expandPath(keys.join(separator), field, separator, function(success, node){ + var lastNode = node; + if (success && node) { + node = node.findChild(field, last); + if (node) { + me.getSelectionModel().select(node); + Ext.callback(callback, scope || me, [true, node]); + return; + } + } + Ext.callback(callback, scope || me, [false, lastNode]); + }, me); + } else { + root = me.getRootNode(); + if (root.getId() === last) { + me.getSelectionModel().select(root); + Ext.callback(callback, scope || me, [true, root]); + } else { + Ext.callback(callback, scope || me, [false, null]); + } + } + } +}); + + +Ext.define('Ext.view.DragZone', { + extend: Ext.dd.DragZone , + containerScroll: false, + + constructor: function(config) { + var me = this, + view, + ownerCt, + el; + + Ext.apply(me, config); + + + + + + + if (!me.ddGroup) { + me.ddGroup = 'view-dd-zone-' + me.view.id; + } + + + + + + + + + view = me.view; + ownerCt = view.ownerCt; + + + if (ownerCt) { + el = ownerCt.getTargetEl().dom; + } else { + el = view.el.dom.parentNode; + } + me.callParent([el]); + + me.ddel = Ext.get(document.createElement('div')); + me.ddel.addCls(Ext.baseCSSPrefix + 'grid-dd-wrap'); + }, + + init: function(id, sGroup, config) { + this.initTarget(id, sGroup, config); + this.view.mon(this.view, { + itemmousedown: this.onItemMouseDown, + scope: this + }); + }, + + onValidDrop: function(target, e, id) { + this.callParent(); + + target.el.focus(); + }, + + onItemMouseDown: function(view, record, item, index, e) { + if (!this.isPreventDrag(e, record, item, index)) { + + + + if (view.focusRow) { + view.focusRow(record); + } + this.handleMouseDown(e); + } + }, + + + isPreventDrag: function(e) { + return false; + }, + + getDragData: function(e) { + var view = this.view, + item = e.getTarget(view.getItemSelector()); + + if (item) { + return { + copy: view.copy || (view.allowCopy && e.ctrlKey), + event: new Ext.EventObjectImpl(e), + view: view, + ddel: this.ddel, + item: item, + records: view.getSelectionModel().getSelection(), + fromPosition: Ext.fly(item).getXY() + }; + } + }, + + onInitDrag: function(x, y) { + var me = this, + data = me.dragData, + view = data.view, + selectionModel = view.getSelectionModel(), + record = view.getRecord(data.item); + + + + if (!selectionModel.isSelected(record)) { + selectionModel.select(record, true); + } + data.records = selectionModel.getSelection(); + + me.ddel.update(me.getDragText()); + me.proxy.update(me.ddel.dom); + me.onStartDrag(x, y); + return true; + }, + + getDragText: function() { + var count = this.dragData.records.length; + return Ext.String.format(this.dragText, count, count == 1 ? '' : 's'); + }, + + getRepairXY : function(e, data){ + return data ? data.fromPosition : false; + } +}); + + +Ext.define('Ext.tree.ViewDragZone', { + extend: Ext.view.DragZone , + + isPreventDrag: function(e, record) { + return (record.get('allowDrag') === false) || !!e.getTarget(this.view.expanderSelector); + }, + + getDragText: function() { + var records = this.dragData.records, + count = records.length, + text = records[0].get(this.displayField), + suffix = 's'; + + if (count === 1 && text) { + return text; + } else if (!text) { + suffix = ''; + } + return Ext.String.format(this.dragText, count, suffix); + }, + + afterRepair: function() { + var me = this, + view = me.view, + selectedRowCls = view.selectedItemCls, + records = me.dragData.records, + r, + rLen = records.length, + fly = Ext.fly, + item; + + if (Ext.enableFx && me.repairHighlight) { + + for (r = 0; r < rLen; r++) { + + + item = view.getNode(records[r]); + + + + fly(item.firstChild).highlight(me.repairHighlightColor, { + listeners: { + beforeanimate: function() { + if (view.isSelected(item)) { + fly(item).removeCls(selectedRowCls); + } + }, + afteranimate: function() { + if (view.isSelected(item)) { + fly(item).addCls(selectedRowCls); + } + } + } + }); + } + + } + me.dragging = false; + } +}); + + +Ext.define('Ext.tree.ViewDropZone', { + extend: Ext.view.DropZone , + + + allowParentInserts: false, + + + allowContainerDrops: false, + + + appendOnly: false, + + + expandDelay : 500, + + indicatorCls: Ext.baseCSSPrefix + 'tree-ddindicator', + + + expandNode : function(node) { + var view = this.view; + this.expandProcId = false; + if (!node.isLeaf() && !node.isExpanded()) { + view.expand(node); + this.expandProcId = false; + } + }, + + + queueExpand : function(node) { + this.expandProcId = Ext.Function.defer(this.expandNode, this.expandDelay, this, [node]); + }, + + + cancelExpand : function() { + if (this.expandProcId) { + clearTimeout(this.expandProcId); + this.expandProcId = false; + } + }, + + getPosition: function(e, node) { + var view = this.view, + record = view.getRecord(node), + y = e.getPageY(), + noAppend = record.isLeaf(), + noBelow = false, + region = Ext.fly(node).getRegion(), + fragment; + + + if (record.isRoot()) { + return 'append'; + } + + + if (this.appendOnly) { + return noAppend ? false : 'append'; + } + + if (!this.allowParentInserts) { + noBelow = record.hasChildNodes() && record.isExpanded(); + } + + fragment = (region.bottom - region.top) / (noAppend ? 2 : 3); + if (y >= region.top && y < (region.top + fragment)) { + return 'before'; + } + else if (!noBelow && (noAppend || (y >= (region.bottom - fragment) && y <= region.bottom))) { + return 'after'; + } + else { + return 'append'; + } + }, + + isValidDropPoint : function(node, position, dragZone, e, data) { + if (!node || !data.item) { + return false; + } + + var view = this.view, + targetNode = view.getRecord(node), + draggedRecords = data.records, + dataLength = draggedRecords.length, + ln = draggedRecords.length, + i, record; + + + if (!(targetNode && position && dataLength)) { + return false; + } + + + for (i = 0; i < ln; i++) { + record = draggedRecords[i]; + if (record.isNode && record.contains(targetNode)) { + return false; + } + } + + + if (position === 'append' && targetNode.get('allowDrop') === false) { + return false; + } + else if (position != 'append' && targetNode.parentNode.get('allowDrop') === false) { + return false; + } + + + if (Ext.Array.contains(draggedRecords, targetNode)) { + return false; + } + return view.fireEvent('nodedragover', targetNode, position, data, e) !== false; + }, + + onNodeOver : function(node, dragZone, e, data) { + var position = this.getPosition(e, node), + returnCls = this.dropNotAllowed, + view = this.view, + targetNode = view.getRecord(node), + indicator = this.getIndicator(), + indicatorY = 0; + + + this.cancelExpand(); + if (position == 'append' && !this.expandProcId && !Ext.Array.contains(data.records, targetNode) && !targetNode.isLeaf() && !targetNode.isExpanded()) { + this.queueExpand(targetNode); + } + + + if (this.isValidDropPoint(node, position, dragZone, e, data)) { + this.valid = true; + this.currentPosition = position; + this.overRecord = targetNode; + + indicator.setWidth(Ext.fly(node).getWidth()); + indicatorY = Ext.fly(node).getY() - Ext.fly(view.el).getY() - 1; + + + if (position == 'before') { + returnCls = targetNode.isFirst() ? Ext.baseCSSPrefix + 'tree-drop-ok-above' : Ext.baseCSSPrefix + 'tree-drop-ok-between'; + indicator.showAt(0, indicatorY); + dragZone.proxy.show(); + } else if (position == 'after') { + returnCls = targetNode.isLast() ? Ext.baseCSSPrefix + 'tree-drop-ok-below' : Ext.baseCSSPrefix + 'tree-drop-ok-between'; + indicatorY += Ext.fly(node).getHeight(); + indicator.showAt(0, indicatorY); + dragZone.proxy.show(); + } else { + returnCls = Ext.baseCSSPrefix + 'tree-drop-ok-append'; + + indicator.hide(); + } + } else { + this.valid = false; + } + + this.currentCls = returnCls; + return returnCls; + }, + + + onNodeOut : function(n, dd, e, data){ + this.valid = false; + this.getIndicator().hide(); + }, + + onContainerOver : function(dd, e, data) { + return e.getTarget('.' + this.indicatorCls) ? this.currentCls : this.dropNotAllowed; + }, + + notifyOut: function() { + this.callParent(arguments); + this.cancelExpand(); + }, + + handleNodeDrop : function(data, targetNode, position) { + var me = this, + targetView = me.view, + parentNode = targetNode ? targetNode.parentNode : targetView.panel.getRootNode(), + Model = targetView.getStore().treeStore.model, + records, i, len, record, + insertionMethod, argList, + needTargetExpand, + transferData; + + + if (data.copy) { + records = data.records; + data.records = []; + for (i = 0, len = records.length; i < len; i++) { + record = records[i]; + if (record.isNode) { + data.records.push(record.copy(undefined, true)); + } else { + + data.records.push(new Model(record.data, record.getId())); + } + } + } + + + me.cancelExpand(); + + + + + + if (position == 'before') { + insertionMethod = parentNode.insertBefore; + argList = [null, targetNode]; + targetNode = parentNode; + } + else if (position == 'after') { + if (targetNode.nextSibling) { + insertionMethod = parentNode.insertBefore; + argList = [null, targetNode.nextSibling]; + } + else { + insertionMethod = parentNode.appendChild; + argList = [null]; + } + targetNode = parentNode; + } + else { + if (!(targetNode.isExpanded() || targetNode.isLoading())) { + needTargetExpand = true; + } + insertionMethod = targetNode.appendChild; + argList = [null]; + } + + + transferData = function() { + var color, + n; + + + Ext.suspendLayouts(); + + targetView.getSelectionModel().clearSelections(); + + + for (i = 0, len = data.records.length; i < len; i++) { + record = data.records[i]; + if (!record.isNode) { + if (record.isModel) { + record = new Model(record.data, record.getId()); + } else { + record = new Model(record); + } + data.records[i] = record; + } + argList[0] = record; + insertionMethod.apply(targetNode, argList); + } + + + if (me.sortOnDrop) { + targetNode.sort(targetNode.getOwnerTree().store.generateComparator()); + } + + Ext.resumeLayouts(true); + + + + + if (Ext.enableFx && me.dropHighlight) { + color = me.dropHighlightColor; + + for (i = 0; i < len; i++) { + n = targetView.getNode(data.records[i]); + if (n) { + Ext.fly(n).highlight(color); + } + } + } + }; + + + if (needTargetExpand) { + targetNode.expand(false, transferData); + } + + + + + + else if (targetNode.isLoading()) { + targetNode.on({ + expand: transferData, + delay: 1, + single: true + }); + } + + else { + transferData(); + } + } +}); + + +Ext.define('Ext.tree.plugin.TreeViewDragDrop', { + extend: Ext.AbstractPlugin , + alias: 'plugin.treeviewdragdrop', + + + + + + + + + + + + + dragText : '{0} selected node{1}', + + + + allowParentInserts: false, + + + allowContainerDrops: false, + + + appendOnly: false, + + + ddGroup : "TreeDD", + + + containerScroll: false, + + + + + + + + + expandDelay : 1000, + + + enableDrop: true, + + + enableDrag: true, + + + nodeHighlightColor: 'c3daf9', + + + nodeHighlightOnDrop: Ext.enableFx, + + + nodeHighlightOnRepair: Ext.enableFx, + + + displayField: 'text', + + init : function(view) { + view.on('render', this.onViewRender, this, {single: true}); + }, + + + destroy: function() { + Ext.destroy(this.dragZone, this.dropZone); + }, + + onViewRender : function(view) { + var me = this, + scrollEl; + + if (me.enableDrag) { + if (me.containerScroll) { + scrollEl = view.getEl(); + } + me.dragZone = new Ext.tree.ViewDragZone({ + view: view, + ddGroup: me.dragGroup || me.ddGroup, + dragText: me.dragText, + displayField: me.displayField, + repairHighlightColor: me.nodeHighlightColor, + repairHighlight: me.nodeHighlightOnRepair, + scrollEl: scrollEl + }); + } + + if (me.enableDrop) { + me.dropZone = new Ext.tree.ViewDropZone({ + view: view, + ddGroup: me.dropGroup || me.ddGroup, + allowContainerDrops: me.allowContainerDrops, + appendOnly: me.appendOnly, + allowParentInserts: me.allowParentInserts, + expandDelay: me.expandDelay, + dropHighlightColor: me.nodeHighlightColor, + dropHighlight: me.nodeHighlightOnDrop, + sortOnDrop: me.sortOnDrop, + containerScroll: me.containerScroll + }); + } + } +}, function(){ + var proto = this.prototype; + proto.nodeHighlightOnDrop = proto.nodeHighlightOnRepair = Ext.enableFx; +}); + + +Ext.define('Ext.util.Cookies', { + singleton: true, + + + set : function(name, value){ + var argv = arguments, + argc = arguments.length, + expires = (argc > 2) ? argv[2] : null, + path = (argc > 3) ? argv[3] : '/', + domain = (argc > 4) ? argv[4] : null, + secure = (argc > 5) ? argv[5] : false; + + document.cookie = name + "=" + escape(value) + ((expires === null) ? "" : ("; expires=" + expires.toGMTString())) + ((path === null) ? "" : ("; path=" + path)) + ((domain === null) ? "" : ("; domain=" + domain)) + ((secure === true) ? "; secure" : ""); + }, + + + get : function(name){ + var arg = name + "=", + alen = arg.length, + clen = document.cookie.length, + i = 0, + j = 0; + + while(i < clen){ + j = i + alen; + if(document.cookie.substring(i, j) == arg){ + return this.getCookieVal(j); + } + i = document.cookie.indexOf(" ", i) + 1; + if(i === 0){ + break; + } + } + return null; + }, + + + clear : function(name, path){ + if(this.get(name)){ + path = path || '/'; + document.cookie = name + '=' + '; expires=Thu, 01-Jan-70 00:00:01 GMT; path=' + path; + } + }, + + + getCookieVal : function(offset){ + var endstr = document.cookie.indexOf(";", offset); + if(endstr == -1){ + endstr = document.cookie.length; + } + return unescape(document.cookie.substring(offset, endstr)); + } +}); + + + +Ext.define('Ext.util.Grouper', { + + + + extend: Ext.util.Sorter , + + + + isGrouper: true, + + + getGroupString: function(instance) { + return instance.get(this.property); + } +}); + + +Ext.define('Ext.util.History', { + singleton: true, + alternateClassName: 'Ext.History', + mixins: { + observable: Ext.util.Observable + }, + + + useTopWindow: true, + + + fieldId: Ext.baseCSSPrefix + 'history-field', + + iframeId: Ext.baseCSSPrefix + 'history-frame', + + constructor: function() { + var me = this; + me.oldIEMode = Ext.isIE7m || !Ext.isStrict && Ext.isIE8; + me.iframe = null; + me.hiddenField = null; + me.ready = false; + me.currentToken = null; + me.mixins.observable.constructor.call(me); + }, + + getHash: function() { + var href = window.location.href, + i = href.indexOf("#"); + + return i >= 0 ? href.substr(i + 1) : null; + }, + + setHash: function (hash) { + var me = this, + win = me.useTopWindow ? window.top : window; + try { + win.location.hash = hash; + } catch (e) { + + } + }, + + doSave: function() { + this.hiddenField.value = this.currentToken; + }, + + + handleStateChange: function(token) { + this.currentToken = token; + this.fireEvent('change', token); + }, + + updateIFrame: function(token) { + var html = '
    ' + + Ext.util.Format.htmlEncode(token) + + '
    ', + doc; + + try { + doc = this.iframe.contentWindow.document; + doc.open(); + doc.write(html); + doc.close(); + return true; + } catch (e) { + return false; + } + }, + + checkIFrame: function () { + var me = this, + contentWindow = me.iframe.contentWindow, + doc, elem, oldToken, oldHash; + + if (!contentWindow || !contentWindow.document) { + Ext.Function.defer(this.checkIFrame, 10, this); + return; + } + + doc = contentWindow.document; + elem = doc.getElementById("state"); + oldToken = elem ? elem.innerText : null; + oldHash = me.getHash(); + + Ext.TaskManager.start({ + run: function () { + var doc = contentWindow.document, + elem = doc.getElementById("state"), + newToken = elem ? elem.innerText : null, + newHash = me.getHash(); + + if (newToken !== oldToken) { + oldToken = newToken; + me.handleStateChange(newToken); + me.setHash(newToken); + oldHash = newToken; + me.doSave(); + } else if (newHash !== oldHash) { + oldHash = newHash; + me.updateIFrame(newHash); + } + }, + interval: 50, + scope: me + }); + me.ready = true; + me.fireEvent('ready', me); + }, + + startUp: function () { + var me = this, + hash; + + me.currentToken = me.hiddenField.value || this.getHash(); + + if (me.oldIEMode) { + me.checkIFrame(); + } else { + hash = me.getHash(); + Ext.TaskManager.start({ + run: function () { + var newHash = me.getHash(); + if (newHash !== hash) { + hash = newHash; + me.handleStateChange(hash); + me.doSave(); + } + }, + interval: 50, + scope: me + }); + me.ready = true; + me.fireEvent('ready', me); + } + + }, + + + init: function (onReady, scope) { + var me = this, + DomHelper = Ext.DomHelper; + + if (me.ready) { + Ext.callback(onReady, scope, [me]); + return; + } + + if (!Ext.isReady) { + Ext.onReady(function() { + me.init(onReady, scope); + }); + return; + } + + + me.hiddenField = Ext.getDom(me.fieldId); + if (!me.hiddenField) { + me.hiddenField = Ext.getBody().createChild({ + id: Ext.id(), + tag: 'form', + cls: Ext.baseCSSPrefix + 'hide-display', + children: [{ + tag: 'input', + type: 'hidden', + id: me.fieldId + }] + }, false, true).firstChild; + } + + if (me.oldIEMode) { + me.iframe = Ext.getDom(me.iframeId); + if (!me.iframe) { + me.iframe = DomHelper.append(me.hiddenField.parentNode, { + tag: 'iframe', + id: me.iframeId, + src: Ext.SSL_SECURE_URL + }); + } + } + + me.addEvents( + + 'ready', + + 'change' + ); + + if (onReady) { + me.on('ready', onReady, scope, {single: true}); + } + me.startUp(); + }, + + + add: function (token, preventDup) { + var me = this; + + if (preventDup !== false) { + if (me.getToken() === token) { + return true; + } + } + + if (me.oldIEMode) { + return me.updateIFrame(token); + } else { + me.setHash(token); + return true; + } + }, + + + back: function() { + window.history.go(-1); + }, + + + forward: function(){ + window.history.go(1); + }, + + + getToken: function() { + return this.ready ? this.currentToken : this.getHash(); + } +}); diff --git a/js/ext-all.js b/js/ext-all.js new file mode 100644 index 00000000..f4ab4bf7 --- /dev/null +++ b/js/ext-all.js @@ -0,0 +1,21 @@ +/* +This file is part of Ext JS 4.2 + +Copyright (c) 2011-2013 Sencha Inc + +Contact: http://www.sencha.com/contact + +GNU General Public License Usage +This file may be used under the terms of the GNU General Public License version 3.0 as +published by the Free Software Foundation and appearing in the file LICENSE included in the +packaging of this file. + +Please review the following information to ensure the GNU General Public License version 3.0 +requirements will be met: http://www.gnu.org/copyleft/gpl.html. + +If you are unsure which license is appropriate for your use, please contact the sales department +at http://www.sencha.com/contact. + +Build date: 2013-05-16 14:36:50 (f9be68accb407158ba2b1be2c226a6ce1f649314) +*/ +var Ext=Ext||{};if(!Ext.Direct){Ext.Direct={}}if(!Ext.Toolbar){Ext.Toolbar={}}if(!Ext.app){Ext.app={}}if(!Ext.app.domain){Ext.app.domain={}}if(!Ext.button){Ext.button={}}if(!Ext.chart){Ext.chart={}}if(!Ext.chart.axis){Ext.chart.axis={}}if(!Ext.chart.series){Ext.chart.series={}}if(!Ext.chart.theme){Ext.chart.theme={}}if(!Ext.container){Ext.container={}}if(!Ext.core){Ext.core={}}if(!Ext.data){Ext.data={}}if(!Ext.data.association){Ext.data.association={}}if(!Ext.data.flash){Ext.data.flash={}}if(!Ext.data.proxy){Ext.data.proxy={}}if(!Ext.data.reader){Ext.data.reader={}}if(!Ext.data.writer){Ext.data.writer={}}if(!Ext.dd){Ext.dd={}}if(!Ext.direct){Ext.direct={}}if(!Ext.dom){Ext.dom={}}if(!Ext.draw){Ext.draw={}}if(!Ext.draw.engine){Ext.draw.engine={}}if(!Ext.flash){Ext.flash={}}if(!Ext.form){Ext.form={}}if(!Ext.form.Action){Ext.form.Action={}}if(!Ext.form.action){Ext.form.action={}}if(!Ext.form.field){Ext.form.field={}}if(!Ext.fx){Ext.fx={}}if(!Ext.fx.target){Ext.fx.target={}}if(!Ext.grid){Ext.grid={}}if(!Ext.grid.column){Ext.grid.column={}}if(!Ext.grid.feature){Ext.grid.feature={}}if(!Ext.grid.header){Ext.grid.header={}}if(!Ext.grid.locking){Ext.grid.locking={}}if(!Ext.grid.plugin){Ext.grid.plugin={}}if(!Ext.grid.property){Ext.grid.property={}}if(!Ext.layout){Ext.layout={}}if(!Ext.layout.boxOverflow){Ext.layout.boxOverflow={}}if(!Ext.layout.component){Ext.layout.component={}}if(!Ext.layout.component.field){Ext.layout.component.field={}}if(!Ext.layout.container){Ext.layout.container={}}if(!Ext.layout.container.border){Ext.layout.container.border={}}if(!Ext.layout.container.boxOverflow){Ext.layout.container.boxOverflow={}}if(!Ext.list){Ext.list={}}if(!Ext.menu){Ext.menu={}}if(!Ext.panel){Ext.panel={}}if(!Ext.perf){Ext.perf={}}if(!Ext.picker){Ext.picker={}}if(!Ext.resizer){Ext.resizer={}}if(!Ext.rtl){Ext.rtl={}}if(!Ext.rtl.button){Ext.rtl.button={}}if(!Ext.rtl.dd){Ext.rtl.dd={}}if(!Ext.rtl.dom){Ext.rtl.dom={}}if(!Ext.rtl.form){Ext.rtl.form={}}if(!Ext.rtl.form.field){Ext.rtl.form.field={}}if(!Ext.rtl.grid){Ext.rtl.grid={}}if(!Ext.rtl.grid.column){Ext.rtl.grid.column={}}if(!Ext.rtl.grid.plugin){Ext.rtl.grid.plugin={}}if(!Ext.rtl.layout){Ext.rtl.layout={}}if(!Ext.rtl.layout.component){Ext.rtl.layout.component={}}if(!Ext.rtl.layout.component.field){Ext.rtl.layout.component.field={}}if(!Ext.rtl.layout.container){Ext.rtl.layout.container={}}if(!Ext.rtl.layout.container.boxOverflow){Ext.rtl.layout.container.boxOverflow={}}if(!Ext.rtl.panel){Ext.rtl.panel={}}if(!Ext.rtl.resizer){Ext.rtl.resizer={}}if(!Ext.rtl.selection){Ext.rtl.selection={}}if(!Ext.rtl.slider){Ext.rtl.slider={}}if(!Ext.rtl.tab){Ext.rtl.tab={}}if(!Ext.rtl.tip){Ext.rtl.tip={}}if(!Ext.rtl.tree){Ext.rtl.tree={}}if(!Ext.rtl.util){Ext.rtl.util={}}if(!Ext.rtl.view){Ext.rtl.view={}}if(!Ext.selection){Ext.selection={}}if(!Ext.slider){Ext.slider={}}if(!Ext.state){Ext.state={}}if(!Ext.tab){Ext.tab={}}if(!Ext.tip){Ext.tip={}}if(!Ext.toolbar){Ext.toolbar={}}if(!Ext.tree){Ext.tree={}}if(!Ext.tree.plugin){Ext.tree.plugin={}}if(!Ext.util){Ext.util={}}if(!Ext.ux){Ext.ux={}}if(!Ext.ux.form){Ext.ux.form={}}if(!Ext.view){Ext.view={}}if(!Ext.window){Ext.window={}}(function(j){var l=[],m=["constructor","toString","valueOf","toLocaleString"],k={},p={},b=0,h,c,o,g,a=function(){var r,q;c=Ext.Base;o=Ext.ClassManager;for(r=m.length;r-->0;){q=(1<0;){r=l[s];q[r]=c[r]}return q},d=function(v,y,R,q,x,F,w,O,t,H,B){var r=function A(){return this.constructor.apply(this,arguments)||null},Q=r,s={enumerableMembers:q&b,onCreated:B,onBeforeCreated:e,aliases:O},E=R.alternateClassName||[],M=Ext.global,I,L,N,D,K,U,T,u,J,z,P,G,C,S;for(N=l.length;N-->0;){T=l[N];r[T]=c[T]}if(R.$isFunction){R=R(r)}s.data=R;z=R.statics,R.$className=v;if(R.$className){r.$className=R.$className}r.extend(y);J=r.prototype;r.xtype=R.xtype=x[0];if(x){J.xtypes=x}J.xtypesChain=F;J.xtypesMap=w;R.alias=O;Q.triggerExtended(r,R,s);if(R.onClassExtended){r.onExtended(R.onClassExtended,r);delete R.onClassExtended}if(z){for(P in z){if(z.hasOwnProperty(P)){S=z[P];if(S&&S.$isFunction&&!S.$isClass&&S!==Ext.emptyFn&&S!==Ext.identityFn){r[P]=C=S;C.$owner=r;C.$name=P}r[P]=S}}}delete R.statics;if(R.inheritableStatics){r.addInheritableStatics(R.inheritableStatics)}if(J.onClassExtended){Q.onExtended(J.onClassExtended,Q);delete J.onClassExtended}if(R.config){g(r,R)}s.onBeforeCreated(r,s.data,s);for(N=0,K=t&&t.length;N0){r--;p[r]="var Ext=window."+Ext.name+";"+p[r]}}n=p.join("");q=o[n];if(!q){q=Function.prototype.constructor.apply(Function.prototype,p);o[n]=q}return q},functionFactory:function(){var p=this,n=Array.prototype.slice.call(arguments),o;if(Ext.isSandboxed){o=n.length;if(o>0){o--;n[o]="var Ext=window."+Ext.name+";"+n[o]}}return Function.prototype.constructor.apply(Function.prototype,n)},Logger:{verbose:g,log:g,info:g,warn:g,error:function(n){throw new Error(n)},deprecate:g}});Ext.type=Ext.typeOf;h=Ext.app;if(!h){h=Ext.app={}}Ext.apply(h,{namespaces:{},collectNamespaces:function(p){var n=Ext.app.namespaces,o;for(o in p){if(p.hasOwnProperty(o)){n[o]=true}}},addNamespaces:function(p){var q=Ext.app.namespaces,o,n;if(!Ext.isArray(p)){p=[p]}for(o=0,n=p.length;on.length&&(p+"."===o.substring(0,p.length+1))){n=p}}return n===""?undefined:n}})}());Ext.globalEval=Ext.global.execScript?function(a){execScript(a)}:function($$code){(function(){var Ext=this.Ext;eval($$code)}())};(function(){var a="4.2.1.883",b;Ext.Version=b=Ext.extend(Object,{constructor:function(c){var e,d;if(c instanceof b){return c}this.version=this.shortVersion=String(c).toLowerCase().replace(/_/g,".").replace(/[\-+]/g,"");d=this.version.search(/([^\d\.])/);if(d!==-1){this.release=this.version.substr(d,c.length);this.shortVersion=this.version.substr(0,d)}this.shortVersion=this.shortVersion.replace(/[^\d]/g,"");e=this.version.split(".");this.major=parseInt(e.shift()||0,10);this.minor=parseInt(e.shift()||0,10);this.patch=parseInt(e.shift()||0,10);this.build=parseInt(e.shift()||0,10);return this},toString:function(){return this.version},valueOf:function(){return this.version},getMajor:function(){return this.major||0},getMinor:function(){return this.minor||0},getPatch:function(){return this.patch||0},getBuild:function(){return this.build||0},getRelease:function(){return this.release||""},isGreaterThan:function(c){return b.compare(this.version,c)===1},isGreaterThanOrEqual:function(c){return b.compare(this.version,c)>=0},isLessThan:function(c){return b.compare(this.version,c)===-1},isLessThanOrEqual:function(c){return b.compare(this.version,c)<=0},equals:function(c){return b.compare(this.version,c)===0},match:function(c){c=String(c);return this.version.substr(0,c.length)===c},toArray:function(){return[this.getMajor(),this.getMinor(),this.getPatch(),this.getBuild(),this.getRelease()]},getShortVersion:function(){return this.shortVersion},gt:function(){return this.isGreaterThan.apply(this,arguments)},lt:function(){return this.isLessThan.apply(this,arguments)},gtEq:function(){return this.isGreaterThanOrEqual.apply(this,arguments)},ltEq:function(){return this.isLessThanOrEqual.apply(this,arguments)}});Ext.apply(b,{releaseValueMap:{dev:-6,alpha:-5,a:-5,beta:-4,b:-4,rc:-3,"#":-2,p:-1,pl:-1},getComponentValue:function(c){return !c?0:(isNaN(c)?this.releaseValueMap[c]||c:parseInt(c,10))},compare:function(h,g){var d,e,c;h=new b(h).toArray();g=new b(g).toArray();for(c=0;ce){return 1}}}return 0}});Ext.apply(Ext,{versions:{},lastRegisteredVersion:null,setVersion:function(d,c){Ext.versions[d]=new b(c);Ext.lastRegisteredVersion=Ext.versions[d];return this},getVersion:function(c){if(c===undefined){return Ext.lastRegisteredVersion}return Ext.versions[c]},deprecate:function(c,e,g,d){if(b.compare(Ext.getVersion(c),e)<1){g.call(d)}}});Ext.setVersion("core",a)}());Ext.String=(function(){var k=/^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,o=/('|\\)/g,j=/\{(\d+)\}/g,b=/([-.*+?\^${}()|\[\]\/\\])/g,p=/^\s+|\s+$/g,l=/\s+/,n=/(^[^a-z]*|[^\w])/gi,e,a,h,d,g=function(r,q){return e[q]},m=function(r,q){return(q in a)?a[q]:String.fromCharCode(parseInt(q.substr(2),10))},c=function(r,q){if(r===null||r===undefined||q===null||q===undefined){return false}return q.length<=r.length};return{insert:function(t,u,r){if(!t){return u}if(!u){return t}var q=t.length;if(!r&&r!==0){r=q}if(r<0){r*=-1;if(r>=q){r=0}else{r=q-r}}if(r===0){t=u+t}else{if(r>=t.length){t+=u}else{t=t.substr(0,r)+u+t.substr(r)}}return t},startsWith:function(t,u,r){var q=c(t,u);if(q){if(r){t=t.toLowerCase();u=u.toLowerCase()}q=t.lastIndexOf(u,0)===0}return q},endsWith:function(u,r,t){var q=c(u,r);if(q){if(t){u=u.toLowerCase();r=r.toLowerCase()}q=u.indexOf(r,u.length-r.length)!==-1}return q},createVarName:function(q){return q.replace(n,"")},htmlEncode:function(q){return(!q)?q:String(q).replace(h,g)},htmlDecode:function(q){return(!q)?q:String(q).replace(d,m)},addCharacterEntities:function(r){var q=[],u=[],s,t;for(s in r){t=r[s];a[s]=t;e[t]=s;q.push(t);u.push(s)}h=new RegExp("("+q.join("|")+")","g");d=new RegExp("("+u.join("|")+"|&#[0-9]{1,5};)","g")},resetCharacterEntities:function(){e={};a={};this.addCharacterEntities({"&":"&",">":">","<":"<",""":'"',"'":"'"})},urlAppend:function(r,q){if(!Ext.isEmpty(q)){return r+(r.indexOf("?")===-1?"?":"&")+q}return r},trim:function(q){return q.replace(k,"")},capitalize:function(q){return q.charAt(0).toUpperCase()+q.substr(1)},uncapitalize:function(q){return q.charAt(0).toLowerCase()+q.substr(1)},ellipsis:function(s,q,t){if(s&&s.length>q){if(t){var u=s.substr(0,q-2),r=Math.max(u.lastIndexOf(" "),u.lastIndexOf("."),u.lastIndexOf("!"),u.lastIndexOf("?"));if(r!==-1&&r>=(q-15)){return u.substr(0,r)+"..."}}return s.substr(0,q-3)+"..."}return s},escapeRegex:function(q){return q.replace(b,"\\$1")},escape:function(q){return q.replace(o,"\\$1")},toggle:function(r,s,q){return r===s?q:s},leftPad:function(r,s,t){var q=String(r);t=t||" ";while(q.lengthe)?e:d)},snap:function(h,e,g,j){var d;if(h===undefined||h=e){h+=e}else{if(d*2<-e){h-=e}}}}return b.constrain(h,g,j)},snapInRange:function(h,d,g,j){var e;g=(g||0);if(h===undefined||h=d){h+=d}}if(j!==undefined){if(h>(j=b.snapInRange(j,d,g))){h=j}}return h},toFixed:c?function(g,d){d=d||0;var e=a.pow(10,d);return(a.round(g*e)/e).toFixed(d)}:function(e,d){return e.toFixed(d)},from:function(e,d){if(isFinite(e)){e=parseFloat(e)}return !isNaN(e)?e:d},randomInt:function(e,d){return a.floor(a.random()*(d-e+1)+e)},correctFloat:function(d){return parseFloat(d.toPrecision(14))}});Ext.num=function(){return b.from.apply(this,arguments)}}();(function(){var g=Array.prototype,p=g.slice,r=(function(){var B=[],e,A=20;if(!B.splice){return false}while(A--){B.push("A")}B.splice(15,0,"F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F","F");e=B.length;B.splice(13,0,"XXX");if(e+1!=B.length){return false}return true}()),k="forEach" in g,v="map" in g,q="indexOf" in g,z="every" in g,c="some" in g,d="filter" in g,o=(function(){var e=[1,2,3,4,5].sort(function(){return 0});return e[0]===1&&e[1]===2&&e[2]===3&&e[3]===4&&e[4]===5}()),l=true,a,x,u,w;try{if(typeof document!=="undefined"){p.call(document.getElementsByTagName("body"))}}catch(t){l=false}function n(A,e){return(e<0)?Math.max(0,A.length+e):Math.min(A.length,e)}function y(H,G,A,K){var L=K?K.length:0,C=H.length,I=n(H,G),F,J,B,e,D,E;if(I===C){if(L){H.push.apply(H,K)}}else{F=Math.min(A,C-I);J=I+F;B=J+L-F;e=C-J;D=C-F;if(BJ){for(E=e;E--;){H[B+E]=H[J+E]}}}if(L&&I===D){H.length=D;H.push.apply(H,K)}else{H.length=D+L;for(E=0;E-1;A--){if(C.call(B||E[A],E[A],A,E)===false){return A}}}return true},forEach:k?function(B,A,e){B.forEach(A,e)}:function(D,B,A){var e=0,C=D.length;for(;ee){e=B}}}return e},mean:function(e){return e.length>0?a.sum(e)/e.length:undefined},sum:function(D){var A=0,e,C,B;for(e=0,C=D.length;e0){return setTimeout(Ext.supports.TimeoutActualLateness?function(){e()}:e,c)}e();return 0},createSequence:function(b,c,a){if(!c){return b}else{return function(){var d=b.apply(this,arguments);c.apply(a||this,arguments);return d}}},createBuffered:function(e,b,d,c){var a;return function(){var h=c||Array.prototype.slice.call(arguments,0),g=d||this;if(a){clearTimeout(a)}a=setTimeout(function(){e.apply(g,h)},b)}},createThrottled:function(e,b,d){var g,a,c,j,h=function(){e.apply(d||this,c);g=Ext.Date.now()};return function(){a=Ext.Date.now()-g;c=arguments;clearTimeout(j);if(!g||(a>=b)){h()}else{j=setTimeout(h,b-a)}}},interceptBefore:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){var g=d.apply(c||this,arguments);e.apply(this,arguments);return g})},interceptAfter:function(b,a,d,c){var e=b[a]||Ext.emptyFn;return(b[a]=function(){e.apply(this,arguments);return d.apply(c||this,arguments)})}};Ext.defer=Ext.Function.alias(Ext.Function,"defer");Ext.pass=Ext.Function.alias(Ext.Function,"pass");Ext.bind=Ext.Function.alias(Ext.Function,"bind");(function(){var a=function(){},b=Ext.Object={chain:Object.create||function(d){a.prototype=d;var c=new a();a.prototype=null;return c},toQueryObjects:function(e,k,d){var c=b.toQueryObjects,j=[],g,h;if(Ext.isArray(k)){for(g=0,h=k.length;g0){k=o.split("=");w=decodeURIComponent(k[0]);n=(k[1]!==undefined)?decodeURIComponent(k[1]):"";if(!r){if(u.hasOwnProperty(w)){if(!Ext.isArray(u[w])){u[w]=[u[w]]}u[w].push(n)}else{u[w]=n}}else{h=w.match(/(\[):?([^\]]*)\]/g);t=w.match(/^([^\[]+)/);w=t[0];l=[];if(h===null){u[w]=n;continue}for(p=0,c=h.length;p daysInMonth) {","d = daysInMonth;","}","}","h = from(h, from(def.h, dt.getHours()));","i = from(i, from(def.i, dt.getMinutes()));","s = from(s, from(def.s, dt.getSeconds()));","ms = from(ms, from(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);","}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","if (W) {","year = y || (new Date()).getFullYear(),","jan4 = new Date(year, 0, 4, 0, 0, 0),","week1monday = new Date(jan4.getTime() - ((jan4.getDay() - 1) * 86400000));","v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000)));","} else {","v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);","}","}","}","}","if(v){","if(zz != null){","v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");function h(m){var l=Array.prototype.slice.call(arguments,1);return m.replace(c,function(n,o){return l[o]})}Ext.apply(d,{now:Date.now||function(){return +new Date()},toString:function(l){var m=Ext.String.leftPad;return l.getFullYear()+"-"+m(l.getMonth()+1,2,"0")+"-"+m(l.getDate(),2,"0")+"T"+m(l.getHours(),2,"0")+":"+m(l.getMinutes(),2,"0")+":"+m(l.getSeconds(),2,"0")},getElapsed:function(m,l){return Math.abs(m-(l||d.now()))},useStrict:false,formatCodeToRegex:function(m,l){var n=d.parseCodes[m];if(n){n=typeof n=="function"?n():n;d.parseCodes[m]=n}return n?Ext.applyIf({c:n.c?h(n.c,l||"{0}"):n.c},n):{g:0,c:null,s:Ext.String.escapeRegex(m)}},parseFunctions:{MS:function(m,l){var n=(m||"").match(g);return n?new Date(((n[1]||"")+n[2])*1):null},time:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n)}return null},timestamp:function(m,l){var n=parseInt(m,10);if(n||n===0){return new Date(n*1000)}return null}},parseRegexes:[],formatFunctions:{MS:function(){return"\\/Date("+this.getTime()+")\\/"},time:function(){return this.getTime().toString()},timestamp:function(){return d.format(this,"U")}},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:{January:0,Jan:0,February:1,Feb:1,March:2,Mar:2,April:3,Apr:3,May:4,June:5,Jun:5,July:6,Jul:6,August:7,Aug:7,September:8,Sep:8,October:9,Oct:9,November:10,Nov:10,December:11,Dec:11},defaultFormat:"m/d/Y",getShortMonthName:function(l){return Ext.Date.monthNames[l].substring(0,3)},getShortDayName:function(l){return Ext.Date.dayNames[l].substring(0,3)},getMonthNumber:function(l){return Ext.Date.monthNumbers[l.substring(0,1).toUpperCase()+l.substring(1,3).toLowerCase()]},formatContainsHourInfo:function(l){return a.test(l.replace(k,""))},formatContainsDateInfo:function(l){return e.test(l.replace(k,""))},unescapeFormat:function(l){return l.replace(j,"")},formatCodes:{d:"Ext.String.leftPad(this.getDate(), 2, '0')",D:"Ext.Date.getShortDayName(this.getDay())",j:"this.getDate()",l:"Ext.Date.dayNames[this.getDay()]",N:"(this.getDay() ? this.getDay() : 7)",S:"Ext.Date.getSuffix(this)",w:"this.getDay()",z:"Ext.Date.getDayOfYear(this)",W:"Ext.String.leftPad(Ext.Date.getWeekOfYear(this), 2, '0')",F:"Ext.Date.monthNames[this.getMonth()]",m:"Ext.String.leftPad(this.getMonth() + 1, 2, '0')",M:"Ext.Date.getShortMonthName(this.getMonth())",n:"(this.getMonth() + 1)",t:"Ext.Date.getDaysInMonth(this)",L:"(Ext.Date.isLeapYear(this) ? 1 : 0)",o:"(this.getFullYear() + (Ext.Date.getWeekOfYear(this) == 1 && this.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(this) >= 52 && this.getMonth() < 11 ? -1 : 0)))",Y:"Ext.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:"Ext.String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",H:"Ext.String.leftPad(this.getHours(), 2, '0')",i:"Ext.String.leftPad(this.getMinutes(), 2, '0')",s:"Ext.String.leftPad(this.getSeconds(), 2, '0')",u:"Ext.String.leftPad(this.getMilliseconds(), 3, '0')",O:"Ext.Date.getGMTOffset(this)",P:"Ext.Date.getGMTOffset(this, true)",T:"Ext.Date.getTimezone(this)",Z:"(this.getTimezoneOffset() * -60)",c:function(){var q,o,n,m,p;for(q="Y-m-dTH:i:sP",o=[],n=0,m=q.length;n me.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"},a:{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)",calcAtEnd:true},A:{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)",calcAtEnd:true},g:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|[0-9])"},G:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|1[0-9]|[0-9])"},h:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(1[0-2]|0[1-9])"},H:{g:1,c:"h = parseInt(results[{0}], 10);\n",s:"(2[0-3]|[0-1][0-9])"},i:{g:1,c:"i = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},s:{g:1,c:"s = parseInt(results[{0}], 10);\n",s:"([0-5][0-9])"},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 + Ext.String.leftPad(hr, 2, '0') + Ext.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 + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),s:"([+-]\\d{2}:\\d{2})"},T:{g:0,c:null,s:"[A-Z]{1,5}"},Z:{g:1,c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",s:"([+-]?\\d{1,5})"},c:function(){var o=[],m=[d.formatCodeToRegex("Y",1),d.formatCodeToRegex("m",2),d.formatCodeToRegex("d",3),d.formatCodeToRegex("H",4),d.formatCodeToRegex("i",5),d.formatCodeToRegex("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){",d.formatCodeToRegex("P",8).c,"}else{",d.formatCodeToRegex("O",8).c,"}","}"].join("\n")}],p,n;for(p=0,n=m.length;p0?"-":"+")+Ext.String.leftPad(Math.floor(Math.abs(n)/60),2,"0")+(m?":":"")+Ext.String.leftPad(Math.abs(n%60),2,"0")},getDayOfYear:function(o){var n=0,q=Ext.Date.clone(o),l=o.getMonth(),p;for(p=0,q.setDate(1),q.setMonth(0);p28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.MONTH,r)).getDate())}s.setDate(m);s.setMonth(o.getMonth()+r);break;case Ext.Date.YEAR:m=o.getDate();if(m>28){m=Math.min(m,Ext.Date.getLastDateOfMonth(Ext.Date.add(Ext.Date.getFirstDateOfMonth(o),Ext.Date.YEAR,r)).getDate())}s.setDate(m);s.setFullYear(o.getFullYear()+r);break}}if(q){switch(n.toLowerCase()){case Ext.Date.MILLI:p=1;break;case Ext.Date.SECOND:p=1000;break;case Ext.Date.MINUTE:p=1000*60;break;case Ext.Date.HOUR:p=1000*60*60;break;case Ext.Date.DAY:p=1000*60*60*24;break;case Ext.Date.MONTH:m=d.getDaysInMonth(s);p=1000*60*60*24*m;break;case Ext.Date.YEAR:m=(d.isLeapYear(s)?366:365);p=1000*60*60*24*m;break}if(p){s.setTime(s.getTime()+p*q)}}return s},subtract:function(m,l,n){return d.add(m,l,-n)},between:function(m,o,l){var n=m.getTime();return o.getTime()<=n&&n<=l.getTime()},compat:function(){var m=window.Date,l,t=["useStrict","formatCodeToRegex","parseFunctions","parseRegexes","formatFunctions","y2kYear","MILLI","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","defaults","dayNames","monthNames","monthNumbers","getShortMonthName","getShortDayName","getMonthNumber","formatCodes","isValid","parseDate","getFormatCode","createFormat","createParser","parseCodes"],q=["dateFormat","format","getTimezone","getGMTOffset","getDayOfYear","getWeekOfYear","isLeapYear","getFirstDayOfMonth","getLastDayOfMonth","getDaysInMonth","getSuffix","clone","isDST","clearTime","add","between"],r=t.length,n=q.length,o,u,v;for(v=0;v0){for(e=0;e0){if(A===z){return C[A]}B=C[A];z=z.substring(A.length+1)}if(B.length>0){B+="/"}return B.replace(c,"/")+z.replace(g,"/")+".js"},getPrefix:function(A){var C=l.config.paths,B,z="";if(C.hasOwnProperty(A)){return A}for(B in C){if(C.hasOwnProperty(B)&&B+"."===A.substring(0,B.length+1)){if(B.length>z.length){z=B}}}return z},isAClassNameWithAKnownPrefix:function(z){var A=l.getPrefix(z);return A!==""&&A!==z},require:function(B,A,z,C){if(A){A.call(z)}},syncRequire:function(){},exclude:function(z){return{require:function(C,B,A){return l.require(C,B,A,z)},syncRequire:function(C,B,A){return l.syncRequire(C,B,A,z)}}},onReady:function(C,B,D,z){var A;if(D!==false&&Ext.onDocumentReady){A=C;C=function(){Ext.onDocumentReady(A,B,z)}}C.call(B)}});var r=[],s={},v={},t={},q={},x=[],y=[],j={},m=function(z,A){return A.priority-z.priority};Ext.apply(l,{documentHead:typeof document!="undefined"&&(document.head||document.getElementsByTagName("head")[0]),isLoading:false,queue:r,isClassFileLoaded:s,isFileLoaded:v,readyListeners:x,optionalRequires:y,requiresMap:j,numPendingFiles:0,numLoadedFiles:0,hasFileLoadError:false,classNameToFilePathMap:t,scriptsLoading:0,syncModeEnabled:false,scriptElements:q,refreshQueue:function(){var D=r.length,A,C,z,B;if(!D&&!l.scriptsLoading){return l.triggerReady()}for(A=0;Al.numLoadedFiles){continue}for(z=0;z=200&&D<300)||(D===304)){if(!Ext.isIE){E="\n//@ sourceURL="+A}Ext.globalEval(J.responseText+E);H.call(K)}else{}}J=null}},syncRequire:function(){var z=l.syncModeEnabled;if(!z){l.syncModeEnabled=true}l.require.apply(l,arguments);if(!z){l.syncModeEnabled=false}l.refreshQueue()},require:function(R,I,C,E){var K={},B={},H=[],T=[],Q=[],A=[],G,S,M,L,z,F,P,O,N,J,D;if(E){E=(typeof E==="string")?[E]:E;for(O=0,J=E.length;O0){H=b.getNamesByExpression(z);for(N=0,D=H.length;N0){G=function(){var V=[],U,W;for(U=0,W=A.length;U0){T=b.getNamesByExpression(L);D=T.length;for(N=0;N0){if(!l.config.enabled){throw new Error("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing required class"+((Q.length>1)?"es":"")+": "+Q.join(", "))}}else{G.call(C);return l}S=l.syncModeEnabled;if(!S){r.push({requires:Q.slice(),callback:G,scope:C})}J=Q.length;for(O=0;Owindow.innerWidth?"portrait":"landscape"},destroy:function(){var c=arguments.length,b,a;for(b=0;b]+>/gi,j=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,e=/\r?\n/g,b=/^#+$/,h=/[\d,\.#]+/,k=/[^\d\.#]/g,a,d={};Ext.apply(g,{thousandSeparator:",",decimalSeparator:".",currencyPrecision:2,currencySign:"$",currencyAtEnd:false,undef:function(l){return l!==undefined?l:""},defaultValue:function(m,l){return m!==undefined&&m!==""?m:l},substr:"ab".substr(-1)!="b"?function(m,o,l){var n=String(m);return(o<0)?n.substr(Math.max(n.length+o,0),l):n.substr(o,l)}:function(m,n,l){return String(m).substr(n,l)},lowercase:function(l){return String(l).toLowerCase()},uppercase:function(l){return String(l).toUpperCase()},usMoney:function(l){return g.currency(l,"$",2)},currency:function(n,p,m,l){var r="",q=",0",o=0;n=n-0;if(n<0){n=-n;r="-"}m=Ext.isDefined(m)?m:g.currencyPrecision;q+=(m>0?".":"");for(;o2){}else{if(r.length===2){p=r[1].length;x=b.test(r[1])}}l=["var utilFormat=Ext.util.Format,extNumber=Ext.Number,neg,fnum,parts"+(m?",thousandSeparator,thousands=[],j,n,i":"")+(s?',formatString="'+o+'",formatPattern=/[\\d,\\.#]+/':"")+(x?",trailingZeroes=/\\.?0+$/;":";")+'return function(v){if(typeof v!=="number"&&isNaN(v=extNumber.from(v,NaN)))return"";neg=v<0;',"fnum=Ext.Number.toFixed(Math.abs(v), "+p+");"];if(m){if(p){l[l.length]='parts=fnum.split(".");';l[l.length]="fnum=parts[0];"}l[l.length]="if(v>=1000) {";l[l.length]="thousandSeparator=utilFormat.thousandSeparator;thousands.length=0;j=fnum.length;n=fnum.length%3||3;for(i=0;i")},capitalize:Ext.String.capitalize,ellipsis:Ext.String.ellipsis,format:Ext.String.format,htmlDecode:Ext.String.htmlDecode,htmlEncode:Ext.String.htmlEncode,leftPad:Ext.String.leftPad,trim:Ext.String.trim,parseBox:function(m){m=m||0;if(typeof m==="number"){return{top:m,right:m,bottom:m,left:m}}var n=m.split(" "),l=n.length;if(l==1){n[1]=n[2]=n[3]=n[0]}else{if(l==2){n[2]=n[0];n[3]=n[1]}else{if(l==3){n[3]=n[1]}}}return{top:parseInt(n[0],10)||0,right:parseInt(n[1],10)||0,bottom:parseInt(n[2],10)||0,left:parseInt(n[3],10)||0}},escapeRegex:function(l){return l.replace(/([\-.*+?\^${}()|\[\]\/\\])/g,"\\$1")}})}());(Ext.cmd.derive("Ext.util.TaskRunner",Ext.Base,{interval:10,timerId:null,constructor:function(a){var b=this;if(typeof a=="number"){b.interval=a}else{if(a){Ext.apply(b,a)}}b.tasks=[];b.timerFn=Ext.Function.bind(b.onTick,b)},newTask:function(b){var a=new Ext.util.TaskRunner.Task(b);a.manager=this;return a},start:function(a){var c=this,b=Ext.Date.now();if(!a.pending){c.tasks.push(a);a.pending=true}a.stopped=false;a.taskStartTime=b;a.taskRunTime=a.fireOnStart!==false?0:a.taskStartTime;a.taskRunCount=0;if(!c.firing){if(a.fireOnStart!==false){c.startTimer(0,b)}else{c.startTimer(a.interval,b)}}return a},stop:function(a){if(!a.stopped){a.stopped=true;if(a.onStop){a.onStop.call(a.scope||a,a)}}return a},stopAll:function(){Ext.each(this.tasks,this.stop,this)},firing:false,nextExpires:1e+99,onTick:function(){var m=this,e=m.tasks,a=Ext.Date.now(),n=1e+99,k=e.length,c,o,h,b,d,g;m.timerId=null;m.firing=true;for(h=0;hc){n=c}}}if(o){m.tasks=o}m.firing=false;if(m.tasks.length){m.startTimer(n-a,Ext.Date.now())}if(m.fireIdleEvent!==false){Ext.EventManager.idleEvent.fire()}},startTimer:function(e,c){var d=this,b=c+e,a=d.timerId;if(a&&d.nextExpires-b>d.interval){clearTimeout(a);a=null}if(!a){if(e',''," ({childCount} children)","",''," ({depth} deep)","",'',", {type}: {[this.time(values.sum)]} msec (","avg={[this.time(values.sum / parent.count)]}",")","","
    "].join(""),{time:function(o){return Math.round(o*100)/100}})}var n=this.getData(m);n.name=this.name;n.pure.type="Pure";n.total.type="Total";n.times=[n.pure,n.total];return d.apply(n)},getData:function(m){var n=this;return{count:n.count,childCount:n.childCount,depth:n.maxDepth,pure:g(n.count,n.childCount,m,n.pure),total:g(n.count,n.childCount,m,n.total)}},enter:function(){var m=this,n={accum:m,leave:e,childTime:0,parent:c};++m.depth;if(m.maxDepth','
    ',"",'
    ','
    ',"
    ",'
    ','
    '].join("");p.body.appendChild(d)}g=c[m];while(h--){k=j[h];o=g&&g[h];if(o!==undefined){l[k.identity]=o}else{if(d||k.early){l[k.identity]=k.fn.call(l,p,d)}else{e.push(k)}}}if(d){p.body.removeChild(d)}l.toRun=e},PointerEvents:"pointerEvents" in document.documentElement.style,LocalStorage:(function(){try{return"localStorage" in window&&window.localStorage!==null}catch(d){return false}})(),CSS3BoxShadow:"boxShadow" in document.documentElement.style||"WebkitBoxShadow" in document.documentElement.style||"MozBoxShadow" in document.documentElement.style,ClassList:!!document.documentElement.classList,OrientationChange:((typeof window.orientation!="undefined")&&("onorientationchange" in window)),DeviceMotion:("ondevicemotion" in window),Touch:("ontouchstart" in window)&&(!Ext.is.Desktop),TimeoutActualLateness:(function(){setTimeout(function(){Ext.supports.TimeoutActualLateness=arguments.length!==0},0)}()),tests:[{identity:"Transitions",fn:function(k,m){var j=["webkit","Moz","o","ms","khtml"],l="TransitionEnd",d=[j[0]+l,"transitionend",j[2]+l,j[3]+l,j[4]+l],h=j.length,g=0,e=false;for(;g

    ";return(g.childNodes.length==2)}},{identity:"Float",fn:function(d,e){return !!e.lastChild.style.cssFloat}},{identity:"AudioTag",fn:function(d){return !!d.createElement("audio").canPlayType}},{identity:"History",fn:function(){var d=window.history;return !!(d&&d.pushState)}},{identity:"CSS3DTransform",fn:function(){return(typeof WebKitCSSMatrix!="undefined"&&new WebKitCSSMatrix().hasOwnProperty("m41"))}},{identity:"CSS3LinearGradient",fn:function(k,d){var m="background-image:",l="-webkit-gradient(linear, left top, right bottom, from(black), to(white))",j="linear-gradient(left top, black, white)",h="-moz-"+j,e="-ms-"+j,g="-o-"+j,n=[m+l,m+j,m+h,m+e,m+g];d.style.cssText=n.join(";");return((""+d.style.backgroundImage).indexOf("gradient")!==-1)&&!Ext.isIE9}},{identity:"CSS3BorderRadius",fn:function(h,j){var e=["borderRadius","BorderRadius","MozBorderRadius","WebkitBorderRadius","OBorderRadius","KhtmlBorderRadius"],g=false,d;for(d=0;d=534.16}},{identity:"TextAreaMaxLength",fn:function(){var d=document.createElement("textarea");return("maxlength" in d)}},{identity:"GetPositionPercentage",fn:function(d,e){return a(e.childNodes[2],"left")=="10%"}},{identity:"PercentageHeightOverflowBug",fn:function(h){var d=false,g,e;if(Ext.getScrollbarSize().height){e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.overflow="auto";g.position="absolute";e.innerHTML=['
    ','
    ',"
    "].join("");h.body.appendChild(e);if(e.firstChild.offsetHeight===50){d=true}h.body.removeChild(e)}return d}},{identity:"xOriginBug",fn:function(h,j){j.innerHTML='
    ';var g=document.getElementById("b1").getBoundingClientRect(),e=document.getElementById("b2").getBoundingClientRect(),d=document.getElementById("b3").getBoundingClientRect();return(e.left!==g.left&&d.right!==g.right)}},{identity:"ScrollWidthInlinePaddingBug",fn:function(h){var d=false,g,e;e=h.createElement("div");g=e.style;g.height="50px";g.width="50px";g.padding="10px";g.overflow="hidden";g.position="absolute";e.innerHTML='';h.body.appendChild(e);if(e.scrollWidth===70){d=true}h.body.removeChild(e);return d}}]}}());Ext.supports.init();Ext.util.DelayedTask=function(e,d,b,h){var g=this,a,c=function(){clearInterval(g.id);g.id=null;e.apply(d,b||[]);Ext.EventManager.idleEvent.fire()};h=typeof h==="boolean"?h:true;g.id=null;g.delay=function(k,m,l,j){if(h){g.cancel()}a=k||a,e=m||e;d=l||d;b=j||b;if(!g.id){g.id=setInterval(c,a)}};g.cancel=function(){if(g.id){clearInterval(g.id);g.id=null}}};(Ext.cmd.derive("Ext.util.Event",Ext.Base,function(){var d=Array.prototype.slice,a=Ext.Array.insert,b=Ext.Array.toArray,c=Ext.util.DelayedTask;return{isEvent:true,suspended:0,noOptions:{},constructor:function(g,e){this.name=e;this.observable=g;this.listeners=[]},addListener:function(p,r,t){var n=this,o,j,q,e,s,m,h,l,k,g;r=r||n.observable;if(!n.isListening(p,r)){j=n.createListener(p,r,t);if(n.firing){n.listeners=n.listeners.slice(0)}o=n.listeners;l=h=o.length;q=t&&t.priority;s=n._highestNegativePriorityIndex;m=(s!==undefined);if(q){e=(q<0);if(!e||m){for(k=(e?s:0);k0){l.firing=true;g=arguments.length?d.call(arguments,0):[];e=g.length;for(h=0;h111&&k.keyCode<124){k.keyCode=-1}}catch(l){}}},getRelatedTarget:function(k){k=k.browserEvent||k;var l=k.relatedTarget;if(!l){if(b.mouseLeaveRe.test(k.type)){l=k.toElement}else{if(b.mouseEnterRe.test(k.type)){l=k.fromElement}}}return b.resolveTextNode(l)},getPageX:function(k){return b.getPageXY(k)[0]},getPageY:function(k){return b.getPageXY(k)[1]},getPageXY:function(m){m=m.browserEvent||m;var l=m.pageX,o=m.pageY,n=h.documentElement,k=h.body;if(!l&&l!==0){l=m.clientX+(n&&n.scrollLeft||k&&k.scrollLeft||0)-(n&&n.clientLeft||k&&k.clientLeft||0);o=m.clientY+(n&&n.scrollTop||k&&k.scrollTop||0)-(n&&n.clientTop||k&&k.clientTop||0)}return[l,o]},getTarget:function(k){k=k.browserEvent||k;return b.resolveTextNode(k.target||k.srcElement)},resolveTextNode:Ext.isGecko?function(l){if(l){var k=HTMLElement.prototype.toString.call(l);if(k!=="[xpconnect wrapped native prototype]"&&k!=="[object XULElement]"){return l.nodeType==3?l.parentNode:l}}}:function(k){return k&&k.nodeType==3?k.parentNode:k},curWidth:0,curHeight:0,onWindowResize:function(n,m,l){var k=b.resizeEvent;if(!k){b.resizeEvent=k=new Ext.util.Event();b.on(g,"resize",b.fireResize,null,{buffer:100})}k.addListener(n,m,l)},fireResize:function(){var k=Ext.Element.getViewWidth(),l=Ext.Element.getViewHeight();if(b.curHeight!=l||b.curWidth!=k){b.curHeight=l;b.curWidth=k;b.resizeEvent.fire(k,l)}},removeResizeListener:function(m,l){var k=b.resizeEvent;if(k){k.removeListener(m,l)}},onWindowUnload:function(n,m,l){var k=b.unloadEvent;if(!k){b.unloadEvent=k=new Ext.util.Event();b.addListener(g,"unload",b.fireUnload)}if(n){k.addListener(n,m,l)}},fireUnload:function(){try{h=g=undefined;var p,l,n,m,k;b.unloadEvent.fire();if(Ext.isGecko3){p=Ext.ComponentQuery.query("gridview");l=0;n=p.length;for(;l=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera),getKeyEvent:function(){return b.useKeyDown?"keydown":"keypress"}});if(!a&&document.attachEvent){Ext.apply(b,{pollScroll:function(){var k=true;try{document.documentElement.doScroll("left")}catch(l){k=false}if(k&&document.body){b.onReadyEvent({type:"doScroll"})}else{b.scrollTimeout=setTimeout(b.pollScroll,20)}return k},scrollTimeout:null,readyStatesRe:/complete/i,checkReadyState:function(){var k=document.readyState;if(b.readyStatesRe.test(k)){b.onReadyEvent({type:k})}},bindReadyEvent:function(){var k=true;if(b.hasBoundOnReady){return}try{k=window.frameElement===undefined}catch(l){k=false}if(!k||!h.documentElement.doScroll){b.pollScroll=Ext.emptyFn}if(b.pollScroll()===true){return}if(h.readyState=="complete"){b.onReadyEvent({type:"already "+(h.readyState||"body")})}else{h.attachEvent("onreadystatechange",b.checkReadyState);window.attachEvent("onload",b.onReadyEvent);b.hasBoundOnReady=true}},onReadyEvent:function(k){if(k&&k.type){b.onReadyChain.push(k.type)}if(b.hasBoundOnReady){document.detachEvent("onreadystatechange",b.checkReadyState);window.detachEvent("onload",b.onReadyEvent)}if(Ext.isNumber(b.scrollTimeout)){clearTimeout(b.scrollTimeout);delete b.scrollTimeout}if(!Ext.isReady){b.fireDocReady()}},onReadyChain:[]})}Ext.onReady=function(m,l,k){Ext.Loader.onReady(m,l,true,k)};Ext.onDocumentReady=b.onDocumentReady;b.on=b.addListener;b.un=b.removeListener;Ext.onReady(d)}();(Ext.cmd.derive("Ext.util.Observable",Ext.Base,function(a){var d=[],e=Array.prototype,g=e.slice,c=Ext.util.Event,b=function(h){if(h instanceof b){return h}this.observable=h;if(arguments[1].isObservable){this.managedListeners=true}this.args=g.call(arguments,1)};b.prototype.destroy=function(){this.observable[this.managedListeners?"mun":"un"].apply(this.observable,this.args)};return{statics:{releaseCapture:function(h){h.fireEventArgs=this.prototype.fireEventArgs},capture:function(l,j,h){var k=function(m,n){return j.apply(h,[m].concat(n))};this.captureArgs(l,k,h)},captureArgs:function(k,j,h){k.fireEventArgs=Ext.Function.createInterceptor(k.fireEventArgs,j,h)},observe:function(h,j){if(h){if(!h.isObservable){Ext.applyIf(h,new this());this.captureArgs(h.prototype,h.fireEventArgs,h)}if(Ext.isObject(j)){h.on(j)}}return h},prepareClass:function(k,j){if(!k.HasListeners){var l=function(){},h=k.superclass.HasListeners||(j&&j.HasListeners)||a.HasListeners;k.prototype.HasListeners=k.HasListeners=l;l.prototype=k.hasListeners=new h()}}},isObservable:true,eventsSuspended:0,constructor:function(h){var j=this;Ext.apply(j,h);if(!j.hasListeners){j.hasListeners=new j.HasListeners()}j.events=j.events||{};if(j.listeners){j.on(j.listeners);j.listeners=null}if(j.bubbleEvents){j.enableBubble(j.bubbleEvents)}},onClassExtended:function(h){if(!h.HasListeners){a.prepareClass(h)}},eventOptionsRe:/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate|element|destroyable|vertical|horizontal|freezeEvent|priority)$/,addManagedListener:function(p,l,n,q,r,k){var m=this,o=m.managedListeners=m.managedListeners||[],j,h;if(typeof l!=="string"){h=arguments.length>4?r:l;r=l;for(l in r){if(r.hasOwnProperty(l)){j=r[l];if(!m.eventOptionsRe.test(l)){m.addManagedListener(p,l,j.fn||j,j.scope||r.scope||q,j.fn?j:h,true)}}}if(r&&r.destroyable){return new b(m,p,r)}}else{if(typeof n==="string"){q=q||m;n=Ext.resolveMethod(n,q)}o.push({item:p,ename:l,fn:n,scope:q,options:r});p.on(l,n,q,r);if(!k&&r&&r.destroyable){return new b(m,p,l,n,q)}}},removeManagedListener:function(q,l,o,r){var n=this,s,j,p,h,m,k;if(typeof l!=="string"){s=l;for(l in s){if(s.hasOwnProperty(l)){j=s[l];if(!n.eventOptionsRe.test(l)){n.removeManagedListener(q,l,j.fn||j,j.scope||s.scope||r)}}}}else{p=n.managedListeners?n.managedListeners.slice():[];if(typeof o==="string"){r=r||n;o=Ext.resolveMethod(o,r)}for(m=0,h=p.length;m=532){a=120}else{a=12}a*=3}else{a=120}}return a}()),clickRe:/(dbl)?click/,safariKeys:{3:13,63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35},btnMap:Ext.isIE?{1:0,4:1,2:2}:{0:0,1:1,2:2},constructor:function(a,b){if(a){this.setEvent(a.browserEvent||a,b)}},setEvent:function(d,e){var c=this,b,a;if(d===c||(d&&d.browserEvent)){return d}c.browserEvent=d;if(d){b=d.button?c.btnMap[d.button]:(d.which?d.which-1:-1);if(c.clickRe.test(d.type)&&b==-1){b=0}a={type:d.type,button:b,shiftKey:d.shiftKey,ctrlKey:d.ctrlKey||d.metaKey||false,altKey:d.altKey,keyCode:d.keyCode,charCode:d.charCode,target:Ext.EventManager.getTarget(d),relatedTarget:Ext.EventManager.getRelatedTarget(d),currentTarget:d.currentTarget,xy:(e?c.getXY():null)}}else{a={button:-1,shiftKey:false,ctrlKey:false,altKey:false,keyCode:0,charCode:0,target:null,xy:[0,0]}}Ext.apply(c,a);return c},stopEvent:function(){this.stopPropagation();this.preventDefault()},preventDefault:function(){if(this.browserEvent){Ext.EventManager.preventDefault(this.browserEvent)}},stopPropagation:function(){var a=this.browserEvent;if(a){if(a.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}Ext.EventManager.stopPropagation(a)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){return this.normalizeKey(this.keyCode||this.charCode)},normalizeKey:function(a){return Ext.isWebKit?(this.safariKeys[a]||a):a},getPageX:function(){return this.getX()},getPageY:function(){return this.getY()},getX:function(){return this.getXY()[0]},getY:function(){return this.getXY()[1]},getXY:function(){if(!this.xy){this.xy=Ext.EventManager.getPageXY(this.browserEvent)}return this.xy},getTarget:function(b,c,a){if(b){return Ext.fly(this.target).findParent(b,c,a)}return a?Ext.get(this.target):this.target},getRelatedTarget:function(b,c,a){if(b&&this.relatedTarget){return Ext.fly(this.relatedTarget).findParent(b,c,a)}return a?Ext.get(this.relatedTarget):this.relatedTarget},correctWheelDelta:function(c){var b=this.WHEEL_SCALE,a=Math.round(c/b);if(!a&&c){a=(c<0)?-1:1}return a},getWheelDeltas:function(){var d=this,c=d.browserEvent,b=0,a=0;if(Ext.isDefined(c.wheelDeltaX)){b=c.wheelDeltaX;a=c.wheelDeltaY}else{if(c.wheelDelta){a=c.wheelDelta}else{if(c.detail){a=-c.detail;if(a>100){a=3}else{if(a<-100){a=-3}}if(Ext.isDefined(c.axis)&&c.axis===c.HORIZONTAL_AXIS){b=a;a=0}}}}return{x:d.correctWheelDelta(b),y:d.correctWheelDelta(a)}},getWheelDelta:function(){var a=this.getWheelDeltas();return a.y},within:function(d,e,b){if(d){var c=e?this.getRelatedTarget():this.getTarget(),a;if(c){a=Ext.fly(d,"_internal").contains(c);if(!a&&b){a=c==Ext.getDom(d)}return a}}return false},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(){var a=this.getXY();return new Ext.util.Point(a[0],a[1])},hasModifier:function(){return this.ctrlKey||this.altKey||this.shiftKey||this.metaKey},injectEvent:(function(){var d,e={},c;if(!Ext.isIE9m&&document.createEvent){d={createHtmlEvent:function(l,j,h,g){var k=l.createEvent("HTMLEvents");k.initEvent(j,h,g);return k},createMouseEvent:function(v,t,n,m,p,l,j,k,g,s,r,o,q){var h=v.createEvent("MouseEvents"),u=v.defaultView||window;if(h.initMouseEvent){h.initMouseEvent(t,n,m,u,p,l,j,l,j,k,g,s,r,o,q)}else{h=v.createEvent("UIEvents");h.initEvent(t,n,m);h.view=u;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.metaKey=r;h.shiftKey=s;h.button=o;h.relatedTarget=q}return h},createUIEvent:function(n,l,j,h,k){var m=n.createEvent("UIEvents"),g=n.defaultView||window;m.initUIEvent(l,j,h,g,k);return m},fireEvent:function(j,g,h){j.dispatchEvent(h)},fixTarget:function(g){if(g==window&&!g.dispatchEvent){return document}return g}}}else{if(document.createEventObject){c={0:1,1:4,2:2};d={createHtmlEvent:function(l,j,h,g){var k=l.createEventObject();k.bubbles=h;k.cancelable=g;return k},createMouseEvent:function(u,t,n,m,p,l,j,k,g,s,r,o,q){var h=u.createEventObject();h.bubbles=n;h.cancelable=m;h.detail=p;h.screenX=l;h.screenY=j;h.clientX=l;h.clientY=j;h.ctrlKey=k;h.altKey=g;h.shiftKey=s;h.metaKey=r;h.button=c[o]||o;h.relatedTarget=q;return h},createUIEvent:function(m,k,h,g,j){var l=m.createEventObject();l.bubbles=h;l.cancelable=g;return l},fireEvent:function(j,g,h){j.fireEvent("on"+g,h)},fixTarget:function(g){if(g==document){return document.documentElement}return g}}}}Ext.Object.each({load:[false,false],unload:[false,false],select:[true,false],change:[true,false],submit:[true,true],reset:[true,false],resize:[true,false],scroll:[true,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createHtmlEvent(j,h,g);d.fireEvent(n,j,m)}});function b(j,h){var g=(j!="mousemove");return function(n,k){var m=k.getXY(),l=d.createMouseEvent(n.ownerDocument,j,true,g,h,m[0],m[1],k.ctrlKey,k.altKey,k.shiftKey,k.metaKey,k.button,k.relatedTarget);d.fireEvent(n,j,l)}}Ext.each(["click","dblclick","mousedown","mouseup","mouseover","mousemove","mouseout"],function(g){e[g]=b(g,1)});Ext.Object.each({focusin:[true,false],focusout:[true,false],activate:[true,true],focus:[false,false],blur:[false,false]},function(j,k){var h=k[0],g=k[1];e[j]=function(n,l){var m=d.createUIEvent(n.ownerDocument,j,h,g,1);d.fireEvent(n,j,m)}});if(!d){e={};d={fixTarget:Ext.identityFn}}function a(h,g){}return function(k){var j=this,h=e[j.type]||a,g=k?(k.dom||k):j.getTarget();g=d.fixTarget(g);h(g,j)}}())},1,0,0,0,0,0,[Ext,"EventObjectImpl"],function(){Ext.EventObject=new Ext.EventObjectImpl()}));(Ext.cmd.derive("Ext.dom.AbstractQuery",Ext.Base,{select:function(k,b){var h=[],d,g,e,c,a;b=b||document;if(typeof b=="string"){b=document.getElementById(b)}k=k.split(",");for(g=0,c=k.length;g")}else{b.push(">");if((a=j.tpl)){a.applyOut(j.tplData,b)}if((a=j.html)){b.push(a)}if((a=j.cn||j.children)){h.generateMarkup(a,b)}c=h.closeTags;b.push(c[k]||(c[k]=""))}}}return b},generateStyles:function(e,c){var b=c||[],d;for(d in e){if(e.hasOwnProperty(d)){b.push(this.decamelizeName(d),":",e[d],";")}}return c||b.join("")},markup:function(a){if(typeof a=="string"){return a}var b=this.generateMarkup(a,[]);return b.join("")},applyStyles:function(c,d){if(d){var b=0,a;c=Ext.fly(c,"_applyStyles");if(typeof d=="function"){d=d.call()}if(typeof d=="string"){d=Ext.util.Format.trim(d).split(this.styleSepRe);for(a=d.length;b "'+c+'"'},insertBefore:function(a,c,b){return this.doInsert(a,c,b,"beforebegin")},insertAfter:function(a,c,b){return this.doInsert(a,c,b,"afterend","nextSibling")},insertFirst:function(a,c,b){return this.doInsert(a,c,b,"afterbegin","firstChild")},append:function(a,c,b){return this.doInsert(a,c,b,"beforeend","",true)},overwrite:function(a,c,b){a=Ext.getDom(a);a.innerHTML=this.markup(c);return b?Ext.get(a.firstChild):a.firstChild},doInsert:function(d,g,e,h,c,a){var b=this.insertHtml(h,Ext.getDom(d),this.markup(g));return e?Ext.get(b,true):b}},0,0,0,0,0,0,[Ext.dom,"AbstractHelper"],0));Ext.define("Ext.dom.AbstractElement_static",{override:"Ext.dom.AbstractElement",inheritableStatics:{unitRe:/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,camelRe:/(-[a-z])/gi,msRe:/^-ms-/,cssRe:/([a-z0-9\-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*)?;?/gi,opacityRe:/alpha\(opacity=(.*)\)/i,propertyCache:{},defaultUnit:"px",borders:{l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"},paddings:{l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"},margins:{l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"},addUnits:function(b,a){if(typeof b=="number"){return b+(a||this.defaultUnit||"px")}if(b===""||b=="auto"||b===undefined||b===null){return b||""}if(!this.unitRe.test(b)){return b||""}return b},isAncestor:function(b,d){var a=false;b=Ext.getDom(b);d=Ext.getDom(d);if(b&&d){if(b.contains){return b.contains(d)}else{if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(d)&16)}else{while((d=d.parentNode)){a=d==b||a}}}}return a},parseBox:function(c){c=c||0;var a=typeof c,d,b;if(a==="number"){return{top:c,right:c,bottom:c,left:c}}else{if(a!=="string"){return c}}d=c.split(" ");b=d.length;if(b==1){d[1]=d[2]=d[3]=d[0]}else{if(b==2){d[2]=d[0];d[3]=d[1]}else{if(b==3){d[3]=d[1]}}}return{top:parseFloat(d[0])||0,right:parseFloat(d[1])||0,bottom:parseFloat(d[2])||0,left:parseFloat(d[3])||0}},unitizeBox:function(g,e){var d=this.addUnits,c=this.parseBox(g);return d(c.top,e)+" "+d(c.right,e)+" "+d(c.bottom,e)+" "+d(c.left,e)},camelReplaceFn:function(b,c){return c.charAt(1).toUpperCase()},normalize:function(a){if(a=="float"){a=Ext.supports.Float?"cssFloat":"styleFloat"}return this.propertyCache[a]||(this.propertyCache[a]=a.replace(this.msRe,"ms-").replace(this.camelRe,this.camelReplaceFn))},getDocumentHeight:function(){return Math.max(!Ext.isStrict?document.body.scrollHeight:document.documentElement.scrollHeight,this.getViewportHeight())},getDocumentWidth:function(){return Math.max(!Ext.isStrict?document.body.scrollWidth:document.documentElement.scrollWidth,this.getViewportWidth())},getViewportHeight:function(){return window.innerHeight},getViewportWidth:function(){return window.innerWidth},getViewSize:function(){return{width:window.innerWidth,height:window.innerHeight}},getOrientation:function(){if(Ext.supports.OrientationChange){return(window.orientation==0)?"portrait":"landscape"}return(window.innerHeight>window.innerWidth)?"portrait":"landscape"},fromPoint:function(a,b){return Ext.get(document.elementFromPoint(a,b))},parseStyles:function(c){var a={},b=this.cssRe,d;if(c){b.lastIndex=0;while((d=b.exec(c))){a[d[1]]=d[2]||""}}return a}}},function(){var c=document,b=null,a=c.compatMode=="CSS1Compat";if(!("activeElement" in c)&&c.addEventListener){c.addEventListener("focus",function(e){if(e&&e.target){b=(e.target==c)?null:e.target}},true)}function d(g,h,e){return function(){g.selectionStart=h;g.selectionEnd=e}}this.addInheritableStatics({getActiveElement:function(){var h;try{h=c.activeElement}catch(g){}h=h||b;if(!h){h=b=document.body}return h},getRightMarginFixCleaner:function(l){var h=Ext.supports,j=h.DisplayChangeInputSelectionBug,k=h.DisplayChangeTextAreaSelectionBug,m,e,n,g;if(j||k){m=c.activeElement||b;e=m&&m.tagName;if((k&&e=="TEXTAREA")||(j&&e=="INPUT"&&m.type=="text")){if(Ext.dom.Element.isAncestor(l,m)){n=m.selectionStart;g=m.selectionEnd;if(Ext.isNumber(n)&&Ext.isNumber(g)){return d(m,n,g)}}}}return Ext.emptyFn},getViewWidth:function(e){return e?Ext.dom.Element.getDocumentWidth():Ext.dom.Element.getViewportWidth()},getViewHeight:function(e){return e?Ext.dom.Element.getDocumentHeight():Ext.dom.Element.getViewportHeight()},getDocumentHeight:function(){return Math.max(!a?c.body.scrollHeight:c.documentElement.scrollHeight,Ext.dom.Element.getViewportHeight())},getDocumentWidth:function(){return Math.max(!a?c.body.scrollWidth:c.documentElement.scrollWidth,Ext.dom.Element.getViewportWidth())},getViewportHeight:function(){return Ext.isIE9m?(Ext.isStrict?c.documentElement.clientHeight:c.body.clientHeight):self.innerHeight},getViewportWidth:function(){return(!Ext.isStrict&&!Ext.isOpera)?c.body.clientWidth:Ext.isIE9m?c.documentElement.clientWidth:self.innerWidth},serializeForm:function(j){var k=j.elements||(document.forms[j]||Ext.getDom(j)).elements,u=false,t=encodeURIComponent,n="",m=k.length,p,g,s,w,v,q,l,r,h;for(q=0;q0?t:0},getWidth:function(t){var v=this.dom,u=t?(v.clientWidth-this.getPadding("lr")):v.offsetWidth;return u>0?u:0},setWidth:function(t){var u=this;u.dom.style.width=d.addUnits(t);return u},setHeight:function(t){var u=this;u.dom.style.height=d.addUnits(t);return u},getBorderWidth:function(t){return this.addStyles(t,m)},getPadding:function(t){return this.addStyles(t,g)},margins:o,applyStyles:function(v){if(v){var u,t,w=this.dom;if(typeof v=="function"){v=v.call()}if(typeof v=="string"){v=Ext.util.Format.trim(v).split(/\s*(?::|;)\s*/);for(u=0,t=v.length;u'+u+""):""});B=z.getSize();w.mask=D;if(v===document.body){B.height=window.innerHeight;if(z.orientationHandler){Ext.EventManager.unOrientationChange(z.orientationHandler,z)}z.orientationHandler=function(){B=z.getSize();B.height=window.innerHeight;D.setSize(B)};Ext.EventManager.onOrientationChange(z.orientationHandler,z)}D.setSize(B);if(Ext.is.iPad){Ext.repaint()}},unmask:function(){var u=this,w=(u.$cache||u.getCache()).data,t=w.mask,v=Ext.baseCSSPrefix;if(t){t.remove();delete w.mask}u.removeCls([v+"masked",v+"masked-relative"]);if(u.dom===document.body){Ext.EventManager.unOrientationChange(u.orientationHandler,u);delete u.orientationHandler}}});Ext.onReady(function(){var B=Ext.supports,t,z,x,u,A;function y(G,D,F,C){var E=C[this.name]||"";return c.test(E)?"transparent":E}function w(I,F,H,E){var C=E.marginRight,D,G;if(C!="0px"){D=I.style;G=D.display;D.display="inline-block";C=(H?E:I.ownerDocument.defaultView.getComputedStyle(I,null)).marginRight;D.display=G}return C}function v(J,G,I,F){var C=F.marginRight,E,D,H;if(C!="0px"){E=J.style;D=d.getRightMarginFixCleaner(J);H=E.display;E.display="inline-block";C=(I?F:J.ownerDocument.defaultView.getComputedStyle(J,"")).marginRight;E.display=H;D()}return C}t=d.prototype.styleHooks;if(B.init){B.init()}if(!B.RightMargin){t.marginRight=t["margin-right"]={name:"marginRight",get:(B.DisplayChangeInputSelectionBug||B.DisplayChangeTextAreaSelectionBug)?v:w}}if(!B.TransparentColor){z=["background-color","border-color","color","outline-color"];for(x=z.length;x--;){u=z[x];A=d.normalize(u);t[u]=t[A]={name:A,get:y}}}})});Ext.define("Ext.dom.AbstractElement_traversal",{override:"Ext.dom.AbstractElement",findParent:function(h,b,a){var e=this.dom,c=document.documentElement,g=0,d;b=b||50;if(isNaN(b)){d=Ext.getDom(b);b=Number.MAX_VALUE}while(e&&e.nodeType==1&&g "+a,c.dom);return b?d:Ext.get(d)},parent:function(a,b){return this.matchNode("parentNode","parentNode",a,b)},next:function(a,b){return this.matchNode("nextSibling","nextSibling",a,b)},prev:function(a,b){return this.matchNode("previousSibling","previousSibling",a,b)},first:function(a,b){return this.matchNode("nextSibling","firstChild",a,b)},last:function(a,b){return this.matchNode("previousSibling","lastChild",a,b)},matchNode:function(b,e,a,c){if(!this.dom){return null}var d=this.dom[e];while(d){if(d.nodeType==1&&(!a||Ext.DomQuery.is(d,a))){return !c?Ext.get(d):d}d=d[b]}return null},isAncestor:function(a){return this.self.isAncestor.call(this.self,this.dom,a)}});(Ext.cmd.derive("Ext.dom.AbstractElement",Ext.Base,{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,inheritableStatics:{trimRe:/^\s+|\s+$/g,whitespaceRe:/\s/,get:function(c){var j=this,k=window.document,d=Ext.dom.Element,h,b,g,e,a;if(!c){return null}if(c.isFly){c=c.dom}if(typeof c=="string"){if(c==Ext.windowId){return d.get(window)}else{if(c==Ext.documentId){return d.get(k)}}h=Ext.cache[c];if(h&&h.skipGarbageCollection){g=h.el;return g}if(!(e=k.getElementById(c))){return null}if(h&&h.el){g=Ext.updateCacheEntry(h,e).el}else{g=new d(e,!!h)}return g}else{if(c.tagName){if(!(a=c.id)){a=Ext.id(c)}h=Ext.cache[a];if(h&&h.el){g=Ext.updateCacheEntry(h,c).el}else{g=new d(c,!!h)}return g}else{if(c instanceof j){if(c!=j.docEl&&c!=j.winEl){a=c.id;h=Ext.cache[a];if(h){Ext.updateCacheEntry(h,k.getElementById(a)||c.dom)}}return c}else{if(c.isComposite){return c}else{if(Ext.isArray(c)){return j.select(c)}else{if(c===k){if(!j.docEl){b=j.docEl=Ext.Object.chain(d.prototype);b.dom=k;b.el=b;b.id=Ext.id(k);j.addToCache(b)}return j.docEl}else{if(c===window){if(!j.winEl){j.winEl=Ext.Object.chain(d.prototype);j.winEl.dom=window;j.winEl.id=Ext.id(window);j.addToCache(j.winEl)}return j.winEl}}}}}}}return null},addToCache:function(a,b){if(a){Ext.addCacheEntry(b,a)}return a},addMethods:function(){this.override.apply(this,arguments)},mergeClsList:function(){var m,k={},g,b,d,h,c,n=[],e=false,a=this.trimRe,l=this.whitespaceRe;for(g=0,b=arguments.length;g",o=""+h,l=c+"",e=""+o,q=document.createElement("div"),n=["BeforeBegin","previousSibling"],k=["AfterEnd","nextSibling"],d={beforebegin:n,afterend:k},g={beforebegin:n,afterend:k,afterbegin:["AfterBegin","firstChild"],beforeend:["BeforeEnd","lastChild"]};return{tableRe:/^(?:table|thead|tbody|tr|td)$/i,tableElRe:/td|tr|tbody|thead/i,useDom:false,createDom:function(r,x){var s,A=document,v,y,t,z,w,u;if(Ext.isArray(r)){s=A.createDocumentFragment();for(w=0,u=r.length;w1){for(;c]*)\>)|(?:<\/tpl>)/g,actionsRe:/\s*(elif|elseif|if|for|foreach|exec|switch|case|eval|between)\s*\=\s*(?:(?:"([^"]*)")|(?:'([^']*)'))\s*/g,propRe:/prop=(?:(?:"([^"]*)")|(?:'([^']*)'))/,defaultRe:/^\s*default\s*$/,elseRe:/^\s*else\s*$/},1,0,0,0,0,0,[Ext,"XTemplateParser"],0));(Ext.cmd.derive("Ext.XTemplateCompiler",Ext.XTemplateParser,{useEval:Ext.isGecko,useIndex:Ext.isIE8m,useFormat:true,propNameRe:/^[\w\d\$]*$/,compile:function(a){var c=this,b=c.generate(a);return c.useEval?c.evalTpl(b):(new Function("Ext",b))(Ext)},generate:function(a){var d=this,b="var fm=Ext.util.Format,ts=Object.prototype.toString;",c;d.maxLevel=0;d.body=["var c0=values, a0="+d.createArrayTest(0)+", p0=parent, n0=xcount, i0=xindex, k0, v;\n"];if(d.definitions){if(typeof d.definitions==="string"){d.definitions=[d.definitions,b]}else{d.definitions.push(b)}}else{d.definitions=[b]}d.switches=[];d.parse(a);d.definitions.push((d.useEval?"$=":"return")+" function ("+d.fnArgs+") {",d.body.join(""),"}");c=d.definitions.join("\n");d.definitions.length=d.body.length=d.switches.length=0;delete d.definitions;delete d.body;delete d.switches;return c},doText:function(c){var b=this,a=b.body;c=c.replace(b.aposRe,"\\'").replace(b.newLineRe,"\\n");if(b.useIndex){a.push("out[out.length]='",c,"'\n")}else{a.push("out.push('",c,"')\n")}},doExpr:function(b){var a=this.body;a.push("if ((v="+b+") != null) out");if(this.useIndex){a.push("[out.length]=v+''\n")}else{a.push(".push(v+'')\n")}},doTag:function(a){var b=this.parseTag(a);if(b){this.doExpr(b)}else{this.doText("{"+a+"}")}},doElse:function(){this.body.push("} else {\n")},doEval:function(a){this.body.push(a,"\n")},doIf:function(b,c){var a=this;if(b==="."){a.body.push("if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("if (",a.parseTag(b),") {\n")}else{a.body.push("if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doElseIf:function(b,c){var a=this;if(b==="."){a.body.push("else if (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("} else if (",a.parseTag(b),") {\n")}else{a.body.push("} else if (",a.addFn(b),a.callFn,") {\n")}}if(c.exec){a.doExec(c.exec)}},doSwitch:function(b){var a=this;if(b==="."){a.body.push("switch (values) {\n")}else{if(a.propNameRe.test(b)){a.body.push("switch (",a.parseTag(b),") {\n")}else{a.body.push("switch (",a.addFn(b),a.callFn,") {\n")}}a.switches.push(0)},doCase:function(e){var d=this,c=Ext.isArray(e)?e:[e],g=d.switches.length-1,a,b;if(d.switches[g]){d.body.push("break;\n")}else{d.switches[g]++}for(b=0,g=c.length;b1){ out.push("',h.between,'"); } \n')}},doForEach:function(e,h){var d=this,c,b=d.level,a=b-1,g;if(e==="."){c="values"}else{if(d.propNameRe.test(e)){c=d.parseTag(e)}else{c=d.addFn(e)+d.callFn}}if(d.maxLevel1){ out.push("',h.between,'"); } \n')}},createArrayTest:("isArray" in Array)?function(a){return"Array.isArray(c"+a+")"}:function(a){return"ts.call(c"+a+')==="[object Array]"'},doExec:function(c,d){var b=this,a="f"+b.definitions.length;b.definitions.push("function "+a+"("+b.fnArgs+") {"," try { with(values) {"," "+c," }} catch(e) {","}","}");b.body.push(a+b.callFn+"\n")},addFn:function(a){var c=this,b="f"+c.definitions.length;if(a==="."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return values","}")}else{if(a===".."){c.definitions.push("function "+b+"("+c.fnArgs+") {"," return parent","}")}else{c.definitions.push("function "+b+"("+c.fnArgs+") {"," try { with(values) {"," return("+a+")"," }} catch(e) {","}","}")}}return b},parseTag:function(b){var h=this,a=h.tagRe.exec(b),e,j,d,g,c;if(!a){return null}e=a[1];j=a[2];d=a[3];g=a[4];if(e=="."){if(!h.validTypes){h.definitions.push("var validTypes={string:1,number:1,boolean:1};");h.validTypes=true}c='validTypes[typeof values] || ts.call(values) === "[object Date]" ? values : ""'}else{if(e=="#"){c="xindex"}else{if(e=="$"){c="xkey"}else{if(e.substr(0,7)=="parent."){c=e}else{if(isNaN(e)&&e.indexOf("-")==-1&&e.indexOf(".")!=-1){c="values."+e}else{c="values['"+e+"']"}}}}}if(g){c="("+c+g+")"}if(j&&h.useFormat){d=d?","+d:"";if(j.substr(0,5)!="this."){j="fm."+j+"("}else{j+="("}}else{return c}return j+c+d+")"},evalTpl:function($){eval($);return $},newLineRe:/\r\n|\r|\n/g,aposRe:/[']/g,intRe:/^\s*(\d+)\s*$/,tagRe:/^([\w-\.\#\$]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\/]\s?[\d\.\+\-\*\/\(\)]+)?$/},0,0,0,0,0,0,[Ext,"XTemplateCompiler"],function(){var a=this.prototype;a.fnArgs="out,values,parent,xindex,xcount,xkey";a.callFn=".call(this,"+a.fnArgs+")"}));(Ext.cmd.derive("Ext.XTemplate",Ext.Template,{emptyObj:{},apply:function(a,b){return this.applyOut(a,[],b).join("")},applyOut:function(a,b,d){var g=this,c;if(!g.fn){c=new Ext.XTemplateCompiler({useFormat:g.disableFormats!==true,definitions:g.definitions});g.fn=c.compile(g.html)}try{g.fn(b,a,d||g.emptyObj,1,1)}catch(h){}return b},compile:function(){return this},statics:{getTpl:function(b,d){var c=b[d],a;if(c&&!c.isTemplate){c=Ext.ClassManager.dynInstantiate("Ext.XTemplate",c);if(b.hasOwnProperty(d)){a=b}else{for(a=b.self.prototype;a&&!a.hasOwnProperty(d);a=a.superclass){}}a[d]=c;c.owner=a}return c||null}}},0,0,0,0,0,0,[Ext,"XTemplate"],0));Ext.ns("Ext.core");Ext.dom.Query=Ext.core.DomQuery=Ext.DomQuery=(function(){var DQ,doc=document,cache={},simpleCache={},valueCache={},useClassList=!!doc.documentElement.classList,useElementPointer=!!doc.documentElement.firstElementChild,useChildrenCollection=(function(){var d=doc.createElement("div");d.innerHTML="text";return d.children&&(d.children.length===0)})(),nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w\-\*\|\\]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,startIdRe=/^\s*#/,isIE=window.ActiveXObject?true:false,key=30803,longHex=/\\([0-9a-fA-F]{6})/g,shortHex=/\\([0-9a-fA-F]{1,6})\s{0,1}/g,nonHex=/\\([^0-9a-fA-F]{1})/g,escapes=/\\/g,num,hasEscapes,supportsColonNsSeparator=(function(){var xmlDoc,xmlString='';if(window.DOMParser){xmlDoc=(new DOMParser()).parseFromString(xmlString,"application/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.loadXML(xmlString)}return !!xmlDoc.getElementsByTagName("a:b").length})(),longHexToChar=function($0,$1){return String.fromCharCode(parseInt($1,16))},shortToLongHex=function($0,$1){while($1.length<6){$1="0"+$1}return"\\"+$1},charToLongHex=function($0,$1){num=$1.charCodeAt(0).toString(16);if(num.length===1){num="0"+num}return"\\0000"+num},unescapeCssSelector=function(selector){return(hasEscapes)?selector.replace(longHex,longHexToChar):selector},setupEscapes=function(path){hasEscapes=(path.indexOf("\\")>-1);if(hasEscapes){path=path.replace(shortHex,shortToLongHex).replace(nonHex,charToLongHex).replace(escapes,"\\\\")}return path};eval("var batch = 30803, child, next, prev, byClassName;");child=useChildrenCollection?function child(parent,index){return parent.children[index]}: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};next=useElementPointer?function(n){return n.nextElementSibling}:function(n){while((n=n.nextSibling)&&n.nodeType!=1){}return n};prev=useElementPointer?function(n){return n.previousElementSibling}:function(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}byClassName=useClassList?function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci,classList;for(i=0;ci=nodeSet[i];i++){classList=ci.classList;if(classList){if(classList.contains(cls)){result[++ri]=ci}}else{if((" "+ci.className+" ").indexOf(cls)!==-1){result[++ri]=ci}}}return result}:function(nodeSet,cls){cls=unescapeCssSelector(cls);if(!cls){return nodeSet}var result=[],ri=-1,i,ci;for(i=0;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,i,ni,j,ci,cn,utag,n,cj;if(!ns){return result}tagName=tagName.replace("|",":")||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns]}if(!mode){tagName=unescapeCssSelector(tagName);if(!supportsColonNsSeparator&&DQ.isXml(ns[0])&&tagName.indexOf(":")!==-1){for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName.split(":").pop());for(j=0;ci=cs[j];j++){if(ci.tagName===tagName){result[++ri]=ci}}}}else{for(i=0;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(j=0;ci=cs[j];j++){result[++ri]=ci}}}}else{if(mode=="/"||mode==">"){utag=tagName.toUpperCase();for(i=0;ni=ns[i];i++){cn=ni.childNodes;for(j=0;cj=cn[j];j++){if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){result[++ri]=cj}}}}else{if(mode=="+"){utag=tagName.toUpperCase();for(i=0;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=="~"){utag=tagName.toUpperCase();for(i=0;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){a.push.apply(a,b);return a}function byTag(cs,tagName){if(cs.tagName||cs===doc){cs=[cs]}if(!tagName){return cs}var result=[],ri=-1,i,ci;tagName=tagName.toLowerCase();for(i=0;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){result[++ri]=ci}}return result}function byId(cs,id){id=unescapeCssSelector(id);if(cs.tagName||cs===doc){cs=[cs]}if(!id){return cs}var result=[],ri=-1,i,ci;for(i=0;ci=cs[i];i++){if(ci&&ci.id==id){result[++ri]=ci;return result}}return result}function byAttribute(cs,attr,value,op,custom){var result=[],ri=-1,useGetStyle=custom=="{",fn=DQ.operators[op],a,xml,hasXml,i,ci;value=unescapeCssSelector(value);for(i=0;ci=cs[i];i++){if(ci.nodeType===1){if(!hasXml){xml=DQ.isXml(ci);hasXml=true}if(!xml){if(useGetStyle){a=DQ.getStyle(ci,attr)}else{if(attr=="class"||attr=="className"){a=ci.className}else{if(attr=="for"){a=ci.htmlFor}else{if(attr=="href"){a=ci.getAttribute("href",2)}else{a=ci.getAttribute(attr)}}}}}else{a=ci.getAttribute(attr)}if((fn&&fn(a,value))||(!fn&&a)){result[++ri]=ci}}}return result}function byPseudo(cs,name,value){value=unescapeCssSelector(value);return DQ.pseudos[name](cs,value)}function nodupIEXml(cs){var d=++key,r,i,len,c;cs[0].setAttribute("_nodup",d);r=[cs[0]];for(i=1,len=cs.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:doc.querySelectorAll?function(path,root,type,single){root=root||doc;if(!DQ.isXml(root)){try{if(root.parentNode&&(root.nodeType!==9)&&path.indexOf(",")===-1&&!startIdRe.test(path)){path="#"+Ext.escapeId(Ext.id(root))+" "+path;root=root.parentNode}return single?[root.querySelector(path)]:Ext.Array.toArray(root.querySelectorAll(path))}catch(e){}}return DQ.jsSelect.call(this,path,root,type)}:function(path,root,type){return DQ.jsSelect.call(this,path,root,type)},selectNode:function(path,root){return Ext.DomQuery.select(path,root,null,true)[0]},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=DQ.compile(path,"select")}else{setupEscapes(path)}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=DQ.selectValue(path,root,defaultValue||0);return parseFloat(v)},is:function(el,ss){if(typeof el=="string"){el=doc.getElementById(el)}var isArray=Ext.isArray(el),result=DQ.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]=DQ.compile(ss,"simple")}else{setupEscapes(ss)}var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result},matchers:[{re:/^\.([\w\-\\]+)/,select:useClassList?'n = byClassName(n, "{1}");':'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,i,ci;for(i=0;(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,i,ci;for(i=0;(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,i,n,j,cn,pn;for(i=0;n=c[i];i++){pn=n.parentNode;if(batch!=pn._batch){j=0;for(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,i,ci;for(i=0;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[++ri]=ci}}return r},empty:function(c){var r=[],ri=-1,i,ci,cns,j,cn,empty;for(i=0;ci=c[i];i++){cns=ci.childNodes;j=0;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,i,ci;for(i=0;ci=c[i];i++){if((ci.textContent||ci.innerText||ci.text||"").indexOf(v)!=-1){r[++ri]=ci}}return r},nodeValue:function(c,v){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[++ri]=ci}}return r},checked:function(c){var r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(ci.checked===true){r[++ri]=ci}}return r},not:function(c,ss){return DQ.filter(c,ss,true)},any:function(c,selectors){var ss=selectors.split("|"),r=[],ri=-1,s,i,ci,j;for(i=0;ci=c[i];i++){for(j=0;s=ss[j];j++){if(DQ.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=DQ.select,r=[],ri=-1,i,ci;for(i=0;ci=c[i];i++){if(s(ss,ci).length>0){r[++ri]=ci}}return r},next:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=next(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},prev:function(c,ss){var is=DQ.is,r=[],ri=-1,i,ci,n;for(i=0;ci=c[i];i++){n=prev(ci);if(n&&is(n,ss)){r[++ri]=ci}}return r},focusable:function(candidates){var len=candidates.length,results=[],i=0,c;for(;ia.clientHeight||a.scrollWidth>a.clientWidth},getScroll:function(){var c=this,h=c.dom,g=document,a=g.body,b=g.documentElement,e,d;if(h===g||h===a){e=b.scrollLeft||(a?a.scrollLeft:0);d=b.scrollTop||(a?a.scrollTop:0)}else{e=h.scrollLeft;d=h.scrollTop}return{left:e,top:d}},getScrollLeft:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().left}else{return b.scrollLeft}},getScrollTop:function(){var b=this.dom,a=document;if(b===a||b===a.body){return this.getScroll().top}else{return b.scrollTop}},setScrollLeft:function(a){this.dom.scrollLeft=a;return this},setScrollTop:function(a){this.dom.scrollTop=a;return this},scrollBy:function(b,a,c){var d=this,e=d.dom;if(b.length){c=a;a=b[1];b=b[0]}else{if(typeof b!="number"){c=a;a=b.y;b=b.x}}if(b){d.scrollTo("left",d.constrainScrollLeft(e.scrollLeft+b),c)}if(a){d.scrollTo("top",d.constrainScrollTop(e.scrollTop+a),c)}return d},scrollTo:function(c,e,a){var g=/top/i.test(c),d=this,j=g?"scrollTop":"scrollLeft",h=d.dom,b;if(!a||!d.anim){h[j]=e;h[j]=e}else{b={to:{}};b.to[j]=e;if(Ext.isObject(a)){Ext.applyIf(b,a)}d.animate(b)}return d},scrollIntoView:function(b,e,c,h){var n=this,l=n.dom,j=n.getOffsetsTo(b=Ext.getDom(b)||Ext.getBody().dom),g=j[0]+b.scrollLeft,o=j[1]+b.scrollTop,a=o+l.offsetHeight,p=g+l.offsetWidth,s=b.clientHeight,r=parseInt(b.scrollTop,10),d=parseInt(b.scrollLeft,10),k=r+s,q=d+b.clientWidth,m;if(h){if(c){c=Ext.apply({listeners:{afteranimate:function(){n.scrollChildFly.attach(l).highlight()}}},c)}else{n.scrollChildFly.attach(l).highlight()}}if(l.offsetHeight>s||ok){m=a-s}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("top",m,c)}if(e!==false){m=null;if(l.offsetWidth>b.clientWidth||gq){m=p-b.clientWidth}}if(m!=null){n.scrollChildFly.attach(b).scrollTo("left",m,c)}}return n},scrollChildIntoView:function(b,a){this.scrollChildFly.attach(Ext.getDom(b)).scrollIntoView(this,a)},scroll:function(k,a,c){if(!this.isScrollable()){return false}var j=this,e=j.dom,h=k==="r"||k==="l"?"left":"top",b=false,d,g;if(k==="r"){a=-a}if(h==="left"){d=e.scrollLeft;g=j.constrainScrollLeft(d+a)}else{d=e.scrollTop;g=j.constrainScrollTop(d+a)}if(g!==d){this.scrollTo(h,g,c);b=true}return b},constrainScrollLeft:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollWidth-b.clientWidth),0)},constrainScrollTop:function(a){var b=this.dom;return Math.max(Math.min(a,b.scrollHeight-b.clientHeight),0)}},function(){this.prototype.scrollChildFly=new this.Fly();this.prototype.scrolltoFly=new this.Fly()});Ext.define("Ext.dom.Element_style",{override:"Ext.dom.Element"},function(){var s=this,o=document.defaultView,q=/table-row|table-.*-group/,a="_internal",u="hidden",r="height",h="width",e="isClipped",l="overflow",n="overflow-x",m="overflow-y",v="originalClip",b=/#document|body/i,w,g,p,d,t,j,x;if(!o||!o.getComputedStyle){s.prototype.getStyle=function(C,B){var O=this,J=O.dom,M=typeof C!="string",k=O.styleHooks,z=C,A=z,I=1,E=B,N,F,y,D,H,K,G;if(M){y={};z=A[0];G=0;if(!(I=A.length)){return y}}if(!J||J.documentElement){return y||""}F=J.style;if(B){K=F}else{K=J.currentStyle;if(!K){E=true;K=F}}do{D=k[z];if(!D){k[z]=D={name:s.normalize(z)}}if(D.get){H=D.get(J,O,E,K)}else{N=D.name;if(D.canThrow){try{H=K[N]}catch(L){H=""}}else{H=K?K[N]:""}}if(!M){return H}y[z]=H;z=A[++G]}while(G0&&C<0.5){k++}}}if(A){k-=z.getBorderWidth("tb")+z.getPadding("tb")}return(k<0)?0:k},getWidth:function(k,C){var A=this,D=A.dom,B=A.isStyle("display","none"),z,y,E;if(B){return 0}if(C&&Ext.supports.BoundingClientRect){z=D.getBoundingClientRect();y=(A.vertical&&!Ext.isIE9&&!Ext.supports.RotatedBoundingClientRect)?(z.bottom-z.top):(z.right-z.left)}else{y=D.offsetWidth}if(Ext.supports.Direct2DBug&&!A.vertical){E=A.adjustDirect2DDimension(h);if(C){y+=E}else{if(E>0&&E<0.5){y++}}}if(k){y-=A.getBorderWidth("lr")+A.getPadding("lr")}return(y<0)?0:y},setWidth:function(y,k){var z=this;y=z.adjustWidth(y);if(!k||!z.anim){z.dom.style.width=z.addUnits(y)}else{if(!Ext.isObject(k)){k={}}z.animate(Ext.applyIf({to:{width:y}},k))}return z},setHeight:function(k,y){var z=this;k=z.adjustHeight(k);if(!y||!z.anim){z.dom.style.height=z.addUnits(k)}else{if(!Ext.isObject(y)){y={}}z.animate(Ext.applyIf({to:{height:k}},y))}return z},applyStyles:function(k){Ext.DomHelper.applyStyles(this.dom,k);return this},setSize:function(z,k,y){var A=this;if(Ext.isObject(z)){y=k;k=z.height;z=z.width}z=A.adjustWidth(z);k=A.adjustHeight(k);if(!y||!A.anim){A.dom.style.width=A.addUnits(z);A.dom.style.height=A.addUnits(k)}else{if(y===true){y={}}A.animate(Ext.applyIf({to:{width:z,height:k}},y))}return A},getViewSize:function(){var z=this,A=z.dom,y=b.test(A.nodeName),k;if(y){k={width:s.getViewWidth(),height:s.getViewHeight()}}else{k={width:A.clientWidth,height:A.clientHeight}}return k},getSize:function(k){return{width:this.getWidth(k),height:this.getHeight(k)}},adjustWidth:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("lr")+y.getPadding("lr"))}return(z&&k<0)?0:k},adjustHeight:function(k){var y=this,z=(typeof k=="number");if(z&&y.autoBoxAdjust&&!y.isBorderBox()){k-=(y.getBorderWidth("tb")+y.getPadding("tb"))}return(z&&k<0)?0:k},getColor:function(y,z,E){var B=this.getStyle(y),A=E||E===""?E:"#",D,k,C=0;if(!B||(/transparent|inherit/.test(B))){return z}if(/^r/.test(B)){B=B.slice(4,B.length-1).split(",");k=B.length;for(;C5?A.toLowerCase():z)},setOpacity:function(y,k){var z=this;if(!z.dom){return z}if(!k||!z.anim){z.setStyle("opacity",y)}else{if(typeof k!="object"){k={duration:350,easing:"ease-in"}}z.animate(Ext.applyIf({to:{opacity:y}},k))}return z},clearOpacity:function(){return this.setOpacity("")},adjustDirect2DDimension:function(z){var E=this,y=E.dom,C=E.getStyle("display"),B=y.style.display,F=y.style.position,D=z===h?0:1,k=y.currentStyle,A;if(C==="inline"){y.style.display="inline-block"}y.style.position=C.match(q)?"absolute":"static";A=(parseFloat(k[z])||parseFloat(k.msTransformOrigin.split(" ")[D])*2)%1;y.style.position=F;if(C==="inline"){y.style.display=B}return A},clip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(!z[e]){z[e]=true;k=y.getStyle([l,n,m]);z[v]={o:k[l],x:k[n],y:k[m]};y.setStyle(l,u);y.setStyle(n,u);y.setStyle(m,u)}return y},unclip:function(){var y=this,z=(y.$cache||y.getCache()).data,k;if(z[e]){z[e]=false;k=z[v];if(k.o){y.setStyle(l,k.o)}if(k.x){y.setStyle(n,k.x)}if(k.y){y.setStyle(m,k.y)}}return y},boxWrap:function(k){k=k||Ext.baseCSSPrefix+"box";var y=Ext.get(this.insertHtml("beforeBegin","
    "+Ext.String.format(s.boxMarkup,k)+"
    "));Ext.DomQuery.selectNode("."+k+"-mc",y.dom).appendChild(this.dom);return y},getComputedHeight:function(){var y=this,k=Math.max(y.dom.offsetHeight,y.dom.clientHeight);if(!k){k=parseFloat(y.getStyle(r))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("tb")}}return k},getComputedWidth:function(){var y=this,k=Math.max(y.dom.offsetWidth,y.dom.clientWidth);if(!k){k=parseFloat(y.getStyle(h))||0;if(!y.isBorderBox()){k+=y.getFrameWidth("lr")}}return k},getFrameWidth:function(y,k){return(k&&this.isBorderBox())?0:(this.getPadding(y)+this.getBorderWidth(y))},addClsOnOver:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.hover(function(){if(k&&C.call(y||A,A)===false){return}Ext.fly(B,a).addCls(z)},function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnFocus:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("focus",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z)});A.on("blur",function(){Ext.fly(B,a).removeCls(z)});return A},addClsOnClick:function(z,C,y){var A=this,B=A.dom,k=Ext.isFunction(C);A.on("mousedown",function(){if(k&&C.call(y||A,A)===false){return false}Ext.fly(B,a).addCls(z);var E=Ext.getDoc(),D=function(){Ext.fly(B,a).removeCls(z);E.removeListener("mouseup",D)};E.on("mouseup",D)});return A},getStyleSize:function(){var B=this,C=this.dom,y=b.test(C.nodeName),A,k,z;if(y){return{width:s.getViewWidth(),height:s.getViewHeight()}}A=B.getStyle([r,h],true);if(A.width&&A.width!="auto"){k=parseFloat(A.width);if(B.isBorderBox()){k-=B.getFrameWidth("lr")}}if(A.height&&A.height!="auto"){z=parseFloat(A.height);if(B.isBorderBox()){z-=B.getFrameWidth("tb")}}return{width:k||B.getWidth(true),height:z||B.getHeight(true)}},statics:{selectableCls:Ext.baseCSSPrefix+"selectable",unselectableCls:Ext.baseCSSPrefix+"unselectable"},selectable:function(){var k=this;k.dom.unselectable="";k.removeCls(s.unselectableCls);k.addCls(s.selectableCls);return k},unselectable:function(){var k=this;if(Ext.isOpera){k.dom.unselectable="on"}k.removeCls(s.selectableCls);k.addCls(s.unselectableCls);return k},setVertical:function(B,y){var A=this,z=s.prototype,k;A.vertical=true;if(y){A.addCls(A.verticalCls=y)}A.setWidth=z.setHeight;A.setHeight=z.setWidth;if(!Ext.isIE9m){A.getWidth=z.getHeight;A.getHeight=z.getWidth}A.styleHooks=(B===270)?s.prototype.verticalStyleHooks270:s.prototype.verticalStyleHooks90},setHorizontal:function(){var y=this,k=y.verticalCls;delete y.vertical;if(k){delete y.verticalCls;y.removeCls(k)}delete y.setWidth;delete y.setHeight;if(!Ext.isIE9m){delete y.getWidth;delete y.getHeight}delete y.styleHooks}});s.prototype.styleHooks=w=Ext.dom.AbstractElement.prototype.styleHooks;s.prototype.verticalStyleHooks90=g=Ext.Object.chain(s.prototype.styleHooks);s.prototype.verticalStyleHooks270=p=Ext.Object.chain(s.prototype.styleHooks);g.width={name:"height"};g.height={name:"width"};g["margin-top"]={name:"marginLeft"};g["margin-right"]={name:"marginTop"};g["margin-bottom"]={name:"marginRight"};g["margin-left"]={name:"marginBottom"};g["padding-top"]={name:"paddingLeft"};g["padding-right"]={name:"paddingTop"};g["padding-bottom"]={name:"paddingRight"};g["padding-left"]={name:"paddingBottom"};g["border-top"]={name:"borderLeft"};g["border-right"]={name:"borderTop"};g["border-bottom"]={name:"borderRight"};g["border-left"]={name:"borderBottom"};p.width={name:"height"};p.height={name:"width"};p["margin-top"]={name:"marginRight"};p["margin-right"]={name:"marginBottom"};p["margin-bottom"]={name:"marginLeft"};p["margin-left"]={name:"marginTop"};p["padding-top"]={name:"paddingRight"};p["padding-right"]={name:"paddingBottom"};p["padding-bottom"]={name:"paddingLeft"};p["padding-left"]={name:"paddingTop"};p["border-top"]={name:"borderRight"};p["border-right"]={name:"borderBottom"};p["border-bottom"]={name:"borderLeft"};p["border-left"]={name:"borderTop"};if(Ext.isIE7m){w.fontSize=w["font-size"]={name:"fontSize",canThrow:true};w.fontStyle=w["font-style"]={name:"fontStyle",canThrow:true};w.fontFamily=w["font-family"]={name:"fontFamily",canThrow:true}}if(Ext.isIEQuirks||Ext.isIE&&Ext.ieVersion<=8){function c(A,y,z,k){if(k[this.styleName]=="none"){return"0px"}return k[this.name]}d=["Top","Right","Bottom","Left"];t=d.length;while(t--){j=d[t];x="border"+j+"Width";w["border-"+j.toLowerCase()+"-width"]=w[x]={name:x,styleName:"border"+j+"Style",get:c}}}Ext.getDoc().on("selectstart",function(B,D){var C=document.documentElement,A=s.selectableCls,z=s.unselectableCls,k=D&&D.tagName;k=k&&k.toLowerCase();if(k==="input"||k==="textarea"){return}while(D&&D.nodeType===1&&D!==C){var y=Ext.fly(D);if(y.hasCls(A)){return}if(y.hasCls(z)){B.stopEvent();return}D=D.parentNode}})});Ext.onReady(function(){var c=/alpha\(opacity=(.*)\)/i,b=/^\s+|\s+$/g,a=Ext.dom.Element.prototype.styleHooks;a.opacity={name:"opacity",afterSet:function(g,e,d){if(d.isLayer){d.onOpacitySet(e)}}};if(!Ext.supports.Opacity&&Ext.isIE){Ext.apply(a.opacity,{get:function(h){var g=h.style.filter,e,d;if(g.match){e=g.match(c);if(e){d=parseFloat(e[1]);if(!isNaN(d)){return d?d/100:0}}}return 1},set:function(h,e){var d=h.style,g=d.filter.replace(c,"").replace(b,"");d.zoom=1;if(typeof(e)=="number"&&e>=0&&e<1){e*=100;d.filter=g+(g.length?" ":"")+"alpha(opacity="+e+")"}else{d.filter=g}}})}});(Ext.cmd.derive("Ext.util.Positionable",Ext.Base,{_positionTopLeft:["position","top","left"],_alignRe:/^([a-z]+)-([a-z]+)(\?)?$/,afterSetPosition:Ext.emptyFn,adjustForConstraints:function(c,b){var a=this.getConstrainVector(b,c);if(a){c[0]+=a[0];c[1]+=a[1]}return c},alignTo:function(c,a,g,b){var e=this,d=e.el;return e.setXY(e.getAlignToXY(c,a,g),d.anim&&!!b?d.anim(b):false)},anchorTo:function(h,e,b,a,k,l){var g=this,j=!Ext.isEmpty(k),c=function(){g.alignTo(h,e,b,a);Ext.callback(l,g)},d=g.getAnchor();g.removeAnchor();Ext.apply(d,{fn:c,scroll:j});Ext.EventManager.onWindowResize(c,null);if(j){Ext.EventManager.on(window,"scroll",c,null,{buffer:!isNaN(k)?k:50})}c();return g},calculateAnchorXY:function(g,j,h,d){var k=this,c=k.el,l=document,e=c.dom==l.body||c.dom==l,m=Math.round,n,b,a;g=(g||"tl").toLowerCase();d=d||{};b=d.width||e?Ext.Element.getViewWidth():k.getWidth();a=d.height||e?Ext.Element.getViewHeight():k.getHeight();switch(g){case"tl":n=[0,0];break;case"bl":n=[0,a];break;case"tr":n=[b,0];break;case"c":n=[m(b*0.5),m(a*0.5)];break;case"t":n=[m(b*0.5),0];break;case"l":n=[0,m(a*0.5)];break;case"r":n=[b,m(a*0.5)];break;case"b":n=[m(b*0.5),a];break;case"tc":n=[m(b*0.5),0];break;case"bc":n=[m(b*0.5),a];break;case"br":n=[b,a]}return[n[0]+j,n[1]+h]},convertPositionSpec:Ext.identityFn,getAlignToXY:function(k,D,e){var E=this,B=Ext.Element.getViewWidth()-10,d=Ext.Element.getViewHeight()-10,F=document,C=F.documentElement,p=F.body,A=(C.scrollLeft||p.scrollLeft||0),w=(C.scrollTop||p.scrollTop||0),a,h,t,g,u,v,r,s,z,q,o,b,c,j,m,n,l;k=Ext.get(k.el||k);if(!k||!k.dom){}e=e||[0,0];D=(!D||D=="?"?"tl-bl?":(!(/-/).test(D)&&D!==""?"tl-"+D:D||"tl-bl")).toLowerCase();D=E.convertPositionSpec(D);a=D.match(E._alignRe);q=a[1];o=a[2];z=!!a[3];h=E.getAnchorXY(q,true);t=E.getAnchorToXY(k,o,false);n=t[0]-h[0]+e[0];l=t[1]-h[1]+e[1];if(z){g=E.getWidth();u=E.getHeight();v=k.getRegion();b=q.charAt(0);c=q.charAt(q.length-1);j=o.charAt(0);m=o.charAt(o.length-1);r=((b=="t"&&j=="b")||(b=="b"&&j=="t"));s=((c=="r"&&m=="l")||(c=="l"&&m=="r"));if(n+g>B+A){n=s?v.left-g:B+A-g}if(nd+w){l=r?v.top-u:d+w-u}if(le.right){d=true;b[0]=(e.right-j.right)}if(j.left+b[0]e.bottom){d=true;b[1]=(e.bottom-j.bottom)}if(j.top+b[1]0||q.scrollLeft>0){t[++p]=q}}return t};return{alternateClassName:["Ext.Element","Ext.core.Element"],tableTagRe:/^(?:tr|td|table|tbody)$/i,addUnits:function(){return a.addUnits.apply(a,arguments)},focus:function(s,r){var p=this;r=r||p.dom;try{if(Number(s)){Ext.defer(p.focus,s,p,[null,r])}else{r.focus()}}catch(q){}return p},blur:function(){var p=this,r=p.dom;if(r!==document.body){try{r.blur()}catch(q){}return p}else{return p.focus(undefined,r)}},isBorderBox:function(){var p=Ext.isBorderBox;if(p&&Ext.isIE7m){p=!((this.dom.tagName||"").toLowerCase() in d)}return p},hover:function(q,p,s,r){var t=this;t.on("mouseenter",q,s||t.dom,r);t.on("mouseleave",p,s||t.dom,r);return t},getAttributeNS:function(q,p){return this.getAttribute(p,q)},getAttribute:(Ext.isIE&&!(Ext.isIE9p&&g.documentMode>=9))?function(p,r){var s=this.dom,q;if(r){q=typeof s[r+":"+p];if(q!="undefined"&&q!="unknown"){return s[r+":"+p]||null}return null}if(p==="for"){p="htmlFor"}return s[p]||null}:function(p,q){var r=this.dom;if(q){return r.getAttributeNS(q,p)||r.getAttribute(q+":"+p)}return r.getAttribute(p)||r[p]||null},cacheScrollValues:function(){var t=this,s,r,q,u=[],p=function(){for(q=0;q]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,replaceScriptTagRe=/(?:)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,useDocForId=!Ext.isIE8m,internalFly;Element.boxMarkup='
    ';function garbageCollect(){if(!Ext.enableGarbageCollector){clearInterval(Element.collectorThreadId)}else{var eid,d,o,t;for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}o=EC[eid];if(o.skipGarbageCollection){continue}d=o.dom;if(d&&(!d.parentNode||(!d.offsetParent&&!Ext.getElementById(eid)))){if(Ext.enableListenerCollection){Ext.EventManager.removeAll(d)}delete EC[eid]}}if(Ext.isIE){t={};for(eid in EC){if(!EC.hasOwnProperty(eid)){continue}t[eid]=EC[eid]}EC=Ext.cache=t}}}Element.collectorThreadId=setInterval(garbageCollect,30000);Element.addMethods({monitorMouseLeave:function(delay,handler,scope){var me=this,timer,listeners={mouseleave:function(e){timer=setTimeout(Ext.Function.bind(handler,scope||me,[e]),delay)},mouseenter:function(){clearTimeout(timer)},freezeEvent:true};me.on(listeners);return listeners},swallowEvent:function(eventName,preventDefault){var me=this,e,eLen,fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){eLen=eventName.length;for(e=0;e';interval=setInterval(function(){var hd,match,attrs,srcMatch,typeMatch,el,s;if(!(el=DOC.getElementById(id))){return false}clearInterval(interval);Ext.removeNode(el);hd=Ext.getHead().dom;while((match=scriptTagRe.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])}}}}Ext.callback(callback,me)},20);dom.innerHTML=html.replace(replaceScriptTagRe,"");return me},removeAllListeners:function(){this.removeAnchor();Ext.EventManager.removeAll(this.dom);return this},createProxy:function(config,renderTo,matchBox){config=(typeof config=="object")?config:{tag:"div",cls:config};var me=this,proxy=renderTo?Ext.DomHelper.append(renderTo,config,true):Ext.DomHelper.insertBefore(me.dom,config,true);proxy.setVisibilityMode(Element.DISPLAY);proxy.hide();if(matchBox&&me.setBox&&me.getBox){proxy.setBox(me.getBox())}return proxy},needsTabIndex:function(){if(this.dom){if((this.dom.nodeName==="a")&&(!this.dom.href)){return true}return !focusRe.test(this.dom.nodeName)}},isFocusable:function(asFocusEl){var dom=this.dom,tabIndexAttr=dom.getAttributeNode("tabIndex"),tabIndex,nodeName=dom.nodeName,canFocus=false;if(tabIndexAttr&&tabIndexAttr.specified){tabIndex=tabIndexAttr.value}if(dom&&!dom.disabled){if(tabIndex==-1){canFocus=Ext.FocusManager&&Ext.FocusManager.enabled&&asFocusEl}else{if(focusRe.test(nodeName)){if((nodeName!=="a")||dom.href){canFocus=true}}else{canFocus=tabIndex!=null&&tabIndex>=0}}canFocus=canFocus&&this.isVisible(true)}return canFocus}});if(Ext.isIE){Element.prototype.getById=function(id,asDom){var dom=this.dom,cacheItem,el,ret;if(dom){el=(useDocForId&&DOC.getElementById(id))||dom.all[id];if(el){if(asDom){ret=el}else{cacheItem=EC[id];if(cacheItem&&cacheItem.el){ret=Ext.updateCacheEntry(cacheItem,el).el}else{ret=new Element(el)}}return ret}}return asDom?Ext.getDom(id):Element.get(id)}}Element.createAlias({addListener:"on",removeListener:"un",clearListeners:"removeAllListeners",focusable:"isFocusable"});Element.Fly=AbstractElement.Fly=new Ext.Class({extend:Element,isFly:true,constructor:function(dom){this.dom=dom;this.el=this},attach:AbstractElement.Fly.prototype.attach});internalFly=new Element.Fly();if(Ext.isIE){Ext.getElementById=function(id){var el=DOC.getElementById(id),detachedBodyEl;if(!el&&(detachedBodyEl=AbstractElement.detachedBodyEl)){el=detachedBodyEl.dom.all[id]}return el}}else{if(!DOC.querySelector){Ext.getDetachedBody=Ext.getBody;Ext.getElementById=function(id){return DOC.getElementById(id)}}}}));(Ext.cmd.derive("Ext.dom.CompositeElementLite",Ext.Base,{alternateClassName:"Ext.CompositeElementLite",statics:{importElementMethods:function(){var b,c=Ext.dom.Element.prototype,a=this.prototype;for(b in c){if(typeof c[b]=="function"){(function(d){a[d]=a[d]||function(){return this.invoke(d,arguments)}}).call(a,b)}}}},constructor:function(b,a){this.elements=[];this.add(b,a);this.el=new Ext.dom.AbstractElement.Fly()},isComposite:true,getElement:function(a){return this.el.attach(a)},transformElement:function(a){return Ext.getDom(a)},getCount:function(){return this.elements.length},add:function(c,a){var e=this.elements,b,d;if(!c){return this}if(typeof c=="string"){c=Ext.dom.Element.selectorFunction(c,a)}else{if(c.isComposite){c=c.elements}else{if(!Ext.isIterable(c)){c=[c]}}}for(b=0,d=c.length;b-1){c=Ext.getDom(c);if(a){g=this.elements[b];g.parentNode.insertBefore(c,g);Ext.removeNode(g)}Ext.Array.splice(this.elements,b,1,c)}return this},clear:function(d){var c=this,b=c.elements,a=b.length-1;if(d){for(;a>=0;a--){Ext.removeNode(b[a])}}this.elements=[]},addElements:function(d,b){if(!d){return this}if(typeof d=="string"){d=Ext.dom.Element.selectorFunction(d,b)}var c=this.elements,a=d.length,g;for(g=0;g";for(;v\^])\s?|\s|$)/,d=/^(#)?([\w\-]+|\*)(?:\((true|false)\))?/,c=[{re:/^\.([\w\-]+)(?:\((true|false)\))?/,method:q},{re:/^(?:\[((?:@|\?)?[\w\-\$]*[^\^\$\*~%!])\s?(?:(=|.=)\s?['"]?(.*?)["']?)?\])/,method:r},{re:/^#([\w\-]+)/,method:e},{re:/^\:([\w\-]+)(?:\(((?:\{[^\}]+\})|(?:(?!\{)[^\s>\/]*?(?!\})))\))?/,method:o},{re:/^(?:\{([^\}]+)\})/,method:n}];j.Query=Ext.extend(Object,{constructor:function(s){s=s||{};Ext.apply(this,s)},execute:function(t){var v=this.operations,w=0,x=v.length,u,s;if(!t){s=Ext.ComponentManager.all.getArray()}else{if(Ext.isIterable(t)){s=t}else{if(t.isMixedCollection){s=t.items}}}for(;w1){for(v=0,w=x.length;v0){s.push(t[0])}return s},last:function(u){var s=u.length,t=[];if(s>0){t.push(u[s-1])}return t},focusable:function(t){var s=t.length,v=[],u=0,w;for(;u1){w=v.length;for(u=0;u=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>=this.value},">":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)>this.value},"!=":function(a){return Ext.coerce(this.getRoot(a)[this.property],this.value)!=this.value}},constructor:function(a){var b=this;b.initialConfig=a;Ext.apply(b,a);b.filter=b.filter||b.filterFn;if(b.filter===undefined){b.setValue(a.value)}},setValue:function(b){var a=this;a.value=b;if(a.property===undefined||a.value===undefined){}else{a.filter=a.createFilterFn()}a.filterFn=a.filter},setFilterFn:function(a){this.filterFn=this.filter=a},createFilterFn:function(){var a=this,c=a.createValueMatcher(),b=a.property;if(a.operator){return a.operatorFns[a.operator]}else{return function(d){var e=a.getRoot(d)[b];return c===null?e===null:c.test(e)}}},getRoot:function(b){var a=this.root;return a===undefined?b:b[a]},createValueMatcher:function(){var d=this,e=d.value,g=d.anyMatch,c=d.exactMatch,a=d.caseSensitive,b=Ext.String.escapeRegex;if(e===null){return e}if(!e.exec){e=String(e);if(g===true){e=b(e)}else{e="^"+b(e);if(c===true){e+="$"}}e=new RegExp(e,a?"":"i")}return e},serialize:function(){var b=this,a=Ext.apply({},b.initialConfig);a.value=b.value;return a}},1,0,0,0,0,0,[Ext.util,"Filter"],function(){this.prototype.operatorFns["=="]=this.prototype.operatorFns["="]}));(Ext.cmd.derive("Ext.util.AbstractMixedCollection",Ext.Base,{isMixedCollection:true,generation:0,indexGeneration:0,constructor:function(b,a){var c=this;if(arguments.length===1&&Ext.isObject(b)){c.initialConfig=b;Ext.apply(c,b)}else{c.allowFunctions=b===true;if(a){c.getKey=a}c.initialConfig={allowFunctions:c.allowFunctions,getKey:c.getKey}}c.items=[];c.map={};c.keys=[];c.indexMap={};c.length=0;c.mixins.observable.constructor.call(c)},allowFunctions:false,add:function(c,d){var a=this.length,b;if(arguments.length===1){b=this.insert(a,c)}else{b=this.insert(a,c,d)}return b},getKey:function(a){return a.id},replace:function(c,e){var d=this,a,b;if(arguments.length==1){e=arguments[0];c=d.getKey(e)}a=d.map[c];if(typeof c=="undefined"||c===null||typeof a=="undefined"){return d.add(c,e)}d.generation++;b=d.indexOfKey(c);d.items[b]=e;d.map[c]=e;if(d.hasListeners.replace){d.fireEvent("replace",c,a,e)}return e},updateKey:function(g,h){var d=this,e=d.map,c=d.indexMap,a=d.indexOfKey(g),b;if(a>-1){b=e[g];delete e[g];delete c[g];e[h]=b;c[h]=a;d.keys[a]=h;d.generation++}},addAll:function(c){var b=this,a;if(arguments.length>1||Ext.isArray(c)){b.insert(b.length,arguments.length>1?arguments:c)}else{for(a in c){if(c.hasOwnProperty(a)){if(b.allowFunctions||typeof c[a]!="function"){b.add(a,c[a])}}}}},each:function(e,d){var b=Ext.Array.push([],this.items),c=0,a=b.length,g;for(;c2){a=this.doInsert(b,[c],[d])}else{a=this.doInsert(b,[c])}a=a[0]}return a},doInsert:function(j,o,n){var l=this,b,c,g,k=o.length,a=k,e=l.hasListeners.add,d,h={},m,q,p;if(n!=null){l.useLinearSearch=true}else{n=o;o=new Array(k);for(g=0;g=0;--b){c.remove(a[b])}}else{while(c.length){c.removeAt(0)}}}else{c.length=c.items.length=c.keys.length=0;c.map={};c.indexMap={};c.generation++;c.indexGeneration=c.generation}},removeAt:function(a){var c=this,d,b;if(a=0){c.length--;d=c.items[a];Ext.Array.erase(c.items,a,1);b=c.keys[a];if(typeof b!="undefined"){delete c.map[b]}Ext.Array.erase(c.keys,a,1);if(c.hasListeners.remove){c.fireEvent("remove",d,b)}c.generation++;return d}return false},removeRange:function(h,a){var j=this,b,k,g,e,c,d;if(h=0){if(!a){a=1}e=Math.min(h+a,j.length);a=e-h;d=e===j.length;c=d&&j.indexGeneration===j.generation;for(g=h;g=0;a--){if(c[a]==null){d.removeAt(a)}}}else{return d.removeAt(d.indexOfKey(b))}},getCount:function(){return this.length},indexOf:function(c){var b=this,a;if(c!=null){if(!b.useLinearSearch&&(a=b.getKey(c))){return this.indexOfKey(a)}return Ext.Array.indexOf(b.items,c)}return -1},indexOfKey:function(a){if(!this.map.hasOwnProperty(a)){return -1}if(this.indexGeneration!==this.generation){this.rebuildIndexMap()}return this.indexMap[a]},rebuildIndexMap:function(){var e=this,d=e.indexMap={},c=e.keys,a=c.length,b;for(b=0;bb){e=true;g=j;j=b;b=g}if(j<0){j=0}if(b==null||b>=a){b=a-1}c=d.slice(j,b+1);if(e&&c.length){c.reverse()}return c},filter:function(d,c,e,a){var b=[];if(Ext.isString(d)){b.push(new Ext.util.Filter({property:d,value:c,anyMatch:e,caseSensitive:a}))}else{if(Ext.isArray(d)||d instanceof Ext.util.Filter){b=b.concat(d)}}return this.filterBy(Ext.util.Filter.createFilterFn(b))},filterBy:function(e,d){var j=this,a=new j.self(j.initialConfig),h=j.keys,b=j.items,g=b.length,c;a.getKey=j.getKey;for(c=0;ce?1:(g>1;h=d(e,b[c]);if(h>=0){j=c+1}else{if(h<0){a=c-1}}}return j},reorder:function(d){var h=this,b=h.items,c=0,g=b.length,a=[],e=[],j;h.suspendEvents();for(j in d){a[d[j]]=b[j]}for(c=0;ce?1:(g=d.duration),e,h;e=this.collectTargetData(d,a,g,b);if(g){d.target.setAttr(e.anims[d.id].attributes,true);c.collectTargetData(d,d.duration,g,b);d.paused=true;e=d.target.target;if(d.target.isComposite){e=d.target.target.last()}h={};h[Ext.supports.CSS3TransitionEnd]=d.lastFrame;h.scope=d;h.single=true;e.on(h)}},collectTargetData:function(c,a,e,g){var b=c.target.getId(),d=this.targetArr[b];if(!d){d=this.targetArr[b]={id:b,el:c.target,anims:{}}}d.anims[c.id]={id:c.id,anim:c,elapsed:a,isLastFrame:g,attributes:[{duration:c.duration,easing:(e&&c.reverse)?c.easingFn.reverse().toCSS3():c.easing,attrs:c.runAnim(a)}]};return d},applyPendingAttrs:function(){var e=this.targetArr,g,c,b,d,a;for(c in e){if(e.hasOwnProperty(c)){g=e[c];for(a in g.anims){if(g.anims.hasOwnProperty(a)){b=g.anims[a];d=b.anim;if(b.attributes&&d.isRunning()){g.el.setAttr(b.attributes,false,b.isLastFrame);if(b.isLastFrame){d.lastFrame()}}}}}}}},1,0,0,0,0,[["queue",Ext.fx.Queue]],[Ext.fx,"Manager"],0));(Ext.cmd.derive("Ext.fx.Animator",Ext.Base,{isAnimator:true,duration:250,delay:0,delayStart:0,dynamic:false,easing:"ease",running:false,paused:false,damper:1,iterations:1,currentIteration:0,keyframeStep:0,animKeyFramesRE:/^(from|to|\d+%?)$/,constructor:function(a){var b=this;a=Ext.apply(b,a||{});b.config=a;b.id=Ext.id(null,"ext-animator-");b.addEvents("beforeanimate","keyframe","afteranimate");b.mixins.observable.constructor.call(b,a);b.timeline=[];b.createTimeline(b.keyframes);if(b.target){b.applyAnimator(b.target);Ext.fx.Manager.addAnim(b)}},sorter:function(d,c){return d.pct-c.pct},createTimeline:function(d){var h=this,l=[],j=h.to||{},b=h.duration,m,a,c,g,k,e;for(k in d){if(d.hasOwnProperty(k)&&h.animKeyFramesRE.test(k)){e={attrs:Ext.apply(d[k],j)};if(k=="from"){k=0}else{if(k=="to"){k=100}}e.pct=parseInt(k,10);l.push(e)}}Ext.Array.sort(l,h.sorter);g=l.length;for(c=0;c0},isRunning:function(){return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Animator"],0));(Ext.cmd.derive("Ext.fx.CubicBezier",Ext.Base,{singleton:true,cubicBezierAtTime:function(p,d,b,o,n,j){var k=3*d,m=3*(o-d)-k,a=1-k-m,h=3*b,l=3*(n-b)-h,q=1-h-l;function g(r){return((a*r+m)*r+k)*r}function c(r,u){var s=e(r,u);return((q*s+l)*s+h)*s}function e(r,z){var y,w,u,s,v,t;for(u=r,t=0;t<8;t++){s=g(u)-r;if(Math.abs(s)w){return w}while(ys){y=u}else{w=u}u=(w-y)/2+y}return u}return c(p,1/(200*j))},cubicBezier:function(b,e,a,c){var d=function(g){return Ext.fx.CubicBezier.cubicBezierAtTime(g,b,e,a,c,1)};d.toCSS3=function(){return"cubic-bezier("+[b,e,a,c].join(",")+")"};d.reverse=function(){return Ext.fx.CubicBezier.cubicBezier(1-a,1-c,1-b,1-e)};return d}},0,0,0,0,0,0,[Ext.fx,"CubicBezier"],0));Ext.require("Ext.fx.CubicBezier",function(){var e=Math,h=e.PI,d=e.pow,b=e.sin,g=e.sqrt,a=e.abs,c=1.70158;Ext.define("Ext.fx.Easing",{singleton:true,linear:Ext.identityFn,ease:function(m){var j=0.07813-m/2,o=-0.25,p=g(0.0066+j*j),s=p-j,l=d(a(s),1/3)*(s<0?-1:1),r=-p-j,k=d(a(r),1/3)*(r<0?-1:1),u=l+k+0.25;return d(1-u,2)*3*u*0.1+(1-u)*3*u*u+u*u*u},easeIn:function(j){return d(j,1.7)},easeOut:function(j){return d(j,0.48)},easeInOut:function(s){var m=0.48-s/1.04,l=g(0.1734+m*m),j=l-m,r=d(a(j),1/3)*(j<0?-1:1),p=-l-m,o=d(a(p),1/3)*(p<0?-1:1),k=r+o+0.5;return(1-k)*3*k*k+k*k*k},backIn:function(j){return j*j*((c+1)*j-c)},backOut:function(j){j=j-1;return j*j*((c+1)*j+c)+1},elasticIn:function(l){if(l===0||l===1){return l}var k=0.3,j=k/4;return d(2,-10*l)*b((l-j)*(2*h)/k)+1},elasticOut:function(j){return 1-Ext.fx.Easing.elasticIn(1-j)},bounceIn:function(j){return 1-Ext.fx.Easing.bounceOut(1-j)},bounceOut:function(o){var k=7.5625,m=2.75,j;if(o<(1/m)){j=k*o*o}else{if(o<(2/m)){o-=(1.5/m);j=k*o*o+0.75}else{if(o<(2.5/m)){o-=(2.25/m);j=k*o*o+0.9375}else{o-=(2.625/m);j=k*o*o+0.984375}}}return j}},function(){var k=Ext.fx.Easing.self,j=k.prototype;k.implement({"back-in":j.backIn,"back-out":j.backOut,"ease-in":j.easeIn,"ease-out":j.easeOut,"elastic-in":j.elasticIn,"elastic-out":j.elasticOut,"bounce-in":j.bounceIn,"bounce-out":j.bounceOut,"ease-in-out":j.easeInOut})})});(Ext.cmd.derive("Ext.draw.Color",Ext.Base,{colorToHexRe:/(.*?)rgb\((\d+),\s*(\d+),\s*(\d+)\)/,rgbRe:/\s*rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)\s*/,hexRe:/\s*#([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)([0-9a-fA-F][0-9a-fA-F]?)\s*/,lightnessFactor:0.2,constructor:function(d,c,a){var b=this,e=Ext.Number.constrain;b.r=e(d,0,255);b.g=e(c,0,255);b.b=e(a,0,255)},getRed:function(){return this.r},getGreen:function(){return this.g},getBlue:function(){return this.b},getRGB:function(){var a=this;return[a.r,a.g,a.b]},getHSL:function(){var k=this,a=k.r/255,j=k.g/255,m=k.b/255,n=Math.max(a,j,m),d=Math.min(a,j,m),o=n-d,e,p=0,c=0.5*(n+d);if(d!=n){p=(c<0.5)?o/(n+d):o/(2-n-d);if(a==n){e=60*(j-m)/o}else{if(j==n){e=120+60*(m-a)/o}else{e=240+60*(a-j)/o}}if(e<0){e+=360}if(e>=360){e-=360}}return[e,p,c]},getLighter:function(b){var a=this.getHSL();b=b||this.lightnessFactor;a[2]=Ext.Number.constrain(a[2]+b,0,1);return this.fromHSL(a[0],a[1],a[2])},getDarker:function(a){a=a||this.lightnessFactor;return this.getLighter(-a)},toString:function(){var h=this,c=Math.round,e=c(h.r).toString(16),d=c(h.g).toString(16),a=c(h.b).toString(16);e=(e.length==1)?"0"+e:e;d=(d.length==1)?"0"+d:d;a=(a.length==1)?"0"+a:a;return["#",e,d,a].join("")},toHex:function(b){if(Ext.isArray(b)){b=b[0]}if(!Ext.isString(b)){return""}if(b.substr(0,1)==="#"){return b}var e=this.colorToHexRe.exec(b),g,d,a,c;if(Ext.isArray(e)){g=parseInt(e[2],10);d=parseInt(e[3],10);a=parseInt(e[4],10);c=a|(d<<8)|(g<<16);return e[1]+"#"+("000000"+c.toString(16)).slice(-6)}else{return b}},fromString:function(j){var c,e,d,a,h=parseInt;if((j.length==4||j.length==7)&&j.substr(0,1)==="#"){c=j.match(this.hexRe);if(c){e=h(c[1],16)>>0;d=h(c[2],16)>>0;a=h(c[3],16)>>0;if(j.length==4){e+=(e*16);d+=(d*16);a+=(a*16)}}}else{c=j.match(this.rgbRe);if(c){e=c[1];d=c[2];a=c[3]}}return(typeof e=="undefined")?undefined:new Ext.draw.Color(e,d,a)},getGrayscale:function(){return this.r*0.3+this.g*0.59+this.b*0.11},fromHSL:function(g,o,d){var a,b,c,e,k=[],n=Math.abs,j=Math.floor;if(o==0||g==null){k=[d,d,d]}else{g/=60;a=o*(1-n(2*d-1));b=a*(1-n(g-2*j(g/2)-1));c=d-a/2;switch(j(g)){case 0:k=[a,b,0];break;case 1:k=[b,a,0];break;case 2:k=[0,a,b];break;case 3:k=[0,b,a];break;case 4:k=[b,0,a];break;case 5:k=[a,0,b];break}k=[k[0]+c,k[1]+c,k[2]+c]}return new Ext.draw.Color(k[0]*255,k[1]*255,k[2]*255)}},3,0,0,0,0,0,[Ext.draw,"Color"],function(){var a=this.prototype;this.addStatics({fromHSL:function(){return a.fromHSL.apply(a,arguments)},fromString:function(){return a.fromString.apply(a,arguments)},toHex:function(){return a.toHex.apply(a,arguments)}})}));(Ext.cmd.derive("Ext.draw.Draw",Ext.Base,{singleton:true,pathToStringRE:/,?([achlmqrstvxz]),?/gi,pathCommandRE:/([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig,pathValuesRE:/(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig,stopsRE:/^(\d+%?)$/,radian:Math.PI/180,availableAnimAttrs:{along:"along",blur:null,"clip-rect":"csv",cx:null,cy:null,fill:"color","fill-opacity":null,"font-size":null,height:null,opacity:null,path:"path",r:null,rotation:"csv",rx:null,ry:null,scale:"csv",stroke:"color","stroke-opacity":null,"stroke-width":null,translation:"csv",width:null,x:null,y:null},is:function(b,a){a=String(a).toLowerCase();return(a=="object"&&b===Object(b))||(a=="undefined"&&typeof b==a)||(a=="null"&&b===null)||(a=="array"&&Array.isArray&&Array.isArray(b))||(Object.prototype.toString.call(b).toLowerCase().slice(8,-1))==a},ellipsePath:function(b){var a=b.attr;return Ext.String.format("M{0},{1}A{2},{3},0,1,1,{0},{4}A{2},{3},0,1,1,{0},{1}z",a.x,a.y-a.ry,a.rx,a.ry,a.y+a.ry)},rectPath:function(b){var a=b.attr;if(a.radius){return Ext.String.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z",a.x+a.radius,a.y,a.width-a.radius*2,a.radius,-a.radius,a.height-a.radius*2,a.radius*2-a.width,a.radius*2-a.height)}else{return Ext.String.format("M{0},{1}L{2},{1},{2},{3},{0},{3}z",a.x,a.y,a.width+a.x,a.height+a.y)}},path2string:function(){return this.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},pathToString:function(a){return a.join(",").replace(Ext.draw.Draw.pathToStringRE,"$1")},parsePathString:function(a){if(!a){return null}var d={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},c=[],b=this;if(b.is(a,"array")&&b.is(a[0],"array")){c=b.pathClone(a)}if(!c.length){String(a).replace(b.pathCommandRE,function(g,e,k){var j=[],h=e.toLowerCase();k.replace(b.pathValuesRE,function(m,l){l&&j.push(+l)});if(h=="m"&&j.length>2){c.push([e].concat(Ext.Array.splice(j,0,2)));h="l";e=(e=="m")?"l":"L"}while(j.length>=d[h]){c.push([e].concat(Ext.Array.splice(j,0,d[h])));if(!d[h]){break}}})}c.toString=b.path2string;return c},mapPath:function(l,g){if(!g){return l}var h,e,c,k,a,d,b;l=this.path2curve(l);for(c=0,k=l.length;c7){h[b].shift();e=h[b];while(e.length){Ext.Array.splice(h,b++,0,["C"].concat(Ext.Array.splice(e,0,6)))}Ext.Array.erase(h,b,1);c=h.length;b--}a=h[b];g=a.length;j.x=a[g-2];j.y=a[g-1];j.bx=parseFloat(a[g-4])||j.x;j.by=parseFloat(a[g-3])||j.y}return h},interpolatePaths:function(r,l){var j=this,d=j.pathToAbsolute(r),m=j.pathToAbsolute(l),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(p,s){if(p[s].length>7){p[s].shift();var t=p[s];while(t.length){Ext.Array.splice(p,s++,0,["C"].concat(Ext.Array.splice(t,0,6)))}Ext.Array.erase(p,s,1);o=Math.max(d.length,m.length||0)}},c=function(v,u,s,p,t){if(v&&u&&v[t][0]=="M"&&u[t][0]!="M"){Ext.Array.splice(u,t,0,["M",p.x,p.y]);s.bx=0;s.by=0;s.x=v[t][1];s.y=v[t][2];o=Math.max(d.length,m.length||0)}},h,o,g,q,e,k;for(h=0,o=Math.max(d.length,m.length||0);h1){aa=V(aa);H=aa*H;F=aa*F}c=H*H;R=F*F;U=(n==g?-1:1)*V(u((c*R-c*N*N-R*O*O)/(c*N*N+R*O*O)));C=U*H*N/F+(s+r)/2;B=U*-F*O/H+(af+ae)/2;m=o(((af-B)/F).toFixed(7));l=o(((ae-B)/F).toFixed(7));m=sl){m=m-d*2}if(!g&&l>m){l=l-d*2}}else{m=A[0];l=A[1];C=A[2];B=A[3]}q=l-m;if(u(q)>E){D=l;G=r;p=ae;l=m+E*(g&&l>m?1:-1);r=C+H*T(l);ae=B+F*a(l);M=v.arc2curve(r,ae,H,F,z,0,g,G,p,[l,D,C,B])}q=l-m;j=T(m);ad=a(m);e=T(l);ac=a(l);P=J.tan(q/4);S=4/3*H*P;Q=4/3*F*P;ab=[s,af];Z=[s+S*ad,af-Q*j];Y=[r+S*ac,ae-Q*e];W=[r,ae];Z[0]=2*ab[0]-Z[0];Z[1]=2*ab[1]-Z[1];if(A){return[Z,Y,W].concat(M)}else{M=[Z,Y,W].concat(M).join().split(",");L=[];K=M.length;for(X=0;X(a[1]-c[1])*(b[0]-c[0])},intersectIntersection:function(o,n,g,d){var c=[],b=g[0]-d[0],a=g[1]-d[1],l=o[0]-n[0],j=o[1]-n[1],m=g[0]*d[1]-g[1]*d[0],k=o[0]*n[1]-o[1]*n[0],h=1/(b*j-a*l);c[0]=(m*l-k*b)*h;c[1]=(m*j-k*a)*h;return c},intersect:function(o,c){var n=this,k=0,m=c.length,h=c[m-1],p=o,g,q,l,a,b,d;for(;k0){v.push(g)}}else{j=t-3*q+3*n-m;p=2*(t-q-q+n);h=t-q;u=p*p-4*j*h;e=j+j;if(u===0){g=p/e;if(g<1&&g>0){v.push(g)}}else{if(u>0){w=Math.sqrt(u);g=(w+p)/e;if(g<1&&g>0){v.push(g)}g=(p-w)/e;if(g<1&&g>0){v.push(g)}}}}k=Math.min(t,m);o=Math.max(t,m);for(l=0;l=d&&k>=v)||(k<=d&&k<=v)){h=m=s}else{h=g((l-e)/n(k-d));if(ds){c-=q}h+=c;m+=c;p=l-u*a(h);o=k+u*b(h);y=l+t*a(m);x=k+t*b(m);if((k>d&&od)){p+=n(d-o)*(p-l)/(o-k);o=d}if((k>v&&xv)){y-=n(v-x)*(y-l)/(x-k);x=v}return{x1:p,y1:o,x2:y,y2:x}},smooth:function(a,p){var o=this.path2curve(a),c=[o[0]],g=o[0][1],e=o[0][2],q,s,t=1,h=o.length,d=1,l=g,k=e,w,v,u,m,r,n,b;for(;t0){q=Math.floor((o-(n/10))/n)*n}if(u){for(p=0;p=0){d=0;while(d>o){d-=e;a++}o=+d.toFixed(10);d=0;while(d=15){k=1;if(++e>11){j++}}else{k=15}break;case 1/3:if(k>=20){k=1;if(++e>11){j++}}else{if(k>=10){k=20}else{k=10}}break;case 1/4:if(k>=22){k=1;if(++e>11){j++}}else{if(k>=15){k=22}else{if(k>=8){k=15}else{k=8}}}break}q.setYear(j);q.setMonth(e);q.setDate(k);l.push(new Date(q))}else{q=Ext.Date.add(q,h,g);l++}}if(p){q=n}if(d){return{from:+c,to:+q,steps:l}}else{return{from:+c,to:+q,step:(q-c)/l,steps:l}}},sorter:function(d,c){return d.offset-c.offset},rad:function(a){return a%360*Math.PI/180},degrees:function(a){return a*180/Math.PI%360},withinBox:function(a,c,b){b=b||{};return(a>=b.x&&a<=(b.x+b.width)&&c>=b.y&&c<=(b.y+b.height))},parseGradient:function(l){var e=this,g=l.type||"linear",c=l.angle||0,j=e.radian,m=l.stops,a=[],k,b,h,d;if(g=="linear"){b=[0,0,Math.cos(c*j),Math.sin(c*j)];h=1/(Math.max(Math.abs(b[2]),Math.abs(b[3]))||1);b[2]*=h;b[3]*=h;if(b[2]<0){b[0]=-b[2];b[2]=0}if(b[3]<0){b[1]=-b[3];b[3]=0}}for(k in m){if(m.hasOwnProperty(k)&&e.stopsRE.test(k)){d={offset:parseInt(k,10),color:Ext.draw.Color.toHex(m[k].color)||"#ffffff",opacity:m[k].opacity||1};a.push(d)}}Ext.Array.sort(a,e.sorter);if(g=="linear"){return{id:l.id,type:g,vector:b,stops:a}}else{return{id:l.id,type:g,centerX:l.centerX,centerY:l.centerY,focalX:l.focalX,focalY:l.focalY,radius:l.radius,vector:b,stops:a}}}},0,0,0,0,0,0,[Ext.draw,"Draw"],0));(Ext.cmd.derive("Ext.fx.PropertyHandler",Ext.Base,{statics:{defaultHandler:{pixelDefaultsRE:/width|height|top$|bottom$|left$|right$/i,unitRE:/^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/,scrollRE:/^scroll/i,computeDelta:function(k,c,a,g,j){a=(typeof a=="number")?a:1;var h=this.unitRE,d=h.exec(k),b,e;if(d){k=d[1];e=d[2];if(!this.scrollRE.test(j)&&!e&&this.pixelDefaultsRE.test(j)){e="px"}}k=+k||0;d=h.exec(c);if(d){c=d[1];e=d[2]||e}c=+c||0;b=(g!=null)?g:k;return{from:k,delta:(c-b)*a,units:e}},get:function(o,b,a,n,k){var m=o.length,d=[],e,h,l,c,g;for(e=0;e=d){m=d;a=true}if(j.reverse){m=d-m}for(e in l){if(l.hasOwnProperty(e)){k=l[e];h=a?1:c(m/d);g[e]=b[e].set(k,h)}}j.frameCount++;return g},lastFrame:function(){var c=this,a=c.iterations,b=c.currentIteration;b++;if(b0},isRunning:function(){return this.paused===false&&this.running===true&&this.isAnimator!==true}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.fx,"Anim"],0));Ext.enableFx=true;(Ext.cmd.derive("Ext.util.Animate",Ext.Base,{isAnimate:true,animate:function(a){var b=this;if(Ext.fx.Manager.hasFxBlock(b.id)){return b}Ext.fx.Manager.queueFx(new Ext.fx.Anim(b.anim(a)));return this},anim:function(a){if(!Ext.isObject(a)){return(a)?{}:false}var b=this;if(a.stopAnimation){b.stopAnimation()}Ext.applyIf(a,Ext.fx.Manager.getFxDefaults(b.id));return Ext.apply({target:b,paused:true},a)},stopFx:Ext.Function.alias(Ext.util.Animate,"stopAnimation"),stopAnimation:function(){Ext.fx.Manager.stopAnimation(this.id);return this},syncFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:true});return this},sequenceFx:function(){Ext.fx.Manager.setFxDefaults(this.id,{concurrent:false});return this},hasActiveFx:Ext.Function.alias(Ext.util.Animate,"getActiveAnimation"),getActiveAnimation:function(){return Ext.fx.Manager.getActiveAnimation(this.id)}},0,0,0,0,0,0,[Ext.util,"Animate"],function(){Ext.applyIf(Ext.Element.prototype,this.prototype);Ext.CompositeElementLite.importElementMethods()}));(Ext.cmd.derive("Ext.util.ElementContainer",Ext.Base,{childEls:[],constructor:function(){var b=this,a;if(b.hasOwnProperty("childEls")){a=b.childEls;delete b.childEls;b.addChildEls.apply(b,a)}},destroy:function(){var e=this,d=e.getChildEls(),g,a,c,b;for(c=d.length;c--;){a=d[c];if(typeof a!="string"){a=a.name}g=e[a];if(g){e[a]=null;g.remove()}}},addChildEls:function(){var b=this,a=arguments;if(b.hasOwnProperty("childEls")){b.childEls.push.apply(b.childEls,a)}else{b.childEls=b.getChildEls().concat(Array.prototype.slice.call(a))}b.prune(b.childEls,false)},applyChildEls:function(b,a){var e=this,g=e.getChildEls(),j,k,d,c,h;j=(a||e.id)+"-";for(d=g.length;d--;){k=g[d];if(typeof k=="string"){h=b.getById(j+k)}else{if((c=k.select)){h=Ext.select(c,true,b.dom)}else{if((c=k.selectNode)){h=Ext.get(Ext.DomQuery.selectNode(c,b.dom))}else{h=b.getById(k.id||(j+k.itemId))}}k=k.name}e[k]=h}},getChildEls:function(){var b=this,a;if(b.hasOwnProperty("childEls")){return b.childEls}a=b.self;return a.$childEls||b.getClassChildEls(a)},getClassChildEls:function(o){var k=this,p=o.$childEls,m,d,b,j,n,h,a,c,e,g,l;if(!p){g=o.superclass;if(g){g=g.self;c=[g.$childEls||k.getClassChildEls(g)];l=g.prototype.mixins||{}}else{c=[];l={}}e=o.prototype;h=e.mixins;for(a in h){if(h.hasOwnProperty(a)&&!l.hasOwnProperty(a)){n=h[a].self;c.push(n.$childEls||k.getClassChildEls(n))}}c.push(e.hasOwnProperty("childEls")&&e.childEls);for(d=0,b=c.length;d','
    {parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation">
    ','
    ','
    ',"",'
    {parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}","
    ",'
    ','
    ','','
    {parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">','
    {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation">
    ','
    ','
    ',"
    ","{%this.renderDockedItems(out,values,1);%}"],frameTableTpl:["{%this.renderDockedItems(out,values,0);%}",'','',"",'','','',"","","",'','",'',"",'',"",'','','',"","","
    {parent.baseCls}-{parent.ui}-{.}-tl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-tr{frameElCls}" role="presentation">
    {parent.baseCls}-{parent.ui}-{.}-ml{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-mc{frameElCls}" role="presentation">',"{%this.applyRenderTpl(out, values)%}"," {parent.baseCls}-{parent.ui}-{.}-mr{frameElCls}" role="presentation">
    {parent.baseCls}-{parent.ui}-{.}-bl{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-bc{frameElCls}" role="presentation"> {parent.baseCls}-{parent.ui}-{.}-br{frameElCls}" role="presentation">
    ","{%this.renderDockedItems(out,values,1);%}"],afterRender:function(){var d=this,e={},j=d.protoEl,h=d.el,c,g,a,b;d.finishRenderChildren();if(d.contentEl){g=Ext.baseCSSPrefix;a=g+"hide-";b=Ext.get(d.contentEl);b.removeCls([g+"hidden",a+"display",a+"offsets",a+"nosize"]);d.getContentTarget().appendChild(b.dom)}j.writeTo(e);c=e.removed;if(c){h.removeCls(c)}c=e.cls;if(c.length){h.addCls(c)}c=e.style;if(e.style){h.setStyle(c)}d.protoEl=null;if(!d.ownerCt){d.updateLayout()}},afterFirstLayout:function(b,j){var d=this,h=d.x,e=d.y,c,a,g,k;if(!d.ownerLayout){c=Ext.isDefined(h);a=Ext.isDefined(e)}if(d.floating&&(!c||!a)){if(d.floatParent){g=d.floatParent.getTargetEl().getViewRegion();k=d.el.getAlignToXY(d.floatParent.getTargetEl(),"c-c");g.x=k[0]-g.x;g.y=k[1]-g.y}else{k=d.el.getAlignToXY(d.container,"c-c");g=d.container.translateXY(k[0],k[1])}h=c?h:g.x;e=a?e:g.y;c=a=true}if(c||a){d.setPosition(h,e)}d.onBoxReady(b,j)},applyRenderSelectors:function(){var d=this,b=d.renderSelectors,c=d.el,e=c.dom,a;d.applyChildEls(c);if(b){for(a in b){if(b.hasOwnProperty(a)&&b[a]){d[a]=Ext.get(Ext.DomQuery.selectNode(b[a],e))}}}},beforeRender:function(){var c=this,e=c.getTargetEl(),d=c.getOverflowEl(),b=c.getComponentLayout(),a=c.getOverflowStyle();c.frame=c.frame||c.alwaysFramed;if(!b.initialized){b.initLayout()}if(d){d.setStyle(a);c.overflowStyleSet=true}c.setUI(c.ui);if(c.disabled){c.disable(true)}},doApplyRenderTpl:function(c,a){var d=a.$comp,b;if(!d.rendered){b=d.initRenderTpl();b.applyOut(a.renderData,c)}},doAutoRender:function(){var a=this;if(!a.rendered){if(a.floating){a.render(document.body)}else{a.render(Ext.isBoolean(a.autoRender)?Ext.getBody():a.autoRender)}}},doRenderContent:function(a,c){var b=c.$comp;if(b.html){Ext.DomHelper.generateMarkup(b.html,a);delete b.html}if(b.tpl){if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}if(b.data){b.tpl.applyOut(b.data,a);delete b.data}}},doRenderFramingDockedItems:function(a,c,d){var b=c.$comp;if(!b.rendered&&b.doRenderDockedItems){c.renderData.$skipDockedItems=true;b.doRenderDockedItems.call(this,a,c,d)}},finishRender:function(a){var d=this,b,e,c;if(!d.el||d.$pid){if(d.container){c=d.container.getById(d.id,true)}else{c=Ext.getDom(d.id)}if(!d.el){d.wrapPrimaryEl(c)}else{delete d.$pid;if(!d.el.dom){d.wrapPrimaryEl(d.el)}c.parentNode.insertBefore(d.el.dom,c);Ext.removeNode(c)}}else{if(!d.rendering){b=d.initRenderTpl();if(b){e=d.initRenderData();b.insertFirst(d.getTargetEl(),e)}}}if(!d.container){d.container=Ext.get(d.el.dom.parentNode)}if(d.ctCls){d.container.addCls(d.ctCls)}d.onRender(d.container,a);if(!d.overflowStyleSet){d.getOverflowEl().setStyle(d.getOverflowStyle())}d.el.setVisibilityMode(Ext.Element[d.hideMode.toUpperCase()]);if(d.overCls){d.el.hover(d.addOverCls,d.removeOverCls,d)}if(d.hasListeners.render){d.fireEvent("render",d)}d.afterRender();if(d.hasListeners.afterrender){d.fireEvent("afterrender",d)}d.initEvents();if(d.hidden){d.el.hide()}},finishRenderChildren:function(){var a=this.getComponentLayout();a.finishRender()},getElConfig:function(){var j=this,l=j.autoEl,g=j.getFrameInfo(),b={tag:"div",tpl:g?j.initFramingTpl(g.table):j.initRenderTpl()},a=j.protoEl,c,e,h,m,d,k;j.initStyles(a);a.writeTo(b);a.flush();if(Ext.isString(l)){b.tag=l}else{Ext.apply(b,l)}b.id=j.id;if(b.tpl){if(g){e=j.frameElNames;h=e.length;b.tplData=k=j.getFrameRenderData();k.renderData=j.initRenderData();d=k.fgid;for(c=0;c table")[1].remove()}else{if(g){g.remove()}if(d){d.remove()}if(c){c.remove()}}}}else{if(e.frame){e.applyRenderSelectors()}}},getFrameInfo:function(){if(Ext.supports.CSS3BorderRadius||!this.frame){return false}var x=this,p=x.frameInfoCache,e=x.getFramingInfoCls()+"-frameInfo",y=p[e],q=Math.max,o,l,t,n,z,g,k,b,c,m,h,s,u,j,a,d,w,r,v;if(y==null){o=Ext.fly(x.getStyleProxy(e),"frame-style-el");t=o.getStyle("font-family");if(t){t=t.split("-");d=parseInt(t[1],10);w=parseInt(t[2],10);r=parseInt(t[3],10);v=parseInt(t[4],10);b=parseInt(t[5],10);c=parseInt(t[6],10);m=parseInt(t[7],10);h=parseInt(t[8],10);s=parseInt(t[9],10);u=parseInt(t[10],10);j=parseInt(t[11],10);a=parseInt(t[12],10);n=q(b,q(d,w));z=q(c,q(w,r));g=q(m,q(v,r));k=q(h,q(d,v));y={table:t[0].charAt(0)==="t",vertical:t[0].charAt(1)==="v",top:n,right:z,bottom:g,left:k,width:k+z,height:n+g,maxWidth:q(n,z,g,k),border:{top:b,right:c,bottom:m,left:h,width:h+c,height:b+m},padding:{top:s,right:u,bottom:j,left:a,width:a+u,height:s+j},radius:{tl:d,tr:w,br:r,bl:v}}}else{y=false}p[e]=y}x.frame=!!y;x.frameSize=y;return y},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui},getStyleProxy:function(b){var a=this.styleProxyEl||(Ext.AbstractComponent.prototype.styleProxyEl=Ext.getBody().createChild({style:{position:"absolute",top:"-10000px"}},null,true));a.className=b;return a},getFrameTpl:function(a){return this.getTpl(a?"frameTableTpl":"frameTpl")},frameInfoCache:{}},0,0,0,0,0,0,[Ext.util,"Renderable"],0));(Ext.cmd.derive("Ext.state.Provider",Ext.Base,{prefix:"ext-",constructor:function(a){a=a||{};var b=this;Ext.apply(b,a);b.addEvents("statechange");b.state={};b.mixins.observable.constructor.call(b)},get:function(b,a){return typeof this.state[b]=="undefined"?a:this.state[b]},clear:function(a){var b=this;delete b.state[a];b.fireEvent("statechange",b,a,null)},set:function(a,c){var b=this;b.state[a]=c;b.fireEvent("statechange",b,a,c)},decodeValue:function(g){var c=this,l=/^(a|n|d|b|s|o|e)\:(.*)$/,b=l.exec(unescape(g)),h,d,a,k,e,j;if(!b||!b[1]){return}d=b[1];g=b[2];switch(d){case"e":return null;case"n":return parseFloat(g);case"d":return new Date(Date.parse(g));case"b":return(g=="1");case"a":h=[];if(g!=""){k=g.split("^");e=k.length;for(j=0;je){r=l;o=true}if(g&&a>q){n=a;o=true}if(m||g){k=u.el.getStyle("overtflow");if(k!=="hidden"){u.el.setStyle("overflow","hidden")}}if(o){b=!Ext.isNumber(u.width);t=!Ext.isNumber(u.height);u.setSize(n,r);u.el.setSize(q,e);if(b){delete u.width}if(t){delete u.height}}if(g){d.width=a}if(m){d.height=l}}j=u.constrain;p=u.constrainHeader;if(j||p){u.constrain=u.constrainHeader=false;s=c.callback;c.callback=function(){u.constrain=j;u.constrainHeader=p;if(s){s.call(c.scope||u,arguments)}if(k!=="hidden"){u.el.setStyle("overflow",k)}}}return u.mixins.animate.animate.apply(u,arguments)},setHiddenState:function(a){var b=this.getHierarchyState();this.hidden=a;if(a){b.hidden=true}else{delete b.hidden}},onHide:function(){if(this.ownerLayout){this.updateLayout({isRoot:false})}},onShow:function(){this.updateLayout({isRoot:false})},constructPlugin:function(b){var a=this;if(typeof b=="string"){b=Ext.PluginManager.create({},b,a)}else{b=Ext.PluginManager.create(b,null,a)}return b},constructPlugins:function(){var e=this,c=e.plugins,b,d,a;if(c){b=[];if(!Ext.isArray(c)){c=[c]}for(d=0,a=c.length;d=0;a--){if((g=d.getAt(a)).is(b)){return g}}}else{if(a){return d.getAt(--a)}}}}return null},previousNode:function(b,d){var j=this,h=j.ownerCt,a,g,e,c;if(d&&j.is(b)){return j}if(h){for(g=h.items.items,e=Ext.Array.indexOf(g,j)-1;e>-1;e--){c=g[e];if(c.query){a=c.query(b);a=a[a.length-1];if(a){return a}}if(c.is(b)){return c}}return h.previousNode(b,true)}return null},nextNode:function(d,j){var b=this,c=b.ownerCt,k,e,h,g,a;if(j&&b.is(d)){return b}if(c){for(e=c.items.items,g=Ext.Array.indexOf(e,b)+1,h=e.length;g=8){a=new XDomainRequest()}else{Ext.Error.raise({msg:"Your browser does not support CORS"})}return a},getXhrInstance:(function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP.3.0")},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],c=0,a=b.length,g;for(;c=200&&a<300)||a==304,b=false;if(!c){switch(a){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:b=true;break}}return{success:c,isException:b}},createResponse:function(e){var j=this,l=e.xhr,c=j.isXdr,b={},m=c?[]:l.getAllResponseHeaders().replace(/\r\n/g,"\n").split("\n"),h=m.length,n,g,k,d,a;while(h--){n=m[h];g=n.indexOf(":");if(g>=0){k=n.substr(0,g).toLowerCase();if(n.charAt(g+1)==" "){++g}b[k]=n.substr(g+1)}}e.xhr=null;delete e.xhr;d={request:e,requestId:e.id,status:l.status,statusText:l.statusText,getResponseHeader:function(o){return b[o.toLowerCase()]},getAllResponseHeaders:function(){return b}};if(c){j.processXdrResponse(d,l)}if(e.binary){d.responseBytes=j.getByteArray(l)}else{d.responseText=l.responseText;d.responseXML=l.responseXML}l=null;return d},createException:function(a){return{request:a,requestId:a.id,status:a.aborted?-1:0,statusText:a.aborted?"transaction aborted":"communication failure",aborted:a.aborted,timedout:a.timedout}},getByteArray:function(k){var c=k.response,j=k.responseBody,b,g,a,d;if(k instanceof Ext.data.flash.BinaryXhr){b=k.responseBytes}else{if(window.Uint8Array){b=c?new Uint8Array(c):[]}else{if(Ext.isIE9p){try{b=new VBArray(j).toArray()}catch(h){b=[]}}else{if(Ext.isIE){if(!this.self.vbScriptInjected){this.injectVBScript()}getIEByteArray(k.responseBody,b=[])}else{b=[];g=k.responseText;a=g.length;for(d=0;d1){c.overflowY=a||""}}if(c.rendered){c.getOverflowEl().setStyle(c.getOverflowStyle())}c.updateLayout();return c},beforeRender:function(){var b=this,c=b.floating,a;if(c){b.addCls(Ext.baseCSSPrefix+"layer");a=c.cls;if(a){b.addCls(a)}}return b.callParent()},beforeLayout:function(){this.callParent(arguments);if(this.floating){this.onBeforeFloatLayout()}},afterComponentLayout:function(){this.callParent(arguments);if(this.floating){this.onAfterFloatLayout()}},makeFloating:function(a){this.mixins.floating.constructor.call(this,a)},wrapPrimaryEl:function(a){if(this.floating){this.makeFloating(a)}else{this.callParent(arguments)}},initResizable:function(a){var b=this;a=Ext.apply({target:b,dynamic:false,constrainTo:b.constrainTo||(b.floatParent?b.floatParent.getTargetEl():null),handles:b.resizeHandles},a);a.target=b;b.resizer=new Ext.resizer.Resizer(a)},getDragEl:function(){return this.el},initDraggable:function(){var c=this,a=(c.resizer&&c.resizer.el!==c.el)?c.resizerComponent=new Ext.Component({el:c.resizer.el,rendered:true,container:c.container}):c,b=Ext.applyIf({el:a.getDragEl(),constrainTo:(c.constrain||c.draggable.constrain)?(c.constrainTo||(c.floatParent?c.floatParent.getTargetEl():c.container)):undefined},c.draggable);if(c.constrain||c.constrainDelegate){b.constrain=c.constrain;b.constrainDelegate=c.constrainDelegate}c.dd=new Ext.util.ComponentDragger(a,b)},scrollBy:function(b,a,c){var d;if((d=this.getTargetEl())&&d.dom){d.scrollBy.apply(d,arguments)}},setLoading:function(c,d){var b=this,a={target:b};if(b.rendered){Ext.destroy(b.loadMask);b.loadMask=null;if(c!==false&&!b.collapsed){if(Ext.isObject(c)){Ext.apply(a,c)}else{if(Ext.isString(c)){a.msg=c}}if(d){Ext.applyIf(a,{useTargetEl:true})}b.loadMask=new Ext.LoadMask(a);b.loadMask.show()}}return b.loadMask},beforeSetPosition:function(){var b=this,c=b.callParent(arguments),a;if(c){a=b.adjustPosition(c.x,c.y);c.x=a.x;c.y=a.y}return c||null},afterSetPosition:function(b,a){this.onPosition(b,a);this.fireEvent("move",this,b,a)},showAt:function(a,d,b){var c=this;if(!c.rendered&&(c.autoRender||c.floating)){c.x=a;c.y=d;return c.show()}if(c.floating){c.setPosition(a,d,b)}else{c.setPagePosition(a,d,b)}c.show()},showBy:function(b,d,c){var a=this;if(a.floating&&b){a.show();if(a.rendered&&!a.hidden){a.alignTo(b,d||a.defaultAlign,c)}}return a},setPagePosition:function(a,g,b){var c=this,d,e;if(Ext.isArray(a)){g=a[1];a=a[0]}c.pageX=a;c.pageY=g;if(c.floating){if(c.isContainedFloater()){e=c.floatParent.getTargetEl().getViewRegion();if(Ext.isNumber(a)&&Ext.isNumber(e.left)){a-=e.left}if(Ext.isNumber(g)&&Ext.isNumber(e.top)){g-=e.top}}else{d=c.el.translateXY(a,g);a=d.x;g=d.y}c.setPosition(a,g,b)}else{d=c.el.translateXY(a,g);c.setPosition(d.x,d.y,b)}return c},isContainedFloater:function(){return(this.floating&&this.floatParent)},updateBox:function(a){this.setSize(a.width,a.height);this.setPagePosition(a.x,a.y);return this},getOuterSize:function(){var a=this.el;return{width:a.getWidth()+a.getMargin("lr"),height:a.getHeight()+a.getMargin("tb")}},adjustPosition:function(a,d){var b=this,c;if(b.isContainedFloater()){c=b.floatParent.getTargetEl().getViewRegion();a+=c.left;d+=c.top}return{x:a,y:d}},getPosition:function(a){var b=this,d,c=b.isContainedFloater(),e;if((a===true)&&!c){return[b.getLocalX(),b.getLocalY()]}d=b.getXY();if((a===true)&&c){e=b.floatParent.getTargetEl().getViewRegion();d[0]-=e.left;d[1]-=e.top}return d},getId:function(){var a=this,b;if(!a.id){b=a.getXType();if(b){b=b.replace(Ext.Component.INVALID_ID_CHARS_Re,"-")}else{b=Ext.name.toLowerCase()+"-comp"}a.id=b+"-"+a.getAutoId()}return a.id},show:function(d,a,b){var c=this,e=c.rendered;if(c.hierarchicallyHidden||(c.floating&&!e&&c.isHierarchicallyHidden())){if(!e){c.initHierarchyEvents()}if(arguments.length>1){arguments[0]=null;c.pendingShow=arguments}else{c.pendingShow=true}}else{if(e&&c.isVisible()){if(c.toFrontOnShow&&c.floating){c.toFront()}}else{if(c.fireEvent("beforeshow",c)!==false){c.hidden=false;delete this.getHierarchyState().hidden;Ext.suspendLayouts();if(!e&&(c.autoRender||c.floating)){c.doAutoRender();e=c.rendered}if(e){c.beforeShow();Ext.resumeLayouts();c.onShow.apply(c,arguments);c.afterShow.apply(c,arguments)}else{Ext.resumeLayouts(true)}}else{c.onShowVeto()}}}return c},onShowVeto:Ext.emptyFn,beforeShow:Ext.emptyFn,onShow:function(){var a=this;a.el.show();a.callParent(arguments);if(a.floating){if(a.maximized){a.fitContainer()}else{if(a.constrain){a.doConstrain()}}}},getAnimateTarget:function(a){a=a||this.animateTarget;if(a){a=a.isComponent?a.getEl():Ext.get(a)}return a||null},afterShow:function(h,b,e){var g=this,j=g.el,a,c,d;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){c={x:j.getX(),y:j.getY(),width:j.dom.offsetWidth,height:j.dom.offsetHeight};a={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};j.addCls(g.offsetsCls);d=g.ghost();d.el.stopAnimation();d.setX(-10000);g.ghostBox=c;d.el.animate({from:a,to:c,listeners:{afteranimate:function(){delete d.componentLayout.lastComponentSize;g.unghost();delete g.ghostBox;j.removeCls(g.offsetsCls);g.onShowComplete(b,e)}}})}else{g.onShowComplete(b,e)}g.fireHierarchyEvent("show")},onShowComplete:function(a,b){var c=this;if(c.floating){c.toFront();c.onFloatShow()}Ext.callback(a,b||c);c.fireEvent("show",c);delete c.hiddenByLayout},hide:function(e,b,c){var d=this,a;if(d.pendingShow){delete d.pendingShow}if(!(d.rendered&&!d.isVisible())){a=(d.fireEvent("beforehide",d)!==false);if(d.hierarchicallyHidden||a){d.hidden=true;d.getHierarchyState().hidden=true;if(d.rendered){d.onHide.apply(d,arguments)}}}return d},onHide:function(h,a,e){var g=this,c,d,b;h=g.getAnimateTarget(h);if(!g.ghost){h=null}if(h){b={x:h.getX(),y:h.getY(),width:h.dom.offsetWidth,height:h.dom.offsetHeight};c=g.ghost();c.el.stopAnimation();d=g.getSize();c.el.animate({to:b,listeners:{afteranimate:function(){delete c.componentLayout.lastComponentSize;c.el.hide();c.el.setSize(d);g.afterHide(a,e)}}})}g.el.hide();if(!h){g.afterHide(a,e)}},afterHide:function(a,b){var c=this,d=Ext.Element.getActiveElement();c.hiddenByLayout=null;Ext.AbstractComponent.prototype.onHide.call(c);if(d===c.el||c.el.contains(d)){Ext.fly(d).blur()}Ext.callback(a,b||c);c.fireEvent("hide",c);c.fireHierarchyEvent("hide")},onDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.dd,a.resizer,a.proxy,a.proxyWrap,a.resizerComponent)}delete a.focusTask;a.callParent()},deleteMembers:function(){var b=arguments,a=b.length,c=0;for(;c=0){n=o[l].splitterDelta;if(j.getAt(h+n)!==a){j.remove(a);h=j.indexOf(k);if(n>0){++h}j.insert(h,a)}}}if(m){if(e){k.expand(false)}b.remove(m);k.placeholder=null;if(e){k.collapse(null,false)}}b.updateLayout();Ext.resumeLayouts(true);k.fireEventArgs("changeregion",[k,d])}else{k.region=l}}return d},setRegionWeight:function(d){var c=this,b=c.getOwningBorderContainer(),e=c.placeholder,a=c.weight;if(d!==a){if(c.fireEventArgs("beforechangeweight",[c,d])!==false){c.weight=d;if(e){e.weight=d}if(b){b.updateLayout()}c.fireEventArgs("changeweight",[c,a])}}return a}});(Ext.cmd.derive("Ext.ElementLoader",Ext.Base,{statics:{Renderer:{Html:function(a,b,c){a.getTarget().update(b.responseText,c.scripts===true);return true}}},url:null,params:null,baseParams:null,autoLoad:false,target:null,loadMask:false,ajaxOptions:null,scripts:false,isLoader:true,constructor:function(b){var c=this,a;b=b||{};Ext.apply(c,b);c.setTarget(c.target);c.addEvents("beforeload","exception","load");c.mixins.observable.constructor.call(c);if(c.autoLoad){a=c.autoLoad;if(a===true){a={}}c.load(a)}},setTarget:function(b){var a=this;b=Ext.get(b);if(a.target&&a.target!=b){a.abort()}a.target=b},getTarget:function(){return this.target||null},abort:function(){var a=this.active;if(a!==undefined){Ext.Ajax.abort(a.request);if(a.mask){this.removeMask()}delete this.active}},removeMask:function(){this.target.unmask()},addMask:function(a){this.target.mask(a===true?null:a)},load:function(c){c=Ext.apply({},c);var e=this,a=Ext.isDefined(c.loadMask)?c.loadMask:e.loadMask,g=Ext.apply({},c.params),b=Ext.apply({},c.ajaxOptions),h=c.callback||e.callback,d=c.scope||e.scope||e;Ext.applyIf(b,e.ajaxOptions);Ext.applyIf(c,b);Ext.applyIf(g,e.params);Ext.apply(g,e.baseParams);Ext.applyIf(c,{url:e.url});Ext.apply(c,{scope:e,params:g,callback:e.onComplete});if(e.fireEvent("beforeload",e,c)===false){return}if(a){e.addMask(a)}e.active={options:c,mask:a,scope:d,callback:h,success:c.success||e.success,failure:c.failure||e.failure,renderer:c.renderer||e.renderer,scripts:Ext.isDefined(c.scripts)?c.scripts:e.scripts};e.active.request=Ext.Ajax.request(c);e.setOptions(e.active,c)},setOptions:Ext.emptyFn,onComplete:function(b,g,a){var d=this,e=d.active,c;if(e){c=e.scope;if(g){g=d.getRenderer(e.renderer).call(d,d,a,e)!==false}if(g){Ext.callback(e.success,c,[d,a,b]);d.fireEvent("load",d,a,b)}else{Ext.callback(e.failure,c,[d,a,b]);d.fireEvent("exception",d,a,b)}Ext.callback(e.callback,c,[d,g,a,b]);if(e.mask){d.removeMask()}}delete d.active},getRenderer:function(a){if(Ext.isFunction(a)){return a}return this.statics().Renderer.Html},startAutoRefresh:function(a,b){var c=this;c.stopAutoRefresh();c.autoRefresh=setInterval(function(){c.load(b)},a)},stopAutoRefresh:function(){clearInterval(this.autoRefresh);delete this.autoRefresh},isAutoRefreshing:function(){return Ext.isDefined(this.autoRefresh)},destroy:function(){var a=this;a.stopAutoRefresh();delete a.target;a.abort();a.clearListeners()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"ElementLoader"],0));(Ext.cmd.derive("Ext.ComponentLoader",Ext.ElementLoader,{statics:{Renderer:{Data:function(a,b,d){var g=true;try{a.getTarget().update(Ext.decode(b.responseText))}catch(c){g=false}return g},Component:function(a,c,h){var j=true,g=a.getTarget(),b=[];try{b=Ext.decode(c.responseText)}catch(d){j=false}if(j){g.suspendLayouts();if(h.removeAll){g.removeAll()}g.add(b);g.resumeLayouts(true)}return j}}},target:null,loadMask:false,renderer:"html",setTarget:function(b){var a=this;if(Ext.isString(b)){b=Ext.getCmp(b)}if(a.target&&a.target!=b){a.abort()}a.target=b},removeMask:function(){this.target.setLoading(false)},addMask:function(a){this.target.setLoading(a)},setOptions:function(b,a){b.removeAll=Ext.isDefined(a.removeAll)?a.removeAll:this.removeAll},getRenderer:function(b){if(Ext.isFunction(b)){return b}var a=this.statics().Renderer;switch(b){case"component":return a.Component;case"data":return a.Data;default:return Ext.ElementLoader.Renderer.Html}}},0,0,0,0,0,0,[Ext,"ComponentLoader"],0));(Ext.cmd.derive("Ext.layout.SizeModel",Ext.Base,{constructor:function(c){var e=this,d=e.self,a=d.sizeModelsArray,b;Ext.apply(e,c);e[b=e.name]=true;e.fixed=!(e.auto=e.natural||e.shrinkWrap);a[e.ordinal=a.length]=d[b]=d.sizeModels[b]=e},statics:{sizeModelsArray:[],sizeModels:{}},calculated:false,configured:false,constrainedMax:false,constrainedMin:false,natural:false,shrinkWrap:false,calculatedFromConfigured:false,calculatedFromNatural:false,calculatedFromShrinkWrap:false,names:null},1,0,0,0,0,0,[Ext.layout,"SizeModel"],function(){var e=this,a=e.sizeModelsArray,c,b,h,g,d;new e({name:"calculated"});new e({name:"configured",names:{width:"width",height:"height"}});new e({name:"natural"});new e({name:"shrinkWrap"});new e({name:"calculatedFromConfigured",configured:true,names:{width:"width",height:"height"}});new e({name:"calculatedFromNatural",natural:true});new e({name:"calculatedFromShrinkWrap",shrinkWrap:true});new e({name:"constrainedMax",configured:true,constrained:true,names:{width:"maxWidth",height:"maxHeight"}});new e({name:"constrainedMin",configured:true,constrained:true,names:{width:"minWidth",height:"minHeight"}});new e({name:"constrainedDock",configured:true,constrained:true,constrainedByMin:true,names:{width:"dockConstrainedWidth",height:"dockConstrainedHeight"}});for(c=0,h=a.length;c','
    ',"{%this.renderBody(out,values)%}","
    ","","{% } else if (values.shrinkWrapWidth) { %}",'',"",'","","
    ',"{%this.renderBody(out,values)%}",'
    ',"
    ","{% } else { %}",'
    ','
    ',"{%this.renderBody(out,values)%}",'
    ',"
    ","
    ","{% values.$layout.isShrinkWrapTpl = false %}","{% } %}"],tableTpl:['',"",'","","
    ',"
    "],isShrinkWrapTpl:true,beginLayout:function(e){var d=this,a,b,c,g;d.callParent(arguments);d.initContextItems(e);if(!d.isShrinkWrapTpl){if(e.widthModel.shrinkWrap){g=true}if(Ext.isStrict&&Ext.isIE7){c=d.getOverflowXStyle(e);if((c==="auto"||c==="scroll")&&e.paddingContext.getPaddingInfo().right){g=true}}if(g){d.insertTableCt(e)}}if(!d.isShrinkWrapTpl&&Ext.isIE7&&Ext.isStrict&&!d.clearElHasPadding){a=e.paddingContext.getPaddingInfo().bottom;b=d.getOverflowYStyle(e);if(a&&(b==="auto"||b==="scroll")){d.clearEl.setStyle("height",a);d.clearElHasPadding=true}}},beforeLayoutCycle:function(c){var a=this.owner,d=a.hierarchyState,b=a.hierarchyStateInner;if(!d||d.invalid){d=a.getHierarchyState();b=a.hierarchyStateInner}if(c.widthModel.shrinkWrap&&this.isShrinkWrapTpl){b.inShrinkWrapTable=true}else{delete b.inShrinkWrapTable}},beginLayoutCycle:function(h){var m=this,c=m.outerCt,l=m.lastOuterCtWidth||"",k=m.lastOuterCtHeight||"",n=m.lastOuterCtTableLayout||"",b=h.state,o,g,j,p,d,a,e;m.callParent(arguments);j=p=d="";if(!h.widthModel.shrinkWrap&&m.isShrinkWrapTpl){if(Ext.isIE7m&&Ext.isStrict){g=m.getOverflowYStyle(h);if(g==="auto"||g==="scroll"){a=true}}if(!a){j="100%"}e=m.owner.hierarchyStateInner;o=m.getOverflowXStyle(h);d=(e.inShrinkWrapTable||o==="auto"||o==="scroll")?"":"fixed"}if(!h.heightModel.shrinkWrap&&!Ext.supports.PercentageHeightOverflowBug){p="100%"}if((j!==l)||m.hasOuterCtPxWidth){c.setStyle("width",j);m.lastOuterCtWidth=j;m.hasOuterCtPxWidth=false}if(d!==n){c.setStyle("table-layout",d);m.lastOuterCtTableLayout=d}if((p!==k)||m.hasOuterCtPxHeight){c.setStyle("height",p);m.lastOuterCtHeight=p;m.hasOuterCtPxHeight=false}if(m.hasInnerCtPxHeight){m.innerCt.setStyle("height","");m.hasInnerCtPxHeight=false}b.overflowAdjust=b.overflowAdjust||m.lastOverflowAdjust},calculate:function(c){var a=this,b=c.state,e=a.getContainerSize(c,true),d=b.calculatedItems||(b.calculatedItems=a.calculateItems?a.calculateItems(c,e):true);a.setCtSizeIfNeeded(c,e);if(d&&c.hasDomProp("containerChildrenSizeDone")){a.calculateContentSize(c);if(e.gotAll){if(a.manageOverflow&&!c.state.secondPass&&!a.reserveScrollbar){a.calculateOverflow(c,e)}return}}a.done=false},calculateContentSize:function(g){var e=this,a=((g.widthModel.shrinkWrap?1:0)|(g.heightModel.shrinkWrap?2:0)),c=(a&1)||undefined,h=(a&2)||undefined,d=0,b=g.props;if(c){if(isNaN(b.contentWidth)){++d}else{c=undefined}}if(h){if(isNaN(b.contentHeight)){++d}else{h=undefined}}if(d){if(c&&!g.setContentWidth(e.measureContentWidth(g))){e.done=false}if(h&&!g.setContentHeight(e.measureContentHeight(g))){e.done=false}}},calculateOverflow:function(c){var h=this,b,k,a,g,e,d,j;e=(h.getOverflowXStyle(c)==="auto");d=(h.getOverflowYStyle(c)==="auto");if(e||d){a=Ext.getScrollbarSize();j=c.overflowContext.el.dom;g=0;if(j.scrollWidth>j.clientWidth){g|=1}if(j.scrollHeight>j.clientHeight){g|=2}b=(d&&(g&2))?a.width:0;k=(e&&(g&1))?a.height:0;if(b!==h.lastOverflowAdjust.width||k!==h.lastOverflowAdjust.height){h.done=false;c.invalidate({state:{overflowAdjust:{width:b,height:k},overflowState:g,secondPass:true}})}}},completeLayout:function(a){this.lastOverflowAdjust=a.state.overflowAdjust},doRenderPadding:function(b,d){var c=d.$layout,a=d.$layout.owner,e=a[a.contentPaddingProperty];if(c.managePadding&&e){b.push("padding:",a.unitizeBox(e))}},finishedLayout:function(b){var a=this.innerCt;this.callParent(arguments);if(Ext.isIEQuirks||Ext.isIE8m){a.repaint()}if(Ext.isOpera){a.setStyle("position","relative");a.dom.scrollWidth;a.setStyle("position","")}},getContainerSize:function(b,c){var a=this.callParent(arguments),d=b.state.overflowAdjust;if(d){a.width-=d.width;a.height-=d.height}return a},getRenderData:function(){var a=this.owner,b=this.callParent();if((Ext.isIEQuirks||Ext.isIE7m)&&((a.shrinkWrap&1)||(a.floating&&!a.width))){b.shrinkWrapWidth=true}return b},getRenderTarget:function(){return this.innerCt},getElementTarget:function(){return this.innerCt},getOverflowXStyle:function(a){return a.overflowXStyle||(a.overflowXStyle=this.owner.scrollFlags.overflowX||a.overflowContext.getStyle("overflow-x"))},getOverflowYStyle:function(a){return a.overflowYStyle||(a.overflowYStyle=this.owner.scrollFlags.overflowY||a.overflowContext.getStyle("overflow-y"))},initContextItems:function(c){var b=this,d=c.target,a=b.owner.customOverflowEl;c.outerCtContext=c.getEl("outerCt",b);c.innerCtContext=c.getEl("innerCt",b);if(a){c.overflowContext=c.getEl(a)}else{c.overflowContext=c.targetContext}if(d[d.contentPaddingProperty]!==undefined){c.paddingContext=b.isShrinkWrapTpl?c.innerCtContext:c.outerCtContext}},initLayout:function(){var c=this,b=Ext.getScrollbarSize().width,a=c.owner;c.callParent();if(b&&c.manageOverflow&&!c.hasOwnProperty("lastOverflowAdjust")){if(a.autoScroll||c.reserveScrollbar){c.lastOverflowAdjust={width:b,height:0}}}},insertTableCt:function(b){var h=this,a=h.owner,c=0,e,g,k,d,j;e=Ext.XTemplate.getTpl(this,"tableTpl");e.renderPadding=h.doRenderPadding;h.outerCt.dom.removeChild(h.innerCt.dom);g=document.createDocumentFragment();k=h.innerCt.dom.childNodes;d=k.length;for(;ck.dom.clientHeight)){m-=q.width}}d.outerCtContext.setProp("width",m+g.width);t.hasOuterCtPxWidth=true}if(j&&!d.heightModel.shrinkWrap){if(Ext.supports.PercentageHeightOverflowBug){s=true}if(((Ext.isIE8&&Ext.isStrict)||Ext.isIE7m&&Ext.isStrict&&r)){h=true;c=!Ext.isIE8}if((s||h)&&p&&(k.dom.scrollWidth>k.dom.clientWidth)){j=Math.max(j-q.height,0)}if(s){d.outerCtContext.setProp("height",j+g.height);t.hasOuterCtPxHeight=true}if(h){if(c){j+=g.height}d.innerCtContext.setProp("height",j);t.hasInnerCtPxHeight=true}}if(Ext.isIE7&&Ext.isStrict&&!r&&(l==="auto")){a=(e==="auto")?"overflow-x":"overflow-y";k.setStyle(a,"hidden");k.setStyle(a,"auto")}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadding=this.doRenderPadding},getContentTarget:function(){return this.innerCt}},0,0,0,0,["layout.auto","layout.autocontainer"],0,[Ext.layout.container,"Auto"],function(){this.prototype.chromeCellMeasureBug=Ext.isChrome&&Ext.chromeVersion>=26}));(Ext.cmd.derive("Ext.ZIndexManager",Ext.Base,{alternateClassName:"Ext.WindowGroup",statics:{zBase:9000},constructor:function(a){var b=this;b.list={};b.zIndexStack=[];b.front=null;if(a){if(a.isContainer){a.on("resize",b._onContainerResize,b);b.zseed=Ext.Number.from(b.rendered?a.getEl().getStyle("zIndex"):undefined,b.getNextZSeed());b.targetEl=a.getTargetEl();b.container=a}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();b.targetEl=Ext.get(a)}}else{Ext.EventManager.onWindowResize(b._onContainerResize,b);b.zseed=b.getNextZSeed();Ext.onDocumentReady(function(){b.targetEl=Ext.getBody()})}},getNextZSeed:function(){return(Ext.ZIndexManager.zBase+=10000)},setBase:function(b){this.zseed=b;var a=this.assignZIndices();this._activateLast();return a},assignZIndices:function(){var c=this.zIndexStack,b=c.length,e=0,h=this.zseed,d,g;for(;e=0&&a[c].hidden;--c){}if((b=a[c])){d._setActiveChild(b,d.front);if(b.modal){return}}else{if(d.front&&!d.front.destroying){d.front.setActive(false)}d.front=null}for(;c>=0;--c){b=a[c];if(b.isVisible()&&b.modal){d._showModalMask(b);return}}d._hideModalMask()},_showModalMask:function(b){var d=this,h=b.el.getStyle("zIndex")-4,c=b.floatParent?b.floatParent.getTargetEl():b.container,a=d.mask,g=d.maskShim,e;if(!a){if(Ext.isIE6){g=d.maskShim=Ext.getBody().createChild({tag:"iframe",cls:Ext.baseCSSPrefix+"shim "+Ext.baseCSSPrefix+"mask-shim"});g.setVisibilityMode(Ext.Element.DISPLAY)}a=d.mask=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"mask",style:"height:0;width:0"});a.setVisibilityMode(Ext.Element.DISPLAY);a.on("click",d._onMaskClick,d)}a.maskTarget=c;e=d.getMaskBox();if(g){g.setStyle("zIndex",h);g.show();g.setBox(e)}a.setStyle("zIndex",h);a.show();a.setBox(e)},_hideModalMask:function(){var b=this.mask,a=this.maskShim;if(b&&b.isVisible()){b.maskTarget=undefined;b.hide();if(a){a.hide()}}},_onMaskClick:function(){if(this.front){this.front.focus()}},getMaskBox:function(){var a=this.mask.maskTarget;if(a.dom===document.body){return{height:Math.max(document.body.scrollHeight,Ext.dom.Element.getDocumentHeight()),width:Math.max(document.body.scrollWidth,document.documentElement.clientWidth),x:0,y:0}}else{return a.getBox()}},_onContainerResize:function(){var c=this,b=c.mask,a=c.maskShim,d;if(b&&b.isVisible()){b.hide();if(a){a.hide()}d=c.getMaskBox();if(a){a.setSize(d);a.show()}b.setSize(d);b.show()}},register:function(b){var c=this,a=b.afterHide;if(b.zIndexManager){b.zIndexManager.unregister(b)}b.zIndexManager=c;c.list[b.id]=b;c.zIndexStack.push(b);b.afterHide=function(){a.apply(b,arguments);c.onComponentHide(b)}},unregister:function(a){var b=this,c=b.list;delete a.zIndexManager;if(c&&c[a.id]){delete c[a.id];delete a.afterHide;Ext.Array.remove(b.zIndexStack,a);b._activateLast()}},get:function(a){return a.isComponent?a:this.list[a]},bringToFront:function(b,d){var c=this,a=false,e=c.zIndexStack;b=c.get(b);if(b!==c.front){Ext.Array.remove(e,b);if(b.preventBringToFront){e.unshift(b)}else{e.push(b)}c.assignZIndices();if(!d){c._activateLast()}a=true;c.front=b;if(b.modal){c._showModalMask(b)}}return a},sendToBack:function(a){var b=this;a=b.get(a);Ext.Array.remove(b.zIndexStack,a);b.zIndexStack.unshift(a);b.assignZIndices();this._activateLast();return a},hideAll:function(){var b=this.list,a,c;for(c in b){if(b.hasOwnProperty(c)){a=b[c];if(a.isComponent&&a.isVisible()){a.hide()}}}},hide:function(){var d=0,b=this.zIndexStack,a=b.length,c;this.tempHidden=[];for(;d0;){b=a[c];if(b.isComponent&&e.call(d||b,b)===false){return}}},destroy:function(){var b=this,c=b.list,a,d;for(d in c){if(c.hasOwnProperty(d)){a=c[d];if(a.isComponent){a.destroy()}}}delete b.zIndexStack;delete b.list;delete b.container;delete b.targetEl}},1,0,0,0,0,0,[Ext,"ZIndexManager",Ext,"WindowGroup"],function(){Ext.WindowManager=Ext.WindowMgr=new this()}));(Ext.cmd.derive("Ext.Queryable",Ext.Base,{isQueryable:true,query:function(a){a=a||"*";return Ext.ComponentQuery.query(a,this)},queryBy:function(g,e){var c=[],b=this.getRefItems(true),d=0,a=b.length,h;for(;d "+a)[0]||null},down:function(a){if(a&&a.isComponent){a="#"+Ext.escapeId(a.getItemId())}a=a||"";return this.query(a)[0]||null},getRefItems:function(){return[]}},0,0,0,0,0,0,[Ext,"Queryable"],0));(Ext.cmd.derive("Ext.layout.component.Component",Ext.layout.Layout,{type:"component",isComponentLayout:true,nullBox:{},usesContentHeight:true,usesContentWidth:true,usesHeight:true,usesWidth:true,beginLayoutCycle:function(c,q){var l=this,b=l.owner,e=c.ownerCtContext,g=c.heightModel,h=c.widthModel,j=b.el.dom===document.body,d=b.lastBox||l.nullBox,o=b.el.lastBox||l.nullBox,a=!j,n,p,m,k;l.callParent(arguments);if(q){if(l.usesContentWidth){++c.consumersContentWidth}if(l.usesContentHeight){++c.consumersContentHeight}if(l.usesWidth){++c.consumersWidth}if(l.usesHeight){++c.consumersHeight}if(e&&!e.hasRawContent){n=b.ownerLayout;if(n.usesWidth){++c.consumersWidth}if(n.usesHeight){++c.consumersHeight}}}if(h.configured){m=h.names.width;if(!j){a=q?b[m]!==o.width:h.constrained}c.setWidth(b[m],a)}else{if(c.isTopLevel){if(h.calculated){p=d.width;c.setWidth(p,p!=o.width)}p=d.x;c.setProp("x",p,p!=o.x)}}if(g.configured){k=g.names.height;if(!j){a=q?b[k]!==o.height:g.constrained}c.setHeight(b[k],a)}else{if(c.isTopLevel){if(g.calculated){p=d.height;c.setHeight(p,p!=o.height)}p=d.y;c.setProp("y",p,p!=o.y)}}},finishedLayout:function(b){var h=this,k=b.children,a=h.owner,e,c,j,d,g;if(k){e=k.length;for(c=0;c=d){h=0}else{if(h<0){h=d-1}}if(h===e){return[]}if((k=g[h]).isFocusable()){return[k]}}return[]},prevFocus:function(e,d){return this.nextFocus(e,d,-1)},root:function(e){var d=e.length,h=[],g=0,j;for(;gd.el.getZIndex()});return c.concat(a)},initDOM:function(c){var g=this,b=g.focusFrameCls,e=Ext.ComponentQuery.query("{getFocusEl()}:not([focusListenerAdded])"),d=0,a=e.length;if(!Ext.isReady){return Ext.onReady(g.initDOM,g)}for(;d:focusable",a)[0]:a;if(d){d.focus()}else{if(Ext.isFunction(a.onClick)){g.button=0;a.onClick(g);if(a.isVisible(true)){a.focus()}else{c.navigateOut()}}}}},navigateOut:function(c){var b=this,a;if(!b.focusedCmp||!(a=b.focusedCmp.up(":focusable"))){b.focusEl.focus()}else{a.focus()}return true},navigateSiblings:function(j,b,p){var k=this,a=b||k,q=j.getKey(),g=Ext.EventObject,l=j.shiftKey||q==g.LEFT||q==g.UP,c=q==g.LEFT||q==g.RIGHT||q==g.UP||q==g.DOWN,h=l?"prev":"next",o,d,n,m;n=(a.focusedCmp&&a.focusedCmp.comp)||a.focusedCmp;if(!n&&!p){return true}if(c&&k.isWhitelisted(n)){return true}if(!n||n.is(":root")){m=k.getRootComponents()}else{p=p||n.up();if(p){m=p.getRefItems()}}if(m){o=n?Ext.Array.indexOf(m,n):-1;d=Ext.ComponentQuery.query(":"+h+"Focus("+o+")",m)[0];if(d&&n!==d){d.focus();return d}}},onComponentBlur:function(b,c){var a=this;if(a.focusedCmp===b){a.previousFocusedCmp=b;delete a.focusedCmp}if(a.focusFrame){a.focusFrame.hide()}},onComponentFocus:function(d,g){var c=this,a=c.focusChain,b;if(!d.isFocusable()){c.clearComponent(d);if(a[d.id]){return}b=d.up();if(b){a[d.id]=true;b.focus()}return}c.focusChain={};c.focusTask.delay(10,null,null,[d,d.getFocusEl()])},handleComponentFocus:function(m,h){var k=this,p,a,g,o,b,l,d,e,c,n,j;if(k.fireEvent("beforecomponentfocus",k,m,k.previousFocusedCmp)===false){k.clearComponent(m);return}k.focusedCmp=m;if(k.shouldShowFocusFrame(m)){p="."+k.focusFrameCls+"-";a=k.focusFrame;g=(h.dom?h:h.el).getBox();o=g.top;b=g.left;l=g.width;d=g.height;e=a.child(p+"top");c=a.child(p+"bottom");n=a.child(p+"left");j=a.child(p+"right");e.setWidth(l).setLocalXY(b,o);c.setWidth(l).setLocalXY(b,o+d-2);n.setHeight(d-2).setLocalXY(b,o+2);j.setHeight(d-2).setLocalXY(b+l-2,o+2);a.show()}k.fireEvent("componentfocus",k,m,k.previousFocusedCmp)},onComponentHide:function(e){var d=this,b=false,a=d.focusedCmp,c;if(a){b=e.hasFocus||(e.isContainer&&e.isAncestor(d.focusedCmp))}d.clearComponent(e);if(b&&(c=e.up(":focusable"))){c.focus()}else{d.focusEl.focus()}},onComponentDestroy:function(){},removeDOM:function(){var a=this;if(a.enabled||a.subscribers.length){return}Ext.destroy(a.focusFrame);delete a.focusEl;delete a.focusFrame},removeXTypeFromWhitelist:function(b){var a=this;if(Ext.isArray(b)){Ext.Array.forEach(b,a.removeXTypeFromWhitelist,a);return}Ext.Array.remove(a.whitelist,b)},setupSubscriberKeys:function(a,g){var e=this,d=a.getFocusEl(),c=g.scope,b={backspace:e.focusLast,enter:e.navigateIn,esc:e.navigateOut,scope:e},h=function(j){if(e.focusedCmp===a){return e.navigateSiblings(j,e,a)}else{return e.navigateSiblings(j)}};Ext.iterate(g,function(k,j){b[k]=function(m){var l=h(m);if(Ext.isFunction(j)&&j.call(c||a,m,l)===true){return true}return l}},e);return new Ext.util.KeyNav(d,b)},shouldShowFocusFrame:function(c){var b=this,a=b.options||{};if(!b.focusFrame||!c){return false}if(a.focusFrame){return true}if(b.focusData[c.id].focusFrame){return true}return false}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext,"FocusManager",Ext,"FocusMgr"],0));(Ext.cmd.derive("Ext.Img",Ext.Component,{autoEl:"img",baseCls:Ext.baseCSSPrefix+"img",src:"",alt:"",title:"",imgCls:"",initComponent:function(){if(this.glyph){this.autoEl="div"}this.callParent()},getElConfig:function(){var e=this,b=e.callParent(),g=Ext._glyphFontFamily,d=e.glyph,a,c;if(e.autoEl=="img"){a=b}else{if(e.glyph){if(typeof d==="string"){c=d.split("@");d=c[0];g=c[1]}b.html="&#"+d+";";if(g){b.style="font-family:"+g}}else{b.cn=[a={tag:"img",id:e.id+"-img"}]}}if(a){if(e.imgCls){a.cls=(a.cls?a.cls+" ":"")+e.imgCls}a.src=e.src||Ext.BLANK_IMAGE_URL}if(e.alt){(a||b).alt=e.alt}if(e.title){(a||b).title=e.title}return b},onRender:function(){var b=this,a;b.callParent(arguments);a=b.el;b.imgEl=(b.autoEl=="img")?a:a.getById(b.id+"-img")},onDestroy:function(){Ext.destroy(this.imgEl);this.imgEl=null;this.callParent()},setSrc:function(c){var a=this,b=a.imgEl;a.src=c;if(b){b.dom.src=c||Ext.BLANK_IMAGE_URL}},setGlyph:function(c){var b=this,d=Ext._glyphFontFamily,a,e;if(c!=b.glyph){if(typeof c==="string"){a=c.split("@");c=a[0];d=a[1]}e=b.el.dom;e.innerHTML="&#"+c+";";if(d){e.style="font-family:"+d}}}},0,["image","imagecomponent"],["component","image","box","imagecomponent"],{component:true,image:true,box:true,imagecomponent:true},["widget.image","widget.imagecomponent"],0,[Ext,"Img"],0));(Ext.cmd.derive("Ext.util.Bindable",Ext.Base,{bindStore:function(b,c,a){a=a||"store";var d=this,e=d[a];if(!c&&e){d.onUnbindStore(e,c,a);if(b!==e&&e.autoDestroy){e.destroyStore()}else{d.unbindStoreListeners(e)}}if(b){b=Ext.data.StoreManager.lookup(b);d.bindStoreListeners(b);d.onBindStore(b,c,a)}d[a]=b||null;return d},getStore:function(){return this.store},unbindStoreListeners:function(a){var b=this.storeListeners;if(b){a.un(b)}},bindStoreListeners:function(a){var c=this,b=Ext.apply({},c.getStoreListeners(a));if(!b.scope){b.scope=c}c.storeListeners=b;a.on(b)},getStoreListeners:Ext.emptyFn,onUnbindStore:Ext.emptyFn,onBindStore:Ext.emptyFn},0,0,0,0,0,0,[Ext.util,"Bindable"],0));(Ext.cmd.derive("Ext.LoadMask",Ext.Component,{msg:"Loading...",msgCls:Ext.baseCSSPrefix+"mask-loading",maskCls:Ext.baseCSSPrefix+"mask",useMsg:true,useTargetEl:false,baseCls:Ext.baseCSSPrefix+"mask-msg",childEls:["msgEl","msgTextEl"],renderTpl:['
    ','
    ',"
    "],floating:{shadow:"frame"},focusOnToFront:false,bringParentToFront:false,constructor:function(b){var c=this,a;if(arguments.length===2){a=b;b=arguments[1]}else{a=b.target}if(!a.isComponent){a=Ext.get(a);this.isElement=true}c.ownerCt=a;if(!this.isElement){c.bindComponent(a)}c.callParent([b]);if(c.store){c.bindStore(c.store,true)}},bindComponent:function(a){var c=this,b={scope:this,resize:c.sizeMask,added:c.onComponentAdded,removed:c.onComponentRemoved};if(a.floating){b.move=c.sizeMask;c.activeOwner=a}else{if(a.ownerCt){c.onComponentAdded(a.ownerCt)}else{c.preventBringToFront=true}}c.mon(a,b);c.mon(c.hierarchyEventSource,{show:c.onContainerShow,hide:c.onContainerHide,expand:c.onContainerExpand,collapse:c.onContainerCollapse,scope:c})},onComponentAdded:function(a){var b=this;delete b.activeOwner;b.floatParent=a;if(!a.floating){a=a.up("[floating]")}if(a){b.activeOwner=a;b.mon(a,"move",b.sizeMask,b)}else{b.preventBringToFront=true}a=b.floatParent.ownerCt;if(b.rendered&&b.isVisible()&&a){b.floatOwner=a;b.mon(a,"afterlayout",b.sizeMask,b,{single:true})}},onComponentRemoved:function(a){var c=this,d=c.activeOwner,b=c.floatOwner;if(d){c.mun(d,"move",c.sizeMask,c)}if(b){c.mun(b,"afterlayout",c.sizeMask,c)}delete c.activeOwner;delete c.floatOwner},afterRender:function(){this.callParent(arguments);this.container=this.floatParent.getContentTarget()},onContainerShow:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerHide:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},onContainerExpand:function(a){if(this.isActiveContainer(a)){this.onComponentShow()}},onContainerCollapse:function(a){if(this.isActiveContainer(a)){this.onComponentHide()}},isActiveContainer:function(a){return this.isDescendantOf(a)},onComponentHide:function(){var a=this;if(a.rendered&&a.isVisible()){a.hide();a.showNext=true}},onComponentShow:function(){if(this.showNext){this.show()}delete this.showNext},sizeMask:function(){var a=this,b;if(a.rendered&&a.isVisible()){a.center();b=a.getMaskTarget();a.getMaskEl().show().setSize(b.getSize()).alignTo(b,"tl-tl")}},bindStore:function(a,b){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);a=c.store;if(a&&a.isLoading()){c.onBeforeLoad()}},getStoreListeners:function(b){var d=this.onLoad,c=this.onBeforeLoad,a={cachemiss:c,cachefilled:d};if(!b.proxy.isSynchronous){a.beforeLoad=c;a.load=d}return a},onDisable:function(){this.callParent(arguments);if(this.loading){this.onLoad()}},getOwner:function(){return this.ownerCt||this.floatParent},getMaskTarget:function(){var a=this.getOwner();return this.useTargetEl?a.getTargetEl():a.getEl()},onBeforeLoad:function(){var c=this,a=c.getOwner(),b;if(!c.disabled){c.loading=true;if(a.componentLayoutCounter){c.maybeShow()}else{b=a.afterComponentLayout;a.afterComponentLayout=function(){a.afterComponentLayout=b;b.apply(a,arguments);c.maybeShow()}}}},maybeShow:function(){var b=this,a=b.getOwner();if(!a.isVisible(true)){b.showNext=true}else{if(b.loading&&a.rendered){b.show()}}},getMaskEl:function(){var a=this;return a.maskEl||(a.maskEl=a.el.insertSibling({cls:a.maskCls,style:{zIndex:a.el.getStyle("zIndex")-2}},"before"))},onShow:function(){var b=this,a=b.msgEl;b.callParent(arguments);b.loading=true;if(b.useMsg){a.show();b.msgTextEl.update(b.msg)}else{a.parent().hide()}},hide:function(){if(this.isElement){this.ownerCt.unmask();this.fireEvent("hide",this);return}delete this.showNext;return this.callParent(arguments)},onHide:function(){this.callParent();this.getMaskEl().hide()},show:function(){if(this.isElement){this.ownerCt.mask(this.useMsg?this.msg:"",this.msgCls);this.fireEvent("show",this);return}return this.callParent(arguments)},afterShow:function(){this.callParent(arguments);this.sizeMask()},setZIndex:function(b){var c=this,a=c.activeOwner;if(a){b=parseInt(a.el.getStyle("zIndex"),10)+1}c.getMaskEl().setStyle("zIndex",b-1);return c.mixins.floating.setZIndex.apply(c,arguments)},onLoad:function(){this.loading=false;this.hide()},onDestroy:function(){var a=this;if(a.isElement){a.ownerCt.unmask()}Ext.destroy(a.maskEl);a.callParent()}},1,["loadmask"],["component","box","loadmask"],{component:true,box:true,loadmask:true},["widget.loadmask"],[["floating",Ext.util.Floating],["bindable",Ext.util.Bindable]],[Ext,"LoadMask"],0));(Ext.cmd.derive("Ext.data.association.Association",Ext.Base,{alternateClassName:"Ext.data.Association",primaryKey:"id",associationKeyFunction:null,defaultReaderType:"json",isAssociation:true,initialConfig:null,statics:{AUTO_ID:1000,create:function(a){if(Ext.isString(a)){a={type:a}}switch(a.type){case"belongsTo":return new Ext.data.association.BelongsTo(a);case"hasMany":return new Ext.data.association.HasMany(a);case"hasOne":return new Ext.data.association.HasOne(a);default:}return a}},constructor:function(d){Ext.apply(this,d);var h=this,g=Ext.ModelManager.types,k=d.ownerModel,a=d.associatedModel,e=g[k],j=g[a],b=d.associationKey,c;if(b){c=String(b).search(/[\[\.]/);if(c>=0){h.associationKeyFunction=Ext.functionFactory("obj","return obj"+(c>0?".":"")+b)}}h.initialConfig=d;h.ownerModel=e;h.associatedModel=j;Ext.applyIf(h,{ownerName:k,associatedName:a});h.associationId="association"+(++h.statics().AUTO_ID)},getReader:function(){var c=this,a=c.reader,b=c.associatedModel;if(a){if(Ext.isString(a)){a={type:a}}if(a.isReader){a.setModel(b)}else{Ext.applyIf(a,{model:b,type:c.defaultReaderType})}c.reader=Ext.createByAlias("reader."+a.type,a)}return c.reader||null}},1,0,0,0,0,0,[Ext.data.association,"Association",Ext.data,"Association"],0));(Ext.cmd.derive("Ext.ModelManager",Ext.AbstractManager,{alternateClassName:"Ext.ModelMgr",singleton:true,typeName:"mtype",associationStack:[],registerType:function(c,b){var d=b.prototype,a;if(d&&d.isModel){a=b}else{if(!b.extend){b.extend="Ext.data.Model"}a=Ext.define(c,b)}this.types[c]=a;return a},unregisterType:function(a){delete this.types[a]},onModelDefined:function(c){var a=this.associationStack,g=a.length,e=[],b,d,h;for(d=0;d','
    {text}
    ',"",'
    ','','
    ',"
    {text}
    ","
    ","
    ","
    "],componentLayout:"progressbar",initComponent:function(){this.callParent();this.addEvents("update")},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{internalText:!a.hasOwnProperty("textEl"),text:a.text||" ",percentage:a.value?a.value*100:0})},onRender:function(){var a=this;a.callParent(arguments);if(a.textEl){a.textEl=Ext.get(a.textEl);a.updateText(a.text)}else{a.textEl=a.el.select("."+a.baseCls+"-text")}},updateProgress:function(d,e,a){var c=this,b=c.value;c.value=d||0;if(e){c.updateText(e)}if(c.rendered&&!c.isDestroyed){if(a===true||(a!==false&&c.animate)){c.bar.stopAnimation();c.bar.animate(Ext.apply({from:{width:(b*100)+"%"},to:{width:(c.value*100)+"%"}},c.animate))}else{c.bar.setStyle("width",(c.value*100)+"%")}}c.fireEvent("update",c,c.value,e);return c},updateText:function(b){var a=this;a.text=b;if(a.rendered){a.textEl.update(a.text)}return a},applyText:function(a){this.updateText(a)},getText:function(){return this.text},wait:function(c){var b=this,a;if(!b.waitTimer){a=b;c=c||{};b.updateText(c.text);b.waitTimer=Ext.TaskManager.start({run:function(d){var e=c.increment||10;d-=1;b.updateProgress(((((d+e)%e)+1)*(100/e))*0.01,null,c.animate)},interval:c.interval||1000,duration:c.duration,onStop:function(){if(c.fn){c.fn.apply(c.scope||b)}b.reset()},scope:a})}return b},isWaiting:function(){return this.waitTimer!==null},reset:function(a){var b=this;b.updateProgress(0);b.clearTimer();if(a===true){b.hide()}return b},clearTimer:function(){var a=this;if(a.waitTimer){a.waitTimer.onStop=null;Ext.TaskManager.stop(a.waitTimer);a.waitTimer=null}},onDestroy:function(){var b=this,a=b.bar;b.clearTimer();if(b.rendered){if(b.textEl.isComposite){b.textEl.clear()}Ext.destroyMembers(b,"textEl","progressBar");if(a&&b.animate){a.stopAnimation()}}b.callParent()}},0,["progressbar"],["component","progressbar","box"],{component:true,progressbar:true,box:true},["widget.progressbar"],0,[Ext,"ProgressBar"],0));(Ext.cmd.derive("Ext.ShadowPool",Ext.Base,{singleton:true,markup:(function(){return Ext.String.format('',Ext.baseCSSPrefix,Ext.isIE&&!Ext.supports.CSS3BoxShadow?"ie":"css")}()),shadows:[],pull:function(){var a=this.shadows.shift();if(!a){a=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,this.markup));a.autoBoxAdjust=false}return a},push:function(a){this.shadows.push(a)},reset:function(){var c=[].concat(this.shadows),b,a=c.length;for(b=0;b0;){p[d].hasListeners._incr_(m)}s=j[m]||(j[m]={});s=s[c]||(s[c]={});h=s[g.id]||(s[g.id]=[]);h.push(a)}}}}},match:function(c,a){var b=this.idProperty;if(b){return a==="*"||c[b]===a}return false},monitor:function(d){var b=this,a=d.isInstance?d:d.prototype,c=a.fireEventArgs;b.monitoredClasses.push(d);a.fireEventArgs=function(h,g){var e=c.apply(this,arguments);if(e!==false){e=b.dispatch(this,h,g)}return e}},unlisten:function(e){var b=this.bus,g,d,a,c;for(d in b){if(b.hasOwnProperty(d)&&(c=b[d])){for(a in c){g=c[a];delete g[e]}}}}},1,0,0,0,0,0,[Ext.app,"EventDomain"],0));(Ext.cmd.derive("Ext.app.domain.Component",Ext.app.EventDomain,{singleton:true,type:"component",constructor:function(){var a=this;a.callParent();a.monitor(Ext.Component)},match:function(b,a){return b.is(a)}},1,0,0,0,0,0,[Ext.app.domain,"Component"],0));(Ext.cmd.derive("Ext.app.EventBus",Ext.Base,{singleton:true,constructor:function(){var b=this,a=Ext.app.EventDomain.instances;b.callParent();b.domains=a;b.bus=a.component.bus},control:function(b,a){return this.domains.component.listen(b,a)},listen:function(d,b){var a=this.domains,c;for(c in d){if(d.hasOwnProperty(c)){a[c].listen(d[c],b)}}},unlisten:function(c){var a=Ext.app.EventDomain.instances,b;for(b in a){a[b].unlisten(c)}}},1,0,0,0,0,0,[Ext.app,"EventBus"],0));(Ext.cmd.derive("Ext.data.StoreManager",Ext.util.MixedCollection,{alternateClassName:["Ext.StoreMgr","Ext.data.StoreMgr","Ext.StoreManager"],singleton:true,register:function(){for(var a=0,b;(b=arguments[a]);a++){this.add(b)}},unregister:function(){for(var a=0,b;(b=arguments[a]);a++){this.remove(this.lookup(b))}},lookup:function(c){if(Ext.isArray(c)){var b=["field1"],e=!Ext.isArray(c[0]),g=c,d,a;if(e){g=[];for(d=0,a=c.length;d',' ,__field{#} = fields.map["{name}"]\n',"",";\n","return function(dest, source, record) {\n",'','{% var fieldAccessExpression = this.createFieldAccessExpression(values, "__field" + xindex, "source");'," if (fieldAccessExpression) { %}",' value = {[ this.createFieldAccessExpression(values, "__field" + xindex, "source") ]};\n','',' dest["{name}"] = value === undefined ? __field{#}.convert(__field{#}.defaultValue, record) : __field{#}.convert(value, record);\n',''," if (value === undefined) {\n"," if (me.applyDefaults) {\n",'',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',""," };\n"," } else {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," };\n",""," if (value !== undefined) {\n",'',' dest["{name}"] = __field{#}.convert(value, record);\n',"",' dest["{name}"] = value;\n',""," }\n","","{% } else { %}",'','',' dest["{name}"] = __field{#}.convert(__field{#}.defaultValue, record);\n',"",' dest["{name}"] = __field{#}.defaultValue\n',"","","{% } %}","",'',' if (record && (internalId = {[ this.createFieldAccessExpression({mapping: values.clientIdProp}, null, "source") ]})) {\n',' record.{["internalId"]} = internalId;\n'," }\n","","};"],buildRecordDataExtractor:function(){var c=this,a=c.model.prototype,b={clientIdProp:a.clientIdProperty,fields:a.fields.items};c.recordDataExtractorTemplate.createFieldAccessExpression=function(){return c.createFieldAccessExpression.apply(c,arguments)};return Ext.functionFactory(c.recordDataExtractorTemplate.apply(b)).call(c)},destroyReader:function(){var a=this;delete a.proxy;delete a.model;delete a.convertRecordData;delete a.getId;delete a.getTotal;delete a.getSuccess;delete a.getMessage}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.data.reader,"Reader",Ext.data,"Reader",Ext.data,"DataReader"],function(){var a=this.prototype;Ext.apply(a,{nullResultSet:new Ext.data.ResultSet({total:0,count:0,records:[],success:true,message:""}),recordDataExtractorTemplate:new Ext.XTemplate(a.recordDataExtractorTemplate)})}));(Ext.cmd.derive("Ext.data.reader.Json",Ext.data.reader.Reader,{alternateClassName:"Ext.data.JsonReader",root:"",metaProperty:"metaData",useSimpleAccessors:false,readRecords:function(b){var a=this,c;if(a.getMeta){c=a.getMeta(b);if(c){a.onMetaChange(c)}}else{if(b.metaData){a.onMetaChange(b.metaData)}}a.jsonData=b;return a.callParent([b])},getResponseData:function(a){var d,b;try{d=Ext.decode(a.responseText);return this.readRecords(d)}catch(c){b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:c.message});this.fireEvent("exception",this,a,b);Ext.Logger.warn("Unable to parse the JSON returned by the server");return b}},buildExtractors:function(){var b=this,a=b.metaProperty;b.callParent(arguments);if(b.root){b.getRoot=b.createAccessor(b.root)}else{b.getRoot=Ext.identityFn}if(a){b.getMeta=b.createAccessor(a)}},extractData:function(a){var e=this.record,d=[],c,b;if(e){c=a.length;if(!c&&Ext.isObject(a)){c=1;a=[a]}for(b=0;b=0){return Ext.functionFactory("obj","return obj"+(b>0?".":"")+c)}}return function(d){return d[c]}}}()),createFieldAccessExpression:(function(){var a=/[\[\.]/;return function(o,d,e){var b=o.mapping,m=b||b===0,c=m?b:o.name,p,g;if(b===false){return}if(typeof c==="function"){p=d+".mapping("+e+", this)"}else{if(this.useSimpleAccessors===true||((g=String(c).search(a))<0)){if(!m||isNaN(c)){c='"'+c+'"'}p=e+"["+c+"]"}else{if(g===0){p=e+c}else{var j=c.split("."),l=j.length,k=1,n=e+"."+j[0],h=[n];for(;k1){c[l]=d.internalId}}else{if(this.writeRecordId){e=g.get(d.idProperty)[this.nameProperty]||d.idProperty;c[e]=d.getId()}}return c},writeValue:function(e,g,b){var c=g[this.nameProperty],a=this.dateFormat||g.dateWriteFormat||g.dateFormat,d=b.get(g.name);if(c==null){c=g.name}if(g.serialize){e[c]=g.serialize(d,b)}else{if(g.type===Ext.data.Types.DATE&&a&&Ext.isDate(d)){e[c]=Ext.Date.format(d,a)}else{e[c]=d}}}},1,0,0,0,["writer.base"],0,[Ext.data.writer,"Writer",Ext.data,"DataWriter",Ext.data,"Writer"],0));(Ext.cmd.derive("Ext.data.writer.Json",Ext.data.writer.Writer,{alternateClassName:"Ext.data.JsonWriter",root:undefined,encode:false,allowSingle:true,expandData:false,getExpandedData:function(d){var b=d.length,e=0,k,a,g,c,h,l=function(j,m){var n={};n[j]=m;return n};for(;e0){h=k[a];for(;c>0;c--){h=l(g[c],h)}k[g[0]]=k[g[0]]||{};Ext.Object.merge(k[g[0]],h);delete k[a]}}}}return d},writeRecords:function(b,c){var a=this.root;if(this.expandData){c=this.getExpandedData(c)}if(this.allowSingle&&c.length===1){c=c[0]}if(this.encode){if(a){b.params[a]=Ext.encode(c)}else{}}else{b.jsonData=b.jsonData||{};if(a){b.jsonData[a]=c}else{b.jsonData=c}}return b}},0,0,0,0,["writer.json"],0,[Ext.data.writer,"Json",Ext.data,"JsonWriter"],0));(Ext.cmd.derive("Ext.data.proxy.Proxy",Ext.Base,{alternateClassName:["Ext.data.DataProxy","Ext.data.Proxy"],batchOrder:"create,update,destroy",batchActions:true,defaultReaderType:"json",defaultWriterType:"json",isProxy:true,isSynchronous:false,constructor:function(a){var b=this;a=a||{};b.proxyConfig=a;b.mixins.observable.constructor.call(b,a);if(b.model!==undefined&&!(b.model instanceof Ext.data.Model)){b.setModel(b.model)}else{if(b.reader){b.setReader(b.reader)}if(b.writer){b.setWriter(b.writer)}}},setModel:function(a,b){var c=this;c.model=Ext.ModelManager.getModel(a);c.setReader(this.reader);c.setWriter(this.writer);if(b&&c.store){c.store.setModel(c.model)}},getModel:function(){return this.model},setReader:function(a){var c=this,b=true,d=c.reader;if(a===undefined||typeof a=="string"){a={type:a};b=false}if(a.isReader){a.setModel(c.model)}else{if(b){a=Ext.apply({},a)}Ext.applyIf(a,{proxy:c,model:c.model,type:c.defaultReaderType});a=Ext.createByAlias("reader."+a.type,a)}if(a!==d&&a.onMetaChange){a.onMetaChange=Ext.Function.createSequence(a.onMetaChange,this.onMetaChange,this)}c.reader=a;return c.reader},getReader:function(){return this.reader},onMetaChange:function(a){this.fireEvent("metachange",this,a)},setWriter:function(c){var b=this,a=true;if(c===undefined||typeof c=="string"){c={type:c};a=false}if(!c.isWriter){if(a){c=Ext.apply({},c)}Ext.applyIf(c,{model:b.model,type:b.defaultWriterType});c=Ext.createByAlias("writer."+c.type,c)}b.writer=c;return b.writer},getWriter:function(){return this.writer},create:Ext.emptyFn,read:Ext.emptyFn,update:Ext.emptyFn,destroy:Ext.emptyFn,batch:function(p,m){var l=this,k=l.batchActions,h,c,g,d,e,n,b,o,j;if(p.operations===undefined){p={operations:p,listeners:m}}if(p.batch){if(Ext.isDefined(p.batch.runOperation)){h=Ext.applyIf(p.batch,{proxy:l,listeners:{}})}}else{p.batch={proxy:l,listeners:p.listeners||{}}}if(!h){h=new Ext.data.Batch(p.batch)}h.on("complete",Ext.bind(l.onBatchComplete,l,[p],0));g=l.batchOrder.split(",");d=g.length;for(n=0;n1){if(j.action=="update"||a[0].clientIdProperty){l=new Ext.util.MixedCollection();l.addAll(n);for(h=a.length;h--;){b=a[h];e=l.findBy(j.matchClientRec,b);k=b.copyFrom(e);if(m){c.push(k)}}}else{for(d=0,g=a.length;d0){b.create=g;h=true}if(d.length>0){b.update=d;h=true}if(a.length>0){b.destroy=a;h=true}if(h&&e.fireEvent("beforesync",b)!==false){c=c||{};e.proxy.batch(Ext.apply(c,{operations:b,listeners:e.getBatchListeners()}))}return e},getBatchListeners:function(){var b=this,a={scope:b,exception:b.onBatchException};if(b.batchUpdateMode=="operation"){a.operationcomplete=b.onBatchOperationComplete}else{a.complete=b.onBatchComplete}return a},save:function(){return this.sync.apply(this,arguments)},load:function(b){var c=this,a;b=Ext.apply({action:"read",filters:c.filters.items,sorters:c.getSorters()},b);c.lastOptions=b;a=new Ext.data.Operation(b);if(c.fireEvent("beforeload",c,a)!==false){c.loading=true;c.proxy.read(a,c.onProxyLoad,c)}return c},reload:function(a){return this.load(Ext.apply(this.lastOptions,a))},afterEdit:function(a,e){var d=this,b,c;if(d.autoSync&&!d.autoSyncSuspended){for(b=e.length;b--;){if(a.fields.get(e[b]).persist){c=true;break}}if(c){d.sync()}}d.onUpdate(a,Ext.data.Model.EDIT,e);d.fireEvent("update",d,a,Ext.data.Model.EDIT,e)},afterReject:function(a){this.onUpdate(a,Ext.data.Model.REJECT,null);this.fireEvent("update",this,a,Ext.data.Model.REJECT,null)},afterCommit:function(a,b){if(!b){b=null}this.onUpdate(a,Ext.data.Model.COMMIT,b);this.fireEvent("update",this,a,Ext.data.Model.COMMIT,b)},onUpdate:Ext.emptyFn,onIdChanged:function(c,d,b,a){this.fireEvent("idchanged",this,c,d,b,a)},destroyStore:function(){var a,b=this;if(!b.isDestroyed){b.clearListeners();if(b.storeId){Ext.data.StoreManager.unregister(b)}b.clearData();b.data=b.tree=b.sorters=b.filters=b.groupers=null;if(b.reader){b.reader.destroyReader()}b.proxy=b.reader=b.writer=null;b.isDestroyed=true;if(b.implicitModel){a=Ext.getClassName(b.model);Ext.undefine(a);Ext.ModelManager.unregisterType(a)}else{b.model=null}}},getState:function(){var e=this,c,a,b=!!e.groupers,g=[],h=[],d=[];if(b){e.groupers.each(function(j){g[g.length]=j.serialize();c=true})}if(e.sorters){e.sorters.each(function(j){if(b&&!e.groupers.contains(j)){h[h.length]=j.serialize();c=true}})}if(e.filters&&e.statefulFilters){e.filters.each(function(j){d[d.length]=j.serialize();c=true})}if(c){a={};if(g.length){a.groupers=g}if(h.length){a.sorters=h}if(d.length){a.filters=d}return a}},applyState:function(g){var e=this,c=!!e.sorters,b=!!e.groupers,a=!!e.filters,d;if(b&&g.groupers){e.groupers.clear();e.groupers.addAll(e.decodeGroupers(g.groupers))}if(c&&g.sorters){e.sorters.clear();e.sorters.addAll(e.decodeSorters(g.sorters))}if(a&&g.filters){e.filters.clear();e.filters.addAll(e.decodeFilters(g.filters))}if(c&&b){e.sorters.insert(0,e.groupers.getRange())}if(e.autoLoad&&(e.remoteSort||e.remoteGroup||e.remoteFilter)){if(e.autoLoad===true){e.reload()}else{e.reload(e.autoLoad)}}if(a&&e.filters.length&&!e.remoteFilter){e.filter();d=e.sortOnFilter}if(c&&e.sorters.length&&!e.remoteSort&&!d){e.sort()}},doSort:function(a){var b=this;if(b.remoteSort){b.load()}else{b.data.sortBy(a);b.fireEvent("datachanged",b);b.fireEvent("refresh",b)}b.fireEvent("sort",b,b.sorters.getRange())},clearData:Ext.emptyFn,getCount:Ext.emptyFn,getById:Ext.emptyFn,removeAll:Ext.emptyFn,isLoading:function(){return !!this.loading},suspendAutoSync:function(){this.autoSyncSuspended=true},resumeAutoSync:function(){this.autoSyncSuspended=false}},1,0,0,0,0,[["observable",Ext.util.Observable],["sortable",Ext.util.Sortable]],[Ext.data,"AbstractStore"],0));(Ext.cmd.derive("Ext.app.domain.Store",Ext.app.EventDomain,{singleton:true,type:"store",idProperty:"storeId",constructor:function(){var a=this;a.callParent();a.monitor(Ext.data.AbstractStore)}},1,0,0,0,0,0,[Ext.app.domain,"Store"],0));(Ext.cmd.derive("Ext.app.Controller",Ext.Base,{statics:{strings:{model:{getter:"getModel",upper:"Model"},view:{getter:"getView",upper:"View"},controller:{getter:"getController",upper:"Controller"},store:{getter:"getStore",upper:"Store"}},controllerRegex:/^(.*)\.controller\./,createGetter:function(a,b){return function(){return this[a](b)}},getGetterName:function(c,a){var d="get",e=c.split("."),g=e.length,b;for(b=0;b0){a=c.substring(0,b);g=c.substring(b+1)+"."+a}else{if(c.indexOf(".")>0&&(Ext.ClassManager.isCreated(c)||Ext.Loader.isAClassNameWithAKnownPrefix(c))){g=c}else{if(d){g=d+"."+e+"."+c;a=c}else{g=c}}}return{absoluteName:g,shortName:a}}},application:null,onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(n,h){var g=Ext.app.Controller,l=g.controllerRegex,o=[],m,e,o,k,j;k=n.prototype;m=Ext.getClassName(n);e=h.$namespace||Ext.app.getNamespace(m)||((j=l.exec(m))&&j[1]);if(e){k.$namespace=e}g.processDependencies(k,o,e,"model",h.models);g.processDependencies(k,o,e,"view",h.views);g.processDependencies(k,o,e,"store",h.stores);g.processDependencies(k,o,e,"controller",h.controllers);Ext.require(o,Ext.Function.pass(d,arguments,this))}},constructor:function(a){var b=this;b.mixins.observable.constructor.call(b,a);if(b.refs){b.ref(b.refs)}b.eventbus=Ext.app.EventBus;b.initAutoGetters()},initAutoGetters:function(){var b=this.self.prototype,c,a;for(c in b){a=b[c];if(a&&a["Ext.app.getter"]){a.call(this)}}},doInit:function(b){var a=this;if(!a._initialized){a.init(b);a._initialized=true}},finishInit:function(g){var d=this,e=d.controllers,b,c,a;if(d._initialized&&e&&e.length){for(c=0,a=e.length;c[hidden]");e=b.length;if(e!==c.lastHiddenCount){a.fireEvent("overflowchange",c.lastHiddenCount,e,b);c.lastHiddenCount=e}}},onRemove:Ext.emptyFn,getItem:function(a){return this.layout.owner.getComponent(a)},getOwnerType:function(a){var b;if(a.isToolbar){b="toolbar"}else{if(a.isTabBar){b="tabbar"}else{if(a.isMenu){b="menu"}else{b=a.getXType()}}}return b},getPrefixConfig:Ext.emptyFn,getSuffixConfig:Ext.emptyFn,getOverflowCls:function(){return""}},1,0,0,0,0,0,[Ext.layout.container.boxOverflow,"None",Ext.layout.boxOverflow,"None"],0));(Ext.cmd.derive("Ext.toolbar.Item",Ext.Component,{alternateClassName:"Ext.Toolbar.Item",enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn},0,["tbitem"],["tbitem","component","box"],{tbitem:true,component:true,box:true},["widget.tbitem"],0,[Ext.toolbar,"Item",Ext.Toolbar,"Item"],0));(Ext.cmd.derive("Ext.toolbar.Separator",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.Separator",baseCls:Ext.baseCSSPrefix+"toolbar-separator",focusable:false},0,["tbseparator"],["tbitem","component","box","tbseparator"],{tbitem:true,component:true,box:true,tbseparator:true},["widget.tbseparator"],0,[Ext.toolbar,"Separator",Ext.Toolbar,"Separator"],0));(Ext.cmd.derive("Ext.button.Manager",Ext.Base,{singleton:true,alternateClassName:"Ext.ButtonToggleManager",groups:{},pressedButton:null,buttonSelector:"."+Ext.baseCSSPrefix+"btn",init:function(){var a=this;if(!a.initialized){Ext.getDoc().on({keydown:a.onDocumentKeyDown,mouseup:a.onDocumentMouseUp,scope:a});a.initialized=true}},onDocumentKeyDown:function(c){var a=c.getKey(),b;if(a===c.SPACE||a===c.ENTER){b=c.getTarget(this.buttonSelector);if(b){Ext.getCmp(b.id).onClick(c)}}},onButtonMousedown:function(a,c){var b=this.pressedButton;if(b){b.onMouseUp(c)}this.pressedButton=a},onDocumentMouseUp:function(b){var a=this.pressedButton;if(a){a.onMouseUp(b);this.pressedButton=null}},toggleGroup:function(b,e){if(e){var d=this.groups[b.toggleGroup],c=d.length,a;for(a=0;a0){a.hideAll()}},a)},hideAll:function(){var c=this.active,b,a,d;if(c&&c.length>0){b=Ext.Array.slice(c.items);d=b.length;for(a=0;a50&&d.length>0&&!g.getTarget(b.menuSelector)){if(Ext.isIE9m&&!Ext.getDoc().contains(g.target)){c=false}if(c){b.hideAll()}}},register:function(b){var a=this;if(!a.active){a.init()}if(b.floating){a.menus[b.id]=b;b.on({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})}},get:function(b){var a=this.menus;if(typeof b=="string"){if(!a){return null}return a[b]}else{if(b.isMenu){return b}else{if(Ext.isArray(b)){return new Ext.menu.Menu({items:b})}else{return Ext.ComponentManager.create(b,"menu")}}}},unregister:function(d){var a=this,b=a.menus,c=a.active;delete b[d.id];c.remove(d);d.un({beforehide:a.onBeforeHide,hide:a.onHide,beforeshow:a.onBeforeShow,show:a.onShow,scope:a})},registerCheckable:function(c){var a=this.groups,b=c.group;if(b){if(!a[b]){a[b]=[]}a[b].push(c)}},unregisterCheckable:function(c){var a=this.groups,b=c.group;if(b){Ext.Array.remove(a[b],c)}},onCheckChange:function(d,g){var a=this.groups,c=d.group,b=0,j,e,h;if(c&&g){j=a[c];e=j.length;for(;b/,beginLayout:function(c){var b=this,a=b.owner,d=a.text;b.callParent(arguments);c.btnWrapContext=c.getEl("btnWrap");c.btnElContext=c.getEl("btnEl");c.btnInnerElContext=c.getEl("btnInnerEl");c.btnIconElContext=c.getEl("btnIconEl");if(d&&b.htmlRE.test(d)){c.isHtmlText=true;a.btnInnerEl.setStyle("line-height","normal");a.btnInnerEl.setStyle("padding-top","")}},beginLayoutCycle:function(b){var a=this.owner,c=this.lastWidthModel;this.callParent(arguments);if(c&&!this.lastWidthModel.shrinkWrap&&b.widthModel.shrinkWrap){a.btnWrap.setStyle("height","");a.btnEl.setStyle("height","");a.btnInnerEl.setStyle("line-height","")}},calculate:function(d){var h=this,c=h.owner,j=d.btnElContext,g=d.btnInnerElContext,m=d.btnWrapContext,e=Math.max,b,k,l,a;h.callParent(arguments);if(d.heightModel.shrinkWrap){l=c.btnEl.getHeight();if(d.isHtmlText){h.centerInnerEl(d,l);h.ieCenterIcon(d,l)}}else{b=d.getProp("height");if(b){k=b-d.getFrameInfo().height-d.getPaddingInfo().height;l=k;if((c.menu||c.split)&&c.arrowAlign==="bottom"){l-=m.getPaddingInfo().bottom}a=l;if((c.icon||c.iconCls||c.glyph)&&(c.iconAlign==="top"||c.iconAlign==="bottom")){a-=g.getPaddingInfo().height}m.setProp("height",e(0,k));j.setProp("height",e(0,l));if(d.isHtmlText){h.centerInnerEl(d,l)}else{g.setProp("line-height",e(0,a)+"px")}h.ieCenterIcon(d,l)}else{if(b!==0){h.done=false}}}},centerInnerEl:function(e,d){var c=this,b=e.btnInnerElContext,a=c.owner.btnInnerEl.getHeight();if(e.heightModel.shrinkWrap&&(da){b.setProp("padding-top",Math.round((d-a)/2)+b.getPaddingInfo().top)}}},ieCenterIcon:function(c,b){var a=this.owner.iconAlign;if((Ext.isIEQuirks||Ext.isIE6)&&(a==="left"||a==="right")){c.btnIconElContext.setHeight(b)}},publishInnerWidth:function(b,a){if(this.owner.getFrameInfo().table){b.btnInnerElContext.setWidth(a-b.getFrameInfo().width-b.getPaddingInfo().width-b.btnWrapContext.getPaddingInfo().width)}}},0,0,0,0,["layout.button"],0,[Ext.layout.component,"Button"],0));(Ext.cmd.derive("Ext.util.TextMetrics",Ext.Base,{statics:{shared:null,measure:function(a,d,e){var b=this,c=b.shared;if(!c){c=b.shared=new b(a,e)}c.bind(a);c.setFixedWidth(e||"auto");return c.getSize(d)},destroy:function(){var a=this;Ext.destroy(a.shared);a.shared=null}},constructor:function(a,d){var c=this,b=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"textmetrics"});c.measure=b;if(a){c.bind(a)}b.position("absolute");b.setLocalXY(-1000,-1000);b.hide();if(d){b.setWidth(d)}},getSize:function(c){var b=this.measure,a;b.update(c);a=b.getSize();b.update("");return a},bind:function(a){var b=this;b.el=Ext.get(a);b.measure.setStyle(b.el.getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))},setFixedWidth:function(a){this.measure.setWidth(a)},getWidth:function(a){this.measure.dom.style.width="auto";return this.getSize(a).width},getHeight:function(a){return this.getSize(a).height},destroy:function(){var a=this;a.measure.remove();delete a.el;delete a.measure}},1,0,0,0,0,0,[Ext.util,"TextMetrics"],function(){Ext.Element.addMethods({getTextWidth:function(c,b,a){return Ext.Number.constrain(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width,b||0,a||1000000)}})}));(Ext.cmd.derive("Ext.button.Button",Ext.Component,{alternateClassName:"Ext.Button",isButton:true,componentLayout:"button",hidden:false,disabled:false,pressed:false,tabIndex:0,enableToggle:false,menuAlign:"tl-bl?",showEmptyMenu:false,textAlign:"center",clickEvent:"click",preventDefault:true,handleMouseEvents:true,tooltipType:"qtip",baseCls:Ext.baseCSSPrefix+"btn",pressedCls:"pressed",overCls:"over",focusCls:"focus",menuActiveCls:"menu-active",hrefTarget:"_blank",childEls:["btnEl","btnWrap","btnInnerEl","btnIconEl"],renderTpl:[' {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",'','',""],scale:"small",allowedScales:["small","medium","large"],iconAlign:"left",arrowAlign:"right",arrowCls:"arrow",maskOnDisable:false,shrinkWrap:3,frame:true,_triggerRegion:{},initComponent:function(){var a=this;a.autoEl={tag:"a",role:"button",hidefocus:"on",unselectable:"on"};a.addCls("x-unselectable");a.callParent(arguments);a.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout","textchange","iconchange","glyphchange");if(a.menu){a.split=true;a.menu=Ext.menu.Manager.get(a.menu);a.menu.ownerButton=a}if(a.url){a.href=a.url}if(a.href&&!a.hasOwnProperty("preventDefault")){a.preventDefault=false}if(Ext.isString(a.toggleGroup)&&a.toggleGroup!==""){a.enableToggle=true}if(a.html&&!a.text){a.text=a.html;delete a.html}a.glyphCls=a.baseCls+"-glyph"},getActionEl:function(){return this.el},getFocusEl:function(){return this.el},onDisable:function(){this.callParent(arguments)},setComponentCls:function(){var b=this,a=b.getComponentCls();if(!Ext.isEmpty(b.oldCls)){b.removeClsWithUI(b.oldCls);b.removeClsWithUI(b.pressedCls)}b.oldCls=a;b.addClsWithUI(a)},getComponentCls:function(){var b=this,a;if(b.iconCls||b.icon||b.glyph){a=[b.text?"icon-text-"+b.iconAlign:"icon"]}else{if(b.text){a=["noicon"]}else{a=[]}}if(b.pressed){a[a.length]=b.pressedCls}return a},beforeRender:function(){var b=this,c=b.autoEl,a=b.getHref(),d=b.hrefTarget;if(!b.disabled){c.tabIndex=b.tabIndex}if(a){c.href=a;if(d){c.target=d}}b.callParent();b.oldCls=b.getComponentCls();b.addClsWithUI(b.oldCls);Ext.applyIf(b.renderData,b.getTemplateArgs())},onRender:function(){var c=this,d,a,b;c.doc=Ext.getDoc();c.callParent(arguments);a=c.el;if(c.tooltip){c.setTooltip(c.tooltip,true)}if(c.handleMouseEvents){b={scope:c,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousedown:c.onMouseDown};if(c.split){b.mousemove=c.onMouseMove}}else{b={scope:c}}if(c.menu){c.mon(c.menu,{scope:c,show:c.onMenuShow,hide:c.onMenuHide});c.keyMap=new Ext.util.KeyMap({target:c.el,key:Ext.EventObject.DOWN,handler:c.onDownKey,scope:c})}if(c.repeat){c.mon(new Ext.util.ClickRepeater(a,Ext.isObject(c.repeat)?c.repeat:{}),"click",c.onRepeatClick,c)}else{if(b[c.clickEvent]){d=true}else{b[c.clickEvent]=c.onClick}}c.mon(a,b);if(d){c.mon(a,c.clickEvent,c.onClick,c)}Ext.button.Manager.register(c)},getTemplateArgs:function(){var c=this,b=c.glyph,d=Ext._glyphFontFamily,a;if(typeof b==="string"){a=b.split("@");b=a[0];d=a[1]}return{innerCls:c.getInnerCls(),splitCls:c.getSplitCls(),iconUrl:c.icon,iconCls:c.iconCls,glyph:b,glyphCls:b?c.glyphCls:"",glyphFontFamily:d,text:c.text||" "}},setHref:function(a){this.href=a;this.el.dom.href=this.getHref()},getHref:function(){var b=this,a=b.href;return a?Ext.urlAppend(a,Ext.Object.toQueryString(Ext.apply({},b.params,b.baseParams))):false},setParams:function(a){this.params=a;this.el.dom.href=this.getHref()},getSplitCls:function(){var a=this;return a.split?(a.baseCls+"-"+a.arrowCls)+" "+(a.baseCls+"-"+a.arrowCls+"-"+a.arrowAlign):""},getInnerCls:function(){return this.textAlign?this.baseCls+"-inner-"+this.textAlign:""},setIcon:function(b){b=b||"";var c=this,a=c.btnIconEl,d=c.icon||"";c.icon=b;if(b!=d){if(a){a.setStyle("background-image",b?"url("+b+")":"");c.setComponentCls();if(c.didIconStateChange(d,b)){c.updateLayout()}}c.fireEvent("iconchange",c,d,b)}return c},setIconCls:function(b){b=b||"";var d=this,a=d.btnIconEl,c=d.iconCls||"";d.iconCls=b;if(c!=b){if(a){a.removeCls(c);a.addCls(b);d.setComponentCls();if(d.didIconStateChange(c,b)){d.updateLayout()}}d.fireEvent("iconchange",d,c,b)}return d},setGlyph:function(g){g=g||0;var e=this,b=e.btnIconEl,c=e.glyph,a,d;e.glyph=g;if(b){if(typeof g==="string"){d=g.split("@");g=d[0];a=d[1]||Ext._glyphFontFamily}if(!g){b.dom.innerHTML=""}else{if(c!=g){b.dom.innerHTML="&#"+g+";"}}if(a){b.setStyle("font-family",a)}}e.fireEvent("glyphchange",e,e.glyph,c);return e},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a||!c){b.clearTip()}if(c){if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.el.id},c));b.tooltip=c}else{b.el.dom.setAttribute(b.getTipAttr(),c)}}}else{b.tooltip=c}return b},setTextAlign:function(c){var b=this,a=b.btnEl;if(a){a.removeCls(b.baseCls+"-inner-"+b.textAlign);a.addCls(b.baseCls+"-inner-"+c)}b.textAlign=c;return b},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},clearTip:function(){var b=this,a=b.el;if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.unregister(a)}else{a.dom.removeAttribute(b.getTipAttr())}},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}if(a.menu&&a.destroyMenu!==false){Ext.destroy(a.menu)}Ext.destroy(a.btnInnerEl,a.repeater);a.callParent()},onDestroy:function(){var a=this;if(a.rendered){a.doc.un("mouseover",a.monitorMouseOver,a);delete a.doc;Ext.destroy(a.keyMap);delete a.keyMap}Ext.button.Manager.unregister(a);a.callParent()},setHandler:function(b,a){this.handler=b;this.scope=a;return this},setText:function(c){c=c||"";var b=this,a=b.text||"";if(c!=a){b.text=c;if(b.rendered){b.btnInnerEl.update(c||" ");b.setComponentCls();if(Ext.isStrict&&Ext.isIE8){b.el.repaint()}b.updateLayout()}b.fireEvent("textchange",b,a,c)}return b},didIconStateChange:function(a,c){var b=Ext.isEmpty(c);return Ext.isEmpty(a)?!b:b},getText:function(){return this.text},toggle:function(c,a){var b=this;c=c===undefined?!b.pressed:!!c;if(c!==b.pressed){if(b.rendered){b[c?"addClsWithUI":"removeClsWithUI"](b.pressedCls)}b.pressed=c;if(!a){b.fireEvent("toggle",b,c);Ext.callback(b.toggleHandler,b.scope||b,[b,c])}}return b},maybeShowMenu:function(){var a=this;if(a.menu&&!a.hasVisibleMenu()&&!a.ignoreNextClick){a.showMenu(true)}},showMenu:function(b){var a=this,c=a.menu;if(a.rendered){if(a.tooltip&&Ext.quickTipsActive&&a.getTipAttr()!="title"){Ext.tip.QuickTipManager.getQuickTip().cancelShow(a.el)}if(c.isVisible()){c.hide()}if(!b||a.showEmptyMenu||c.items.getCount()>0){c.showBy(a.el,a.menuAlign)}}return a},hideMenu:function(){if(this.hasVisibleMenu()){this.menu.hide()}return this},hasVisibleMenu:function(){var a=this.menu;return a&&a.rendered&&a.isVisible()},onRepeatClick:function(a,b){this.onClick(b)},onClick:function(b){var a=this;if(a.preventDefault||(a.disabled&&a.getHref())&&b){b.preventDefault()}if(b.type!=="keydown"&&b.button!==0){return}if(!a.disabled){a.doToggle();a.maybeShowMenu();a.fireHandler(b)}},fireHandler:function(c){var b=this,a=b.handler;if(b.fireEvent("click",b,c)!==false){if(a){a.call(b.scope||b,b,c)}}},doToggle:function(){var a=this;if(a.enableToggle&&(a.allowDepress!==false||!a.pressed)){a.toggle()}},onMouseOver:function(b){var a=this;if(!a.disabled&&!b.within(a.el,true,true)){a.onMouseEnter(b)}},onMouseOut:function(b){var a=this;if(!b.within(a.el,true,true)){if(a.overMenuTrigger){a.onMenuTriggerOut(b)}a.onMouseLeave(b)}},onMouseMove:function(g){var c=this,b=c.el,d=c.overMenuTrigger,h,a;if(c.split){h=(c.arrowAlign==="right")?g.getX()-c.getX():g.getY()-b.getY();a=c.getTriggerRegion();if(h>a.begin&&h(None)',constructor:function(b){var a=this;a.callParent(arguments);a.triggerButtonCls=a.triggerButtonCls||Ext.baseCSSPrefix+"box-menu-after";a.menuItems=[]},beginLayout:function(a){this.callParent(arguments);this.clearOverflow(a)},beginLayoutCycle:function(b,a){this.callParent(arguments);if(!a){this.clearOverflow(b);this.layout.cacheChildItems(b)}},onRemove:function(a){Ext.Array.remove(this.menuItems,a)},getSuffixConfig:function(){var d=this,c=d.layout,a=c.owner,b=a.id;d.menu=new Ext.menu.Menu({listeners:{scope:d,beforeshow:d.beforeMenuShow}});d.menuTrigger=new Ext.button.Button({id:b+"-menu-trigger",cls:Ext.layout.container.Box.prototype.innerCls+" "+d.triggerButtonCls+" "+Ext.baseCSSPrefix+"toolbar-item",plain:a.usePlainButtons,ownerCt:a,ownerLayout:c,iconCls:Ext.baseCSSPrefix+d.getOwnerType(a)+"-more-icon",ui:a instanceof Ext.toolbar.Toolbar?"default-toolbar":"default",menu:d.menu,showEmptyMenu:true,getSplitCls:function(){return""}});return d.menuTrigger.getRenderTree()},getOverflowCls:function(){return Ext.baseCSSPrefix+this.layout.direction+"-box-overflow-body"},handleOverflow:function(d){var c=this,b=c.layout,g=b.names,e=d.state.boxPlan,a=[null,null];c.showTrigger(d);if(c.layout.direction!=="vertical"){a[g.heightIndex]=(e.maxSize-c.menuTrigger[g.getHeight]())/2;c.menuTrigger.setPosition.apply(c.menuTrigger,a)}return{reservedSpace:c.triggerTotalWidth}},captureChildElements:function(){var a=this,c=a.menuTrigger,b=a.layout.names;if(c.rendering){c.finishRender();a.triggerTotalWidth=c[b.getWidth]()+c.el.getMargin(b.parallelMargins)}},_asLayoutRoot:{isRoot:true},clearOverflow:function(h){var g=this,b=g.menuItems,e,c=0,d=b.length,a=g.layout.owner,j=g._asLayoutRoot;a.suspendLayouts();g.captureChildElements();g.hideTrigger();a.resumeLayouts();for(;cb){j=q.target;o.menuItems.push(j);j.hide()}}a.resumeLayouts()},hideTrigger:function(){var a=this.menuTrigger;if(a){a.hide()}},beforeMenuShow:function(j){var h=this,b=h.menuItems,d=0,a=b.length,g,e,c=function(l,k){return l.isXType("buttongroup")&&!(k instanceof Ext.toolbar.Separator)};j.suspendLayouts();h.clearMenu();j.removeAll();for(;d=this.getMaxScrollPosition()},scrollTo:function(a,b){var g=this,e=g.layout,h=e.names,d=g.getScrollPosition(),c=Ext.Number.constrain(a,0,g.getMaxScrollPosition());if(c!=d&&!g.scrolling){g.scrollPosition=NaN;if(b===undefined){b=g.animateScroll}e.innerCt[h.scrollTo](h.beforeScrollX,c,b?g.getScrollAnim():false);if(b){g.scrolling=true}else{g.updateScrollButtons()}g.fireEvent("scroll",g,c,b?g.getScrollAnim():false)}},scrollToItem:function(k,b){var j=this,e=j.layout,c=e.owner,h=e.names,a,d,g;k=j.getItem(k);if(k!==undefined){if(k==c.items.first()){g=0}else{if(k===c.items.last()){g=j.getMaxScrollPosition()}else{a=j.getItemVisibility(k);if(!a.fullyVisible){d=k.getBox(false,true);g=d[h.x];if(a.hiddenEnd){g-=(j.layout.innerCt[h.getWidth]()-d[h.width])}}}}if(g!==undefined){j.scrollTo(g,b)}}},getItemVisibility:function(k){var h=this,b=h.getItem(k).getBox(true,true),c=h.layout,g=c.names,e=b[g.x],d=e+b[g.width],a=h.getScrollPosition(),j=a+c.innerCt[g.getWidth]();return{hiddenStart:ej,fullyVisible:e>a&&d=a.x&&b.right<=a.right&&b.y>=a.y&&b.bottom<=a.bottom)},intersect:function(h){var g=this,d=Math.max(g.y,h.y),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.x,h.x);if(a>d&&e>c){return new this.self(d,e,a,c)}else{return false}},union:function(h){var g=this,d=Math.min(g.y,h.y),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.x,h.x);return new this.self(d,e,a,c)},constrainTo:function(b){var a=this,c=Ext.Number.constrain;a.top=a.y=c(a.top,b.y,b.bottom);a.bottom=c(a.bottom,b.y,b.bottom);a.left=a.x=c(a.left,b.x,b.right);a.right=c(a.right,b.x,b.right);return a},adjust:function(d,g,a,c){var e=this;e.top=e.y+=d;e.left=e.x+=c;e.right+=g;e.bottom+=a;return e},getOutOfBoundOffset:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.getOutOfBoundOffsetX(b)}else{return this.getOutOfBoundOffsetY(b)}}else{b=a;var c=new Ext.util.Offset();c.x=this.getOutOfBoundOffsetX(b.x);c.y=this.getOutOfBoundOffsetY(b.y);return c}},getOutOfBoundOffsetX:function(a){if(a<=this.x){return this.x-a}else{if(a>=this.right){return this.right-a}}return 0},getOutOfBoundOffsetY:function(a){if(a<=this.y){return this.y-a}else{if(a>=this.bottom){return this.bottom-a}}return 0},isOutOfBound:function(a,b){if(!Ext.isObject(a)){if(a=="x"){return this.isOutOfBoundX(b)}else{return this.isOutOfBoundY(b)}}else{b=a;return(this.isOutOfBoundX(b.x)||this.isOutOfBoundY(b.y))}},isOutOfBoundX:function(a){return(athis.right)},isOutOfBoundY:function(a){return(athis.bottom)},restrict:function(b,d,a){if(Ext.isObject(b)){var c;a=d;d=b;if(d.copy){c=d.copy()}else{c={x:d.x,y:d.y}}c.x=this.restrictX(d.x,a);c.y=this.restrictY(d.y,a);return c}else{if(b=="x"){return this.restrictX(d,a)}else{return this.restrictY(d,a)}}},restrictX:function(b,a){if(!a){a=1}if(b<=this.x){b-=(b-this.x)*a}else{if(b>=this.right){b-=(b-this.right)*a}}return b},restrictY:function(b,a){if(!a){a=1}if(b<=this.y){b-=(b-this.y)*a}else{if(b>=this.bottom){b-=(b-this.bottom)*a}}return b},getSize:function(){return{width:this.right-this.x,height:this.bottom-this.y}},copy:function(){return new this.self(this.y,this.right,this.bottom,this.x)},copyFrom:function(b){var a=this;a.top=a.y=a[1]=b.y;a.right=b.right;a.bottom=b.bottom;a.left=a.x=a[0]=b.x;return this},toString:function(){return"Region["+this.top+","+this.right+","+this.bottom+","+this.left+"]"},translateBy:function(a,c){if(arguments.length==1){c=a.y;a=a.x}var b=this;b.top=b.y+=c;b.right+=a;b.bottom+=c;b.left=b.x+=a;return b},round:function(){var a=this;a.top=a.y=Math.round(a.y);a.right=Math.round(a.right);a.bottom=Math.round(a.bottom);a.left=a.x=Math.round(a.x);return a},equals:function(a){return(this.top==a.top&&this.right==a.right&&this.bottom==a.bottom&&this.left==a.left)}},3,0,0,0,0,0,[Ext.util,"Region"],0));(Ext.cmd.derive("Ext.dd.DragDropManager",Ext.Base,{singleton:true,alternateClassName:["Ext.dd.DragDropMgr","Ext.dd.DDM"],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,notifyOccluded:false,dragCls:Ext.baseCSSPrefix+"dd-drag-current",_execOnAll:function(c,b){var d,a,e;for(d in this.ids){for(a in this.ids[d]){e=this.ids[d][a];if(!this.isTypeOfDD(e)){continue}e[c].apply(e,b)}}},_onLoad:function(){this.init();var a=Ext.EventManager;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(a){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(b,a){if(!this.initialized){this.init()}if(!this.ids[a]){this.ids[a]={}}this.ids[a][b.id]=b},removeDDFromGroup:function(c,a){if(!this.ids[a]){this.ids[a]={}}var b=this.ids[a];if(b&&b[c.id]){delete b[c.id]}},_remove:function(b){for(var a in b.groups){if(a&&this.ids[a]&&this.ids[a][b.id]){delete this.ids[a][b.id]}}delete this.handleIds[b.id]},regHandle:function(b,a){if(!this.handleIds[b]){this.handleIds[b]={}}this.handleIds[b][a]=a},isDragDrop:function(a){return(this.getDDById(a))?true:false},getRelated:function(g,b){var e=[],d,c,a;for(d in g.groups){for(c in this.ids[d]){a=this.ids[d][c];if(!this.isTypeOfDD(a)){continue}if(!b||a.isTarget){e[e.length]=a}}}return e},isLegalTarget:function(e,d){var b=this.getRelated(e,true),c,a;for(c=0,a=b.length;cc.clickPixelThresh||a>c.clickPixelThresh){c.startDrag(c.startX,c.startY)}}if(c.dragThreshMet){d.b4Drag(g);d.onDrag(g);if(!d.moveOnly){c.fireEvents(g,false)}}c.stopEvent(g);return true},fireEvents:function(u,m){var w=this,g=w.dragCurrent,c,o,s=u.getPoint(),d,l,n=[],h=[],k=[],a=[],v=[],t=[],j,b,q,r,p;if(!g||g.isLocked()){return}if(!w.notifyOccluded&&(!Ext.supports.PointerEvents||Ext.isIE10m||Ext.isOpera)&&!(g.deltaX<0||g.deltaY<0)){c=g.getDragEl();o=c.style.top;c.style.top="-10000px";j=u.getXY();u.target=document.elementFromPoint(j[0],j[1]);c.style.top=o}for(q in w.dragOvers){d=w.dragOvers[q];if(!w.isTypeOfDD(d)){continue}if(w.notifyOccluded){if(!this.isOverTarget(s,d,w.mode)){k.push(d)}}else{if(!u.within(d.getEl())){k.push(d)}}h[q]=true;delete w.dragOvers[q]}for(p in g.groups){if("string"!=typeof p){continue}for(q in w.ids[p]){d=w.ids[p][q];if(w.isTypeOfDD(d)&&(l=d.getEl())&&(d.isTarget)&&(!d.isLocked())&&(Ext.fly(l).isVisible(true))&&((d!=g)||(g.ignoreSelf===false))){if(w.notifyOccluded){if((d.zIndex=w.getZIndex(l))!==-1){b=true}n.push(d)}else{if(u.within(d.getEl())){n.push(d);break}}}}}if(b){Ext.Array.sort(n,w.byZIndex)}for(q=0,r=n.length;q','
    ',"{%this.renderBody(out, values)%}","
    ","","{%if (oh.getSuffixConfig!==Ext.emptyFn) {","if(oc=oh.getSuffixConfig())dh.generateMarkup(oc, out)","}%}",{disableFormats:true,definitions:"var dh=Ext.DomHelper;"}],constructor:function(a){var c=this,b;c.callParent(arguments);c.flexSortFn=Ext.Function.bind(c.flexSort,c);c.initOverflowHandler();b=typeof c.padding;if(b=="string"||b=="number"){c.padding=Ext.util.Format.parseBox(c.padding);c.padding.height=c.padding.top+c.padding.bottom;c.padding.width=c.padding.left+c.padding.right}},_percentageRe:/^\s*(\d+(?:\.\d*)?)\s*[%]\s*$/,getItemSizePolicy:function(p,q){var l=this,j=l.sizePolicy,h=l.align,g=p.flex,n=h,k=l.names,b=p[k.width],o=p[k.height],d=l._percentageRe,c=d.test(b),e=(h=="stretch"),a=(h=="stretchmax"),m=l.constrainAlign;if(!q&&(e||g||c||(m&&!a))){q=l.owner.getSizeModel()}if(e){if(!d.test(o)&&q[k.height].shrinkWrap){n="stretchmax"}}else{if(!a){if(d.test(o)){n="stretch"}else{if(m&&!q[k.height].shrinkWrap){n="stretchmax"}else{n=""}}}}if(g||c){if(!q[k.width].shrinkWrap){j=j.flex}}return j[n]},flexSort:function(n,m){var k=this.names.maxWidth,e=this.names.minWidth,l=Infinity,j=n.target,q=m.target,r=0,c,o,h,d,p,g;h=j[k]||l;d=q[k]||l;c=j[e]||0;o=q[e]||0;p=isFinite(c)||isFinite(o);g=isFinite(h)||isFinite(d);if(p||g){if(g){r=h-d}if(r===0&&p){r=o-c}}return r},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},roundFlex:function(a){return Math.ceil(a)},beginCollapse:function(b){var a=this;if(a.direction==="vertical"&&b.collapsedVertical()){b.collapseMemento.capture(["flex"]);delete b.flex}else{if(a.direction==="horizontal"&&b.collapsedHorizontal()){b.collapseMemento.capture(["flex"]);delete b.flex}}},beginExpand:function(a){a.collapseMemento.restore(["flex"])},beginLayout:function(d){var c=this,a=c.owner,g=a.stretchMaxPartner,b=c.innerCt.dom.style,e=c.names;d.boxNames=e;c.overflowHandler.beginLayout(d);if(typeof g==="string"){g=Ext.getCmp(g)||a.query(g)[0]}d.stretchMaxPartner=g&&d.context.getCmp(g);c.callParent(arguments);d.innerCtContext=d.getEl("innerCt",c);c.scrollParallel=a.scrollFlags[e.x];c.scrollPerpendicular=a.scrollFlags[e.y];if(c.scrollParallel){c.scrollPos=a.getTargetEl().dom[e.scrollLeft]}b.width="";b.height=""},beginLayoutCycle:function(e,a){var d=this,h=d.align,g=e.boxNames,b=d.pack,c=g.heightModel;d.overflowHandler.beginLayoutCycle(e,a);d.callParent(arguments);e.parallelSizeModel=e[g.widthModel];e.perpendicularSizeModel=e[c];e.boxOptions={align:h={stretch:h=="stretch",stretchmax:h=="stretchmax",center:h==g.center,bottom:h==g.afterY},pack:b={center:b=="center",end:b=="end"}};if(h.stretch&&e.perpendicularSizeModel.shrinkWrap){h.stretchmax=true;h.stretch=false}h.nostretch=!(h.stretch||h.stretchmax);if(e.parallelSizeModel.shrinkWrap){b.center=b.end=false}d.cacheFlexes(e);d.targetEl.setWidth(20000)},cacheFlexes:function(k){var u=this,l=k.boxNames,a=l.widthModel,d=l.heightModel,c=k.boxOptions.align.nostretch,o=0,b=k.childItems,q=b.length,s=[],m=0,j=l.minWidth,g=u._percentageRe,r=0,t=0,e,n,p,h;while(q--){n=b[q];e=n.target;if(n[a].calculated){n.flex=p=e.flex;if(p){o+=p;s.push(n);m+=e[j]||0}else{h=g.exec(e[l.width]);n.percentageParallel=parseFloat(h[1])/100;++r}}if(c&&n[d].calculated){h=g.exec(e[l.height]);n.percentagePerpendicular=parseFloat(h[1])/100;++t}}k.flexedItems=s;k.flexedMinSize=m;k.totalFlex=o;k.percentageWidths=r;k.percentageHeights=t;Ext.Array.sort(s,u.flexSortFn)},calculate:function(e){var c=this,b=c.getContainerSize(e),h=e.boxNames,d=e.state,g=d.boxPlan||(d.boxPlan={}),a=e.targetContext;g.targetSize=b;if(!e.parallelSizeModel.shrinkWrap&&!b[h.gotWidth]){c.done=false;return}if(!d.parallelDone){d.parallelDone=c.calculateParallel(e,h,g)}if(!d.perpendicularDone){d.perpendicularDone=c.calculatePerpendicular(e,h,g)}if(d.parallelDone&&d.perpendicularDone){if(c.owner.dock&&(Ext.isIE7m||Ext.isIEQuirks)&&!c.owner.width&&!c.horizontal){g.isIEVerticalDock=true;g.calculatedWidth=g.maxSize+e.getPaddingInfo().width+e.getFrameInfo().width;if(a!==e){g.calculatedWidth+=a.getPaddingInfo().width}}c.publishInnerCtSize(e,c.reserveOffset?c.availableSpaceOffset:0);if(c.done&&(e.childItems.length>1||e.stretchMaxPartner)&&e.boxOptions.align.stretchmax&&!d.stretchMaxDone){c.calculateStretchMax(e,h,g);d.stretchMaxDone=true}c.overflowHandler.calculate(e)}else{c.done=false}},calculateParallel:function(k,n,b){var F=this,z=n.width,a=k.childItems,s=n.beforeX,d=n.afterX,q=n.setWidth,A=a.length,x=k.flexedItems,r=x.length,v=k.boxOptions.pack,m=F.padding,h=b.targetSize[z],B=0,e=m[s],E=e+m[d]+F.scrollOffset+(F.reserveOffset?F.availableSpaceOffset:0),w=Ext.getScrollbarSize()[n.width],u,l,g,y,o,t,D,p,C,c,j;if(w&&F.scrollPerpendicular&&k.parallelSizeModel.shrinkWrap&&!k.boxOptions.align.stretch&&!k.perpendicularSizeModel.shrinkWrap){if(!k.state.perpendicularDone){return false}C=true}for(u=0;ub.targetSize[n.height])){p+=w;k[n.hasOverflowY]=true;k.target.componentLayout[n.setWidthInDom]=true;k[n.invalidateScrollY]=Ext.isStrict&&Ext.isIE8}k[n.setContentWidth](p);return true},calculatePerpendicular:function(u,K,z){var t=this,d=u.perpendicularSizeModel.shrinkWrap,b=z.targetSize,j=u.childItems,y=j.length,m=Math.max,l=K.height,n=K.setHeight,h=K.beforeY,s=K.y,H=t.padding,k=H[h],o=b[l]-k-H[K.afterY],E=u.boxOptions.align,p=E.stretch,q=E.stretchmax,N=E.center,M=E.bottom,G=t.constrainAlign,F=0,B=0,D=t.onBeforeConstrainInvalidateChild,A=t.onAfterConstrainInvalidateChild,a=Ext.getScrollbarSize().height,x,I,C,v,w,c,r,e,L,J,g;if(p||((N||M)&&!d)){if(isNaN(o)){return false}}if(t.scrollParallel&&z.tooNarrow){if(d){J=true}else{o-=a;z.targetSize[l]-=a}}if(p){c=o}else{for(I=0;Io){r.invalidate({before:D,after:A,layout:t,childHeight:o,names:K});u.state.parallelDone=false}if(isNaN(F=m(F,C+v,r.target[K.minHeight]||0))){return false}}if(J){F+=a;u[K.hasOverflowX]=true;u.target.componentLayout[K.setHeightInDom]=true;u[K.invalidateScrollX]=Ext.isStrict&&Ext.isIE8}e=u.stretchMaxPartner;if(e){u.setProp("maxChildHeight",F);L=e.childItems;if(L&&L.length){F=m(F,e.getProp("maxChildHeight"));if(isNaN(F)){return false}}}u[K.setContentHeight](F+t.padding[l]+u.targetContext.getPaddingInfo()[l]);if(J){F-=a}z.maxSize=F;if(q){c=F}else{if(N||M||B){if(G){c=d?F:o}else{c=d?F:m(o,F)}c-=u.innerCtContext.getBorderInfo()[l]}}}for(I=0;I0){x=k+Math[t.alignRoundingMethod](w/2)}}else{if(M){x=m(0,c-x-r.props[l])}}}r.setProp(s,x)}return true},onBeforeConstrainInvalidateChild:function(b,a){var c=a.names.heightModel;if(!b[c].constrainedMin){b[c]=Ext.layout.SizeModel.calculated}},onAfterConstrainInvalidateChild:function(b,a){var c=a.names;b.setProp(c.beforeY,0);if(b[c.heightModel].calculated){b[c.setHeight](a.childHeight)}},calculateStretchMax:function(c,k,m){var l=this,h=k.height,n=k.width,g=c.childItems,a=g.length,p=m.maxSize,o=l.onBeforeStretchMaxInvalidateChild,e=l.onAfterStretchMaxInvalidateChild,q,j,d,b;for(d=0;d":{xtype:"tbfill",height:0}},1:{"->":{xtype:"tbfill",width:0}}}},initComponent:function(){var a=this;if(!a.layout&&a.enableOverflow){a.layout={overflowHandler:"Menu"}}if(a.dock==="right"||a.dock==="left"){a.vertical=true}a.layout=Ext.applyIf(Ext.isString(a.layout)?{type:a.layout}:a.layout||{},{type:a.vertical?"vbox":"hbox",align:a.vertical?"stretchmax":"middle"});if(a.vertical){a.addClsWithUI("vertical")}if(a.ui==="footer"){a.ignoreBorderManagement=true}a.callParent();a.addEvents("overflowchange")},getRefItems:function(a){var e=this,b=e.callParent(arguments),d=e.layout,c;if(a&&e.enableOverflow){c=d.overflowHandler;if(c&&c.menu){b=b.concat(c.menu.getRefItems(a))}}return b},lookupComponent:function(e){var d=arguments;if(typeof e=="string"){var b=Ext.toolbar.Toolbar,a=b.shortcutsHV[this.vertical?1:0][e]||b.shortcuts[e];if(typeof a=="string"){e={xtype:a}}else{if(a){e=Ext.apply({},a)}else{e={xtype:"tbtext",text:e}}}this.applyDefaults(e);d=[e]}return this.callParent(d)},applyDefaults:function(a){if(!Ext.isString(a)){a=this.callParent(arguments)}return a},trackMenu:function(c,a){if(this.trackMenus&&c.menu){var d=a?"mun":"mon",b=this;b[d](c,"mouseover",b.onButtonOver,b);b[d](c,"menushow",b.onButtonMenuShow,b);b[d](c,"menuhide",b.onButtonMenuHide,b)}},onBeforeAdd:function(b){var c=this,a=b.isButton;if(a&&c.defaultButtonUI&&b.ui==="default"&&!b.hasOwnProperty("ui")){b.ui=c.defaultButtonUI}else{if((a||b.isFormField)&&c.ui!=="footer"){b.ui=b.ui+"-toolbar";b.addCls(b.baseCls+"-toolbar")}}if(b instanceof Ext.toolbar.Separator){b.setUI((c.vertical)?"vertical":"horizontal")}c.callParent(arguments)},onAdd:function(a){this.callParent(arguments);this.trackMenu(a)},onRemove:function(a){this.callParent(arguments);this.trackMenu(a,true)},getChildItemsToDisable:function(){return this.items.getRange()},onButtonOver:function(a){if(this.activeMenuBtn&&this.activeMenuBtn!=a){this.activeMenuBtn.hideMenu();a.showMenu();this.activeMenuBtn=a}},onButtonMenuShow:function(a){this.activeMenuBtn=a},onButtonMenuHide:function(a){delete this.activeMenuBtn}},0,["toolbar"],["toolbar","component","container","box"],{toolbar:true,component:true,container:true,box:true},["widget.toolbar"],0,[Ext.toolbar,"Toolbar",Ext,"Toolbar"],0));(Ext.cmd.derive("Ext.layout.component.Dock",Ext.layout.component.Component,{alternateClassName:"Ext.layout.component.AbstractDock",type:"dock",horzAxisProps:{name:"horz",oppositeName:"vert",dockBegin:"left",dockEnd:"right",horizontal:true,marginBegin:"margin-left",maxSize:"maxWidth",minSize:"minWidth",pos:"x",setSize:"setWidth",shrinkWrapDock:"shrinkWrapDockWidth",size:"width",sizeModel:"widthModel"},vertAxisProps:{name:"vert",oppositeName:"horz",dockBegin:"top",dockEnd:"bottom",horizontal:false,marginBegin:"margin-top",maxSize:"maxHeight",minSize:"minHeight",pos:"y",setSize:"setHeight",shrinkWrapDock:"shrinkWrapDockHeight",size:"height",sizeModel:"heightModel"},initializedBorders:-1,horizontalCollapsePolicy:{width:true,x:true},verticalCollapsePolicy:{height:true,y:true},finishRender:function(){var b=this,c,a;b.callParent();c=b.getRenderTarget();a=b.getDockedItems();b.finishRenderItems(c,a)},isItemBoxParent:function(a){return true},isItemShrinkWrap:function(a){return true},noBorderClasses:[Ext.baseCSSPrefix+"docked-noborder-top",Ext.baseCSSPrefix+"docked-noborder-right",Ext.baseCSSPrefix+"docked-noborder-bottom",Ext.baseCSSPrefix+"docked-noborder-left"],noBorderClassesSides:{top:Ext.baseCSSPrefix+"docked-noborder-top",right:Ext.baseCSSPrefix+"docked-noborder-right",bottom:Ext.baseCSSPrefix+"docked-noborder-bottom",left:Ext.baseCSSPrefix+"docked-noborder-left"},borderWidthProps:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},handleItemBorders:function(){var m=this,a=m.owner,l,q,h=m.lastDockedItems,g=m.borders,b=a.dockedItems.generation,c=m.noBorderClassesSides,n=m.borderWidthProps,e,k,p,o,j,d=m.collapsed;if(m.initializedBorders==b||(a.border&&!a.manageBodyBorders)){return}m.initializedBorders=b;m.collapsed=false;m.lastDockedItems=q=m.getLayoutItems();m.collapsed=d;l={top:[],right:[],bottom:[],left:[]};for(e=0,k=q.length;ed){h=s.constrainedMax;o=d}else{if(kd){g=s.constrainedMax;n=d}else{if(k':"",'
    {bodyCls}',' {baseCls}-body-{ui}',' {parent.baseCls}-body-{parent.ui}-{.}','{childElCls}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values);%}","
    ","{% this.renderDockedItems(out,values,1); %}"],bodyPosProps:{x:"x",y:"y"},border:true,emptyArray:[],initComponent:function(){this.initBorderProps();this.callParent()},initBorderProps:function(){var a=this;if(a.frame&&a.border&&a.bodyBorder===undefined){a.bodyBorder=false}if(a.frame&&a.border&&(a.bodyBorder===false||a.bodyBorder===0)){a.manageBodyBorders=true}},beforeDestroy:function(){this.destroyDockedItems();this.callParent()},initItems:function(){this.callParent();this.initDockingItems()},initRenderData:function(){var a=this,b=a.callParent();a.initBodyStyles();a.protoBody.writeTo(b);delete a.protoBody;return b},getComponent:function(a){var b=this.callParent(arguments);if(b===undefined&&!Ext.isNumber(a)){b=this.getDockedComponent(a)}return b},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({cls:b.bodyCls,style:b.bodyStyle,clsProp:"bodyCls",styleProp:"bodyStyle",styleIsText:true})}return a},initBodyStyles:function(){var b=this,a=b.getProtoBody();if(b.bodyPadding!==undefined){if(b.layout.managePadding){a.setStyle("padding",0)}else{a.setStyle("padding",this.unitizeBox((b.bodyPadding===true)?5:b.bodyPadding))}}b.initBodyBorder()},initBodyBorder:function(){var a=this;if(a.frame&&a.bodyBorder){if(!Ext.isNumber(a.bodyBorder)){a.bodyBorder=1}a.getProtoBody().setStyle("border-width",this.unitizeBox(a.bodyBorder))}},getCollapsedDockedItems:function(){var a=this;return a.header===false||a.collapseMode=="placeholder"?a.emptyArray:[a.getReExpander()]},setBodyStyle:function(b,d){var c=this,a=c.rendered?c.body:c.getProtoBody();if(Ext.isFunction(b)){b=b()}if(arguments.length==1){if(Ext.isString(b)){b=Ext.Element.parseStyles(b)}a.setStyle(b)}else{a.setStyle(b,d)}return c},addBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.addCls(b);return c},removeBodyCls:function(b){var c=this,a=c.rendered?c.body:c.getProtoBody();a.removeCls(b);return c},addUIClsToElement:function(b){var c=this,a=c.callParent(arguments);c.addBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},removeUIClsFromElement:function(b){var c=this,a=c.callParent(arguments);c.removeBodyCls([Ext.baseCSSPrefix+b,c.baseCls+"-body-"+b,c.baseCls+"-body-"+c.ui+"-"+b]);return a},addUIToElement:function(){var a=this;a.callParent(arguments);a.addBodyCls(a.baseCls+"-body-"+a.ui)},removeUIFromElement:function(){var a=this;a.callParent(arguments);a.removeBodyCls(a.baseCls+"-body-"+a.ui)},getTargetEl:function(){return this.body},applyTargetCls:function(a){this.getProtoBody().addCls(a)},getRefItems:function(a){var b=this.callParent(arguments);return this.getDockingRefItems(a,b)},setupRenderTpl:function(a){this.callParent(arguments);this.setupDockingRenderTpl(a)}},0,0,["component","container","box"],{component:true,container:true,box:true},0,[["docking",Ext.container.DockingContainer]],[Ext.panel,"AbstractPanel"],0));(Ext.cmd.derive("Ext.panel.Header",Ext.container.Container,{isHeader:true,defaultType:"tool",indicateDrag:false,weight:-1,componentLayout:"body",childEls:["body"],renderTpl:['
    {parent.baseCls}-body-{parent.ui}-{.}"',' style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
    "],headingTpl:['{title}'],shrinkWrap:3,titlePosition:0,headerCls:Ext.baseCSSPrefix+"header",initComponent:function(){var g=this,e=g.hasOwnProperty("titlePosition"),c=g.items,a=e?g.titlePosition:(c?c.length:0),b=[g.orientation,g.getDockName()],d=g.ownerCt;g.addEvents("click","dblclick");g.indicateDragCls=g.headerCls+"-draggable";g.title=g.title||" ";g.tools=g.tools||[];c=g.items=(c?Ext.Array.slice(c):[]);g.orientation=g.orientation||"horizontal";g.dock=(g.dock)?g.dock:(g.orientation=="horizontal")?"top":"left";if(d?(!d.border&&!d.frame):!g.border){b.push(g.orientation+"-noborder")}g.addClsWithUI(b);g.addCls([g.headerCls,g.headerCls+"-"+g.orientation]);if(g.indicateDrag){g.addCls(g.indicateDragCls)}if(g.iconCls||g.icon||g.glyph){g.initIconCmp();if(!e&&!c.length){++a}c.push(g.iconCmp)}g.titleCmp=new Ext.Component({ariaRole:"heading",focusable:false,noWrap:true,flex:1,rtl:g.rtl,id:g.id+"_hd",style:g.titleAlign?("text-align:"+g.titleAlign):"",cls:g.headerCls+"-text-container "+g.baseCls+"-text-container "+g.baseCls+"-text-container-"+g.ui,renderTpl:g.getTpl("headingTpl"),renderData:{title:g.title,cls:g.baseCls,headerCls:g.headerCls,ui:g.ui},childEls:["textEl"],autoEl:{unselectable:"on"},listeners:{render:g.onTitleRender,scope:g}});g.layout=(g.orientation=="vertical")?{type:"vbox",align:"center",alignRoundingMethod:"ceil"}:{type:"hbox",align:"middle",alignRoundingMethod:"floor"};Ext.Array.push(c,g.tools);g.tools.length=0;g.callParent();if(c.lengthb){if(k){l.removeCls(d)}l.addCls(m)}}}},onAdd:function(b,a){var c=this.tools;this.callParent(arguments);if(b.isTool){c.push(b);c[b.type]=b}},initRenderData:function(){return Ext.applyIf(this.callParent(),{bodyCls:this.bodyCls,bodyTargetCls:this.bodyTargetCls,headerCls:this.headerCls})},getDockName:function(){return this.dock},getFramingInfoCls:function(){var c=this,b=c.callParent(),a=c.ownerCt;if(!c.expanding&&(a&&a.collapsed)||c.isCollapsedExpander){b+="-"+a.collapsedCls}return b+"-"+c.dock}},0,["header"],["component","container","box","header"],{component:true,container:true,box:true,header:true},["widget.header"],0,[Ext.panel,"Header"],0));(Ext.cmd.derive("Ext.dd.DragDrop",Ext.Base,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},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(a,b){},startDrag:function(a,b){},b4Drag:function(a){},onDrag:function(a){},onDragEnter:function(a,b){},b4DragOver:function(a){},onDragOver:function(a,b){},b4DragOut:function(a){},onDragOut:function(a,b){},b4DragDrop:function(a){},onDragDrop:function(a,b){},onInvalidDrop:function(a){},b4EndDrag:function(a){},endDrag:function(a){},b4MouseDown:function(a){},onMouseDown:function(a){},onMouseUp:function(a){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(j,g,o){if(Ext.isNumber(g)){g={left:g,right:g,top:g,bottom:g}}g=g||this.defaultPadding;var l=Ext.get(this.getEl()).getBox(),a=Ext.get(j),n=a.getScroll(),k,d=a.dom,m,h,e;if(d==document.body){k={x:n.left,y:n.top,width:Ext.Element.getViewWidth(),height:Ext.Element.getViewHeight()}}else{m=a.getXY();k={x:m[0],y:m[1],width:d.clientWidth,height:d.clientHeight}}h=l.y-k.y;e=l.x-k.x;this.resetConstraints();this.setXConstraint(e-(g.left||0),k.width-e-l.width-(g.right||0),this.xTickSize);this.setYConstraint(h-(g.top||0),k.height-h-l.height-(g.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(c,a,b){this.initTarget(c,a,b);Ext.EventManager.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(c,a,b){this.config=b||{};this.DDMInstance=Ext.dd.DragDropManager;this.groups={};if(typeof c!=="string"){c=Ext.id(c)}this.id=c;this.addToGroup((a)?a:"default");this.handleElId=c;this.setDragElId(c);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(c,a,d,b){if(!a&&0!==a){this.padding=[c,c,c,c]}else{if(!d&&0!==d){this.padding=[c,a,c,a]}else{this.padding=[c,a,d,b]}}},setInitPosition:function(d,c){var e=this.getEl(),b,a,g;if(!this.DDMInstance.verifyEl(e)){return}b=d||0;a=c||0;g=Ext.Element.getXY(e);this.initPageX=g[0]-b;this.initPageY=g[1]-a;this.lastPageX=g[0];this.lastPageY=g[1];this.setStartPosition(g)},setStartPosition:function(b){var a=b||Ext.Element.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=a[0];this.startPageY=a[1]},addToGroup:function(a){this.groups[a]=true;this.DDMInstance.regDragDrop(this,a)},removeFromGroup:function(a){if(this.groups[a]){delete this.groups[a]}this.DDMInstance.removeDDFromGroup(this,a)},setDragElId:function(a){this.dragElId=a},setHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.handleElId=a;this.DDMInstance.regHandle(this.id,a)},setOuterHandleElId:function(a){if(typeof a!=="string"){a=Ext.id(a)}Ext.EventManager.on(a,"mousedown",this.handleMouseDown,this);this.setHandleElId(a);this.hasOuterHandles=true},unreg:function(){Ext.EventManager.un(this.id,"mousedown",this.handleMouseDown,this);this._domRef=null;this.DDMInstance._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDMInstance.isLocked()||this.locked)},handleMouseDown:function(c,b){var a=this;if((a.primaryButtonOnly&&c.button!=0)||a.isLocked()){return}a.DDMInstance.refreshCache(a.groups);if(a.hasOuterHandles||a.DDMInstance.isOverTarget(c.getPoint(),a)){if(a.clickValidator(c)){a.setStartPosition();a.b4MouseDown(c);a.onMouseDown(c);a.DDMInstance.handleMouseDown(c,a);a.DDMInstance.stopEvent(c)}}},clickValidator:function(b){var a=b.getTarget();return(this.isValidHandleChild(a)&&(this.id==this.handleElId||this.DDMInstance.handleWasClicked(a,this.id)))},addInvalidHandleType:function(a){var b=a.toUpperCase();this.invalidHandleTypes[b]=b},addInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}this.invalidHandleIds[a]=a},addInvalidHandleClass:function(a){this.invalidHandleClasses.push(a)},removeInvalidHandleType:function(a){var b=a.toUpperCase();delete this.invalidHandleTypes[b]},removeInvalidHandleId:function(a){if(typeof a!=="string"){a=Ext.id(a)}delete this.invalidHandleIds[a]},removeInvalidHandleClass:function(b){for(var c=0,a=this.invalidHandleClasses.length;c=this.minX;b=b-a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}for(b=this.initPageX;b<=this.maxX;b=b+a){if(!c[b]){this.xTicks[this.xTicks.length]=b;c[b]=true}}Ext.Array.sort(this.xTicks,this.DDMInstance.numericSort)},setYTicks:function(d,a){this.yTicks=[];this.yTickSize=a;var c={},b;for(b=this.initPageY;b>=this.minY;b=b-a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}for(b=this.initPageY;b<=this.maxY;b=b+a){if(!c[b]){this.yTicks[this.yTicks.length]=b;c[b]=true}}Ext.Array.sort(this.yTicks,this.DDMInstance.numericSort)},setXConstraint:function(c,b,a){this.leftConstraint=c;this.rightConstraint=b;this.minX=this.initPageX-c;this.maxX=this.initPageX+b;if(a){this.setXTicks(this.initPageX,a)}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(a,c,b){this.topConstraint=a;this.bottomConstraint=c;this.minY=this.initPageY-a;this.maxY=this.initPageY+c;if(b){this.setYTicks(this.initPageY,b)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var b=(this.maintainOffset)?this.lastPageX-this.initPageX:0,a=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(b,a)}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(h,d){if(!d){return h}else{if(d[0]>=h){return d[0]}else{var b,a,c,g,e;for(b=0,a=d.length;b=h){g=h-d[b];e=d[c]-h;return(e>g)?d[b]:d[c]}}return d[d.length-1]}}},toString:function(){return("DragDrop "+this.id)}},3,0,0,0,0,0,[Ext.dd,"DragDrop"],0));(Ext.cmd.derive("Ext.dd.DD",Ext.dd.DragDrop,{constructor:function(c,a,b){if(c){this.init(c,a,b)}},scroll:true,autoOffset:function(c,b){var a=c-this.startPageX,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(b,e,c){var g=this.getTargetCoord(e,c),d=b.dom?b:Ext.fly(b,"_dd"),m=d.getSize(),j=Ext.Element,k,a,l,h;if(!this.deltaSetXY){k=this.cachedViewportSize={width:j.getDocumentWidth(),height:j.getDocumentHeight()};a=[Math.max(0,Math.min(g.x,k.width-m.width)),Math.max(0,Math.min(g.y,k.height-m.height))];d.setXY(a);l=this.getLocalX(d);h=d.getLocalY();this.deltaSetXY=[l-g.x,h-g.y]}else{k=this.cachedViewportSize;this.setLocalXY(d,Math.max(0,Math.min(g.x+this.deltaSetXY[0],k.width-m.width)),Math.max(0,Math.min(g.y+this.deltaSetXY[1],k.height-m.height)))}this.cachePosition(g.x,g.y);this.autoScroll(g.x,g.y,b.offsetHeight,b.offsetWidth);return g},cachePosition:function(b,a){if(b){this.lastPageX=b;this.lastPageY=a}else{var c=Ext.Element.getXY(this.getEl());this.lastPageX=c[0];this.lastPageY=c[1]}},autoScroll:function(m,l,e,n){if(this.scroll){var o=Ext.Element.getViewHeight(),b=Ext.Element.getViewWidth(),q=this.DDMInstance.getScrollTop(),d=this.DDMInstance.getScrollLeft(),k=e+l,p=n+m,j=(o+q-l-this.deltaY),g=(b+d-m-this.deltaX),c=40,a=(document.all)?80:30;if(k>o&&j0&&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(){this.callParent();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)},getLocalX:function(a){return a.getLocalX()},setLocalXY:function(b,a,c){b.setLocalXY(a,c)}},3,0,0,0,0,0,[Ext.dd,"DD"],0));(Ext.cmd.derive("Ext.dd.DDProxy",Ext.dd.DD,{statics:{dragElId:"ygddfdiv"},constructor:function(c,a,b){if(c){this.init(c,a,b);this.initFrame()}},resizeFrame:true,centerFrame:false,createFrame:function(){var b=this,a=document.body,d,c;if(!a||!a.firstChild){setTimeout(function(){b.createFrame()},50);return}d=this.getDragEl();if(!d){d=document.createElement("div");d.id=this.dragElId;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(){this.callParent();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(),a=this.getDragEl(),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(),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(),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)}},3,0,0,0,0,0,[Ext.dd,"DDProxy"],0));(Ext.cmd.derive("Ext.dd.StatusProxy",Ext.Component,{animRepair:false,childEls:["ghost"],renderTpl:['
    '],repairCls:Ext.baseCSSPrefix+"dd-drag-repair",constructor:function(a){var b=this;a=a||{};Ext.apply(b,{hideMode:"visibility",hidden:true,floating:true,id:b.id||Ext.id(),cls:Ext.baseCSSPrefix+"dd-drag-proxy "+this.dropNotAllowed,shadow:a.shadow||false,renderTo:Ext.getDetachedBody()});b.callParent(arguments);this.dropStatus=this.dropNotAllowed},dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",setStatus:function(a){a=a||this.dropNotAllowed;if(this.dropStatus!=a){this.el.replaceCls(this.dropStatus,a);this.dropStatus=a}},reset:function(b){var c=this,a=Ext.baseCSSPrefix+"dd-drag-proxy ";c.el.replaceCls(a+c.dropAllowed,a+c.dropNotAllowed);c.dropStatus=c.dropNotAllowed;if(b){c.ghost.update("")}},update:function(a){if(typeof a=="string"){this.ghost.update(a)}else{this.ghost.update("");a.style.margin="0";this.ghost.dom.appendChild(a)}var b=this.ghost.dom.firstChild;if(b){Ext.fly(b).setStyle("float","none")}},getGhost:function(){return this.ghost},hide:function(a){this.callParent();if(a){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},sync:function(){this.el.sync()},repair:function(c,d,a){var b=this;b.callback=d;b.scope=a;if(c&&b.animRepair!==false){b.el.addCls(b.repairCls);b.el.hideUnders(true);b.anim=b.el.animate({duration:b.repairDuration||500,easing:"ease-out",to:{x:c[0],y:c[1]},stopAnimation:true,callback:b.afterRepair,scope:b})}else{b.afterRepair()}},afterRepair:function(){var a=this;a.hide(true);a.el.removeCls(a.repairCls);if(typeof a.callback=="function"){a.callback.call(a.scope||a)}delete a.callback;delete a.scope}},1,0,["component","box"],{component:true,box:true},0,0,[Ext.dd,"StatusProxy"],0));(Ext.cmd.derive("Ext.dd.DragSource",Ext.dd.DDProxy,{dropAllowed:Ext.baseCSSPrefix+"dd-drop-ok",dropNotAllowed:Ext.baseCSSPrefix+"dd-drop-nodrop",animRepair:true,repairHighlightColor:"c3daf9",constructor:function(b,a){this.el=Ext.get(b);if(!this.dragData){this.dragData={}}Ext.apply(this,a);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy({id:this.el.id+"-drag-status-proxy",animRepair:this.animRepair})}this.callParent([this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true}]);this.dragging=false},getDragData:function(a){return this.dragData},onDragEnter:function(c,d){var b=Ext.dd.DragDropManager.getDDById(d),a;this.cachedTarget=b;if(this.beforeDragEnter(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyEnter(this,c,this.dragData);this.proxy.setStatus(a)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(b,c,d)}}},beforeDragEnter:function(b,a,c){return true},onDragOver:function(c,d){var b=this.cachedTarget||Ext.dd.DragDropManager.getDDById(d),a;if(this.beforeDragOver(b,c,d)!==false){if(b.isNotifyTarget){a=b.notifyOver(this,c,this.dragData);this.proxy.setStatus(a)}if(this.afterDragOver){this.afterDragOver(b,c,d)}}},beforeDragOver:function(b,a,c){return true},onDragOut:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragOut(a,b,c)!==false){if(a.isNotifyTarget){a.notifyOut(this,b,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(a,b,c)}}this.cachedTarget=null},beforeDragOut:function(b,a,c){return true},onDragDrop:function(b,c){var a=this.cachedTarget||Ext.dd.DragDropManager.getDDById(c);if(this.beforeDragDrop(a,b,c)!==false){if(a.isNotifyTarget){if(a.notifyDrop(this,b,this.dragData)!==false){this.onValidDrop(a,b,c)}else{this.onInvalidDrop(a,b,c)}}else{this.onValidDrop(a,b,c)}if(this.afterDragDrop){this.afterDragDrop(a,b,c)}}delete this.cachedTarget},beforeDragDrop:function(b,a,c){return true},onValidDrop:function(b,a,c){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(b,a,c)}},getRepairXY:function(b,a){return this.el.getXY()},onInvalidDrop:function(c,b,d){var a=this;if(!b){b=c;c=null;d=b.getTarget().id}if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}a.proxy.repair(a.getRepairXY(b,a.dragData),a.afterRepair,a);if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}},afterRepair:function(){var a=this;if(Ext.enableFx){a.el.highlight(a.repairHighlightColor)}a.dragging=false},beforeInvalidDrop:function(b,a,c){return true},handleMouseDown:function(b){if(this.dragging){return}var a=this.getDragData(b);if(a&&this.onBeforeDrag(a,b)!==false){this.dragData=a;this.proxy.stop();this.callParent(arguments)}},onBeforeDrag:function(a,b){return true},onStartDrag:Ext.emptyFn,alignElWithMouse:function(){this.proxy.ensureAttachedToBody(true);return this.callParent(arguments)},startDrag:function(a,b){this.proxy.reset();this.proxy.hidden=false;this.dragging=true;this.proxy.update("");this.onInitDrag(a,b);this.proxy.show()},onInitDrag:function(a,c){var b=this.el.dom.cloneNode(true);b.id=Ext.id();this.proxy.update(b);this.onStartDrag(a,c);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(a){},endDrag:function(a){this.onEndDrag(this.dragData,a)},onEndDrag:function(a,b){},autoOffset:function(a,b){this.setDelta(-12,-20)},destroy:function(){this.callParent();Ext.destroy(this.proxy)}},1,0,0,0,0,0,[Ext.dd,"DragSource"],0));(Ext.cmd.derive("Ext.panel.Proxy",Ext.Base,{alternateClassName:"Ext.dd.PanelProxy",moveOnDrag:true,constructor:function(a,b){var c=this;c.panel=a;c.id=c.panel.id+"-ddproxy";Ext.apply(c,b)},insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost.el},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){var a=this;if(a.ghost){if(a.proxy){a.proxy.remove();delete a.proxy}a.panel.unghost(null,a.moveOnDrag);delete a.ghost}},show:function(){var b=this,a;if(!b.ghost){a=b.panel.getSize();b.panel.el.setVisibilityMode(Ext.Element.DISPLAY);b.ghost=b.panel.ghost();if(b.insertProxy){b.proxy=b.panel.el.insertSibling({cls:Ext.baseCSSPrefix+"panel-dd-spacer"});b.proxy.setSize(a)}}},repair:function(b,c,a){this.hide();Ext.callback(c,a||this)},moveProxy:function(a,b){if(this.proxy){a.insertBefore(this.proxy.dom,b)}}},1,0,0,0,0,0,[Ext.panel,"Proxy",Ext.dd,"PanelProxy"],0));(Ext.cmd.derive("Ext.panel.DD",Ext.dd.DragSource,{constructor:function(b,a){var c=this;c.panel=b;c.dragData={panel:b};c.panelProxy=new Ext.panel.Proxy(b,a);c.proxy=c.panelProxy.proxy;c.callParent([b.el,a]);c.setupEl(b)},setupEl:function(a){var c=this,d=a.header,b=a.body;if(d){c.setHandleElId(d.id);b=d.el}if(b){b.setStyle("cursor","move");c.scroll=false}else{a.on("boxready",c.setupEl,c,{single:true})}},showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(a,b){this.panelProxy.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(b){var a=this.panelProxy.ghost;if(a){return a.el.dom}},endDrag:function(a){this.panelProxy.hide();this.panel.saveState()},autoOffset:function(a,b){a-=this.startPageX;b-=this.startPageY;this.setDelta(a,b)},onInvalidDrop:function(c,b,d){var a=this;if(a.beforeInvalidDrop(c,b,d)!==false){if(a.cachedTarget){if(a.cachedTarget.isNotifyTarget){a.cachedTarget.notifyOut(a,b,a.dragData)}a.cacheTarget=null}if(a.afterInvalidDrop){a.afterInvalidDrop(b,d)}}}},1,0,0,0,0,0,[Ext.panel,"DD"],0));(Ext.cmd.derive("Ext.util.Memento",Ext.Base,(function(){function d(j,h,k,g){j[g?g+k:k]=h[k]}function c(h,g,j){delete h[j]}function e(l,k,m,j){var g=j?j+m:m,h=l[g];if(h||l.hasOwnProperty(g)){a(k,m,h)}}function a(h,j,g){if(Ext.isDefined(g)){h[j]=g}else{delete h[j]}}function b(h,n,m,j,k){if(n){if(Ext.isArray(j)){var l,g=j.length;for(l=0;la){if(k.anchorToTarget){k.defaultAlign="r-l";if(k.mouseOffset){k.mouseOffset[0]*=-1}}k.anchor="right";return k.getTargetXY()}if(b[1]j){if(k.anchorToTarget){k.defaultAlign="b-t";if(k.mouseOffset){k.mouseOffset[1]*=-1}}k.anchor="bottom";return k.getTargetXY()}}k.anchorCls=Ext.baseCSSPrefix+"tip-anchor-"+k.getAnchorPosition();k.anchorEl.addCls(k.anchorCls);k.targetCounter=0;return b}else{d=k.getMouseOffset();return(k.targetXY)?[k.targetXY[0]+d[0],k.targetXY[1]+d[1]]:d}},getMouseOffset:function(){var a=this,b=a.anchor?[0,0]:[15,18];if(a.mouseOffset){b[0]+=a.mouseOffset[0];b[1]+=a.mouseOffset[1]}return b},getAnchorPosition:function(){var b=this,a;if(b.anchor){b.tipAnchor=b.anchor.charAt(0)}else{a=b.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);b.tipAnchor=a[1].charAt(0)}switch(b.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 c=this,d,b,a=c.getAnchorPosition().charAt(0);if(c.anchorToTarget&&!c.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-c.anchorOffset,30];break;case"b":b=[-19-c.anchorOffset,-13-c.el.dom.offsetHeight];break;case"r":b=[-15-c.el.dom.offsetWidth,-13-c.anchorOffset];break;default:b=[25,-13-c.anchorOffset];break}}d=c.getMouseOffset();b[0]+=d[0];b[1]+=d[1];return b},onTargetOver:function(d){var c=this,b=c.delegate,a;if(c.disabled||d.within(c.target.dom,true)){return}a=b?d.getTarget(b):true;if(a){c.triggerElement=a;c.triggerEvent=d;c.clearTimer("hide");c.targetXY=d.getXY();c.delayShow()}},delayShow:function(){var a=this;if(a.hidden&&!a.showTimer){if(Ext.Date.getElapsed(a.lastActive)b){e=d[a];for(c in e){if(e[c]){e[c].hide(true)}}}}},1,0,0,0,0,0,[Ext.chart,"Callout"],0));(Ext.cmd.derive("Ext.draw.CompositeSprite",Ext.util.MixedCollection,{autoDestroy:false,isCompositeSprite:true,constructor:function(a){var b=this;a=a||{};Ext.apply(b,a);b.addEvents("mousedown","mouseup","mouseover","mouseout","click");b.id=Ext.id(null,"ext-sprite-group-");b.callParent()},onClick:function(a){this.fireEvent("click",a)},onMouseUp:function(a){this.fireEvent("mouseup",a)},onMouseDown:function(a){this.fireEvent("mousedown",a)},onMouseOver:function(a){this.fireEvent("mouseover",a)},onMouseOut:function(a){this.fireEvent("mouseout",a)},attachEvents:function(b){var a=this;b.on({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick})},add:function(b,c){var a=this.callParent(arguments);this.attachEvents(a);return a},insert:function(a,b,c){return this.callParent(arguments)},remove:function(b){var a=this;b.un({scope:a,mousedown:a.onMouseDown,mouseup:a.onMouseUp,mouseover:a.onMouseOver,mouseout:a.onMouseOut,click:a.onClick});return a.callParent(arguments)},getBBox:function(){var e=0,n,j,k=this.items,g=this.length,h=Infinity,c=h,m=-h,b=h,l=-h,d,a;for(;e0){b=d.first();d.remove(b);a.remove(b,c)}}d.clearListeners()}},1,0,0,0,0,[["animate",Ext.util.Animate]],[Ext.draw,"CompositeSprite"],0));(Ext.cmd.derive("Ext.draw.Surface",Ext.Base,{separatorRe:/[, ]+/,enginePriority:["Svg","Vml"],statics:{create:function(b,d){d=d||this.prototype.enginePriority;var c=0,a=d.length;for(;c1,a,d,c,h,g;if(j||Ext.isArray(b[0])){a=j?b:b[0];d=[];for(c=0,h=a.length;ch){b=j-1}else{if(a-1;b--){this.remove(a[b],d)}},onRemove:Ext.emptyFn,onDestroy:Ext.emptyFn,applyViewBox:function(){var d=this,m=d.viewBox,a=d.width||1,h=d.height||1,g,e,k,b,j,c,l;if(m&&(a||h)){g=m.x;e=m.y;k=m.width;b=m.height;j=h/b;c=a/k;l=Math.min(c,j);if(k*l0.85){e=e.getDarker(0.3)}else{if(h>0.7){e=e.getDarker(0.15)}}}}c.colors=[e.getDarker(0.3).toString(),e.getDarker(0.15).toString(),e.toString(),e.getLighter(0.15).toString(),e.getLighter(0.3).toString()];delete c.baseColor}if(c.colors){a=c.colors.slice();s=b.markerThemes;r=b.seriesThemes;j=a.length;b.colors=a;for(;m0?q:q+a)+h.el.getX(),y:(o>0?n:n+o)+h.el.getY(),width:s(a),height:s(o)};h.mask.updateBox(h.maskSelection);h.mask.show();h.maskSprite.setAttributes({hidden:true},true)}else{if(t=="horizontal"){r=["M",q,k,"L",q,o]}else{if(t=="vertical"){r=["M",m,n,"L",a,n]}else{r=["M",q,k,"L",q,o,"M",m,n,"L",a,n]}}h.maskSprite.setAttributes({path:r,"stroke-width":t===true?1:1,hidden:false},true)}}},onMouseLeave:function(b){var a=this;a.mouseMoved=false;a.mouseDown=false;a.maskMouseDown=false;a.mask.hide();a.maskSprite.hide(true)}},1,0,0,0,0,0,[Ext.chart,"Mask"],0));(Ext.cmd.derive("Ext.chart.Navigation",Ext.Base,{setZoom:function(p){var t=this,o=t.axes.items,r,m,c,a=t.chartBBox,u=a.width,d=a.height,g={x:p.x-t.el.getX(),y:p.y-t.el.getY(),width:p.width,height:p.height},j,n,q,b,h,l,k,e,s;for(r=0,m=o.length;r0.5?0.2:0.8;K.setAttributes({fill:String(n.fromHSL.apply({},F))},true)}if(q.stacked&&d&&(y.totalPositiveValues||y.totalNegativeValues)){T=(y.totalPositiveValues||0);I=(y.totalNegativeValues||0);B=T+I;if(d=="total"){o=z(B)}else{if(d=="balances"){if(T==0&&I==0){o=z(0)}else{o=z(T);N=z(I)}}}if(o){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"over")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:o,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"over",M,C);c++}if(N){K=s.getAt(c);if(!K){K=q.onCreateLabel(S,y,P,"under")}F=n.fromString(K.attr.color||K.attr.fill).getHSL();K.setAttributes({text:N,style:E.font,fill:String(n.fromHSL.apply({},F))},true);q.onPlaceLabel(K,S,y,P,"under",M,C);c++}}}J++;C++}}m=s.length;while(m>c){Q.push(c);c++}}q.hideLabels(Q)},hideLabels:function(b){var a=this.labelsGroup,c=!!b&&b.length;if(!a){return}if(c===false){c=a.getCount();while(c--){a.getAt(c).hide(true)}}else{while(c--){a.getAt(b[c]).hide(true)}}}},1,0,0,0,0,0,[Ext.chart,"Label"],0));(Ext.cmd.derive("Ext.chart.TipSurface",Ext.draw.Component,{spriteArray:false,renderFirst:true,constructor:function(a){this.callParent([a]);if(a.sprites){this.spriteArray=[].concat(a.sprites);delete a.sprites}},onRender:function(){var c=this,b=0,a=0,d,e;this.callParent(arguments);e=c.spriteArray;if(c.renderFirst&&e){c.renderFirst=false;for(a=e.length;br){t=r}if(x=0){u[v].positiveValue+=r;if(x0){t=0}}else{u[v].negativeValue+=r;if(t>u[v].negativeValue){t=u[v].negativeValue}if(x<0){x=0}}}}}}if(!isFinite(x)){x=C.prevMax||0}if(!isFinite(t)){t=C.prevMin||0}if(typeof t==="number"){t=Ext.Number.correctFloat(t)}if(typeof x==="number"){x=Ext.Number.correctFloat(x)}if(t!=x&&(x!=Math.floor(x)||t!=Math.floor(t))){t=Math.floor(t);x=Math.floor(x)+1}if(!isNaN(C.minimum)){t=C.minimum}if(!isNaN(C.maximum)){x=C.maximum}if(t>=x){t=Math.floor(t);x=t+1}return{min:t,max:x}},calcEnds:function(){var h=this,d=h.getRange(),g=d.min,a=d.max,c,j,e,b;c=(Ext.isNumber(h.majorTickSteps)?h.majorTickSteps+1:h.steps);j=!(Ext.isNumber(h.maximum)&&Ext.isNumber(h.minimum)&&Ext.isNumber(h.majorTickSteps)&&h.majorTickSteps>0);e=Ext.draw.Draw.snapEnds(g,a,c,j);if(Ext.isNumber(h.maximum)){e.to=h.maximum;b=true}if(Ext.isNumber(h.minimum)){e.from=h.minimum;b=true}if(h.adjustMaximumByMajorUnit){e.to=Math.ceil(e.to/e.step)*e.step;b=true}if(h.adjustMinimumByMajorUnit){e.from=Math.floor(e.from/e.step)*e.step;b=true}if(b){e.steps=Math.ceil((e.to-e.from)/e.step)}h.prevMin=(g==a?0:g);h.prevMax=a;return e},drawAxis:function(N){var m=this,P,H=m.x,G=m.y,T=m.dashSize,p=m.length,I=m.position,b=(I=="left"||I=="right"),k=[],j=(m.isNumericAxis),t=m.applyData(),z=t.step,D=t.steps,F=Ext.isArray(D),h=t.from,S=t.to,g=(S-h)||1,Q,w,v,L,B=m.minorTickSteps||0,A=m.minorTickSteps||0,o=Math.max(B+1,0),n=Math.max(A+1,0),J=(I=="left"||I=="top"?-1:1),d=T*J,c=m.chart.series.items,M=c[0],q=M?M.nullGutters:m.nullGutters,O,R,r,E=0,C=0,a,K,u,s,e,l;m.from=h;m.to=S;if(m.hidden||(h>S)){return}if((F&&(D.length==0))||(!F&&isNaN(z))){return}if(F){D=Ext.Array.filter(D,function(y,x,U){return(+y>+m.from&&+y<+m.to)},this);D=Ext.Array.union([m.from],D,[m.to])}else{D=new Array();for(s=+m.from;s<+m.to;s+=z){D.push(s)}D.push(+m.to)}C=D.length;for(P=0,u=c.length;P0){r=z/(R+1)}}if(q&&r){for(a=0;a=0){if(!this.sprites){for(e=0;e<=l;e++){n=a.add({type:"path",path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"});n.setAttributes({hidden:false},true);h.push(n)}}else{h=this.sprites;for(e=0;e<=l;e++){h[e].setAttributes({path:["M",d+(m-c)*o(e/l*g-g),b+(m-c)*k(e/l*g-g),"L",d+m*o(e/l*g-g),b+m*k(e/l*g-g),"Z"],stroke:"#ccc"},true)}}}this.sprites=h;this.drawLabel();if(this.title){this.drawTitle()}},drawTitle:function(){var e=this,d=e.chart,a=d.surface,g=d.chartBBox,c=e.titleSprite,b;if(!c){e.titleSprite=c=a.add(Ext.apply({type:"text",zIndex:2},e.axisTitleStyle,e.labelTitle))}c.setAttributes(Ext.apply({text:e.title},e.label||{}),true);b=c.getBBox();c.setAttributes({x:g.x+(g.width/2)-(b.width/2),y:g.y+g.height-(b.height/2)-4},true)},setTitle:function(a){this.title=a;this.drawTitle()},drawLabel:function(){var l=this.chart,p=l.surface,b=l.chartBBox,j=b.x+(b.width/2),h=b.y+b.height,m=this.margin||10,d=Math.min(b.width,2*b.height)/2+2*m,u=Math.round,n=[],g,s=this.maximum||0,k=this.minimum||0,r=this.steps,q=0,v,t=Math.PI,c=Math.cos,a=Math.sin,e=this.label,o=e.renderer||Ext.identityFn;if(!this.labelArray){for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;g=p.add({type:"text",text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v,"text-anchor":"middle","stroke-width":0.2,zIndex:10,stroke:"#333"});g.setAttributes({hidden:false},true);n.push(g)}}else{n=this.labelArray;for(q=0;q<=r;q++){v=(q===0||q===r)?7:0;n[q].setAttributes({text:o(u(k+q/r*(s-k))),x:j+d*c(q/r*t-t),y:h+d*a(q/r*t-t)-v},true)}}this.labelArray=n}},0,0,0,0,["axis.gauge"],0,[Ext.chart.axis,"Gauge"],0));(Ext.cmd.derive("Ext.chart.axis.Numeric",Ext.chart.axis.Axis,{alternateClassName:"Ext.chart.NumericAxis",type:"Numeric",isNumericAxis:true,constructor:function(c){var d=this,a=!!(c.label&&c.label.renderer),b;d.callParent([c]);b=d.label;if(c.constrain==null){d.constrain=(c.minimum!=null&&c.maximum!=null)}if(!a){b.renderer=function(e){return d.roundToDecimal(e,d.decimals)}}},roundToDecimal:function(a,c){var b=Math.pow(10,c||0);return Math.round(a*b)/b},minimum:NaN,maximum:NaN,constrain:true,decimals:2,scale:"linear",doConstrain:function(){var u=this,h=u.chart,b=h.getChartStore(),j=b.data.items,t,w,a,e=h.series.items,k=u.fields,c=k.length,g=u.calcEnds(),n=g.from,q=g.to,r,o,s=false,m,v=[],p;for(t=0,w=j.length;t+q){p=false;break}}if(p){v.push(a)}}h.setSubStore(new Ext.data.Store({model:b.model,data:v}))},position:"left",adjustMaximumByMajorUnit:false,adjustMinimumByMajorUnit:false,processView:function(){var e=this,d=e.chart,c=d.series.items,b,a;for(b=0,a=c.length;b>0),e)}}}},processView:function(){var a=this;if(a.fromDate){a.minimum=+a.fromDate}if(a.toDate){a.maximum=+a.toDate}if(a.constrain){a.doConstrain()}},calcEnds:function(){var c=this,a,b=c.step;if(b){a=c.getRange();a=Ext.draw.Draw.snapEndsByDateAndStep(new Date(a.min),new Date(a.max),Ext.isNumber(b)?[Date.MILLI,b]:b);if(c.minimum){a.from=c.minimum}if(c.maximum){a.to=c.maximum}return a}else{return c.callParent(arguments)}}},1,0,0,0,["axis.time"],0,[Ext.chart.axis,"Time",Ext.chart,"TimeAxis"],0));(Ext.cmd.derive("Ext.chart.series.Series",Ext.Base,{type:null,title:null,showInLegend:true,renderer:function(e,a,c,d,b){return c},shadowAttributes:null,animating:false,nullGutters:{lower:0,upper:0,verticalAxis:undefined},nullPadding:{left:0,right:0,width:0,bottom:0,top:0,height:0},constructor:function(a){var b=this;if(a){Ext.apply(b,a)}b.shadowGroups=[];b.mixins.labels.constructor.call(b,a);b.mixins.highlights.constructor.call(b,a);b.mixins.tips.constructor.call(b,a);b.mixins.callouts.constructor.call(b,a);b.addEvents({scope:b,itemclick:true,itemmouseover:true,itemmouseout:true,itemmousedown:true,itemmouseup:true,mouseleave:true,afterdraw:true,titlechange:true});b.mixins.observable.constructor.call(b,a);b.on({scope:b,itemmouseover:b.onItemMouseOver,itemmouseout:b.onItemMouseOut,mouseleave:b.onMouseLeave});if(b.style){Ext.apply(b.seriesStyle,b.style)}},onRedraw:Ext.emptyFn,eachRecord:function(c,b){var a=this.chart;a.getChartStore().each(c,b)},getRecordCount:function(){var b=this.chart,a=b.getChartStore();return a?a.getCount():0},isExcluded:function(a){var b=this.__excludes;return !!(b&&b[a])},setBBox:function(a){var d=this,c=d.chart,b=c.chartBBox,h=a?{left:0,right:0,bottom:0,top:0}:c.maxGutters,e,g;e={x:b.x,y:b.y,width:b.width,height:b.height};d.clipBox=e;g={x:(e.x+h.left)-(c.zoom.x*c.zoom.width),y:(e.y+h.bottom)-(c.zoom.y*c.zoom.height),width:(e.width-(h.left+h.right))*c.zoom.width,height:(e.height-(h.bottom+h.top))*c.zoom.height};d.bbox=g},onAnimate:function(b,a){var c=this;b.stopAnimation();if(c.animating){return b.animate(Ext.applyIf(a,c.chart.animate))}else{c.animating=true;return b.animate(Ext.apply(Ext.applyIf(a,c.chart.animate),{callback:function(){c.animating=false;c.fireEvent("afterrender")}}))}},getGutters:function(){return this.nullGutters},getPadding:function(){return this.nullPadding},onItemMouseOver:function(b){var a=this;if(b.series===a){if(a.highlight){a.highlightItem(b)}if(a.tooltip){a.showTip(b)}}},onItemMouseOut:function(b){var a=this;if(b.series===a){a.unHighlightItem();if(a.tooltip){a.hideTip(b)}}},onMouseLeave:function(){var a=this;a.unHighlightItem();if(a.tooltip){a.hideTip()}},getItemForPoint:function(a,j){if(!this.items||!this.items.length||this.seriesIsHidden){return null}var g=this,b=g.items,h=g.bbox,e,c,d;if(!Ext.draw.Draw.withinBox(a,j,h)){return null}for(c=0,d=b.length;c0){c=Infinity;m=-c;for(e=0,j=d.length;em){m=b}if(bm){m=s}if(s0){b=Infinity;m=-b;for(d=0,j=c.length;dm){m=o}if(n-1){b="top"}else{if(Ext.Array.indexOf(d,"bottom")>-1){b="bottom"}else{if(l.get("top")&&l.get("bottom")){for(h=0,k=o.length;h-1){a="left"}else{if(Ext.Array.indexOf(d,"right")>-1){a="right"}else{if(l.get("left")&&l.get("right")){for(h=0,k=e.length;h0&&r){E=M[0].get(j.xField);if(typeof E!="number"){E=+E;if(isNaN(E)){r=false}}}for(J=0;Jk.width)&&j.areas){I=j.shrink(z,D,k.width);z=I.x;D=I.y}return{bbox:k,minX:C,minY:B,xValues:z,yValues:D,xScale:h,yScale:F,areasLen:A}},getPaths:function(){var z=this,m=z.chart,c=m.getChartStore(),e=true,g=z.getBounds(),a=g.bbox,n=z.items=[],w=[],b,d=0,p=[],s,j,k,h,q,u,l,A,r,v,o,t;j=g.xValues.length;for(s=0;sa.x+a.width){h=a.x+a.width-m}}g=g-l;if(ga.y+a.height){g-=2*l}}if(u.chart.animate&&!u.chart.resizing){e.show(true);u.onAnimate(e,{to:{x:h,y:g}})}else{e.setAttributes({x:h,y:g},true);if(r&&u.animation){u.animation.on("afteranimate",function(){e.show(true)})}else{e.show(true)}}},onPlaceCallout:function(m,r,J,G,F,d,k){var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=(G==0)?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=J.point,A,g,N,K,o,q,b=(m&&m.label?m.label.getBBox():{width:0,height:0}),I=30,C=10,B=3,h,e,j,w,u,E=M.clipRect,n,l;if(!b.width||!b.height){return}if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h(E[0]+E[2])){N[0]*=-1}if(e(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);m.box.setAttributes({x:h,y:e,width:j,height:w},true);m.label.setAttributes({x:n+(N[0]>0?B:-(b.width+B)),y:l},true);for(u in m){m[u].show(true)}},isItemInPoint:function(j,h,m,c){var g=this,b=m.pointsUp,d=m.pointsDown,q=Math.abs,o=false,l=false,e=Infinity,a,n,k;for(a=0,n=b.length;aq(j-k[0])){e=q(j-k[0]);o=true;if(l){++a}}if(!o||(o&&l)){k=b[a-1];if(h>=k[1]&&(!d.length||h<=(d[a-1][1]))){m.storeIndex=a-1;m.storeField=g.yField[c];m.storeItem=g.chart.getChartStore().getAt(a-1);m._points=d.length?[k,d[a-1]]:[k];return true}else{break}}}return false},highlightSeries:function(){var a,c,b;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}a.__highlighted=true;a.__prevOpacity=a.__prevOpacity||a.attr.opacity||1;a.__prevFill=a.__prevFill||a.attr.fill;a.__prevLineWidth=a.__prevLineWidth||a.attr.lineWidth;b=Ext.draw.Color.fromString(a.__prevFill);c={lineWidth:(a.__prevLineWidth||0)+2};if(b){c.fill=b.getLighter(0.2).toString()}else{c.opacity=Math.max(a.__prevOpacity-0.3,0)}if(this.chart.animate){a.__highlightAnim=new Ext.fx.Anim(Ext.apply({target:a,to:c},this.chart.animate))}else{a.setAttributes(c,true)}}},unHighlightSeries:function(){var a;if(this._index!==undefined){a=this.areas[this._index];if(a.__highlightAnim){a.__highlightAnim.paused=true}if(a.__highlighted){a.__highlighted=false;a.__highlightAnim=new Ext.fx.Anim({target:a,to:{fill:a.__prevFill,opacity:a.__prevOpacity,lineWidth:a.__prevLineWidth}})}}},highlightItem:function(c){var b=this,a,d;if(!c){this.highlightSeries();return}a=c._points;d=a.length==2?["M",a[0][0],a[0][1],"L",a[1][0],a[1][1]]:["M",a[0][0],a[0][1],"L",a[0][0],b.bbox.y+b.bbox.height];b.highlightSprite.setAttributes({path:d,hidden:false},true)},unHighlightItem:function(a){if(!a){this.unHighlightSeries()}if(this.highlightSprite){this.highlightSprite.hide(true)}},hideAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=true;b.areas[a].hide(true);b.redraw()},showAll:function(a){var b=this;a=(isNaN(b._index)?a:b._index)||0;b.__excludes[a]=false;b.areas[a].show(true);b.redraw()},redraw:function(){var a=this,b;b=a.chart.legend.rebuild;a.chart.legend.rebuild=false;a.chart.redraw();a.chart.legend.rebuild=b},hide:function(){if(this.areas){var h=this,b=h.areas,d,c,a,g,e;if(b&&b.length){for(d=0,g=b.length;d0)][R]+=n(L)}}y[+(r>0)].push(n(r));y[+(H>0)].push(n(H));g=k.apply(w,y[0]);d=k.apply(w,y[1]);B=(K?q.height-P.height:q.width-P.width)/(d+g);a=a+g*B*(K?-1:1)}else{if(H/r<0){a=a-H*B*(K?-1:1)}}if(o.boundColumn){u=T.axes.get(I.xAxis);if(u){Q=u.applyData();J=Q.from;t=Q.to}if(o.xField&&!Ext.isNumber(J)){G=o.getMinMaxYValues();J=G[0];t=G[1]}if(!Ext.isNumber(J)){J=0}if(!Ext.isNumber(t)){t=0}s=o.getGutters();M=(q.width-(s.lower+s.upper))/((t-J)||1);h=q.x+s.lower;l=[];for(R=0,z=S.length;R=0){ab+=aa}else{C+=aa}e=Math.round((aa-o(G.minY,0))*G.scale);X=h+(v>1?U:0);r={fill:O[X%k]};if(N){Ext.apply(r,{height:e,width:o(G.groupBarWidth,0),x:(u.boundColumn?G.barsLoc[W]:(x.x+V.left+(A-K)*0.5+W*A*(1+m)+g*G.groupBarWidth*(1+c)*!S)),y:a-e})}else{M=(E-1)-W;Ext.apply(r,{height:o(G.groupBarWidth,0),width:e+(a==G.zero),x:a+(a!=G.zero),y:(x.y+V.top+(A-K)*0.5+M*A*(1+m)+g*G.groupBarWidth*(1+c)*!S+1)})}if(e<0){if(N){r.y=l;r.height=t(e)}else{r.x=l+e;r.width=t(e)}}if(S){if(e<0){l+=e*(N?-1:1)}else{a+=e*(N?-1:1)}J+=t(e);if(e<0){D+=t(e)}}r.x=Math.floor(r.x)+1;H=Math.floor(r.y);if(Ext.isIE8m&&r.y>H){H--}r.y=H;r.width=Math.floor(r.width);r.height=Math.floor(r.height);y.push({series:u,yField:P[U],storeItem:L,value:[L.get(u.xField),aa],attr:r,point:N?[r.x+r.width/2,aa>=0?r.y:r.y+r.height]:[aa>=0?r.x+r.width:r.x,r.y+r.height/2]});if(T&&Z.resizing){p=N?{x:r.x,y:G.zero,width:r.width,height:0}:{x:G.zero,y:r.y,width:0,height:r.height};if(n&&(S&&!s||!S)){s=true;for(d=0;d=0?(l.y-v.y):(v.y+v.height-l.y-l.height));if(zl.height){q=k}}if(!C){C=l.y;if(R>=0){switch(q){case r:C+=l.height+(N?-F:-c/2);break;case P:C+=(N?c+H:c/2);break;case k:C+=(N?-F:-c/2);break}}else{switch(q){case r:C+=(N?c+F:c/2);break;case P:C+=(N?l.height-F:l.height-c/2);break;case k:C+=(N?l.height+c+F:l.height+c/2);break}}}}else{if(!a||!c||(K&&!l.width)){J.hide(true);return}C=l.y+(N?(d+c)/2:d/2);if(q==k){var z=(R>=0?(v.x+v.width-l.x-l.width):(l.x-v.x));if(zl.width){if(K){if(c>l.width){J.hide(true);return}E=l.x+l.width/2;C=l.y+l.height-(l.height-a)/2;N=true}else{q=k}}}if(!E){E=l.x;if(R>=0){switch(q){case r:E+=(N?a/2:H);break;case P:E+=l.width+(N?-a/2:-a-H);break;case k:E+=l.width+(N?a/2:H);break}}else{switch(q){case r:E+=l.width+(N?-a/2:-a-H);break;case P:E+=(N?a/2:H);break;case k:E+=(N?-a/2:-a-H);break}}}}}else{if(q==G||q==o){if(K&&h){s=J.attr.text;J.setAttributes({style:Ext.applyIf((J.attr&&J.attr.style)||{},{"font-weight":"bold","font-size":"14px"})});g=m.getLabelSize(s,J.attr.style);a=g.width;c=g.height;switch(q){case G:if(I){E=l.x+(N?d/2:(d-a)/2);C=b-(t.totalDim-t.totalNegDim)-c/2-F}else{E=b+(t.totalDim-t.totalNegDim)+H;C=l.y+(N?(d+c)/2:d/2)}break;case o:if(I){E=l.x+(N?d/2:(d-a)/2);C=b+t.totalNegDim+c/2}else{E=b-t.totalNegDim-a-H;C=l.y+(N?(d+c)/2:d/2)}break}}}}if(E==undefined||C==undefined){J.hide(true);return}J.isOutside=(q==k);J.setAttributes({text:s});A={x:E,y:C};if(N){A.rotate={x:E,y:C,degrees:270}}if(L&&D){if(I){E=l.x+l.width/2;C=b}else{E=b;C=l.y+l.height/2}J.setAttributes({x:E,y:C},true);if(N){J.setAttributes({rotate:{x:E,y:C,degrees:270}},true)}}if(L){m.onAnimate(J,{to:A})}else{J.setAttributes(Ext.apply(A,{hidden:false}),true)}},getLabelSize:function(j,g){var m=this.testerLabel,a=this.label,d=Ext.apply({},a,g,this.seriesLabelStyle||{}),b=a.orientation==="vertical",l,k,e,c;if(!m){m=this.testerLabel=this.chart.surface.add(Ext.apply({type:"text",opacity:0},d))}m.setAttributes({style:g,text:j},true);l=m.getBBox();k=l.width;e=l.height;return{width:b?e:k,height:b?k:e}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(a,d,b){var c=b.sprite.getBBox();return c.x<=a&&c.y<=d&&(c.x+c.width)>=a&&(c.y+c.height)>=d},hideAll:function(a){var e=this.chart.axes,c=e.items,d=c.length,b=0;a=(isNaN(this._index)?a:this._index)||0;if(!this.__excludes){this.__excludes=[]}this.__excludes[a]=true;this.drawSeries();for(b;b0){d.yField.push(e[0].get(b.field))}},getSegment:function(b){var D=this,C=D.rad,d=Math.cos,a=Math.sin,o=Math.abs,l=D.centerX,j=D.centerY,z=0,w=0,v=0,t=0,h=0,g=0,e=0,c=0,A=0.01,n=b.endRho-b.startRho,s=b.startAngle,q=b.endAngle,k=(s+q)/2*C,m=b.margin||0,u=o(q-s)>180,E=Math.min(s,q)*C,B=Math.max(s,q)*C,p=false;l+=m*d(k);j+=m*a(k);z=l+b.startRho*d(E);h=j+b.startRho*a(E);w=l+b.endRho*d(E);g=j+b.endRho*a(E);v=l+b.startRho*d(B);e=j+b.startRho*a(B);t=l+b.endRho*d(B);c=j+b.endRho*a(B);if(o(z-v)<=A&&o(h-e)<=A){p=true}if(p){return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["Z"]]}}else{return{path:[["M",z,h],["L",w,g],["A",b.endRho,b.endRho,0,+u,1,t,c],["L",v,e],["A",b.startRho,b.startRho,0,+u,0,z,h],["Z"]]}}},calcMiddle:function(q){var l=this,m=l.rad,p=q.slice,o=l.centerX,n=l.centerY,k=p.startAngle,e=p.endAngle,j=Math.max(("rho" in p)?p.rho:l.radius,l.label.minMargin),h=+l.donut,b=Math.min(k,e)*m,a=Math.max(k,e)*m,d=-(b+(a-b)/2),g=o+(q.endRho+q.startRho)/2*Math.cos(d),c=n-(q.endRho+q.startRho)/2*Math.sin(d);q.middle={x:g,y:c}},drawSeries:function(){var w=this,U=w.chart,b=U.getChartStore(),A=w.group,Q=w.chart.animate,D=w.chart.axes.get(0),E=D&&D.minimum||w.minimum||0,I=D&&D.maximum||w.maximum||0,n=w.angleField||w.field||w.xField,K=U.surface,H=U.chartBBox,h=w.rad,c=+w.donut,V={},B=[],m=w.seriesStyle,a=w.seriesLabelStyle,g=w.colorArrayStyle,z=g&&g.length||0,k=Math.cos,s=Math.sin,t,e,d,v,r,C,M,F,G,J,S,R,l,T,x,o,O,P,q,y,u,N,L;Ext.apply(m,w.style||{});w.setBBox();y=w.bbox;if(w.colorSet){g=w.colorSet;z=g.length}if(!b||!b.getCount()||w.seriesIsHidden){w.hide();w.items=[];return}e=w.centerX=H.x+(H.width/2);d=w.centerY=H.y+H.height;w.radius=Math.min(e-H.x,d-H.y);w.slices=r=[];w.items=B=[];if(!w.value){J=b.getAt(0);w.value=J.get(n)}M=w.value;if(w.needle){N={series:w,value:M,startAngle:-180,endAngle:0,rho:w.radius};u=-180*(1-(M-E)/(I-E));r.push(N)}else{u=-180*(1-(M-E)/(I-E));N={series:w,value:M,startAngle:-180,endAngle:u,rho:w.radius};L={series:w,value:w.maximum-M,startAngle:u,endAngle:0,rho:w.radius};r.push(N,L)}for(S=0,G=r.length;S=g&&b=n.startRho&&k<=n.endRho)},getLegendColor:function(b){var a=this.colorSet||this.colorArrayStyle;return a[b%a.length]}},1,0,0,0,["series.gauge"],0,[Ext.chart.series,"Gauge"],0));(Ext.cmd.derive("Ext.chart.series.Line",Ext.chart.series.Cartesian,{alternateClassName:["Ext.chart.LineSeries","Ext.chart.LineChart"],type:"line",selectionTolerance:20,showMarkers:true,markerConfig:{},style:{},smooth:false,defaultSmoothness:3,fill:false,constructor:function(c){this.callParent(arguments);var e=this,a=e.chart.surface,g=e.chart.shadow,d,b;c.highlightCfg=Ext.Object.merge({"stroke-width":3},c.highlightCfg);Ext.apply(e,c,{shadowAttributes:[{"stroke-width":6,"stroke-opacity":0.05,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":4,"stroke-opacity":0.1,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}},{"stroke-width":2,"stroke-opacity":0.15,stroke:"rgb(0, 0, 0)",translate:{x:1,y:1}}]});e.group=a.getGroup(e.seriesId);if(e.showMarkers){e.markerGroup=a.getGroup(e.seriesId+"-markers")}if(g){for(d=0,b=e.shadowAttributes.length;daw.width){a=ap.shrink(aD,ag,aw.width);aD=a.x;ag=a.y}ap.items=[];m=0;aB=aD.length;for(R=0;Ra.x+a.width){k-=A}else{k+=A}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(q=="under"||q=="over"){h.setAttributes({rotation:{degrees:0}},true);if(ka.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(q=="over"?-g:g);if(ja.y+a.height){j-=2*g}}}}if(z.chart.animate&&!z.chart.resizing){h.show(true);z.onAnimate(h,{to:{x:k,y:j}})}else{h.setAttributes({x:k,y:j},true);if(u&&z.animation){z.animation.on("afteranimate",function(){h.show(true)})}else{h.show(true)}}},highlightItem:function(){var b=this,a=b.line;b.callParent(arguments);if(a&&!b.highlighted){if(!("__strokeWidth" in a)){a.__strokeWidth=parseFloat(a.attr["stroke-width"])||0}if(a.__anim){a.__anim.paused=true}a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":a.__strokeWidth+3}});b.highlighted=true}},unHighlightItem:function(){var c=this,a=c.line,b;c.callParent(arguments);if(a&&c.highlighted){b=a.__strokeWidth||parseFloat(a.attr["stroke-width"])||0;a.__anim=new Ext.fx.Anim({target:a,to:{"stroke-width":b}});c.highlighted=false}},onPlaceCallout:function(m,r,J,G,F,d,k){if(!F){return}var M=this,s=M.chart,D=s.surface,H=s.resizing,L=M.callouts,t=M.items,v=G==0?false:t[G-1].point,z=(G==t.length-1)?false:t[G+1].point,c=[+J.point[0],+J.point[1]],A,g,N,K,o,q,I=L.offsetFromViz||30,C=L.offsetToSide||10,B=L.offsetBox||3,h,e,j,w,u,E=M.clipRect,b={width:L.styles.width||10,height:L.styles.height||10},n,l;if(!v){v=c}if(!z){z=c}K=(z[1]-v[1])/(z[0]-v[0]);o=(c[1]-v[1])/(c[0]-v[0]);q=(z[1]-c[1])/(z[0]-c[0]);g=Math.sqrt(1+K*K);A=[1/g,K/g];N=[-A[1],A[0]];if(o>0&&q<0&&N[1]<0||o<0&&q>0&&N[1]>0){N[0]*=-1;N[1]*=-1}else{if(Math.abs(o)Math.abs(q)&&N[0]>0){N[0]*=-1;N[1]*=-1}}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(h(E[0]+E[2])){N[0]*=-1}if(e(E[1]+E[3])){N[1]*=-1}n=c[0]+N[0]*I;l=c[1]+N[1]*I;h=n+(N[0]>0?0:-(b.width+2*B));e=l-b.height/2-B;j=b.width+2*B;w=b.height+2*B;if(s.animate){M.onAnimate(m.lines,{to:{path:["M",c[0],c[1],"L",n,l,"Z"]}});if(m.panel){m.panel.setPosition(h,e,true)}}else{m.lines.setAttributes({path:["M",c[0],c[1],"L",n,l,"Z"]},true);if(m.panel){m.panel.setPosition(h,e)}}for(u in m){m[u].show(true)}},isItemInPoint:function(j,g,A,q){var C=this,n=C.items,s=C.selectionTolerance,k=null,z,c,p,v,h,w,b,t,a,l,B,e,d,o,u,r,D=Math.sqrt,m=Math.abs;c=n[q];z=q&&n[q-1];if(q>=h){z=n[h-1]}p=z&&z.point;v=c&&c.point;w=z?p[0]:v[0]-s;b=z?p[1]:v[1];t=c?v[0]:p[0]+s;a=c?v[1]:p[1];e=D((j-w)*(j-w)+(g-b)*(g-b));d=D((j-t)*(j-t)+(g-a)*(g-a));o=Math.min(e,d);if(o<=s){return o==e?z:c}return false},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Cartesian.prototype.hideAll.call(e)}else{Ext.chart.series.Cartesian.prototype.showAll.call(e)}if(e.line){e.line.setAttributes({hidden:!a},true);if(e.line.shadows){for(b=0,c=e.line.shadows,d=c.length;b1?T:U)%w]}||{}));D=Ext.apply({},o.segment,{slice:r,series:s,storeItem:r.storeItem,index:U});s.calcMiddle(D);if(g){D.shadows=r.shadowAttrs[T]}y[U]=D;if(!z){m=Ext.apply({type:"path",group:x,middle:D.middle},Ext.apply(h,e&&{fill:e[(K>1?T:U)%w]}||{}));z=J.add(Ext.apply(m,o))}r.sprite=r.sprite||[];D.sprite=z;r.sprite.push(z);r.point=[D.middle.x,D.middle.y];if(S){o=s.renderer(z,a.getAt(U),o,U,a);z._to=o;z._animating=true;s.onAnimate(z,{to:o,listeners:{afteranimate:{fn:function(){this._animating=false},scope:z}}})}else{o=s.renderer(z,a.getAt(U),Ext.apply(o,{hidden:false}),U,a);z.setAttributes(o,true)}B+=q}}F=x.getCount();for(U=0;U>0]&&x.getAt(U)){x.getAt(U).hide(true)}}if(g){aa=Q.length;for(E=0;E>0]){for(T=0;T90&&A<270)?A+180:A;h=k.attr.rotation.degrees;if(h!=null&&Math.abs(h-A)>180*0.5){if(A>h){A-=360}else{A+=360}A=A%360}else{A=a(A)}b.rotate={degrees:A,x:b.x,y:b.y};break;default:break}b.translate={x:0,y:0};if(e&&!B&&(u!="rotate"||h!=null)){E.onAnimate(k,{to:b})}else{k.setAttributes(b,true)}k._from=t},onPlaceCallout:function(l,o,z,v,u,d,e){var A=this,q=A.chart,j=A.centerX,h=A.centerY,B=z.middle,b={x:B.x,y:B.y},m=B.x-j,k=B.y-h,c=1,n,g=Math.atan2(k,m||1),a=(l&&l.label?l.label.getBBox():{width:0,height:0}),w=20,t=10,s=10,r;if(!a.width||!a.height){return}c=z.endRho+w;n=(z.endRho+z.startRho)/2+(z.endRho-z.startRho)/3;b.x=c*Math.cos(g)+j;b.y=c*Math.sin(g)+h;m=n*Math.cos(g);k=n*Math.sin(g);if(q.animate){A.onAnimate(l.lines,{to:{path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]}});A.onAnimate(l.box,{to:{x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s}});A.onAnimate(l.label,{to:{x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)}})}else{l.lines.setAttributes({path:["M",m+j,k+h,"L",b.x,b.y,"Z","M",b.x,b.y,"l",m>0?t:-t,0,"z"]},true);l.box.setAttributes({x:b.x+(m>0?t:-(t+a.width+2*s)),y:b.y+(k>0?(-a.height-s/2):(-a.height-s/2)),width:a.width+2*s,height:a.height+2*s},true);l.label.setAttributes({x:b.x+(m>0?(t+s):-(t+a.width+s)),y:b.y+(k>0?-a.height/4:-a.height/4)},true)}for(r in l){l[r].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(l,j,n,e){var h=this,d=h.centerX,c=h.centerY,p=Math.abs,o=p(l-d),m=p(j-c),g=n.startAngle,a=n.endAngle,k=Math.sqrt(o*o+m*m),b=Math.atan2(j-c,l-d)/h.rad;if(b>h.firstAngle){b-=h.accuracy}return(b<=g&&b>a&&k>=n.startRho&&k<=n.endRho)},hideAll:function(c){var g,b,j,h,e,a,d;c=(isNaN(this._index)?c:this._index)||0;this.__excludes=this.__excludes||[];this.__excludes[c]=true;d=this.slices[c].sprite;for(e=0,a=d.length;e45&&n<135)||(n>225&&n<315)){w=(n>45&&n<135?1:-1);b.y+=w*r.height/2}else{w=(n>=135&&n<=225?-1:1);b.x+=w*r.width/2}if(u){h.setAttributes({x:k,y:j},true)}if(d){h.show(true);A.onAnimate(h,{to:b})}else{h.setAttributes(b,true);h.show(true)}},toggleAll:function(a){var e=this,b,d,g,c;if(!a){Ext.chart.series.Radar.superclass.hideAll.call(e)}else{Ext.chart.series.Radar.superclass.showAll.call(e)}if(e.radar){e.radar.setAttributes({hidden:!a},true);if(e.radar.shadows){for(b=0,c=e.radar.shadows,d=c.length;ba.x+a.width){k-=B}else{k+=B}h.setAttributes({rotation:{x:k,y:j,degrees:-45}},true)}else{if(r=="under"||r=="over"){h.setAttributes({rotation:{degrees:0}},true);if(ka.x+a.width){k=a.x+a.width-o}}g=p.height/2+n;j=j+(r=="over"?-g:g);if(ja.y+a.height){j-=2*g}}}}if(!m.animate){h.setAttributes({x:k,y:j},true);h.show(true)}else{if(v){q=w.sprite.getActiveAnimation();if(q){q.on("afteranimate",function(){h.setAttributes({x:k,y:j},true);h.show(true)})}else{h.show(true)}}else{A.onAnimate(h,{to:{x:k,y:j}})}}},onPlaceCallout:function(k,m,B,z,w,c,h){var E=this,n=E.chart,u=n.surface,A=n.resizing,D=E.callouts,o=E.items,b=B.point,F,a=k.label.getBBox(),C=30,t=10,s=3,e,d,g,r,q,v=E.bbox,l,j;F=[Math.cos(Math.PI/4),-Math.sin(Math.PI/4)];l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(e(v[0]+v[2])){F[0]*=-1}if(d(v[1]+v[3])){F[1]*=-1}l=b[0]+F[0]*C;j=b[1]+F[1]*C;e=l+(F[0]>0?0:-(a.width+2*s));d=j-a.height/2-s;g=a.width+2*s;r=a.height+2*s;if(n.animate){E.onAnimate(k.lines,{to:{path:["M",b[0],b[1],"L",l,j,"Z"]}},true);E.onAnimate(k.box,{to:{x:e,y:d,width:g,height:r}},true);E.onAnimate(k.label,{to:{x:l+(F[0]>0?s:-(a.width+s)),y:j}},true)}else{k.lines.setAttributes({path:["M",b[0],b[1],"L",l,j,"Z"]},true);k.box.setAttributes({x:e,y:d,width:g,height:r},true);k.label.setAttributes({x:l+(F[0]>0?s:-(a.width+s)),y:j},true)}for(q in k){k[q].show(true)}},onAnimate:function(b,a){b.show();return this.callParent(arguments)},isItemInPoint:function(c,h,e){var b,d=10,a=Math.abs;function g(j){var l=a(j[0]-c),k=a(j[1]-h);return Math.sqrt(l*l+k*k)}b=e.point;return(b[0]-d<=c&&b[0]+d>=c&&b[1]-d<=h&&b[1]+d>=h)}},1,0,0,0,["series.scatter"],0,[Ext.chart.series,"Scatter"],0));(Ext.cmd.derive("Ext.layout.container.Table",Ext.layout.container.Container,{alternateClassName:"Ext.layout.TableLayout",monitorResize:false,type:"table",createsInnerCt:true,targetCls:Ext.baseCSSPrefix+"table-layout-ct",tableCls:Ext.baseCSSPrefix+"table-layout",cellCls:Ext.baseCSSPrefix+"table-layout-cell",tableAttrs:null,getItemSizePolicy:function(a){return this.autoSizePolicy},initHierarchyState:function(a){a.inShrinkWrapTable=true},getLayoutItems:function(){var g=this,b=[],c=g.callParent(),e,a=c.length,d;for(d=0;d=h||n[d]>0){if(d>=h){d=0;a=0;b++;for(c=0;c0){n[c]--}}}else{d++}}m.push({rowIdx:b,cellIdx:a});for(c=l.colspan||1;c;--c){n[d]=l.rowspan||1;++d}++a}return m},getRenderTree:function(){var k=this,h=k.getLayoutItems(),o,p=[],q=Ext.apply({tag:"table",role:"presentation",cls:k.tableCls,cellspacing:0,cellpadding:0,cn:{tag:"tbody",cn:p}},k.tableAttrs),c=k.tdAttrs,d=k.needsDivWrap(),e,g=h.length,n,m,j,b,a,l;o=k.calculateCells(h);for(e=0;e0){--this.disabled}},handleAdd:function(b,a){if(!this.disabled){if(a.is(this.selector)){this.onItemAdd(a.ownerCt,a)}if(a.isQueryable){this.onContainerAdd(a)}}},onItemAdd:function(c,b){var e=this,a=e.items,d=e.addHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.add(b)}}},onItemRemove:function(c,b){var e=this,a=e.items,d=e.removeHandler;if(!e.disabled){if(d){d.call(e.scope||b,b)}if(a){a.remove(b)}}},onContainerAdd:function(g,b){var k=this,j,h,c=k.handleAdd,a=k.handleRemove,d,e;if(g.isContainer){g.on("add",c,k);g.on("dockedadd",c,k);g.on("remove",a,k);g.on("dockedremove",a,k)}if(b!==true){j=g.query(k.selector);for(d=0,h=j.length;d]+>/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}},0,0,0,0,0,0,[Ext.data,"SortTypes"],0));(Ext.cmd.derive("Ext.data.Types",Ext.Base,{singleton:true},0,0,0,0,0,0,[Ext.data,"Types"],function(){var a=Ext.data.SortTypes;Ext.apply(Ext.data.Types,{stripRe:/[\$,%]/g,AUTO:{sortType:a.none,type:"auto"},STRING:{convert:function(c){var b=this.useNull?null:"";return(c===undefined||c===null)?b:String(c)},sortType:a.asUCString,type:"string"},INT:{convert:function(b){if(typeof b=="number"){return parseInt(b)}return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"int"},FLOAT:{convert:function(b){if(typeof b==="number"){return b}return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)},sortType:a.none,type:"float"},BOOL:{convert:function(b){if(typeof b==="boolean"){return b}if(this.useNull&&(b===undefined||b===null||b==="")){return null}return b==="true"||b==1},sortType:a.none,type:"bool"},DATE:{convert:function(c){var d=this.dateReadFormat||this.dateFormat,b;if(!c){return null}if(c instanceof Date){return c}if(d){return Ext.Date.parse(c,d)}b=Date.parse(c);return b?new Date(b):null},sortType:a.asDate,type:"date"}});Ext.apply(Ext.data.Types,{BOOLEAN:this.BOOL,INTEGER:this.INT,NUMBER:this.FLOAT})}));(Ext.cmd.derive("Ext.data.Field",Ext.Base,{isField:true,constructor:function(b){var d=this,c=Ext.data.Types,a;if(Ext.isString(b)){b={name:b}}Ext.apply(d,b);a=d.sortType;if(d.type){if(Ext.isString(d.type)){d.type=c[d.type.toUpperCase()]||c.AUTO}}else{d.type=c.AUTO}if(Ext.isString(a)){d.sortType=Ext.data.SortTypes[a]}else{if(Ext.isEmpty(a)){d.sortType=d.type.sortType}}if(!b.hasOwnProperty("convert")){d.convert=d.type.convert}else{if(!d.convert&&d.type.convert&&!b.hasOwnProperty("defaultValue")){d.defaultValue=d.type.convert(d.defaultValue)}}if(b.convert){d.hasCustomConvert=true}},dateFormat:null,dateReadFormat:null,dateWriteFormat:null,useNull:false,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC",allowBlank:true,persist:true},1,0,0,0,["data.field"],0,[Ext.data,"Field"],0));(Ext.cmd.derive("Ext.data.Errors",Ext.util.MixedCollection,{isValid:function(){return this.length===0},getByField:function(d){var c=[],a,b;for(b=0;ba)){return false}else{return true}},email:function(b,a){return Ext.data.validations.emailRe.test(a)},format:function(a,b){return !!(a.matcher&&a.matcher.test(b))},inclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)!=-1},exclusion:function(a,b){return a.list&&Ext.Array.indexOf(a.list,b)==-1}},0,0,0,0,0,0,[Ext.data,"validations"],0));(Ext.cmd.derive("Ext.data.Model",Ext.Base,{alternateClassName:"Ext.data.Record",compareConvertFields:function(a,d){var c=a.convert&&a.type&&a.convert!==a.type.convert,b=d.convert&&d.type&&d.convert!==d.type.convert;if(c&&!b){return 1}if(!c&&b){return -1}return 0},itemNameFn:function(a){return a.name},onClassExtended:function(b,c,a){var d=a.onBeforeCreated;a.onBeforeCreated=function(g,F){var E=this,G=Ext.getClassName(g),t=g.prototype,z=g.prototype.superclass,j=F.validations||[],v=F.fields||[],h,o=F.associations||[],e=function(I,K){var J=0,H,L;if(I){I=Ext.Array.from(I);for(H=I.length;J0;if(e){c.afterEdit(d)}}}},getModifiedFieldNames:function(d){var c=this,e=c[c.persistenceProperty],a=[],b;d=d||c.dataSave;for(b in e){if(e.hasOwnProperty(b)){if(!c.isEqual(e[b],d[b])){a.push(b)}}}return a},getChanges:function(){var a=this.modified,b={},c;for(c in a){if(a.hasOwnProperty(c)){b[c]=this.get(c)}}return b},isModified:function(a){return this.modified.hasOwnProperty(a)},setDirty:function(){var c=this,a=c.fields.items,g=a.length,e,b,d;c.dirty=true;for(d=0;d0){b=p.data.items;h=b.length;for(r=0;r0;if(l){if(d){w[c]=u[0].property;w[n]=u[0].direction||"ASC"}else{w[c]=x.encodeSorters(u)}}if(e&&a&&a.length>0){if(m){k=0;if(a.length>1&&l){k=1}w[e]=a[k].property;w[p]=a[k].direction}else{w[e]=x.encodeSorters(a)}}if(r&&o&&o.length>0){w[r]=x.encodeFilters(o)}return w},buildUrl:function(c){var b=this,a=b.getUrl(c);if(b.noCache){a=Ext.urlAppend(a,Ext.String.format("{0}={1}",b.cacheString,Ext.Date.now()))}return a},getUrl:function(a){return a.url||this.api[a.action]||this.url},doRequest:function(a,c,b){},afterRequest:Ext.emptyFn,onDestroy:function(){Ext.destroy(this.reader,this.writer)}},1,0,0,0,["proxy.server"],0,[Ext.data.proxy,"Server",Ext.data,"ServerProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Ajax",Ext.data.proxy.Server,{alternateClassName:["Ext.data.HttpProxy","Ext.data.AjaxProxy"],actionMethods:{create:"POST",read:"GET",update:"POST",destroy:"POST"},binary:false,doRequest:function(a,e,b){var d=this.getWriter(),c=this.buildRequest(a);if(a.allowWrite()){c=d.write(c)}Ext.apply(c,{binary:this.binary,headers:this.headers,timeout:this.timeout,scope:this,callback:this.createRequestCallback(c,a,e,b),method:this.getMethod(c),disableCaching:false});Ext.Ajax.request(c);return c},getMethod:function(a){return this.actionMethods[a.action]},createRequestCallback:function(d,a,e,b){var c=this;return function(h,j,g){c.processResponse(j,a,d,g,e,b)}}},0,0,0,0,["proxy.ajax"],0,[Ext.data.proxy,"Ajax",Ext.data,"HttpProxy",Ext.data,"AjaxProxy"],function(){Ext.data.HttpProxy=this}));(Ext.cmd.derive("Ext.data.proxy.Client",Ext.data.proxy.Proxy,{alternateClassName:"Ext.data.ClientProxy",isSynchronous:true,clear:function(){}},0,0,0,0,0,0,[Ext.data.proxy,"Client",Ext.data,"ClientProxy"],0));(Ext.cmd.derive("Ext.data.proxy.Memory",Ext.data.proxy.Client,{alternateClassName:"Ext.data.MemoryProxy",constructor:function(a){this.callParent([a]);this.setReader(this.reader)},updateOperation:function(b,g,d){var c=0,e=b.getRecords(),a=e.length;for(c;c=h.total){h.success=false;h.count=0;h.records=[]}else{h.records=Ext.Array.slice(h.records,c.start,c.start+c.limit);h.count=h.records.length}}}if(h.success){c.setSuccessful()}else{g.fireEvent("exception",g,null,c)}Ext.callback(j,k||g,[c])},clear:Ext.emptyFn},1,0,0,0,["proxy.memory"],0,[Ext.data.proxy,"Memory",Ext.data,"MemoryProxy"],0));(Ext.cmd.derive("Ext.util.LruCache",Ext.util.HashMap,{constructor:function(a){Ext.apply(this,a);this.callParent([a])},add:function(b,e){var d=this,a=d.findKey(e),c;if(a){d.unlinkEntry(c=d.map[a]);c.prev=d.last;c.next=null}else{c={prev:d.last,next:null,key:b,value:e}}if(d.last){d.last.next=c}else{d.first=c}d.last=c;d.callParent([b,c]);d.prune();return e},insertBefore:function(b,g,c){var e=this,a,d;if(c=this.map[this.findKey(c)]){a=e.findKey(g);if(a){e.unlinkEntry(d=e.map[a])}else{d={prev:c.prev,next:c,key:b,value:g}}if(c.prev){d.prev.next=d}else{e.first=d}d.next=c;c.prev=d;e.prune();return g}else{return e.add(b,g)}},get:function(a){var b=this.map[a];if(b){if(b.next){this.moveToEnd(b)}return b.value}},removeAtKey:function(a){this.unlinkEntry(this.map[a]);return this.callParent(arguments)},clear:function(a){this.first=this.last=null;return this.callParent(arguments)},unlinkEntry:function(a){if(a){if(a.next){a.next.prev=a.prev}else{this.last=a.prev}if(a.prev){a.prev.next=a.next}else{this.first=a.next}a.prev=a.next=null}},moveToEnd:function(a){this.unlinkEntry(a);if(a.prev=this.last){this.last.next=a}else{this.first=a}this.last=a},getArray:function(c){var a=[],b=this.first;while(b){a.push(c?b.key:b.value);b=b.next}return a},each:function(c,b,a){var g=this,e=a?g.last:g.first,d=g.length;b=b||g;while(e){if(c.call(b,e.key,e.value,d)===false){break}e=a?e.prev:e.next}return g},findKey:function(b){var a,c=this.map;for(a in c){if(c.hasOwnProperty(a)&&c[a].value===b){return a}}return undefined},clone:function(){var a=new this.self(this.initialConfig),c=this.map,b;a.suspendEvents();for(b in c){if(c.hasOwnProperty(b)){a.add(b,c[b].value)}}a.resumeEvents();return a},prune:function(){var a=this,b=a.maxSize?(a.length-a.maxSize):0;if(b>0){for(;a.first&&b;b--){a.removeAtKey(a.first.key)}}}},1,0,0,0,0,0,[Ext.util,"LruCache"],0));(Ext.cmd.derive("Ext.data.PageMap",Ext.util.LruCache,{clear:function(a){var b=this;b.pageMapGeneration=(b.pageMapGeneration||0)+1;b.callParent(arguments)},forEach:function(k,m){var h=this,d=Ext.Object.getKeys(h.map),a=d.length,c,b,l,e,g;for(c=0;c0){this.sort(a.items,"prepend",false)}},decodeGroupers:function(e){if(!Ext.isArray(e)){if(e===undefined){e=[]}else{e=[e]}}var d=e.length,g=Ext.util.Grouper,b,c,a=[];for(c=0;c0},fireGroupChange:function(){this.fireEvent("groupchange",this,this.groupers)},getGroups:function(b){var d=this.data.items,a=d.length,c=[],k={},g,h,j,e;for(e=0;e-1){q.push({record:b,index:g})}if(d){d.remove(b)}}q=Ext.Array.sort(q,function(w,v){var y=w.index,x=v.index;return y===v.index2?0:(yb-1)?b-1:d.prefetchEnd,c;a=Math.max(0,a);c=e.data.getRange(g,a);if(d.fireEvent!==false){e.fireEvent("guaranteedrange",c,g,a,d)}if(d.callback){d.callback.call(d.scope||e,c,g,a,d)}},guaranteeRange:function(e,a,d,c,b){b=Ext.apply({callback:d,scope:c},b);this.getRange(e,a,b)},prefetchRange:function(g,b){var d=this,c,a,e;if(!d.rangeCached(g,b)){c=d.getPageFromRecordIndex(g);a=d.getPageFromRecordIndex(b);d.data.maxSize=d.purgePageCount?(a-c+1)+d.purgePageCount:0;for(e=c;e<=a;e++){if(!d.pageCached(e)){d.prefetchPage(e)}}}},primeCache:function(d,a,c){var b=this;if(c===-1){d=Math.max(d-b.leadingBufferZone,0);a=Math.min(a+b.trailingBufferZone,b.totalCount-1)}else{if(c===1){d=Math.max(Math.min(d-b.trailingBufferZone,b.totalCount-b.pageSize),0);a=Math.min(a+b.leadingBufferZone,b.totalCount-1)}else{d=Math.min(Math.max(Math.floor(d-((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-b.pageSize);a=Math.min(Math.max(Math.ceil(a+((b.leadingBufferZone+b.trailingBufferZone)/2)),0),b.totalCount-1)}}b.prefetchRange(d,a)},sort:function(){var a=this;if(a.buffered&&a.remoteSort){a.data.clear()}return a.callParent(arguments)},doSort:function(b){var e=this,a,d,c;if(e.remoteSort){if(e.buffered){e.data.clear();e.loadPage(1)}else{e.load()}}else{e.data.sortBy(b);if(!e.buffered){a=e.getRange();d=a.length;for(c=0;c=h.totalCount)?d:g;j=c===0?0:c-1;b=g===d?g:g+1;h.lastRequestStart=c;if(h.rangeCached(j,b)){h.onGuaranteedRange(l);k=h.data.getRange(c,g)}else{h.fireEvent("cachemiss",h,c,g);a=function(n,m){if(h.rangeCached(j,b)){h.fireEvent("cachefilled",h,c,g);h.data.un("pageAdded",a);h.onGuaranteedRange(l)}};h.data.on("pageAdded",a);h.prefetchRange(c,g)}h.primeCache(c,g,c0){c=b[0].get(g)}for(;d0){a=c[0].get(g)}for(;da){a=e}}return a},average:function(c,a){var b=this;if(a&&b.isGrouped()){return b.aggregate(b.getAverage,b,true,[c])}else{return b.getAverage(b.data.items,c)}},getAverage:function(b,e){var c=0,a=b.length,d=0;if(b.length>0){for(;c1){for(c=0,a=b.length;c0){g.timeout=setTimeout(Ext.bind(k.handleTimeout,k,[g]),n)}k.setupErrorHandling(g);k[m]=Ext.bind(k.handleResponse,k,[g],true);k.loadScript(g);return g},abort:function(c){var b=this,d=b.requests,a;if(c){if(!c.id){c=d[c]}b.handleAbort(c)}else{for(a in d){if(d.hasOwnProperty(a)){b.abort(d[a])}}}},setupErrorHandling:function(a){a.script.onerror=Ext.bind(this.handleError,this,[a])},handleAbort:function(a){a.errorType="abort";this.handleResponse(null,a)},handleError:function(a){a.errorType="error";this.handleResponse(null,a)},cleanupErrorHandling:function(a){a.script.onerror=null},handleTimeout:function(a){a.errorType="timeout";this.handleResponse(null,a)},handleResponse:function(a,b){var c=true;if(b.timeout){clearTimeout(b.timeout)}delete this[b.callbackName];delete this.requests[b.id];this.cleanupErrorHandling(b);Ext.fly(b.script).remove();if(b.errorType){c=false;Ext.callback(b.failure,b.scope,[b.errorType])}else{Ext.callback(b.success,b.scope,[a])}Ext.callback(b.callback,b.scope,[c,a,b.errorType]);Ext.EventManager.idleEvent.fire()},createScript:function(c,d,b){var a=document.createElement("script");a.setAttribute("src",Ext.urlAppend(c,Ext.Object.toQueryString(d)));a.setAttribute("async",true);a.setAttribute("type","text/javascript");return a},loadScript:function(a){Ext.getHead().appendChild(a.script)}},0,0,0,0,0,0,[Ext.data,"JsonP"],0));(Ext.cmd.derive("Ext.data.proxy.JsonP",Ext.data.proxy.Server,{alternateClassName:"Ext.data.ScriptTagProxy",defaultWriterType:"base",callbackKey:"callback",recordParam:"records",autoAppendParams:true,constructor:function(){this.addEvents("exception");this.callParent(arguments)},doRequest:function(a,g,b){var d=this,c=d.buildRequest(a),e=c.params;Ext.apply(c,{callbackKey:d.callbackKey,timeout:d.timeout,scope:d,disableCaching:false,callback:d.createRequestCallback(c,a,g,b)});if(d.autoAppendParams){c.params={}}c.jsonp=Ext.data.JsonP.request(c);c.params=e;a.setStarted();d.lastRequest=c;return c},createRequestCallback:function(d,a,e,b){var c=this;return function(j,g,h){delete c.lastRequest;c.processResponse(j,a,d,g,e,b)}},setException:function(b,a){b.setException(b.request.jsonp.errorType)},buildUrl:function(h){var k=this,a=k.callParent(arguments),d=h.records,e=k.getWriter(),g,c,b,j;if(e&&h.operation.allowWrite()){h=e.write(h)}g=h.params;c=g.filters,delete g.filters;if(c&&c.length){for(j=0;j0){g[k.recordParam]=k.encodeRecords(d)}if(k.autoAppendParams){a=Ext.urlAppend(a,Ext.Object.toQueryString(g))}return a},abort:function(){var a=this.lastRequest;if(a){Ext.data.JsonP.abort(a.jsonp)}},encodeRecords:function(b){var d=[],c=0,a=b.length;for(;c0},isExpandable:function(){var b=this;if(b.get("expandable")){return !(b.isLeaf()||(b.isLoaded()&&!b.hasChildNodes()))}return false},triggerUIUpdate:function(){this.afterEdit([])},appendChild:function(c,l,d){var j=this,e,h,g,k,b,m={isLast:true,parentId:j.getId(),depth:(j.data.depth||0)+1};if(Ext.isArray(c)){j.callStore("suspendAutoSync");for(e=0,h=c.length-1;e0){Ext.Array.sort(e,h);this.setFirstChild(e[0]);this.setLastChild(e[g-1]);for(d=0;d0){e=[];for(d=0;dk){j=j.substring(j.length-k)}else{if(j.length>>16)&4095)|(k.version<<12),4);l[3]=a(128|((k.clockSeq>>>8)&63),2)+a(k.clockSeq&255,2);l[4]=a(k.salt.hi,4)+a(k.salt.lo,8);if(k.version==4){k.init()}else{++j.lo;if(j.lo>=c){j.lo=0;++j.hi}}return l.join("-").toLowerCase()},getRecId:function(j){return j.getId()},init:function(){var k=this,j,l;if(k.version==4){k.clockSeq=d(0,h-1);j=k.salt||(k.salt={});l=k.timestamp||(k.timestamp={});j.lo=d(0,c-1);j.hi=d(0,g-1);l.lo=d(0,c-1);l.hi=d(0,e-1)}else{k.salt=b(k.salt);k.timestamp=b(k.timestamp);k.salt.hi|=256}},reconfigure:function(j){Ext.apply(this,j);this.init()}}}()),1,0,0,0,["idgen.uuid"],0,[Ext.data,"UuidGenerator"],0));(Ext.cmd.derive("Ext.data.reader.Xml",Ext.data.reader.Reader,{alternateClassName:"Ext.data.XmlReader",createAccessor:function(b){var a=this;if(Ext.isEmpty(b)){return Ext.emptyFn}if(Ext.isFunction(b)){return b}return function(c){return a.getNodeValue(Ext.DomQuery.selectNode(b,c))}},getNodeValue:function(a){if(a){if(typeof a.normalize==="function"){a.normalize()}a=a.firstChild;if(a){return a.nodeValue}}return undefined},getResponseData:function(a){var c=a.responseXML,b,d;if(!c){d="XML data not found in the response";b=new Ext.data.ResultSet({total:0,count:0,records:[],success:false,message:d});this.fireEvent("exception",this,a,b);Ext.Logger.warn(d);return b}return this.readRecords(c)},getData:function(a){return a.documentElement||a},getRoot:function(b){var c=b.nodeName,a=this.root;if(!a||(c&&c==a)){return b}else{if(Ext.DomQuery.isXml(b)){return Ext.DomQuery.selectNode(a,b)}}},extractData:function(a){var b=this.record;if(b!=a.nodeName){a=Ext.DomQuery.select(b,a)}else{a=[a]}return this.callParent([a])},getAssociatedDataRoot:function(b,a){return Ext.DomQuery.select(a,b)[0]},readRecords:function(a){if(Ext.isArray(a)){a=a[0]}this.xmlData=a;return this.callParent([a])},createFieldAccessExpression:function(g,d,c){var e=this.namespace,b,a;b=g.mapping||((e?e+"|":"")+g.name);if(typeof b==="function"){a=d+".mapping("+c+", this)"}else{a='me.getNodeValue(Ext.DomQuery.selectNode("'+b+'", '+c+"))"}return a}},0,0,0,0,["reader.xml"],0,[Ext.data.reader,"Xml",Ext.data,"XmlReader"],0));(Ext.cmd.derive("Ext.data.writer.Xml",Ext.data.writer.Writer,{alternateClassName:"Ext.data.XmlWriter",documentRoot:"xmlData",defaultDocumentRoot:"xmlData",header:"",record:"record",writeRecords:function(a,b){var h=this,d=[],c=0,g=b.length,j=h.documentRoot,e=h.record,m=b.length!==1,l,k;d.push(h.header||"");if(!j&&m){j=h.defaultDocumentRoot}if(j){d.push("<",j,">")}for(;c");for(k in l){if(l.hasOwnProperty(k)){d.push("<",k,">",l[k],"")}}d.push("")}if(j){d.push("")}a.xmlData=d.join("");return a}},0,0,0,0,["writer.xml"],0,[Ext.data.writer,"Xml",Ext.data,"XmlWriter"],0));(Ext.cmd.derive("Ext.data.XmlStore",Ext.data.Store,{constructor:function(a){a=Ext.apply({proxy:{type:"ajax",reader:"xml",writer:"xml"}},a);this.callParent([a])}},1,0,0,0,["store.xml"],0,[Ext.data,"XmlStore"],0));(Ext.cmd.derive("Ext.data.association.BelongsTo",Ext.data.association.Association,{alternateClassName:"Ext.data.BelongsToAssociation",constructor:function(c){this.callParent(arguments);var e=this,a=e.ownerModel.prototype,g=e.associatedName,d=e.getterName||"get"+g,b=e.setterName||"set"+g;Ext.applyIf(e,{name:g,foreignKey:g.toLowerCase()+"_id",instanceName:g+"BelongsToInstance",associationKey:g.toLowerCase()});a[d]=e.createGetter();a[b]=e.createSetter()},createSetter:function(){var c=this,b=c.foreignKey,a=c.instanceName;return function(h,e,g){var j=h&&h.isModel,d=j?h.getId():h;if(j){this[a]=h}else{if(this[a] instanceof Ext.data.Model&&!this.isEqual(this.get(b),d)){delete this[a]}}this.set(b,d);if(Ext.isFunction(e)){e={callback:e,scope:g||this}}if(Ext.isObject(e)){return this.save(e)}}},createGetter:function(){var d=this,e=d.associatedName,g=d.associatedModel,c=d.foreignKey,b=d.primaryKey,a=d.instanceName;return function(l,m){l=l||{};var k=this,n=k.get(c),o,h,j;if(l.reload===true||k[a]===undefined){h=Ext.ModelManager.create({},e);h.set(b,n);if(typeof l=="function"){l={callback:l,scope:m||k}}o=l.success;l.success=function(p){k[a]=p;if(o){o.apply(this,arguments)}};g.load(n,l);k[a]=h;return h}else{h=k[a];j=[h];m=m||l.scope||k;Ext.callback(l,m,j);Ext.callback(l.success,m,j);Ext.callback(l.failure,m,j);Ext.callback(l.callback,m,j);return h}}},read:function(b,a,c){b[this.instanceName]=a.read([c]).records[0]}},1,0,0,0,["association.belongsto"],0,[Ext.data.association,"BelongsTo",Ext.data,"BelongsToAssociation"],0));(Ext.cmd.derive("Ext.util.Inflector",Ext.Base,{singleton:true,plurals:[[(/(quiz)$/i),"$1zes"],[(/^(ox)$/i),"$1en"],[(/([m|l])ouse$/i),"$1ice"],[(/(matr|vert|ind)ix|ex$/i),"$1ices"],[(/(x|ch|ss|sh)$/i),"$1es"],[(/([^aeiouy]|qu)y$/i),"$1ies"],[(/(hive)$/i),"$1s"],[(/(?:([^f])fe|([lr])f)$/i),"$1$2ves"],[(/sis$/i),"ses"],[(/([ti])um$/i),"$1a"],[(/(buffal|tomat|potat)o$/i),"$1oes"],[(/(bu)s$/i),"$1ses"],[(/(alias|status|sex)$/i),"$1es"],[(/(octop|vir)us$/i),"$1i"],[(/(ax|test)is$/i),"$1es"],[(/^person$/),"people"],[(/^man$/),"men"],[(/^(child)$/),"$1ren"],[(/s$/i),"s"],[(/$/),"s"]],singulars:[[(/(quiz)zes$/i),"$1"],[(/(matr)ices$/i),"$1ix"],[(/(vert|ind)ices$/i),"$1ex"],[(/^(ox)en/i),"$1"],[(/(alias|status)es$/i),"$1"],[(/(octop|vir)i$/i),"$1us"],[(/(cris|ax|test)es$/i),"$1is"],[(/(shoe)s$/i),"$1"],[(/(o)es$/i),"$1"],[(/(bus)es$/i),"$1"],[(/([m|l])ice$/i),"$1ouse"],[(/(x|ch|ss|sh)es$/i),"$1"],[(/(m)ovies$/i),"$1ovie"],[(/(s)eries$/i),"$1eries"],[(/([^aeiouy]|qu)ies$/i),"$1y"],[(/([lr])ves$/i),"$1f"],[(/(tive)s$/i),"$1"],[(/(hive)s$/i),"$1"],[(/([^f])ves$/i),"$1fe"],[(/(^analy)ses$/i),"$1sis"],[(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i),"$1$2sis"],[(/([ti])a$/i),"$1um"],[(/(n)ews$/i),"$1ews"],[(/people$/i),"person"],[(/s$/i),""]],uncountable:["sheep","fish","series","species","money","rice","information","equipment","grass","mud","offspring","deer","means"],singular:function(b,a){this.singulars.unshift([b,a])},plural:function(b,a){this.plurals.unshift([b,a])},clearSingulars:function(){this.singulars=[]},clearPlurals:function(){this.plurals=[]},isTransnumeral:function(a){return Ext.Array.indexOf(this.uncountable,a)!=-1},pluralize:function(g){if(this.isTransnumeral(g)){return g}var e=this.plurals,d=e.length,a,c,b;for(b=0;bb.tolerance){b.triggerStart(g)}else{return}}if(b.fireEvent("mousemove",b,g)===false){b.onMouseUp(g)}else{b.onDrag(g);b.fireEvent("drag",b,g)}},onMouseUp:function(b){var a=this;a.mouseIsDown=false;if(a.mouseIsOut){a.mouseIsOut=false;a.onMouseOut(b)}b.preventDefault();if(Ext.isIE&&document.releaseCapture){document.releaseCapture()}a.fireEvent("mouseup",a,b);a.endDrag(b)},endDrag:function(c){var b=this,a=b.active;Ext.getDoc().un({mousemove:b.onMouseMove,mouseup:b.onMouseUp,selectstart:b.stopSelect,scope:b});b.clearStart();b.active=false;if(a){b.onEnd(c);b.fireEvent("dragend",b,c)}b._constrainRegion=Ext.EventObject.dragTracked=null},triggerStart:function(b){var a=this;a.clearStart();a.active=true;a.onStart(b);a.fireEvent("dragstart",a,b)},clearStart:function(){var a=this.timer;if(a){clearTimeout(a);this.timer=null}},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},getConstrainRegion:function(){var a=this;if(a.constrainTo){if(a.constrainTo instanceof Ext.util.Region){return a.constrainTo}if(!a._constrainRegion){a._constrainRegion=Ext.fly(a.constrainTo).getViewRegion()}}else{if(!a._constrainRegion){a._constrainRegion=a.getDragCt().getViewRegion()}}return a._constrainRegion},getXY:function(a){return a?this.constrainModes[a](this,this.lastXY):this.lastXY},getOffset:function(c){var b=this.getXY(c),a=this.startXY;return[b[0]-a[0],b[1]-a[1]]},constrainModes:{point:function(b,d){var c=b.dragRegion,a=b.getConstrainRegion();if(!a){return d}c.x=c.left=c[0]=c.right=d[0];c.y=c.top=c[1]=c.bottom=d[1];c.constrainTo(a);return[c.left,c.top]},dragTarget:function(c,g){var b=c.startXY,e=c.startRegion.copy(),a=c.getConstrainRegion(),d;if(!a){return g}e.translateBy(g[0]-b[0],g[1]-b[1]);if(e.right>a.right){g[0]+=d=(a.right-e.right);e.left+=d}if(e.lefta.bottom){g[1]+=d=(a.bottom-e.bottom);e.top+=d}if(e.top0){if(b){for(d=0,a=b.length;d0){c.sendRequest(a==1?b[0]:b);c.callBuffer=[]}},configureFormRequest:function(e,a,b,j,k){var h=this,c,g,d;c=new Ext.direct.Transaction({provider:h,action:e,method:a.name,args:[b,j,k],callback:k&&Ext.isFunction(j)?Ext.Function.bind(j,k):j,isForm:true});if(h.fireEvent("beforecall",h,c,a)!==false){Ext.direct.Manager.addTransaction(c);g=String(b.getAttribute("enctype")).toLowerCase()=="multipart/form-data";d={extTID:c.id,extAction:e,extMethod:a.name,extType:"rpc",extUpload:String(g)};Ext.apply(c,{form:Ext.getDom(b),isUpload:g,params:j&&Ext.isObject(j.params)?Ext.apply(d,j.params):d});h.fireEvent("call",h,c,a);h.sendFormRequest(c)}},sendFormRequest:function(b){var a=this;Ext.Ajax.request({url:a.url,params:b.params,callback:a.onData,scope:a,form:b.form,isUpload:b.isUpload,transaction:b})}},1,0,0,0,["direct.remotingprovider"],0,[Ext.direct,"RemotingProvider"],0));(Ext.cmd.derive("Ext.dom.Layer",Ext.Element,{alternateClassName:"Ext.Layer",statics:{shims:[]},isLayer:true,localXYNames:{get:"getLocalXY",set:"setLocalXY"},constructor:function(c,b){c=c||{};var d=this,e=Ext.DomHelper,h=c.parentEl,g=h?Ext.getDom(h):document.body,j=c.hideMode,a=Ext.baseCSSPrefix+(c.fixed&&!(Ext.isIE6||Ext.isIEQuirks)?"fixed-layer":"layer");d.el=d;if(b){d.dom=Ext.getDom(b)}if(!d.dom){d.dom=e.append(g,c.dh||{tag:"div",cls:a})}else{d.addCls(a);if(!d.dom.parentNode){g.appendChild(d.dom)}}if(c.preventSync){d.preventSync=true}if(c.id){d.id=d.dom.id=c.id}else{d.id=Ext.id(d.dom)}Ext.Element.addToCache(d);if(c.cls){d.addCls(c.cls)}d.constrain=c.constrain!==false;if(j){d.setVisibilityMode(Ext.Element[j.toUpperCase()]);if(d.visibilityMode==Ext.Element.ASCLASS){d.visibilityCls=c.visibilityCls}}else{if(c.useDisplay){d.setVisibilityMode(Ext.Element.DISPLAY)}else{d.setVisibilityMode(Ext.Element.VISIBILITY)}}if(c.shadow){d.shadowOffset=c.shadowOffset||4;d.shadow=new Ext.Shadow({offset:d.shadowOffset,mode:c.shadow,fixed:c.fixed});d.disableShadow()}else{d.shadowOffset=0}d.useShim=c.shim!==false&&Ext.useShims;if(c.hidden===true){d.hide()}else{d.show()}},getZIndex:function(){return parseInt((this.getShim()||this).getStyle("z-index"),10)},getShim:function(){var b=this,c,a;if(!b.useShim){return null}if(!b.shim){c=b.self.shims.shift();if(!c){c=b.createShim();c.enableDisplayMode("block");c.hide()}a=b.dom.parentNode;if(c.dom.parentNode!=a){a.insertBefore(c.dom,b.dom)}b.shim=c}return b.shim},hideShim:function(){var a=this;if(a.shim){a.shim.setDisplayed(false);a.self.shims.push(a.shim);delete a.shim}},disableShadow:function(){var a=this;if(a.shadow&&!a.shadowDisabled){a.shadowDisabled=true;a.shadow.hide();a.lastShadowOffset=a.shadowOffset;a.shadowOffset=0}},enableShadow:function(a){var b=this;if(b.shadow&&b.shadowDisabled){b.shadowDisabled=false;b.shadowOffset=b.lastShadowOffset;delete b.lastShadowOffset;if(a){b.sync(true)}}},sync:function(b){var j=this,o=j.shadow,g,d,a,c,p,l,k,n,e,m;if(j.preventSync){return}if(!j.updating&&j.isVisible()&&(o||j.useShim)){c=j.getShim();p=j[j.localXYNames.get]();l=p[0];k=p[1];n=j.dom.offsetWidth;e=j.dom.offsetHeight;if(o&&!j.shadowDisabled){if(b&&!o.isVisible()){o.show(j)}else{o.realign(l,k,n,e)}if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();if(o.isVisible()){g=o.el.getXY();d=c.dom.style;a=o.el.getSize();if(Ext.supports.CSS3BoxShadow){a.height+=6;a.width+=4;g[0]-=2;g[1]-=4}d.left=(g[0])+"px";d.top=(g[1])+"px";d.width=(a.width)+"px";d.height=(a.height)+"px"}else{c.setSize(n,e);c[j.localXYNames.set](l,k)}}}else{if(c){m=c.getStyle("z-index");if(m>j.zindex){j.shim.setStyle("z-index",j.zindex-2)}c.show();c.setSize(n,e);c[j.localXYNames.set](l,k)}}}return j},remove:function(){this.hideUnders();this.callParent()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var g=Ext.Element.getViewWidth(),b=Ext.Element.getViewHeight(),m=Ext.getDoc().getScroll(),l=this.getXY(),j=l[0],e=l[1],a=this.shadowOffset,k=this.dom.offsetWidth+a,c=this.dom.offsetHeight+a,d=false;if((j+k)>g+m.left){j=g-k-a;d=true}if((e+c)>b+m.top){e=b-c-a;d=true}if(j-1)&&(p[o] in g)){p[o]=g[p[o]]}if(o=="hidden"&&r.type=="text"){continue}if(o in s){c.dom.setAttribute(o,s[o](p[o],r,m))}else{c.dom.setAttribute(o,p[o])}}}if(r.type=="text"){m.tuneText(r,p)}r.dirtyFont=false;b=j.style;if(b){c.setStyle(b)}r.dirty=false;if(Ext.isSafari3){m.webkitRect.show();setTimeout(function(){m.webkitRect.hide()})}},setClip:function(b,g){var e=this,d=g["clip-rect"],a,c;if(d){if(b.clip){b.clip.parentNode.parentNode.removeChild(b.clip.parentNode)}a=e.createSvgElement("clipPath");c=e.createSvgElement("rect");a.id=Ext.id(null,"ext-clip-");c.setAttribute("x",d.x);c.setAttribute("y",d.y);c.setAttribute("width",d.width);c.setAttribute("height",d.height);a.appendChild(c);e.getDefs().appendChild(a);b.el.dom.setAttribute("clip-path","url(#"+a.id+")");b.clip=c}},applyZIndex:function(d){var g=this,b=g.items,a=b.indexOf(d),e=d.el,c;if(g.el.dom.childNodes[a+2]!==e.dom){if(a>0){do{c=b.getAt(--a).el}while(!c&&a>0)}e.insertAfter(c||g.bgRect)}d.zIndexDirty=false},createItem:function(a){var b=new Ext.draw.Sprite(a);b.surface=this;return b},addGradient:function(h){h=Ext.draw.Draw.parseGradient(h);var e=this,d=h.stops.length,a=h.vector,l=Ext.isSafari&&!Ext.isStrict,j,g,k,c,b;b=e.gradientsMap||{};if(!l){if(h.type=="linear"){j=e.createSvgElement("linearGradient");j.setAttribute("x1",a[0]);j.setAttribute("y1",a[1]);j.setAttribute("x2",a[2]);j.setAttribute("y2",a[3])}else{j=e.createSvgElement("radialGradient");j.setAttribute("cx",h.centerX);j.setAttribute("cy",h.centerY);j.setAttribute("r",h.radius);if(Ext.isNumber(h.focalX)&&Ext.isNumber(h.focalY)){j.setAttribute("fx",h.focalX);j.setAttribute("fy",h.focalY)}}j.id=h.id;e.getDefs().appendChild(j);for(c=0;c"},text:function(v){var s=v.attr,r=c.exec(s.font),x=(r&&r[1])||"12",q=(r&&r[3])||"Arial",w=s.text,u=(Ext.isFF3_0||Ext.isFF3_5)?2:4,p="",t;v.getBBox();p+='';p+=Ext.htmlEncode(w)+"";t=d({x:s.x,y:s.y,"font-size":x,"font-family":q,"font-weight":s["font-weight"],"text-anchor":s["text-anchor"],fill:s.fill||"#000","fill-opacity":s.opacity,transform:v.matrix.toSvg()});return""+p+""},rect:function(q){var p=q.attr,r=d({x:p.x,y:p.y,rx:p.rx,ry:p.ry,width:p.width,height:p.height,fill:p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix&&q.matrix.toSvg()});return""},circle:function(q){var p=q.attr,r=d({cx:p.x,cy:p.y,r:p.radius,fill:p.translation.fill||p.fill||"none","fill-opacity":p.opacity,stroke:p.stroke,"stroke-opacity":p["stroke-opacity"],"stroke-width":p["stroke-width"],transform:q.matrix.toSvg()});return""},image:function(q){var p=q.attr,r=d({x:p.x-(p.width/2>>0),y:p.y-(p.height/2>>0),width:p.width,height:p.height,"xlink:href":p.src,transform:q.matrix.toSvg()});return""}},a=function(){var p='';p+='';return p},m=function(){var x='',q="",I,G,w,r,H,K,A,y,u,z,C,p,L,v,F,D,J,E,t,s;w=g.items.items;G=w.length;H=function(P){var W=P.childNodes,T=W.length,S=0,Q,R,M="",N,V,O,U;for(;S0){M+=H(N)}M+=""}return M};if(g.getDefs){q=H(g.getDefs())}else{y=g.gradientsColl;if(y){u=y.keys;z=y.items;C=0;p=u.length}for(;C';var B=r.colors.replace(k,"rgb($1|$2|$3)");B=B.replace(h,"rgba($1|$2|$3|$4)");K=B.split(",");for(F=0,J=K.length;F'}q+=""}}x+=""+q+"";x+=l.rect({attr:{width:"100%",height:"100%",fill:"#fff",stroke:"none",opacity:"0"}});E=new Array(G);for(F=0;F";return x},d=function(r){var q="",p;for(p in r){if(r.hasOwnProperty(p)&&r[p]!=null){q+=p+'="'+r[p]+'" '}}return q};return{singleton:true,generate:function(p,q){q=q||{};o(p);return a()+m()}}},0,0,0,0,0,0,[Ext.draw.engine,"SvgExporter"],0));(Ext.cmd.derive("Ext.draw.engine.Vml",Ext.draw.Surface,{engine:"Vml",map:{M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},bitesRe:/([clmz]),?([^clmz]*)/gi,valRe:/-?[^,\s\-]+/g,fillUrlRe:/^url\(\s*['"]?([^\)]+?)['"]?\s*\)$/i,pathlike:/^(path|rect)$/,NonVmlPathRe:/[ahqstv]/ig,partialPathRe:/[clmz]/g,fontFamilyRe:/^['"]+|['"]+$/g,baseVmlCls:Ext.baseCSSPrefix+"vml-base",vmlGroupCls:Ext.baseCSSPrefix+"vml-group",spriteCls:Ext.baseCSSPrefix+"vml-sprite",measureSpanCls:Ext.baseCSSPrefix+"vml-measure-span",zoom:21600,coordsize:1000,coordorigin:"0 0",zIndexShift:0,orderSpritesByZIndex:false,path2vml:function(t){var n=this,u=n.NonVmlPathRe,b=n.map,e=n.valRe,s=n.zoom,d=n.bitesRe,g=Ext.Function.bind(Ext.draw.Draw.pathToAbsolute,Ext.draw.Draw),m,o,c,a,k,q,h,l;if(String(t).match(u)){g=Ext.Function.bind(Ext.draw.Draw.path2curve,Ext.draw.Draw)}else{if(!String(t).match(n.partialPathRe)){m=String(t).replace(d,function(v,x,p){var w=[],j=x.toLowerCase()=="m",r=b[x];p.replace(e,function(y){if(j&&w.length===2){r+=w+b[x=="m"?"l":"L"];w=[]}w.push(Math.round(y*s))});return r+w});return m}}o=g(t);m=[];for(k=0,q=o.length;k")}a.W=h.span.offsetWidth;a.H=h.span.offsetHeight+2;if(c["text-anchor"]=="middle"){e["v-text-align"]="center"}else{if(c["text-anchor"]=="end"){e["v-text-align"]="right";a.bbx=-Math.round(a.W/2)}else{e["v-text-align"]="left";a.bbx=Math.round(a.W/2)}}}a.X=c.x;a.Y=c.y;a.path.v=Ext.String.format("m{0},{1}l{2},{1}",Math.round(a.X*k),Math.round(a.Y*k),Math.round(a.X*k)+1);j.bbox.plain=null;j.bbox.transform=null;j.dirtyFont=false},setText:function(a,b){a.vml.textpath.string=Ext.htmlDecode(b)},hide:function(){this.el.hide()},show:function(){this.el.show()},hidePrim:function(a){a.el.addCls(Ext.baseCSSPrefix+"hide-visibility")},showPrim:function(a){a.el.removeCls(Ext.baseCSSPrefix+"hide-visibility")},setSize:function(b,a){var c=this;b=b||c.width;a=a||c.height;c.width=b;c.height=a;if(c.el){if(b!=undefined){c.el.setWidth(b)}if(a!=undefined){c.el.setHeight(a)}}c.callParent(arguments)},applyViewBox:function(){var g=this,h=g.viewBox,e=g.width,b=g.height,c,a,d;g.callParent();if(h&&(e||b)){c=g.items.items;a=c.length;for(d=0;d')}}catch(d){c.createNode=function(e){return g.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}}if(!c.el){b=g.createElement("div");c.el=Ext.get(b);c.el.addCls(c.baseVmlCls);c.span=g.createElement("span");Ext.get(c.span).addCls(c.measureSpanCls);b.appendChild(c.span);c.el.setSize(c.width||0,c.height||0);a.appendChild(b);c.el.on({scope:c,mouseup:c.onMouseUp,mousedown:c.onMouseDown,mouseover:c.onMouseOver,mouseout:c.onMouseOut,mousemove:c.onMouseMove,mouseenter:c.onMouseEnter,mouseleave:c.onMouseLeave,click:c.onClick,dblclick:c.onDblClick})}c.renderAll()},renderAll:function(){this.items.each(this.renderItem,this)},redraw:function(a){a.dirty=true;this.renderItem(a)},renderItem:function(a){if(!this.el){return}if(!a.el){this.createSpriteElement(a)}if(a.dirty){this.applyAttrs(a);if(a.dirtyTransform){this.applyTransformations(a)}}},rotationCompensation:function(d,c,a){var b=new Ext.draw.Matrix();b.rotate(-d,0.5,0.5);return{x:b.x(c,a),y:b.y(c,a)}},transform:function(x,I){var H=this,b=H.getBBox(x,true),j=b.x+b.width*0.5,h=b.y+b.height*0.5,B=new Ext.draw.Matrix(),q=x.transformations,v=q.length,C=0,o=0,d=1,c=1,n="",g=x.el,E=g.dom,z=E.style,a=H.zoom,k=x.skew,D=H.viewBoxShift,G,F,s,l,r,p,A,w,u,t,e,m;for(;C32767){m[0]=32767}else{if(m[0]<-32768){m[0]=-32768}}if(m[1]>32767){m[1]=32767}else{if(m[1]<-32768){m[1]=-32768}}k.offset=m}else{z.filter=B.toFilter();z.left=Math.min(B.x(b.x,b.y),B.x(b.x+b.width,b.y),B.x(b.x,b.y+b.height),B.x(b.x+b.width,b.y+b.height))+"px";z.top=Math.min(B.y(b.x,b.y),B.y(b.x+b.width,b.y),B.y(b.x,b.y+b.height),B.y(b.x+b.width,b.y+b.height))+"px"}},createItem:function(a){return Ext.create("Ext.draw.Sprite",a)},getRegion:function(){return this.el.getRegion()},addCls:function(a,b){if(a&&a.el){a.el.addCls(b)}},removeCls:function(a,b){if(a&&a.el){a.el.removeCls(b)}},addGradient:function(g){var d=this.gradientsColl||(this.gradientsColl=Ext.create("Ext.util.MixedCollection")),a=[],j=Ext.create("Ext.util.MixedCollection"),l,e,b,h,k,c;j.addAll(g.stops);j.sortByKey("ASC",function(n,m){n=parseInt(n,10);m=parseInt(m,10);return n>m?1:(n'],initComponent:function(){this.callParent();this.addEvents("success","failure")},beforeRender:function(){this.callParent();Ext.applyIf(this.renderData,{swfId:this.getSwfId()})},afterRender:function(){var b=this,a=Ext.apply({},b.flashParams),c=Ext.apply({},b.flashVars);b.callParent();a=Ext.apply({allowScriptAccess:"always",bgcolor:b.backgroundColor,wmode:b.wmode},a);c=Ext.apply({allowedDomain:document.location.hostname},c);new swfobject.embedSWF(b.url,b.getSwfId(),b.swfWidth,b.swfHeight,b.flashVersion,b.expressInstall?b.statics.EXPRESS_INSTALL_URL:undefined,c,a,b.flashAttributes,Ext.bind(b.swfCallback,b))},swfCallback:function(b){var a=this;if(b.success){a.swf=Ext.get(b.ref);a.onSuccess();a.fireEvent("success",a)}else{a.onFailure();a.fireEvent("failure",a)}},getSwfId:function(){return this.swfId||(this.swfId="extswf"+this.getAutoId())},onSuccess:function(){this.swf.setStyle("visibility","inherit")},onFailure:Ext.emptyFn,beforeDestroy:function(){var b=this,a=b.swf;if(a){swfobject.removeSWF(b.getSwfId());Ext.destroy(a);delete b.swf}b.callParent()},statics:{EXPRESS_INSTALL_URL:"http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf"}},0,["flash"],["flash","component","box"],{flash:true,component:true,box:true},["widget.flash"],0,[Ext.flash,"Component",Ext,"FlashComponent"],0));(Ext.cmd.derive("Ext.form.action.Action",Ext.Base,{alternateClassName:"Ext.form.Action",submitEmptyText:true,constructor:function(a){if(a){Ext.apply(this,a)}var b=a.params;if(Ext.isString(b)){this.params=Ext.Object.fromQueryString(b)}},run:Ext.emptyFn,onFailure:function(a){this.response=a;this.failureType=Ext.form.action.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(a){this.response=a;if(!a.responseText&&!a.responseXML){return true}return(this.result=this.handleResponse(a))},getUrl:function(){return this.url||this.form.url},getMethod:function(){return(this.method||this.form.method||"POST").toUpperCase()},getParams:function(){return Ext.apply({},this.params,this.form.baseParams)},createCallback:function(){var c=this,a,b=c.form;return{success:c.onSuccess,failure:c.onFailure,scope:c,timeout:(this.timeout*1000)||(b.timeout*1000),upload:b.fileUpload?c.onSuccess:a}},statics:{CLIENT_INVALID:"client",SERVER_INVALID:"server",CONNECT_FAILURE:"connect",LOAD_FAILURE:"load"}},1,0,0,0,0,0,[Ext.form.action,"Action",Ext.form,"Action"],0));(Ext.cmd.derive("Ext.form.action.Load",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Load",type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(),{method:this.getMethod(),url:this.getUrl(),headers:this.headers,params:this.getParams()}))},onSuccess:function(b){var a=this.processResponse(b),c=this.form;if(a===true||!a.success||!a.data){this.failureType=Ext.form.action.Action.LOAD_FAILURE;c.afterAction(this,false);return}c.clearInvalid();c.setValues(a.data);c.afterAction(this,true)},handleResponse:function(c){var a=this.form.reader,b,d;if(a){b=a.read(c);d=b.records&&b.records[0]?b.records[0].data:null;return{success:b.success,data:d}}return Ext.decode(c.responseText)}},0,0,0,0,["formaction.load"],0,[Ext.form.action,"Load",Ext.form.Action,"Load"],0));(Ext.cmd.derive("Ext.form.action.Submit",Ext.form.action.Action,{alternateClassName:"Ext.form.Action.Submit",type:"submit",run:function(){var b=this,a=b.form;if(b.clientValidation===false||a.isValid()){b.doSubmit()}else{b.failureType=Ext.form.action.Action.CLIENT_INVALID;a.afterAction(b,false)}},doSubmit:function(){var e=this,b=Ext.apply(e.createCallback(),{url:e.getUrl(),method:e.getMethod(),headers:e.headers}),d=e.form,g=e.jsonSubmit||d.jsonSubmit,a=g?"jsonData":"params",c,h;if(d.hasUpload()){h=e.buildForm();b.form=h.formEl;b.isUpload=true}else{b[a]=e.getParams(g)}Ext.Ajax.request(b);if(h){e.cleanup(h)}},cleanup:function(h){var e=h.formEl,d=h.uploadEls,b=h.uploadFields,a=b.length,c,g;for(c=0;cid="{id}"
    class="{inputRowCls}">','','',"{beforeLabelTpl}",' class="{labelCls}"',' style="{labelStyle}"',' unselectable="on"',">","{beforeLabelTextTpl}",'{fieldLabel}{labelSeparator}',"{afterLabelTextTpl}","","{afterLabelTpl}","","
    ",'',"{beforeBodyEl}","","{beforeLabelTpl}",'","{afterLabelTpl}","","{beforeSubTpl}","{[values.$comp.getSubTplMarkup(values)]}","{afterSubTpl}","","{afterBodyEl}","","",'',"","",'',"{afterBodyEl}","","","",{disableFormats:true}],activeErrorsTpl:undefined,htmlActiveErrorsTpl:['','
    • {.}
    ',"
    "],plaintextActiveErrorsTpl:['','\n{.}',""],isFieldLabelable:true,formItemCls:Ext.baseCSSPrefix+"form-item",labelCls:Ext.baseCSSPrefix+"form-item-label",errorMsgCls:Ext.baseCSSPrefix+"form-error-msg",baseBodyCls:Ext.baseCSSPrefix+"form-item-body",inputRowCls:Ext.baseCSSPrefix+"form-item-input-row",fieldBodyCls:"",clearCls:Ext.baseCSSPrefix+"clear",invalidCls:Ext.baseCSSPrefix+"form-invalid",fieldLabel:undefined,labelAlign:"left",labelWidth:100,labelPad:5,labelSeparator:":",hideLabel:false,hideEmptyLabel:true,preventMark:false,autoFitErrors:true,msgTarget:"qtip",noWrap:true,labelableInsertions:["beforeBodyEl","afterBodyEl","beforeLabelTpl","afterLabelTpl","beforeSubTpl","afterSubTpl","beforeLabelTextTpl","afterLabelTextTpl","labelAttrTpl"],labelableRenderProps:["allowBlank","id","labelAlign","fieldBodyCls","extraFieldBodyCls","baseBodyCls","clearCls","labelSeparator","msgTarget","inputRowCls"],initLabelable:function(){var a=this,b=a.padding;if(b){a.padding=undefined;a.extraMargins=Ext.Element.parseBox(b)}if(!a.activeErrorsTpl){if(a.msgTarget=="title"){a.activeErrorsTpl=a.plaintextActiveErrorsTpl}else{a.activeErrorsTpl=a.htmlActiveErrorsTpl}}a.addCls(Ext.plainTableCls);a.addCls(a.formItemCls);a.lastActiveError="";a.addEvents("errorchange");a.enableBubble("errorchange")},trimLabelSeparator:function(){var c=this,d=c.labelSeparator,a=c.fieldLabel||"",b=a.substr(a.length-1);return b===d?a.slice(0,-1):a},getFieldLabel:function(){return this.trimLabelSeparator()},setFieldLabel:function(b){b=b||"";var c=this,d=c.labelSeparator,a=c.labelEl;c.fieldLabel=b;if(c.rendered){if(Ext.isEmpty(b)&&c.hideEmptyLabel){a.parent().setDisplayed("none")}else{if(d){b=c.trimLabelSeparator()+d}a.update(b);a.parent().setDisplayed("")}c.updateLayout()}},getInsertionRenderData:function(d,e){var b=e.length,a,c;while(b--){a=e[b];c=this[a];if(c){if(typeof c!="string"){if(!c.isTemplate){c=Ext.XTemplate.getTpl(this,a)}c=c.apply(d)}}d[a]=c||""}return d},getLabelableRenderData:function(){var b=this,c,d,a=b.labelAlign==="top";if(!Ext.form.Labelable.errorIconWidth){d=Ext.getBody().createChild({style:"position:absolute",cls:Ext.baseCSSPrefix+"form-invalid-icon"});Ext.form.Labelable.errorIconWidth=d.getWidth()+d.getMargin("l");d.remove()}c=Ext.copyTo({inFormLayout:b.ownerLayout&&b.ownerLayout.type==="form",inputId:b.getInputId(),labelOnLeft:!a,hideLabel:!b.hasVisibleLabel(),fieldLabel:b.getFieldLabel(),labelCellStyle:b.getLabelCellStyle(),labelCellAttrs:b.getLabelCellAttrs(),labelCls:b.getLabelCls(),labelStyle:b.getLabelStyle(),bodyColspan:b.getBodyColspan(),externalError:!b.autoFitErrors,errorMsgCls:b.getErrorMsgCls(),errorIconWidth:Ext.form.Labelable.errorIconWidth},b,b.labelableRenderProps,true);b.getInsertionRenderData(c,b.labelableInsertions);return c},xhooks:{beforeRender:function(){var a=this;a.setFieldDefaults(a.getHierarchyState().fieldDefaults);if(a.ownerLayout){a.addCls(Ext.baseCSSPrefix+a.ownerLayout.type+"-form-item")}},onRender:function(){var c=this,d,a,b={};if(c.extraMargins){d=c.el.getMargin();for(a in d){if(d.hasOwnProperty(a)){b["margin-"+a]=(d[a]+c.extraMargins[a])+"px"}}c.el.setStyle(b)}}},hasVisibleLabel:function(){if(this.hideLabel){return false}return !(this.hideEmptyLabel&&!this.getFieldLabel())},getLabelWidth:function(){var a=this;if(!a.hasVisibleLabel()){return 0}return a.labelWidth+a.labelPad},getBodyColspan:function(){var b=this,a;if(b.msgTarget==="side"&&(!b.autoFitErrors||b.hasActiveError())){a=1}else{a=2}if(b.labelAlign!=="top"&&!b.hasVisibleLabel()){a++}return a},getLabelCls:function(){var b=this.labelCls+" "+Ext.dom.Element.unselectableCls,a=this.labelClsExtra;return a?b+" "+a:b},getLabelCellStyle:function(){var b=this,a=b.hideLabel||(!b.getFieldLabel()&&b.hideEmptyLabel);return a?"display:none;":""},getErrorMsgCls:function(){var b=this,a=(b.hideLabel||(!b.fieldLabel&&b.hideEmptyLabel));return b.errorMsgCls+(!a&&b.labelAlign==="top"?" "+Ext.baseCSSPrefix+"lbl-top-err-icon":"")},getLabelCellAttrs:function(){var c=this,b=c.labelAlign,a="";if(b!=="top"){a='valign="top" halign="'+b+'" width="'+(c.labelWidth+c.labelPad)+'"'}return a+' class="'+Ext.baseCSSPrefix+'field-label-cell"'},getLabelStyle:function(){var c=this,b=c.labelPad,a="";if(c.labelAlign!=="top"){if(c.labelWidth){a="width:"+c.labelWidth+"px;"}if(b){a+="margin-right:"+b+"px;"}}return a+(c.labelStyle||"")},getSubTplMarkup:function(){return""},getInputId:function(){return""},getActiveError:function(){return this.activeError||""},hasActiveError:function(){return !!this.getActiveError()},setActiveError:function(a){this.setActiveErrors(a)},getActiveErrors:function(){return this.activeErrors||[]},setActiveErrors:function(a){a=Ext.Array.from(a);this.activeError=a[0];this.activeErrors=a;this.activeError=this.getTpl("activeErrorsTpl").apply({errors:a,listCls:Ext.plainListCls});this.renderActiveError()},unsetActiveError:function(){delete this.activeError;delete this.activeErrors;this.renderActiveError()},renderActiveError:function(){var c=this,b=c.getActiveError(),a=!!b;if(b!==c.lastActiveError){c.fireEvent("errorchange",c,b);c.lastActiveError=b}if(c.rendered&&!c.isDestroyed&&!c.preventMark){c.el[a?"addCls":"removeCls"](c.invalidCls);c.getActionEl().dom.setAttribute("aria-invalid",a);if(c.errorEl){c.errorEl.dom.innerHTML=b}}},setFieldDefaults:function(b){var a;for(a in b){if(!this.hasOwnProperty(a)){this[a]=b[a]}}}},0,0,0,0,0,0,[Ext.form,"Labelable"],0));(Ext.cmd.derive("Ext.form.field.Field",Ext.Base,{isFormField:true,disabled:false,submitValue:true,validateOnChange:true,suspendCheckChange:0,initField:function(){this.addEvents("change","validitychange","dirtychange");this.initValue()},initValue:function(){var a=this;a.value=a.transformOriginalValue(a.value);a.originalValue=a.lastValue=a.value;a.suspendCheckChange++;a.setValue(a.value);a.suspendCheckChange--},transformOriginalValue:Ext.identityFn,getName:function(){return this.name},getValue:function(){return this.value},setValue:function(b){var a=this;a.value=b;a.checkChange();return a},isEqual:function(b,a){return String(b)===String(a)},isEqualAsString:function(b,a){return String(Ext.value(b,""))===String(Ext.value(a,""))},getSubmitData:function(){var a=this,b=null;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){b={};b[a.getName()]=""+a.getValue()}return b},getModelData:function(){var a=this,b=null;if(!a.disabled&&!a.isFileUpload()){b={};b[a.getName()]=a.getValue()}return b},reset:function(){var a=this;a.beforeReset();a.setValue(a.originalValue);a.clearInvalid();delete a.wasValid},beforeReset:Ext.emptyFn,resetOriginalValue:function(){this.originalValue=this.getValue();this.checkDirty()},checkChange:function(){if(!this.suspendCheckChange){var c=this,b=c.getValue(),a=c.lastValue;if(!c.isEqual(b,a)&&!c.isDestroyed){c.lastValue=b;c.fireEvent("change",c,b,a);c.onChange(b,a)}}},onChange:function(b,a){if(this.validateOnChange){this.validate()}this.checkDirty()},isDirty:function(){var a=this;return !a.disabled&&!a.isEqual(a.getValue(),a.originalValue)},checkDirty:function(){var a=this,b=a.isDirty();if(b!==a.wasDirty){a.fireEvent("dirtychange",a,b);a.onDirtyChange(b);a.wasDirty=b}},onDirtyChange:Ext.emptyFn,getErrors:function(a){return[]},isValid:function(){var a=this;return a.disabled||Ext.isEmpty(a.getErrors())},validate:function(){var a=this,b=a.isValid();if(b!==a.wasValid){a.wasValid=b;a.fireEvent("validitychange",a,b)}return b},batchChanges:function(a){try{this.suspendCheckChange++;a()}catch(b){throw b}finally{this.suspendCheckChange--}this.checkChange()},isFileUpload:function(){return false},extractFileInput:function(){return null},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,0,0,0,0,0,[Ext.form.field,"Field"],0));(Ext.cmd.derive("Ext.layout.component.field.Field",Ext.layout.component.Auto,{type:"field",naturalSizingProp:"size",beginLayout:function(c){var b=this,a=b.owner;b.callParent(arguments);c.labelStrategy=b.getLabelStrategy();c.errorStrategy=b.getErrorStrategy();c.labelContext=c.getEl("labelEl");c.bodyCellContext=c.getEl("bodyEl");c.inputContext=c.getEl("inputEl");c.errorContext=c.getEl("errorEl");if(Ext.isIE7m&&Ext.isStrict&&c.inputContext){b.ieInputWidthAdjustment=c.inputContext.getPaddingInfo().width+c.inputContext.getBorderInfo().width}c.labelStrategy.prepare(c,a);c.errorStrategy.prepare(c,a)},beginLayoutCycle:function(g){var e=this,a=e.owner,c=g.widthModel,b=a[e.naturalSizingProp],d;e.callParent(arguments);if(c.shrinkWrap){e.beginLayoutShrinkWrap(g)}else{if(c.natural){if(typeof b=="number"&&!a.inputWidth){e.beginLayoutFixed(g,(d=b*6.5+20),"px")}else{e.beginLayoutShrinkWrap(g)}g.setWidth(d,false)}else{e.beginLayoutFixed(g,"100","%")}}},beginLayoutFixed:function(c,b,e){var a=c.target,d=a.inputEl,g=a.inputWidth;a.el.setStyle("table-layout","fixed");a.bodyEl.setStyle("width",b+e);if(d){if(g){d.setStyle("width",g+"px")}else{d.setStyle("width",a.stretchInputElFixed?"100%":"")}}c.isFixed=true},beginLayoutShrinkWrap:function(b){var a=b.target,c=a.inputEl,d=a.inputWidth;if(c&&c.dom){c.dom.removeAttribute("size");if(d){c.setStyle("width",d+"px")}else{c.setStyle("width","")}}a.el.setStyle("table-layout","auto");a.bodyEl.setStyle("width","")},finishedLayout:function(b){var a=this.owner;this.callParent(arguments);b.labelStrategy.finishedLayout(b,a);b.errorStrategy.finishedLayout(b,a)},calculateOwnerHeightFromContentHeight:function(b,a){return a},measureContentHeight:function(a){return a.el.getHeight()},measureContentWidth:function(a){return a.el.getWidth()},measureLabelErrorHeight:function(a){return a.labelStrategy.getHeight(a)+a.errorStrategy.getHeight(a)},onFocus:function(){this.getErrorStrategy().onFocus(this.owner)},getLabelStrategy:function(){var b=this,c=b.labelStrategies,a=b.owner.labelAlign;return c[a]||c.base},getErrorStrategy:function(){var c=this,a=c.owner,d=c.errorStrategies,b=a.msgTarget;return !a.preventMark&&Ext.isString(b)?(d[b]||d.elementId):d.none},labelStrategies:(function(){var a={prepare:function(e,b){var c=b.labelCls+"-"+b.labelAlign,d=b.labelEl;if(d){d.addCls(c)}},getHeight:function(){return 0},finishedLayout:Ext.emptyFn};return{base:a,top:Ext.applyIf({getHeight:function(e){var c=e.labelContext,d=c.props,b=d.height;if(b===undefined){d.height=b=c.el.getHeight()}return b}},a),left:a,right:a}}()),errorStrategies:(function(){function d(h){var j=Ext.layout.component.field.Field.tip,k;if(j&&j.isVisible()){k=j.activeTarget;if(k&&k.el===h.getActionEl().dom){j.toFront(true)}}}var c=Ext.applyIf,b=Ext.emptyFn,a=Ext.baseCSSPrefix+"form-invalid-icon",g,e={prepare:function(k,h){var j=h.errorEl;if(j){j.setDisplayed(false)}},getHeight:function(){return 0},onFocus:b,finishedLayout:b};return{none:e,side:c({prepare:function(l,j){var n=j.errorEl,k=j.sideErrorCell,h=j.hasActiveError(),m;if(!g){g=(m=Ext.getBody().createChild({style:"position:absolute",cls:a})).getWidth();m.remove()}n.addCls(a);n.set({"data-errorqtip":j.getActiveError()||""});if(j.autoFitErrors){n.setDisplayed(h)}else{n.setVisible(h)}if(k&&j.autoFitErrors){k.setDisplayed(h)}j.bodyEl.dom.colSpan=j.getBodyColspan();Ext.layout.component.field.Field.initTip()},onFocus:d},e),under:c({prepare:function(k,h){var l=h.errorEl,j=Ext.baseCSSPrefix+"form-invalid-under";l.addCls(j);l.setDisplayed(h.hasActiveError())},getHeight:function(l){var h=0,j,k;if(l.target.hasActiveError()){j=l.errorContext;k=j.props;h=k.height;if(h===undefined){k.height=h=j.el.getHeight()}}return h}},e),qtip:c({prepare:function(j,h){Ext.layout.component.field.Field.initTip();h.getActionEl().dom.setAttribute("data-errorqtip",h.getActiveError()||"")},onFocus:d},e),title:c({prepare:function(j,h){h.getActionEl().dom.setAttribute("title",h.getActiveError()||"")}},e),elementId:c({prepare:function(j,h){var k=Ext.fly(h.msgTarget);if(k){k.dom.innerHTML=h.getActiveError()||"";k.setDisplayed(h.hasActiveError())}}},e)}}()),statics:{initTip:function(){var a=this.tip;if(!a){a=this.tip=Ext.create("Ext.tip.QuickTip",{ui:"form-invalid"});a.tagConfig=Ext.apply({},{attribute:"errorqtip"},a.tagConfig)}},destroyTip:function(){var a=this.tip;if(a){a.destroy();delete this.tip}}}},0,0,0,0,["layout.field"],0,[Ext.layout.component.field,"Field"],0));(Ext.cmd.derive("Ext.form.field.Base",Ext.Component,{alternateClassName:["Ext.form.Field","Ext.form.BaseField"],fieldSubTpl:[' name="{name}"
    ',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' placeholder="{placeholder}"','{%if (values.maxLength !== undefined){%} maxlength="{maxLength}"{%}%}',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',' class="{fieldCls} {typeCls} {editableCls} {inputCls}" autocomplete="off"/>',{disableFormats:true}],subTplInsertions:["inputAttrTpl"],inputType:"text",invalidText:"The value in this field is invalid",fieldCls:Ext.baseCSSPrefix+"form-field",focusCls:"form-focus",dirtyCls:Ext.baseCSSPrefix+"form-dirty",checkChangeEvents:Ext.isIE&&(!document.documentMode||document.documentMode<9)?["change","propertychange","keyup"]:["change","input","textInput","keyup","dragdrop"],checkChangeBuffer:50,componentLayout:"field",readOnly:false,readOnlyCls:Ext.baseCSSPrefix+"form-readonly",validateOnBlur:true,hasFocus:false,baseCls:Ext.baseCSSPrefix+"field",maskOnDisable:false,stretchInputElFixed:true,initComponent:function(){var a=this;a.callParent();a.subTplData=a.subTplData||{};a.addEvents("specialkey","writeablechange");a.initLabelable();a.initField();if(!a.name){a.name=a.getInputId()}if(a.readOnly){a.addCls(a.readOnlyCls)}a.addCls(Ext.baseCSSPrefix+"form-type-"+a.inputType)},getInputId:function(){return this.inputId||(this.inputId=this.id+"-inputEl")},getSubTplData:function(){var c=this,b=c.inputType,a=c.getInputId(),d;d=Ext.apply({id:a,cmpId:c.id,name:c.name||a,disabled:c.disabled,readOnly:c.readOnly,value:c.getRawValue(),type:b,fieldCls:c.fieldCls,fieldStyle:c.getFieldStyle(),tabIdx:c.tabIndex,inputCls:c.inputCls,typeCls:Ext.baseCSSPrefix+"form-"+(b==="password"?"text":b)},c.subTplData);c.getInsertionRenderData(d,c.subTplInsertions);return d},applyRenderSelectors:function(){var a=this;a.callParent();a.addChildEls("inputEl");a.inputEl=a.el.getById(a.getInputId())},getSubTplMarkup:function(){return this.getTpl("fieldSubTpl").apply(this.getSubTplData())},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){return Ext.applyIf(this.callParent(),this.getLabelableRenderData())},setFieldStyle:function(a){var b=this,c=b.inputEl;if(c){c.applyStyles(a)}b.fieldStyle=a},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},onRender:function(){this.callParent(arguments);this.renderActiveError()},getFocusEl:function(){return this.inputEl},isFileUpload:function(){return this.inputType==="file"},getSubmitData:function(){var a=this,b=null,c;if(!a.disabled&&a.submitValue&&!a.isFileUpload()){c=a.getSubmitValue();if(c!==null){b={};b[a.getName()]=c}}return b},getSubmitValue:function(){return this.processRawValue(this.getRawValue())},getRawValue:function(){var b=this,a=(b.inputEl?b.inputEl.getValue():Ext.value(b.rawValue,""));b.rawValue=a;return a},setRawValue:function(b){var a=this;b=Ext.value(a.transformRawValue(b),"");a.rawValue=b;if(a.inputEl){a.inputEl.dom.value=b}return b},transformRawValue:Ext.identityFn,valueToRaw:function(a){return""+Ext.value(a,"")},rawToValue:Ext.identityFn,processRawValue:Ext.identityFn,getValue:function(){var a=this,b=a.rawToValue(a.processRawValue(a.getRawValue()));a.value=b;return b},setValue:function(b){var a=this;a.setRawValue(a.valueToRaw(b));return a.mixins.field.setValue.call(a,b)},onBoxReady:function(){var a=this;a.callParent();if(a.setReadOnlyOnBoxReady){a.setReadOnly(a.readOnly)}},onDisable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=true;if(a.hasActiveError()){a.clearInvalid();a.needsValidateOnEnable=true}}},onEnable:function(){var a=this,b=a.inputEl;a.callParent();if(b){b.dom.disabled=false;if(a.needsValidateOnEnable){delete a.needsValidateOnEnable;a.forceValidation=true;a.isValid();delete a.forceValidation}}},setReadOnly:function(c){var a=this,b=a.inputEl;c=!!c;a[c?"addCls":"removeCls"](a.readOnlyCls);a.readOnly=c;if(b){b.dom.readOnly=c}else{if(a.rendering){a.setReadOnlyOnBoxReady=true}}a.fireEvent("writeablechange",a,c)},fireKey:function(a){if(a.isSpecialKey()){this.fireEvent("specialkey",this,new Ext.EventObjectImpl(a))}},initEvents:function(){var g=this,j=g.inputEl,b,k,c=g.checkChangeEvents,h,a=c.length,d;if(j){g.mon(j,Ext.EventManager.getKeyEvent(),g.fireKey,g);b=new Ext.util.DelayedTask(g.checkChange,g);g.onChangeEvent=k=function(){b.delay(g.checkChangeBuffer)};for(h=0;hg.maxLength){k.push(l(g.maxLengthText,g.maxLength))}if(d){if(!h[d](m,g)){k.push(g.vtypeText||h[d+"Text"])}}if(j&&!j.test(m)){k.push(g.regexText||g.invalidText)}return k},selectText:function(j,a){var h=this,c=h.getRawValue(),d=true,g=h.inputEl.dom,e,b;if(c.length>0){j=j===e?0:j;a=a===e?c.length:a;if(g.setSelectionRange){g.setSelectionRange(j,a)}else{if(g.createTextRange){b=g.createTextRange();b.moveStart("character",j);b.moveEnd("character",a-c.length);b.select()}}d=Ext.isGecko||Ext.isOpera}if(d){h.focus()}},autoSize:function(){var a=this;if(a.grow&&a.rendered){a.autoSizing=true;a.updateLayout()}},afterComponentLayout:function(){var b=this,a;b.callParent(arguments);if(b.autoSizing){a=b.inputEl.getWidth();if(a!==b.lastInputWidth){b.fireEvent("autosize",b,a);b.lastInputWidth=a;delete b.autoSizing}}},onDestroy:function(){var a=this;a.callParent();if(a.inputFocusTask){a.inputFocusTask.cancel();a.inputFocusTask=null}}},0,["textfield"],["field","textfield","component","box"],{field:true,textfield:true,component:true,box:true},["widget.textfield"],0,[Ext.form.field,"Text",Ext.form,"TextField",Ext.form,"Text"],0));(Ext.cmd.derive("Ext.layout.component.field.TextArea",Ext.layout.component.field.Text,{type:"textareafield",canGrowWidth:false,naturalSizingProp:"cols",beginLayout:function(a){this.callParent(arguments);a.target.inputEl.setStyle("height","")},measureContentHeight:function(b){var e=this,a=e.owner,l=e.callParent(arguments),c,j,h,g,d,k;if(a.grow&&!b.state.growHandled){c=b.inputContext;j=a.inputEl;d=j.getWidth(true);h=Ext.util.Format.htmlEncode(j.dom.value)||" ";h+=a.growAppend;h=h.replace(/\n/g,"
    ");k=Ext.util.TextMetrics.measure(j,h,d).height+c.getBorderInfo().height+c.getPaddingInfo().height;k=Ext.Number.constrain(k,a.growMin,a.growMax);c.setHeight(k);b.state.growHandled=true;c.domBlock(e,"height");l=NaN}return l}},0,0,0,0,["layout.textareafield"],0,[Ext.layout.component.field,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.TextArea",Ext.form.field.Text,{alternateClassName:"Ext.form.TextArea",fieldSubTpl:['",{disableFormats:true}],growMin:60,growMax:1000,growAppend:"\n-",cols:20,rows:4,enterIsSpecial:false,preventScrollbars:false,componentLayout:"textareafield",setGrowSizePolicy:Ext.emptyFn,returnRe:/\r/g,inputCls:Ext.baseCSSPrefix+"form-textarea",getSubTplData:function(){var c=this,b=c.getFieldStyle(),a=c.callParent();if(c.grow){if(c.preventScrollbars){a.fieldStyle=(b||"")+";overflow:hidden;height:"+c.growMin+"px"}}Ext.applyIf(a,{cols:c.cols,rows:c.rows});return a},afterRender:function(){var a=this;a.callParent(arguments);a.needsMaxCheck=a.enforceMaxLength&&a.maxLength!==Number.MAX_VALUE&&!Ext.supports.TextAreaMaxLength;if(a.needsMaxCheck){a.inputEl.on("paste",a.onPaste,a)}},transformRawValue:function(a){return this.stripReturns(a)},transformOriginalValue:function(a){return this.stripReturns(a)},getValue:function(){return this.stripReturns(this.callParent())},valueToRaw:function(a){a=this.stripReturns(a);return this.callParent([a])},stripReturns:function(a){if(a&&typeof a==="string"){a=a.replace(this.returnRe,"")}return a},onPaste:function(b){var a=this;if(!a.pasteTask){a.pasteTask=new Ext.util.DelayedTask(a.pasteCheck,a)}a.pasteTask.delay(1)},pasteCheck:function(){var b=this,c=b.getValue(),a=b.maxLength;if(c.length>a){c=c.substr(0,a);b.setValue(c)}},fireKey:function(d){var b=this,a=d.getKey(),c;if(d.isSpecialKey()&&(b.enterIsSpecial||(a!==d.ENTER||d.hasModifier()))){b.fireEvent("specialkey",b,d)}if(b.needsMaxCheck&&a!==d.BACKSPACE&&a!==d.DELETE&&!d.isNavKeyPress()&&!b.isCutCopyPasteSelectAll(d,a)){c=b.getValue();if(c.length>=b.maxLength){d.stopEvent()}}},isCutCopyPasteSelectAll:function(b,a){if(b.ctrlKey){return a===b.A||a===b.C||a===b.V||a===b.X}return false},autoSize:function(){var b=this,a;if(b.grow&&b.rendered){b.updateLayout();a=b.inputEl.getHeight();if(a!==b.lastInputHeight){b.fireEvent("autosize",b,a);b.lastInputHeight=a}}},initAria:function(){this.callParent(arguments);this.getActionEl().dom.setAttribute("aria-multiline",true)},beforeDestroy:function(){var a=this.pasteTask;if(a){a.cancel();this.pasteTask=null}this.callParent()}},0,["textarea","textareafield"],["field","textfield","component","textarea","box","textareafield"],{field:true,textfield:true,component:true,textarea:true,box:true,textareafield:true},["widget.textarea","widget.textareafield"],0,[Ext.form.field,"TextArea",Ext.form,"TextArea"],0));(Ext.cmd.derive("Ext.form.field.Display",Ext.form.field.Base,{alternateClassName:["Ext.form.DisplayField","Ext.form.Display"],fieldSubTpl:['
    style="{fieldStyle}"',' class="{fieldCls}">{value}
    ',{compiled:true,disableFormats:true}],readOnly:true,fieldCls:Ext.baseCSSPrefix+"form-display-field",fieldBodyCls:Ext.baseCSSPrefix+"form-display-field-body",htmlEncode:false,noWrap:false,validateOnChange:false,initEvents:Ext.emptyFn,submitValue:false,isDirty:function(){return false},isValid:function(){return true},validate:function(){return true},getRawValue:function(){return this.rawValue},setRawValue:function(b){var a=this;b=Ext.value(b,"");a.rawValue=b;if(a.rendered){a.inputEl.dom.innerHTML=a.getDisplayValue();a.updateLayout()}return b},getDisplayValue:function(){var a=this,b=this.getRawValue(),c;if(a.renderer){c=a.renderer.call(a.scope||a,b,a)}else{c=a.htmlEncode?Ext.util.Format.htmlEncode(b):b}return c},getSubTplData:function(){var a=this.callParent(arguments);a.value=this.getDisplayValue();return a}},0,["displayfield"],["displayfield","field","component","box"],{displayfield:true,field:true,component:true,box:true},["widget.displayfield"],0,[Ext.form.field,"Display",Ext.form,"DisplayField",Ext.form,"Display"],0));(Ext.cmd.derive("Ext.layout.container.Anchor",Ext.layout.container.Auto,{alternateClassName:"Ext.layout.AnchorLayout",type:"anchor",defaultAnchor:"100%",parseAnchorRE:/^(r|right|b|bottom)$/i,manageOverflow:true,beginLayoutCycle:function(c){var j=this,a=0,g,k,e,d,b,h;j.callParent(arguments);e=c.childItems;b=e.length;for(d=0;d{%this.renderContainer(out,values)%}',initComponent:function(){var a=this;a.initLabelable();a.initFieldAncestor();a.callParent();a.initMonitor()},getOverflowEl:function(){return this.containerEl},onAdd:function(a){var b=this;if(Ext.isGecko&&b.layout.type==="absolute"&&!b.hideLabel&&b.labelAlign!=="top"){a.x+=(b.labelWidth+b.labelPad)}b.callParent(arguments);if(b.combineLabels){a.oldHideLabel=a.hideLabel;a.hideLabel=true}b.updateLabel()},onRemove:function(a,b){var c=this;c.callParent(arguments);if(!b){if(c.combineLabels){a.hideLabel=a.oldHideLabel}c.updateLabel()}},initRenderTpl:function(){var a=this;if(!a.hasOwnProperty("renderTpl")){a.renderTpl=a.getTpl("labelableRenderTpl")}return a.callParent()},initRenderData:function(){var a=this,b=a.callParent();b.containerElCls=a.containerElCls;return Ext.applyIf(b,a.getLabelableRenderData())},getFieldLabel:function(){var a=this.fieldLabel||"";if(!a&&this.combineLabels){a=Ext.Array.map(this.query("[isFieldLabelable]"),function(b){return b.getFieldLabel()}).join(this.labelConnector)}return a},getSubTplData:function(){var a=this.initRenderData();Ext.apply(a,this.subTplData);return a},getSubTplMarkup:function(){var c=this,a=c.getTpl("fieldSubTpl"),b;if(!a.renderContent){c.setupRenderTpl(a)}b=a.apply(c.getSubTplData());return b},updateLabel:function(){var b=this,a=b.labelEl;if(a){b.setFieldLabel(b.getFieldLabel())}},onFieldErrorChange:function(e,b){if(this.combineErrors){var d=this,g=d.getActiveError(),c=Ext.Array.filter(d.query("[isFormField]"),function(h){return h.hasActiveError()}),a=d.getCombinedErrors(c);if(a){d.setActiveErrors(a)}else{d.unsetActiveError()}if(g!==d.getActiveError()){d.doComponentLayout()}}},getCombinedErrors:function(e){var l=[],c,m=e.length,j,d,k,b,g,h;for(c=0;c','','',"{% this.renderColumn(out,parent,xindex-1) %}","","",""],lastOwnerItemsGeneration:null,beginLayout:function(b){var k=this,e,d,h,a,j,g=0,m=0,l=k.autoFlex,c=k.innerCt.dom.style;k.callParent(arguments);e=k.columnNodes;b.innerCtContext=b.getEl("innerCt",k);if(!b.widthModel.shrinkWrap){d=e.length;if(k.columnsArray){for(h=0;ha){d=b-a;g=e.rowEl;for(c=0;c","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","
    ",' tabIndex="{tabIdx}"
    ',' disabled="disabled"',' style="{fieldStyle}"',' {ariaAttrs}',' class="{fieldCls} {typeCls} {inputCls} {childElCls}" autocomplete="off" hidefocus="true" />',"","{beforeBoxLabelTpl}",'","{afterBoxLabelTpl}","",{disableFormats:true,compiled:true}],subTplInsertions:["beforeBoxLabelTpl","afterBoxLabelTpl","beforeBoxLabelTextTpl","afterBoxLabelTextTpl","boxLabelAttrTpl","inputAttrTpl"],isCheckbox:true,focusCls:"form-checkbox-focus",extraFieldBodyCls:Ext.baseCSSPrefix+"form-cb-wrap",checked:false,checkedCls:Ext.baseCSSPrefix+"form-cb-checked",boxLabelCls:Ext.baseCSSPrefix+"form-cb-label",boxLabelAlign:"after",inputValue:"on",checkChangeEvents:[],inputType:"checkbox",inputTypeAttr:"button",onRe:/^on$/i,inputCls:Ext.baseCSSPrefix+"form-cb",initComponent:function(){this.callParent(arguments);this.getManager().add(this)},initValue:function(){var b=this,a=!!b.checked;b.originalValue=b.lastValue=a;b.setValue(a)},getElConfig:function(){var a=this;if(a.isChecked(a.rawValue,a.inputValue)){a.addCls(a.checkedCls)}return a.callParent()},getFieldStyle:function(){return Ext.isObject(this.fieldStyle)?Ext.DomHelper.generateStyles(this.fieldStyle):this.fieldStyle||""},getSubTplData:function(){var a=this;return Ext.apply(a.callParent(),{disabled:a.readOnly||a.disabled,boxLabel:a.boxLabel,boxLabelCls:a.boxLabelCls,boxLabelAlign:a.boxLabelAlign,inputTypeAttr:a.inputTypeAttr})},initEvents:function(){var a=this;a.callParent();a.mon(a.inputEl,"click",a.onBoxClick,a)},setBoxLabel:function(a){var b=this;b.boxLabel=a;if(b.rendered){b.boxLabelEl.update(a)}},onBoxClick:function(b){var a=this;if(!a.disabled&&!a.readOnly){this.setValue(!this.checked)}},getRawValue:function(){return this.checked},getValue:function(){return this.checked},getSubmitValue:function(){var a=this.uncheckedValue,b=Ext.isDefined(a)?a:null;return this.checked?this.inputValue:b},isChecked:function(b,a){return(b===true||b==="true"||b==="1"||b===1||(((Ext.isString(b)||Ext.isNumber(b))&&a)?b==a:this.onRe.test(b)))},setRawValue:function(c){var b=this,d=b.inputEl,a=b.isChecked(c,b.inputValue);if(d){b[a?"addCls":"removeCls"](b.checkedCls)}b.checked=b.rawValue=a;return a},setValue:function(g){var e=this,c,b,a,d;if(Ext.isArray(g)){c=e.getManager().getByName(e.name,e.getFormId()).items;a=c.length;for(b=0;b style="{bodyStyle}">',"{%this.renderContainer(out,values);%}",""],stateEvents:["collapse","expand"],maskOnDisable:false,beforeDestroy:function(){var b=this,a=b.legend;if(a){delete a.ownerCt;a.destroy();b.legend=null}b.callParent()},initComponent:function(){var b=this,a=b.baseCls;b.initFieldAncestor();b.callParent();b.layout.managePadding=b.layout.manageOverflow=false;b.addEvents("beforeexpand","beforecollapse","expand","collapse");if(b.collapsed){b.addCls(a+"-collapsed");b.collapse()}if(b.title||b.checkboxToggle||b.collapsible){b.addTitleClasses();b.legend=Ext.widget(b.createLegendCt())}b.initMonitor()},initPadding:function(e){var c=this,a=c.getProtoBody(),d=c.padding,b;if(d!==undefined){if(Ext.isIEQuirks||Ext.isIE8m){d=c.parseBox(d);b=Ext.Element.parseBox(0);b.top=d.top;d.top=0;a.setStyle("padding",c.unitizeBox(b))}e.setStyle("padding",c.unitizeBox(d))}},getProtoBody:function(){var b=this,a=b.protoBody;if(!a){b.protoBody=a=new Ext.util.ProtoElement({styleProp:"bodyStyle",styleIsText:true})}return a},initRenderData:function(){var a=this,b=a.callParent();b.bodyTargetCls=a.bodyTargetCls;a.protoBody.writeTo(b);delete a.protoBody;return b},getState:function(){var a=this.callParent();a=this.addPropertyToState(a,"collapsed");return a},afterCollapse:Ext.emptyFn,afterExpand:Ext.emptyFn,collapsedHorizontal:function(){return true},collapsedVertical:function(){return true},createLegendCt:function(){var c=this,a=[],b={xtype:"container",baseCls:c.baseCls+"-header",id:c.id+"-legend",autoEl:"legend",items:a,ownerCt:c,shrinkWrap:true,ownerLayout:c.componentLayout};if(c.checkboxToggle){a.push(c.createCheckboxCmp())}else{if(c.collapsible){a.push(c.createToggleCmp())}}a.push(c.createTitleCmp());return b},createTitleCmp:function(){var b=this,a={xtype:"component",html:b.title,cls:b.baseCls+"-header-text",id:b.id+"-legendTitle"};if(b.collapsible&&b.toggleOnTitleClick){a.listeners={click:{element:"el",scope:b,fn:b.toggle}};a.cls+=" "+b.baseCls+"-header-text-collapsible"}return(b.titleCmp=Ext.widget(a))},createCheckboxCmp:function(){var a=this,b="-checkbox";a.checkboxCmp=Ext.widget({xtype:"checkbox",hideEmptyLabel:true,name:a.checkboxName||a.id+b,cls:a.baseCls+"-header"+b,id:a.id+"-legendChk",checked:!a.collapsed,listeners:{change:a.onCheckChange,scope:a}});return a.checkboxCmp},createToggleCmp:function(){var a=this;a.toggleCmp=Ext.widget({xtype:"tool",height:15,width:15,type:"toggle",handler:a.toggle,id:a.id+"-legendToggle",scope:a});return a.toggleCmp},doRenderLegend:function(b,e){var d=e.$comp,c=d.legend,a;if(c){c.ownerLayout.configureItem(c);a=c.getRenderTree();Ext.DomHelper.generateMarkup(a,b)}},finishRender:function(){var a=this.legend;this.callParent();if(a){a.finishRender()}},getCollapsed:function(){return this.collapsed?"top":false},getCollapsedDockedItems:function(){var a=this.legend;return a?[a]:[]},setTitle:function(d){var c=this,b=c.legend,a=c.baseCls;c.title=d;if(c.rendered){if(!b){c.legend=b=Ext.widget(c.createLegendCt());c.addTitleClasses();b.ownerLayout.configureItem(b);b.render(c.el,0)}c.titleCmp.update(d)}else{if(b){c.titleCmp.update(d)}else{c.addTitleClasses();c.legend=Ext.widget(c.createLegendCt())}}return c},addTitleClasses:function(){var b=this,c=b.title,a=b.baseCls;if(c){b.addCls(a+"-with-title")}if(c||b.checkboxToggle||b.collapsible){b.addCls(a+"-with-header")}},applyTargetCls:function(a){this.bodyTargetCls=a},getTargetEl:function(){return this.body||this.frameBody||this.el},getDefaultContentTarget:function(){return this.body},expand:function(){return this.setExpanded(true)},collapse:function(){return this.setExpanded(false)},setExpanded:function(b){var c=this,d=c.checkboxCmp,a=b?"expand":"collapse";if(!c.rendered||c.fireEvent("before"+a,c)!==false){b=!!b;if(d){d.setValue(b)}if(b){c.removeCls(c.baseCls+"-collapsed")}else{c.addCls(c.baseCls+"-collapsed")}c.collapsed=!b;if(b){delete c.getHierarchyState().collapsed}else{c.getHierarchyState().collapsed=true}if(c.rendered){c.updateLayout({isRoot:false});c.fireEvent(a,c)}}return c},getRefItems:function(a){var c=this.callParent(arguments),b=this.legend;if(b){c.unshift(b);if(a){c.unshift.apply(c,b.getRefItems(true))}}return c},toggle:function(){this.setExpanded(!!this.collapsed)},onCheckChange:function(b,a){this.setExpanded(a)},setupRenderTpl:function(a){this.callParent(arguments);a.renderLegend=this.doRenderLegend}},0,["fieldset"],["component","container","box","fieldset"],{component:true,container:true,box:true,fieldset:true},["widget.fieldset"],[["fieldAncestor",Ext.form.FieldAncestor]],[Ext.form,"FieldSet"],0));(Ext.cmd.derive("Ext.form.Label",Ext.Component,{autoEl:"label",maskOnDisable:false,getElConfig:function(){var a=this;a.html=a.text?Ext.util.Format.htmlEncode(a.text):(a.html||"");return Ext.apply(a.callParent(),{htmlFor:a.forId||""})},setText:function(c,b){var a=this;b=b!==false;if(b){a.text=c;delete a.html}else{a.html=c;delete a.text}if(a.rendered){a.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(c):c;a.updateLayout()}return a}},0,["label"],["component","label","box"],{component:true,label:true,box:true},["widget.label"],0,[Ext.form,"Label"],0));(Ext.cmd.derive("Ext.form.Panel",Ext.panel.Panel,{alternateClassName:["Ext.FormPanel","Ext.form.FormPanel"],layout:"anchor",ariaRole:"form",basicFormConfigs:["api","baseParams","errorReader","jsonSubmit","method","paramOrder","paramsAsHash","reader","standardSubmit","timeout","trackResetOnLoad","url","waitMsgTarget","waitTitle"],initComponent:function(){var a=this;if(a.frame){a.border=false}a.initFieldAncestor();a.callParent();a.relayEvents(a.form,["beforeaction","actionfailed","actioncomplete","validitychange","dirtychange"]);if(a.pollForChanges){a.startPolling(a.pollInterval||500)}},initItems:function(){this.callParent();this.initMonitor();this.form=this.createForm()},afterFirstLayout:function(){this.callParent(arguments);this.form.initialize()},createForm:function(){var b={},d=this.basicFormConfigs,a=d.length,c=0,e;for(;c'+d+""+c.getTriggerMarkup()+""},getSubTplData:function(){var b=this,c=b.callParent(),d=b.readOnly===true,a=b.editable!==false;return Ext.apply(c,{editableCls:(d||!a)?" "+b.triggerNoEditCls:"",readOnly:!a||d})},getLabelableRenderData:function(){var b=this,c=b.triggerWrapCls,a=b.callParent(arguments);return Ext.applyIf(a,{triggerWrapCls:c,triggerMarkup:b.getTriggerMarkup()})},getTriggerMarkup:function(){var e=this,c=0,j=(e.readOnly||e.hideTrigger),a,g=e.triggerBaseCls,h=[],d=Ext.dom.Element.unselectableCls,b="width:"+e.triggerWidth+"px;"+(j?"display:none;":""),k=e.extraTriggerCls+" "+Ext.baseCSSPrefix+"trigger-cell "+d;if(!e.trigger1Cls){e.trigger1Cls=e.triggerCls}for(c=0;(a=e["trigger"+(c+1)+"Cls"])||c<1;c++){h.push({tag:"td",valign:"top",cls:k,style:b,cn:{cls:[Ext.baseCSSPrefix+"trigger-index-"+c,g,a].join(" "),role:"button"}})}h[0].cn.cls+=" "+g+"-first";return Ext.DomHelper.markup(h)},disableCheck:function(){return !this.disabled},beforeRender:function(){var a=this,b=a.triggerBaseCls,c;if(!a.triggerWidth){c=Ext.getBody().createChild({style:"position: absolute;",cls:Ext.baseCSSPrefix+"form-trigger"});Ext.form.field.Trigger.prototype.triggerWidth=c.getWidth();c.remove()}a.callParent();if(b!=Ext.baseCSSPrefix+"form-trigger"){a.addChildEls({name:"triggerEl",select:"."+b})}a.lastTriggerStateFlags=a.getTriggerStateFlags()},onRender:function(){var a=this;a.callParent(arguments);a.doc=Ext.getDoc();a.initTrigger()},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerEl.getCount()*b.triggerWidth}return a},setHideTrigger:function(a){if(a!=this.hideTrigger){this.hideTrigger=a;this.updateLayout()}},setEditable:function(a){if(a!=this.editable){this.editable=a;this.updateLayout()}},setReadOnly:function(c){var b=this,a=b.readOnly;b.callParent(arguments);if(c!=a){b.updateLayout()}},initTrigger:function(){var h=this,j=h.triggerWrap,l=h.triggerEl,a=h.disableCheck,d,c,b,g,k;if(h.repeatTriggerClick){h.triggerRepeater=new Ext.util.ClickRepeater(j,{preventDefault:true,handler:h.onTriggerWrapClick,listeners:{mouseup:h.onTriggerWrapMouseup,scope:h},scope:h})}else{h.mon(j,{click:h.onTriggerWrapClick,mouseup:h.onTriggerWrapMouseup,scope:h})}l.setVisibilityMode(Ext.Element.DISPLAY);l.addClsOnOver(h.triggerBaseCls+"-over",a,h);d=l.elements;c=d.length;for(g=0;g1){b=[];for(j=0;j=c){h.deselectRange(h.lastFocused,c-1)}else{if(k!==d){h.selectRange(k,d,g.ctrlKey)}}}h.lastSelected=d;h.setLastFocused(d)}else{if(g.ctrlKey&&b){h.setLastFocused(d)}else{if(g.ctrlKey){h.setLastFocused(d)}else{h.doSelect(d,false)}}}}break;case"SIMPLE":if(b){h.doDeselect(d)}else{h.doSelect(d,true)}break;case"SINGLE":if(m){if(b){h.doDeselect(d);h.setLastFocused(d)}else{h.doSelect(d)}}else{if(g.ctrlKey){h.setLastFocused(d)}else{if(h.allowDeselect&&b){h.doDeselect(d)}else{h.doSelect(d,false)}}}break}if(!g.shiftKey){if(h.isSelected(d)){h.selectionStart=d}}},selectRange:function(m,d,n){var j=this,l=j.store,c=j.selected.items,o,g,h,e,a,k,b;if(j.isLocked()){return}o=j.normalizeRowRange(m,d);m=o[0];d=o[1];e=[];for(g=m;g<=d;g++){if(!j.isSelected(l.getAt(g))){e.push(l.getAt(g))}}if(!n){a=[];j.suspendChanges();for(g=0,h=c.length;gd){a.push(b)}}for(g=0,h=a.length;gb){d=b;b=c;c=d}return[c,b]},onModelIdChanged:function(a,d,e,c,b){this.selected.updateKey(b,c)},select:function(b,c,a){if(Ext.isDefined(b)){this.doSelect(b,c,a)}},deselect:function(b,a){this.doDeselect(b,a)},doSelect:function(c,e,b){var d=this,a;if(d.locked||!d.store){return}if(typeof c==="number"){a=d.store.getAt(c);if(!a){return}c=[a]}if(d.selectionMode=="SINGLE"&&c){a=c.length?c[0]:c;d.doSingleSelect(a,b)}else{d.doMultiSelect(c,e,b)}},doMultiSelect:function(a,l,k){var h=this,b=h.selected,j=false,m,d,g,e,c;if(h.locked){return}a=!Ext.isArray(a)?[a]:a;g=a.length;if(!l&&b.getCount()>0){m=h.deselectDuringSelect(a,b.getRange(),k);if(m[0]){h.maybeFireSelectionChange(m[1]>0&&!k);return}}c=function(){b.add(e);j=true};for(d=0;d0&&!k);return g===l},doSingleSelect:function(a,b){var d=this,g=false,c=d.selected,e;if(d.locked){return}if(d.isSelected(a)){return}if(c.getCount()){d.suspendChanges();if(!d.doDeselect(d.lastSelected,b)){d.resumeChanges();return}d.resumeChanges()}e=function(){c.add(a);d.lastSelected=a;g=true};d.onSelectChange(a,true,b,e);if(g){if(!b&&!d.preventFocus){d.setLastFocused(a)}d.maybeFireSelectionChange(!b)}},setLastFocused:function(c,b){var d=this,a=d.lastFocused;if(c!==a){d.lastFocused=c;d.onLastFocusChanged(a,c,b)}},isFocused:function(a){return a===this.getLastFocused()},maybeFireSelectionChange:function(a){var b=this;if(a&&!b.suspendChange){b.fireEvent("selectionchange",b,b.getSelection())}},getLastSelected:function(){return this.lastSelected},getLastFocused:function(){return this.lastFocused},getSelection:function(){return this.selected.getRange()},getSelectionMode:function(){return this.selectionMode},setSelectionMode:function(a){a=a?a.toUpperCase():"SINGLE";this.selectionMode=this.modes[a]?a:"SINGLE"},isLocked:function(){return this.locked},setLocked:function(a){this.locked=!!a},isRangeSelected:function(d,c){var g=this,b=g.store,e,a;a=g.normalizeRowRange(d,c);d=a[0];c=a[1];for(e=d;e<=c;e++){if(!g.isSelected(b.getAt(e))){return false}}return true},isSelected:function(a){a=Ext.isNumber(a)?this.store.getAt(a):a;return this.selected.contains(a)},hasSelection:function(){return this.selected.getCount()>0},getSelectionId:function(a){return a.internalId},pruneIf:function(){var g=this,d=g.selected,c=[],a=d.length,b,e;if(g.pruneRemoved){for(b=0;b0){this.clearSelections();this.maybeFireSelectionChange(true)}},onStoreRemove:function(c,b,d,a){var e=this;if(e.selectionStart&&Ext.Array.contains(b,e.selectionStart)){e.selectionStart=null}if(a||e.locked||!e.pruneRemoved){return}e.deselectDeletedRecords(b)},deselectDeletedRecords:function(b){var g=this,d=g.selected,c,e=b.length,h=0,a;for(c=0;c=c){a=0}}e.select(a)},onSelectChange:function(b,e,d,h){var g=this,a=g.view,c=e?"select":"deselect";if((d||g.fireEvent("before"+c,g,b))!==false&&h()!==false){if(a){if(e){a.onItemSelect(b)}else{a.onItemDeselect(b)}}if(!d){g.fireEvent(c,g,b)}}},onLastFocusChanged:function(d,b,c){var a=this.view;if(a&&!c&&b){a.focusNode(b);this.fireEvent("focuschange",this,d,b)}},destroy:function(){Ext.destroy(this.keyNav);this.callParent()}},1,0,0,0,0,0,[Ext.selection,"DataViewModel"],0));(Ext.cmd.derive("Ext.view.AbstractView",Ext.Component,{inheritableStatics:{getRecord:function(a){return this.getBoundView(a).getRecord(a)},getBoundView:function(a){return Ext.getCmp(a.boundView)}},deferInitialRefresh:true,itemCls:Ext.baseCSSPrefix+"dataview-item",loadingText:"Loading...",loadMask:true,loadingUseMsg:true,selectedItemCls:Ext.baseCSSPrefix+"item-selected",emptyText:"",deferEmptyText:true,trackOver:false,blockRefresh:false,preserveScrollOnRefresh:false,last:false,triggerEvent:"itemclick",triggerCtEvent:"containerclick",addCmpEvents:function(){},initComponent:function(){var c=this,a=Ext.isDefined,d=c.itemTpl,b={};if(d){if(Ext.isArray(d)){d=d.join("")}else{if(Ext.isObject(d)){b=Ext.apply(b,d.initialConfig);d=d.html}}if(!c.itemSelector){c.itemSelector="."+c.itemCls}d=Ext.String.format('
    {1}
    ',c.itemCls,d);c.tpl=new Ext.XTemplate(d,b)}c.callParent();c.tpl=c.getTpl("tpl");if(c.overItemCls){c.trackOver=true}c.addEvents("beforerefresh","refresh","viewready","itemupdate","itemadd","itemremove");c.addCmpEvents();c.store=Ext.data.StoreManager.lookup(c.store||"ext-empty-store");if(!c.dataSource){c.dataSource=c.store}c.bindStore(c.dataSource,true,"dataSource");if(!c.all){c.all=new Ext.CompositeElementLite()}c.scrollState={top:0,left:0};c.on({scroll:c.onViewScroll,element:"el",scope:c})},onRender:function(){var d=this,b=d.loadMask,c=d.getMaskStore(),a={target:d,msg:d.loadingText,msgCls:d.loadingCls,useMsg:d.loadingUseMsg,store:c};d.callParent(arguments);if(b&&!c.proxy.isSynchronous){if(Ext.isObject(b)){a=Ext.apply(a,b)}d.loadMask=new Ext.LoadMask(a);d.loadMask.on({scope:d,beforeshow:d.onMaskBeforeShow,hide:d.onMaskHide})}},finishRender:function(){var a=this;a.callParent(arguments);if(!a.up("[collapsed],[hidden]")){a.doFirstRefresh(a.dataSource)}},onBoxReady:function(){var a=this;a.callParent(arguments);if(!a.firstRefreshDone){a.doFirstRefresh(a.dataSource)}},getMaskStore:function(){return this.store},onMaskBeforeShow:function(){var b=this,a=b.loadingHeight;if(a&&a>b.getHeight()){b.hasLoadingHeight=true;b.oldMinHeight=b.minHeight;b.minHeight=a;b.updateLayout()}},onMaskHide:function(){var a=this;if(!a.destroying&&a.hasLoadingHeight){a.minHeight=a.oldMinHeight;a.updateLayout();delete a.hasLoadingHeight}},beforeRender:function(){this.callParent(arguments);this.getSelectionModel().beforeViewRender(this)},afterRender:function(){this.callParent(arguments);this.getSelectionModel().bindComponent(this)},getSelectionModel:function(){var a=this,b="SINGLE";if(a.simpleSelect){b="SIMPLE"}else{if(a.multiSelect){b="MULTI"}}if(!a.selModel||!a.selModel.events){a.selModel=new Ext.selection.DataViewModel(Ext.apply({allowDeselect:a.allowDeselect,mode:b},a.selModel))}if(!a.selModel.hasRelaySetup){a.relayEvents(a.selModel,["selectionchange","beforeselect","beforedeselect","select","deselect","focuschange"]);a.selModel.hasRelaySetup=true}if(a.disableSelection){a.selModel.locked=true}return a.selModel},refresh:function(){var c=this,h,b,e,d,g,a;if(!c.rendered||c.isDestroyed){return}if(!c.hasListeners.beforerefresh||c.fireEvent("beforerefresh",c)!==false){h=c.getTargetEl();a=c.getViewRange();g=h.dom;if(!c.preserveScrollOnRefresh){b=g.parentNode;e=g.style.display;g.style.display="none";d=g.nextSibling;b.removeChild(g)}if(c.refreshCounter){c.clearViewEl()}else{c.fixedNodes=h.dom.childNodes.length;c.refreshCounter=1}c.tpl.append(h,c.collectData(a,c.all.startIndex));if(a.length<1){if(!this.store.loading&&(!c.deferEmptyText||c.hasFirstRefresh)){Ext.core.DomHelper.insertHtml("beforeEnd",h.dom,c.emptyText)}c.all.clear()}else{c.collectNodes(h.dom);c.updateIndexes(0)}if(c.hasFirstRefresh){if(c.refreshSelmodelOnRefresh!==false){c.selModel.refresh()}else{c.selModel.pruneIf()}}c.hasFirstRefresh=true;if(!c.preserveScrollOnRefresh){b.insertBefore(g,d);g.style.display=e}this.refreshSize();c.fireEvent("refresh",c);if(!c.viewReady){c.viewReady=true;c.fireEvent("viewready",c)}}},collectNodes:function(a){this.all.fill(Ext.query(this.getItemSelector(),Ext.getDom(a)),this.all.startIndex)},getViewRange:function(){return this.dataSource.getRange()},refreshSize:function(){var a=this.getSizeModel();if(a.height.shrinkWrap||a.width.shrinkWrap){this.updateLayout()}},clearViewEl:function(){var b=this,a=b.getTargetEl();if(b.fixedNodes){while(a.dom.childNodes[b.fixedNodes]){a.dom.removeChild(a.dom.childNodes[b.fixedNodes])}}else{a.update("")}b.refreshCounter++},onViewScroll:Ext.emptyFn,onIdChanged:Ext.emptyFn,saveScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;a.left=b.scrollLeft;a.top=b.scrollTop}},restoreScrollState:function(){if(this.rendered){var b=this.el.dom,a=this.scrollState;b.scrollLeft=a.left;b.scrollTop=a.top}},prepareData:function(e,d,c){var b,a,g;if(c){b=c.getAssociatedData();for(a in b){if(b.hasOwnProperty(a)){if(!g){e=Ext.Object.chain(e);g=true}e[a]=b[a]}}}return e},collectData:function(c,g){var e=[],d=0,a=c.length,b;for(;d-1){c=d.bufferRender([a],b)[0];if(d.getNode(a)){d.all.replaceElement(b,c,true);d.updateIndexes(b,b);d.selModel.onUpdate(a);if(d.hasListeners.itemupdate){d.fireEvent("itemupdate",a,b,c)}return c}}}},onAdd:function(c,b,d){var e=this,a;if(e.rendered){if(e.all.getCount()===0){e.refresh();a=e.all.slice()}else{a=e.doAdd(b,d);if(e.refreshSelmodelOnRefresh!==false){e.selModel.refresh()}e.updateIndexes(d);e.refreshSize()}if(e.hasListeners.itemadd){e.fireEvent("itemadd",b,d,a)}}},doAdd:function(c,d){var j=this,b=j.bufferRender(c,d,true),g=j.all,h=g.getCount(),e,a;if(h===0){for(e=0,a=b.length;e=0;--e){g.fireEvent("itemremove",b[e],d[e])}}g.refresh()}else{for(e=d.length-1;e>=0;--e){a=b[e];c=d[e];g.doRemove(a,c);if(h){g.fireEvent("itemremove",a,c)}}g.updateIndexes(d[0])}this.refreshSize()}},doRemove:function(a,b){this.all.removeElement(b,true)},refreshNode:function(a){this.onUpdate(this.dataSource,this.dataSource.getAt(a))},updateIndexes:function(e,d){var b=this.all.elements,a=this.getViewRange(),c;e=e||0;d=d||((d===0)?0:(b.length-1));for(c=e;c<=d;c++){b[c].viewIndex=c;b[c].viewRecordId=a[c].internalId;if(!b[c].boundView){b[c].boundView=this.id}}},getStore:function(){return this.store},bindStore:function(a,b,d){var c=this;c.mixins.bindable.bindStore.apply(c,arguments);if(!b){c.getSelectionModel().bindStore(a)}if(c.componentLayoutCounter){c.doFirstRefresh(a)}},doFirstRefresh:function(a){var b=this;b.firstRefreshDone=true;if(a&&!a.loading){if(b.deferInitialRefresh){b.applyFirstRefresh()}else{b.refresh()}}},applyFirstRefresh:function(){var a=this;if(a.isDestroyed){return}if(a.up("[isCollapsingOrExpanding]")){Ext.Function.defer(a.applyFirstRefresh,100,a)}else{Ext.Function.defer(function(){if(!a.isDestroyed){a.refresh()}},1)}},onUnbindStore:function(a){this.setMaskBind(null)},onBindStore:function(a,b,c){this.setMaskBind(a);if(!b&&c==="store"){this.bindStore(a,false,"dataSource")}},setMaskBind:function(b){var a=this.loadMask;if(a&&a.bindStore){a.bindStore(b)}},getStoreListeners:function(){var a=this;return{idchanged:a.onIdChanged,refresh:a.onDataRefresh,add:a.onAdd,bulkremove:a.onRemove,update:a.onUpdate,clear:a.refresh}},onDataRefresh:function(){this.refreshView()},refreshView:function(){var a=this,b=!a.firstRefreshDone&&(!a.rendered||a.up("[collapsed],[isCollapsingOrExpanding],[hidden]"));if(b){a.deferInitialRefresh=false}else{if(a.blockRefresh!==true){a.firstRefreshDone=true;a.refresh()}}},findItemByChild:function(a){return Ext.fly(a).findParent(this.getItemSelector(),this.getTargetEl())},findTargetByEvent:function(a){return a.getTarget(this.getItemSelector(),this.getTargetEl())},getSelectedNodes:function(){var b=[],a=this.selModel.getSelection(),d=a.length,c=0;for(;ch.bottom){a=c.bottom-h.bottom}}if(c.lefth.right){b=c.right-h.right}}if(b||a){g.scrollBy(b,a,false)}d.focus()}}},0,["dataview"],["component","box","dataview"],{component:true,box:true,dataview:true},["widget.dataview"],0,[Ext.view,"View",Ext,"DataView"],0));(Ext.cmd.derive("Ext.layout.component.BoundList",Ext.layout.component.Auto,{type:"component",beginLayout:function(d){var c=this,a=c.owner,b=a.pagingToolbar;c.callParent(arguments);if(a.floating){d.savedXY=a.getXY();a.setXY([0,-9999])}if(b){d.toolbarContext=d.context.getCmp(b)}d.listContext=d.getEl("listEl")},beginLayoutCycle:function(b){var a=this.owner;this.callParent(arguments);if(b.heightModel.auto){a.el.setHeight("auto");a.listEl.setHeight("auto")}},getLayoutItems:function(){var a=this.owner.pagingToolbar;return a?[a]:[]},isValidParent:function(){return true},finishedLayout:function(a){var b=a.savedXY;this.callParent(arguments);if(b){this.owner.setXY(b)}},measureContentWidth:function(a){return this.owner.listEl.getWidth()},measureContentHeight:function(a){return this.owner.listEl.getHeight()},publishInnerHeight:function(c,a){var b=c.toolbarContext,d=0;if(b){d=b.getProp("height")}if(d===undefined){this.done=false}else{c.listContext.setHeight(a-c.getFrameInfo().height-d)}},calculateOwnerHeightFromContentHeight:function(c){var a=this.callParent(arguments),b=c.toolbarContext;if(b){a+=b.getProp("height")}return a}},0,0,0,0,["layout.boundlist"],0,[Ext.layout.component,"BoundList"],0));(Ext.cmd.derive("Ext.toolbar.TextItem",Ext.toolbar.Item,{alternateClassName:"Ext.Toolbar.TextItem",text:"",renderTpl:"{text}",baseCls:Ext.baseCSSPrefix+"toolbar-text",beforeRender:function(){var a=this;a.callParent();Ext.apply(a.renderData,{text:a.text})},setText:function(b){var a=this;a.text=b;if(a.rendered){a.el.update(b);a.updateLayout()}}},0,["tbtext"],["tbitem","component","box","tbtext"],{tbitem:true,component:true,box:true,tbtext:true},["widget.tbtext"],0,[Ext.toolbar,"TextItem",Ext.Toolbar,"TextItem"],0));(Ext.cmd.derive("Ext.form.field.Spinner",Ext.form.field.Trigger,{alternateClassName:"Ext.form.Spinner",trigger1Cls:Ext.baseCSSPrefix+"form-spinner-up",trigger2Cls:Ext.baseCSSPrefix+"form-spinner-down",spinUpEnabled:true,spinDownEnabled:true,keyNavEnabled:true,mouseWheelEnabled:true,repeatTriggerClick:true,onSpinUp:Ext.emptyFn,onSpinDown:Ext.emptyFn,triggerTpl:'
    ',initComponent:function(){this.callParent();this.addEvents("spin","spinup","spindown")},onRender:function(){var b=this,a;b.callParent(arguments);a=b.triggerEl;b.spinUpEl=a.item(0);b.spinDownEl=a.item(1);b.triggerCell=b.spinUpEl.parent();if(b.keyNavEnabled){b.spinnerKeyNav=new Ext.util.KeyNav(b.inputEl,{scope:b,up:b.spinUp,down:b.spinDown})}if(b.mouseWheelEnabled){b.mon(b.bodyEl,"mousewheel",b.onMouseWheel,b)}},getSubTplMarkup:function(b){var c=this,a=b.childElCls,d=Ext.form.field.Base.prototype.getSubTplMarkup.apply(c,arguments);return'"+c.getTriggerMarkup()+"
    '+d+"
    "},getTriggerMarkup:function(){return this.getTpl("triggerTpl").apply(this.getTriggerData())},getTriggerData:function(){var a=this,b=(a.readOnly||a.hideTrigger);return{triggerCls:Ext.baseCSSPrefix+"trigger-cell",triggerStyle:b?"display:none":"",spinnerUpCls:!a.spinUpEnabled?a.trigger1Cls+"-disabled":"",spinnerDownCls:!a.spinDownEnabled?a.trigger2Cls+"-disabled":""}},getTriggerWidth:function(){var b=this,a=0;if(b.triggerWrap&&!b.hideTrigger&&!b.readOnly){a=b.triggerWidth}return a},onTrigger1Click:function(){this.spinUp()},onTrigger2Click:function(){this.spinDown()},onTriggerWrapMouseup:function(){this.inputEl.focus()},spinUp:function(){var a=this;if(a.spinUpEnabled&&!a.disabled){a.fireEvent("spin",a,"up");a.fireEvent("spinup",a);a.onSpinUp()}},spinDown:function(){var a=this;if(a.spinDownEnabled&&!a.disabled){a.fireEvent("spin",a,"down");a.fireEvent("spindown",a);a.onSpinDown()}},setSpinUpEnabled:function(a){var b=this,c=b.spinUpEnabled;b.spinUpEnabled=a;if(c!==a&&b.rendered){b.spinUpEl[a?"removeCls":"addCls"](b.trigger1Cls+"-disabled")}},setSpinDownEnabled:function(a){var b=this,c=b.spinDownEnabled;b.spinDownEnabled=a;if(c!==a&&b.rendered){b.spinDownEl[a?"removeCls":"addCls"](b.trigger2Cls+"-disabled")}},onMouseWheel:function(b){var a=this,c;if(a.hasFocus){c=b.getWheelDelta();if(c>0){a.spinUp()}else{if(c<0){a.spinDown()}}b.stopEvent()}},onDestroy:function(){Ext.destroyMembers(this,"spinnerKeyNav","spinUpEl","spinDownEl");this.callParent()}},0,["spinnerfield"],["field","trigger","textfield","component","box","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,spinnerfield:true,triggerfield:true},["widget.spinnerfield"],0,[Ext.form.field,"Spinner",Ext.form,"Spinner"],0));(Ext.cmd.derive("Ext.form.field.Number",Ext.form.field.Spinner,{alternateClassName:["Ext.form.NumberField","Ext.form.Number"],allowExponential:true,allowDecimals:true,decimalSeparator:".",submitLocaleSeparator:true,decimalPrecision:2,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,step:1,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",negativeText:"The value cannot be negative",baseChars:"0123456789",autoStripChars:false,initComponent:function(){var a=this;a.callParent();a.setMinValue(a.minValue);a.setMaxValue(a.maxValue)},getErrors:function(c){var b=this,e=b.callParent(arguments),d=Ext.String.format,a;c=Ext.isDefined(c)?c:this.processRawValue(this.getRawValue());if(c.length<1){return e}c=String(c).replace(b.decimalSeparator,".");if(isNaN(c)){e.push(d(b.nanText,c))}a=b.parseValue(c);if(b.minValue===0&&a<0){e.push(this.negativeText)}else{if(ab.maxValue){e.push(d(b.maxText,b.maxValue))}return e},rawToValue:function(b){var a=this.fixPrecision(this.parseValue(b));if(a===null){a=b||null}return a},valueToRaw:function(c){var b=this,a=b.decimalSeparator;c=b.parseValue(c);c=b.fixPrecision(c);c=Ext.isNumber(c)?c:parseFloat(String(c).replace(a,"."));c=isNaN(c)?"":String(c).replace(".",a);return c},getSubmitValue:function(){var a=this,b=a.callParent();if(!a.submitLocaleSeparator){b=b.replace(a.decimalSeparator,".")}return b},onChange:function(){this.toggleSpinners();this.callParent(arguments)},toggleSpinners:function(){var c=this,d=c.getValue(),b=d===null,a;if(c.spinUpEnabled||c.spinUpDisabledByToggle){a=b||dc.minValue;c.setSpinDownEnabled(a,true)}},setMinValue:function(b){var a=this,c;a.minValue=Ext.Number.from(b,Number.NEGATIVE_INFINITY);a.toggleSpinners();if(a.disableKeyFilter!==true){c=a.baseChars+"";if(a.allowExponential){c+=a.decimalSeparator+"e+-"}else{if(a.allowDecimals){c+=a.decimalSeparator}if(a.minValue<0){c+="-"}}c=Ext.String.escapeRegex(c);a.maskRe=new RegExp("["+c+"]");if(a.autoStripChars){a.stripCharsRe=new RegExp("[^"+c+"]","gi")}}},setMaxValue:function(a){this.maxValue=Ext.Number.from(a,Number.MAX_VALUE);this.toggleSpinners()},parseValue:function(a){a=parseFloat(String(a).replace(this.decimalSeparator,"."));return isNaN(a)?null:a},fixPrecision:function(d){var c=this,b=isNaN(d),a=c.decimalPrecision;if(b||!d){return b?"":d}else{if(!c.allowDecimals||a<=0){a=0}}return parseFloat(Ext.Number.toFixed(parseFloat(d),a))},beforeBlur:function(){var b=this,a=b.parseValue(b.getRawValue());if(!Ext.isEmpty(a)){b.setValue(a)}},setSpinUpEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinUpDisabledByToggle}else{this.spinUpDisabledByToggle=!b}},onSpinUp:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()+a.step,a.minValue,a.maxValue))}},setSpinDownEnabled:function(b,a){this.callParent(arguments);if(!a){delete this.spinDownDisabledByToggle}else{this.spinDownDisabledByToggle=!b}},onSpinDown:function(){var a=this;if(!a.readOnly){a.setSpinValue(Ext.Number.constrain(a.getValue()-a.step,a.minValue,a.maxValue))}},setSpinValue:function(c){var b=this,a;if(b.enforceMaxLength){if(b.fixPrecision(c).toString().length>b.maxLength){return}}b.setValue(c)}},0,["numberfield"],["field","trigger","textfield","component","box","numberfield","spinnerfield","triggerfield"],{field:true,trigger:true,textfield:true,component:true,box:true,numberfield:true,spinnerfield:true,triggerfield:true},["widget.numberfield"],0,[Ext.form.field,"Number",Ext.form,"NumberField",Ext.form,"Number"],0));(Ext.cmd.derive("Ext.toolbar.Paging",Ext.toolbar.Toolbar,{alternateClassName:"Ext.PagingToolbar",displayInfo:false,prependButtons:false,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",inputItemWidth:30,getPagingItems:function(){var a=this;return[{itemId:"first",tooltip:a.firstText,overflowText:a.firstText,iconCls:Ext.baseCSSPrefix+"tbar-page-first",disabled:true,handler:a.moveFirst,scope:a},{itemId:"prev",tooltip:a.prevText,overflowText:a.prevText,iconCls:Ext.baseCSSPrefix+"tbar-page-prev",disabled:true,handler:a.movePrevious,scope:a},"-",a.beforePageText,{xtype:"numberfield",itemId:"inputItem",name:"inputItem",cls:Ext.baseCSSPrefix+"tbar-page-number",allowDecimals:false,minValue:1,hideTrigger:true,enableKeyEvents:true,keyNavEnabled:false,selectOnFocus:true,submitValue:false,isFormField:false,width:a.inputItemWidth,margins:"-1 2 3 2",listeners:{scope:a,keydown:a.onPagingKeyDown,blur:a.onPagingBlur}},{xtype:"tbtext",itemId:"afterTextItem",text:Ext.String.format(a.afterPageText,1)},"-",{itemId:"next",tooltip:a.nextText,overflowText:a.nextText,iconCls:Ext.baseCSSPrefix+"tbar-page-next",disabled:true,handler:a.moveNext,scope:a},{itemId:"last",tooltip:a.lastText,overflowText:a.lastText,iconCls:Ext.baseCSSPrefix+"tbar-page-last",disabled:true,handler:a.moveLast,scope:a},"-",{itemId:"refresh",tooltip:a.refreshText,overflowText:a.refreshText,iconCls:Ext.baseCSSPrefix+"tbar-loading",handler:a.doRefresh,scope:a}]},initComponent:function(){var b=this,c=b.getPagingItems(),a=b.items||b.buttons||[];if(b.prependButtons){b.items=a.concat(c)}else{b.items=c.concat(a)}delete b.buttons;if(b.displayInfo){b.items.push("->");b.items.push({xtype:"tbtext",itemId:"displayItem"})}b.callParent();b.addEvents("change","beforechange");b.on("beforerender",b.onLoad,b,{single:true});b.bindStore(b.store||"ext-empty-store",true)},updateInfo:function(){var e=this,c=e.child("#displayItem"),a=e.store,b=e.getPageData(),d,g;if(c){d=a.getCount();if(d===0){g=e.emptyMsg}else{g=Ext.String.format(e.displayMsg,b.fromRecord,b.toRecord,b.total)}c.setText(g)}},onLoad:function(){var h=this,d,b,c,a,g,j,e;g=h.store.getCount();j=g===0;if(!j){d=h.getPageData();b=d.currentPage;c=d.pageCount;a=Ext.String.format(h.afterPageText,isNaN(c)?1:c)}else{b=0;c=0;a=Ext.String.format(h.afterPageText,0)}Ext.suspendLayouts();e=h.child("#afterTextItem");if(e){e.setText(a)}e=h.getInputItem();if(e){e.setDisabled(j).setValue(b)}h.setChildDisabled("#first",b===1||j);h.setChildDisabled("#prev",b===1||j);h.setChildDisabled("#next",b===c||j);h.setChildDisabled("#last",b===c||j);h.setChildDisabled("#refresh",false);h.updateInfo();Ext.resumeLayouts(true);if(h.rendered){h.fireEvent("change",h,d)}},setChildDisabled:function(a,b){var c=this.child(a);if(c){c.setDisabled(b)}},getPageData:function(){var b=this.store,a=b.getTotalCount();return{total:a,currentPage:b.currentPage,pageCount:Math.ceil(a/b.pageSize),fromRecord:((b.currentPage-1)*b.pageSize)+1,toRecord:Math.min(b.currentPage*b.pageSize,a)}},onLoadError:function(){if(!this.rendered){return}this.setChildDisabled("#refresh",false)},getInputItem:function(){return this.child("#inputItem")},readPageFromInput:function(b){var c=this.getInputItem(),d=false,a;if(c){a=c.getValue();d=parseInt(a,10);if(!a||isNaN(d)){c.setValue(b.currentPage);return false}}return d},onPagingFocus:function(){var a=this.getInputItem();if(a){a.select()}},onPagingBlur:function(c){var b=this.getInputItem(),a;if(b){a=this.getPageData().currentPage;b.setValue(a)}},onPagingKeyDown:function(j,h){var d=this,b=h.getKey(),c=d.getPageData(),a=h.shiftKey?10:1,g;if(b==h.RETURN){h.stopEvent();g=d.readPageFromInput(c);if(g!==false){g=Math.min(Math.max(1,g),c.pageCount);if(d.fireEvent("beforechange",d,g)!==false){d.store.loadPage(g)}}}else{if(b==h.HOME||b==h.END){h.stopEvent();g=b==h.HOME?1:c.pageCount;j.setValue(g)}else{if(b==h.UP||b==h.PAGE_UP||b==h.DOWN||b==h.PAGE_DOWN){h.stopEvent();g=d.readPageFromInput(c);if(g){if(b==h.DOWN||b==h.PAGE_DOWN){a*=-1}g+=a;if(g>=1&&g<=c.pageCount){j.setValue(g)}}}}}},beforeLoad:function(){if(this.rendered){this.setChildDisabled("#refresh",true)}},moveFirst:function(){if(this.fireEvent("beforechange",this,1)!==false){this.store.loadPage(1)}},movePrevious:function(){var b=this,a=b.store.currentPage-1;if(a>0){if(b.fireEvent("beforechange",b,a)!==false){b.store.previousPage()}}},moveNext:function(){var c=this,b=c.getPageData().pageCount,a=c.store.currentPage+1;if(a<=b){if(c.fireEvent("beforechange",c,a)!==false){c.store.nextPage()}}},moveLast:function(){var b=this,a=b.getPageData().pageCount;if(b.fireEvent("beforechange",b,a)!==false){b.store.loadPage(a)}},doRefresh:function(){var a=this,b=a.store.currentPage;if(a.fireEvent("beforechange",a,b)!==false){a.store.loadPage(b)}},getStoreListeners:function(){return{beforeload:this.beforeLoad,load:this.onLoad,exception:this.onLoadError}},unbind:function(a){this.bindStore(null)},bind:function(a){this.bindStore(a)},onDestroy:function(){this.unbind();this.callParent()}},0,["pagingtoolbar"],["toolbar","component","container","pagingtoolbar","box"],{toolbar:true,component:true,container:true,pagingtoolbar:true,box:true},["widget.pagingtoolbar"],[["bindable",Ext.util.Bindable]],[Ext.toolbar,"Paging",Ext,"PagingToolbar"],0));(Ext.cmd.derive("Ext.view.BoundList",Ext.view.View,{alternateClassName:"Ext.BoundList",pageSize:0,baseCls:Ext.baseCSSPrefix+"boundlist",itemCls:Ext.baseCSSPrefix+"boundlist-item",listItemCls:"",shadow:false,trackOver:true,refreshed:0,deferInitialRefresh:false,componentLayout:"boundlist",childEls:["listEl"],renderTpl:['
    ',"{%","var me=values.$comp, pagingToolbar=me.pagingToolbar;","if (pagingToolbar) {","pagingToolbar.ownerLayout = me.componentLayout;","Ext.DomHelper.generateMarkup(pagingToolbar.getRenderTree(), out);","}","%}",{disableFormats:true}],initComponent:function(){var b=this,a=b.baseCls,c=b.itemCls;b.selectedItemCls=a+"-selected";if(b.trackOver){b.overItemCls=a+"-item-over"}b.itemSelector="."+c;if(b.floating){b.addCls(a+"-floating")}if(!b.tpl){b.tpl=new Ext.XTemplate('
      ','
    • '+b.getInnerTpl(b.displayField)+"
    • ","
    ")}else{if(!b.tpl.isTemplate){b.tpl=new Ext.XTemplate(b.tpl)}}if(b.pageSize){b.pagingToolbar=b.createPagingToolbar()}b.callParent()},beforeRender:function(){var a=this;a.callParent(arguments);if(a.up("menu")){a.addCls(Ext.baseCSSPrefix+"menu")}},getRefOwner:function(){return this.pickerField||this.callParent()},getRefItems:function(){return this.pagingToolbar?[this.pagingToolbar]:[]},createPagingToolbar:function(){return Ext.widget("pagingtoolbar",{id:this.id+"-paging-toolbar",pageSize:this.pageSize,store:this.dataSource,border:false,ownerCt:this,ownerLayout:this.getComponentLayout()})},finishRenderChildren:function(){var a=this.pagingToolbar;this.callParent(arguments);if(a){a.finishRender()}},refresh:function(){var c=this,a=c.tpl,b=c.pagingToolbar,d=c.rendered;a.field=c.pickerField;a.store=c.store;c.callParent();a.field=a.store=null;if(d&&b&&b.rendered&&!c.preserveScrollOnRefresh){c.el.appendChild(b.el)}if(d&&Ext.isIE6&&Ext.isStrict){c.listEl.repaint()}},bindStore:function(a,b){var c=this.pagingToolbar;this.callParent(arguments);if(c){c.bindStore(a,b)}},getTargetEl:function(){return this.listEl||this.el},getInnerTpl:function(a){return"{"+a+"}"},onDestroy:function(){Ext.destroyMembers(this,"pagingToolbar","listEl");this.callParent()}},0,["boundlist"],["component","boundlist","box","dataview"],{component:true,boundlist:true,box:true,dataview:true},["widget.boundlist"],[["queryable",Ext.Queryable]],[Ext.view,"BoundList",Ext,"BoundList"],0));(Ext.cmd.derive("Ext.view.BoundListKeyNav",Ext.util.KeyNav,{constructor:function(b,a){var c=this;c.boundList=a.boundList;c.callParent([b,Ext.apply({},a,c.defaultHandlers)])},defaultHandlers:{up:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=c>0?c-1:d.getCount()-1;e.highlightAt(a)},down:function(){var e=this,b=e.boundList,d=b.all,g=b.highlightedItem,c=g?b.indexOf(g):-1,a=cc){c=g;k=m}}a=Math.max(h.callParent(arguments),b.inputEl.getTextWidth(k+b.growAppend));if(!h.startingWidth||b.removingRecords){h.startingWidth=a;if(a',' value="{[Ext.util.Format.htmlEncode(values.value)]}"',' name="{name}"',' placeholder="{placeholder}"',' size="{size}"',' maxlength="{maxLength}"',' readonly="readonly"',' disabled="disabled"',' tabIndex="{tabIdx}"',' style="{fieldStyle}"',"/>",{compiled:true,disableFormats:true}],getSubTplData:function(){var a=this;Ext.applyIf(a.subTplData,{hiddenDataCls:a.hiddenDataCls});return a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.setHiddenValue(a.value)},multiSelect:false,delimiter:", ",displayField:"text",triggerAction:"all",allQuery:"",queryParam:"query",queryMode:"remote",queryCaching:true,pageSize:0,anyMatch:false,caseSensitive:false,autoSelect:true,typeAhead:false,typeAheadDelay:250,selectOnTab:true,forceSelection:false,growToLongestValue:true,defaultListConfig:{loadingHeight:70,minWidth:70,maxHeight:300,shadow:"sides"},ignoreSelection:0,removingRecords:null,resizeComboToGrow:function(){var a=this;return a.grow&&a.growToLongestValue},initComponent:function(){var e=this,c=Ext.isDefined,b=e.store,d=e.transform,a,g;Ext.applyIf(e.renderSelectors,{hiddenDataEl:"."+e.hiddenDataCls.split(" ").join(".")});this.addEvents("beforequery","select","beforeselect","beforedeselect");if(d){a=Ext.getDom(d);if(a){if(!e.store){b=Ext.Array.map(Ext.Array.from(a.options),function(h){return[h.value,h.text]})}if(!e.name){e.name=a.name}if(!("value" in e)){e.value=a.value}}}e.bindStore(b||"ext-empty-store",true);b=e.store;if(b.autoCreated){e.queryMode="local";e.valueField=e.displayField="field1";if(!b.expanded){e.displayField="field2"}}if(!c(e.valueField)){e.valueField=e.displayField}g=e.queryMode==="local";if(!c(e.queryDelay)){e.queryDelay=g?10:500}if(!c(e.minChars)){e.minChars=g?0:4}if(!e.displayTpl){e.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : values["'+e.displayField+'"]]}'+e.delimiter+"")}else{if(Ext.isString(e.displayTpl)){e.displayTpl=new Ext.XTemplate(e.displayTpl)}}e.callParent();e.doQueryTask=new Ext.util.DelayedTask(e.doRawQuery,e);if(e.store.getCount()>0){e.setValue(e.value)}if(a){e.render(a.parentNode,a);Ext.removeNode(a);delete e.renderTo}},getStore:function(){return this.store},beforeBlur:function(){this.doQueryTask.cancel();this.assertValue()},assertValue:function(){var b=this,c=b.getRawValue(),d,a;if(b.forceSelection){if(b.multiSelect){if(c!==b.getDisplayValue()){b.setValue(b.lastSelection)}}else{d=b.findRecordByDisplay(c);if(d){a=b.value;if(!b.findRecordByValue(a)){b.select(d,true)}}else{b.setValue(b.lastSelection)}}}b.collapse()},onTypeAhead:function(){var e=this,d=e.displayField,b=e.store.findRecord(d,e.getRawValue()),c=e.getPicker(),g,a,h;if(b){g=b.get(d);a=g.length;h=e.getRawValue().length;c.highlightItem(c.getNode(b));if(h!==0&&h!==a){e.setRawValue(g);e.selectText(h,g.length)}}},resetToDefault:Ext.emptyFn,beforeReset:function(){this.callParent();if(this.queryFilter&&!this.queryFilter.disabled){this.queryFilter.disabled=true;this.store.filter()}},onUnbindStore:function(a){var c=this,b=c.picker;if(c.queryFilter){c.store.removeFilter(c.queryFilter)}if(!a&&b){b.bindStore(null)}},onBindStore:function(a,c){var b=this.picker;if(!c){this.resetToDefault()}if(b){b.bindStore(a)}},getStoreListeners:function(){var a=this;return{beforeload:a.onBeforeLoad,clear:a.onClear,datachanged:a.onDataChanged,load:a.onLoad,exception:a.onException,remove:a.onRemove}},onBeforeLoad:function(){++this.ignoreSelection},onDataChanged:function(){var a=this;if(a.resizeComboToGrow()){a.updateLayout()}},onClear:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true;a.onDataChanged()}},onRemove:function(){var a=this;if(a.resizeComboToGrow()){a.removingRecords=true}},onException:function(){if(this.ignoreSelection>0){--this.ignoreSelection}this.collapse()},onLoad:function(b,a,d){var c=this;if(c.ignoreSelection>0){--c.ignoreSelection}if(d&&!b.lastOptions.rawQuery){if(c.value==null){if(c.store.getCount()){c.doAutoSelect()}else{c.setValue(c.value)}}else{c.setValue(c.value)}}},doRawQuery:function(){this.doQuery(this.getRawValue(),false,true)},doQuery:function(e,b,d){var c=this,a=c.beforeQuery({query:e||"",rawQuery:d,forceAll:b,combo:c,cancel:false});if(a===false||a.cancel){return false}if(c.queryCaching&&a.query===c.lastQuery){c.expand()}else{c.lastQuery=a.query;if(c.queryMode==="local"){c.doLocalQuery(a)}else{c.doRemoteQuery(a)}}return true},beforeQuery:function(a){var b=this;if(b.fireEvent("beforequery",a)===false){a.cancel=true}else{if(!a.cancel){if(a.query.length0){c=a.getSelectionModel().lastSelected;d=a.getNode(c||0);if(d){a.highlightItem(d);a.listEl.scrollChildIntoView(d,false)}}},doTypeAhead:function(){if(!this.typeAheadTask){this.typeAheadTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.typeAheadTask.delay(this.typeAheadDelay)}},onTriggerClick:function(){var a=this;if(!a.readOnly&&!a.disabled){if(a.isExpanded){a.collapse()}else{a.onFocus({});if(a.triggerAction==="all"){a.doQuery(a.allQuery,true)}else{if(a.triggerAction==="last"){a.doQuery(a.lastQuery,true)}else{a.doQuery(a.getRawValue(),false,true)}}}a.inputEl.focus()}},onPaste:function(){var a=this;if(!a.readOnly&&!a.disabled&&a.editable){a.doQueryTask.delay(a.queryDelay)}},onKeyUp:function(d,b){var c=this,a=d.getKey();if(!c.readOnly&&!c.disabled&&c.editable){c.lastKey=a;if(!d.isSpecialKey()||a==d.BACKSPACE||a==d.DELETE){c.doQueryTask.delay(c.queryDelay)}}if(c.enableKeyEvents){c.callParent(arguments)}},initEvents:function(){var a=this;a.callParent();if(!a.enableKeyEvents){a.mon(a.inputEl,"keyup",a.onKeyUp,a)}a.mon(a.inputEl,"paste",a.onPaste,a)},onDestroy:function(){Ext.destroy(this.listKeyNav);this.bindStore(null);this.callParent()},onAdded:function(){var a=this;a.callParent(arguments);if(a.picker){a.picker.ownerCt=a.up("[floating]");a.picker.registerWithOwnerCt()}},createPicker:function(){var c=this,b,a=Ext.apply({xtype:"boundlist",pickerField:c,selModel:{mode:c.multiSelect?"SIMPLE":"SINGLE"},floating:true,hidden:true,store:c.store,displayField:c.displayField,focusOnToFront:false,pageSize:c.pageSize,tpl:c.tpl},c.listConfig,c.defaultListConfig);b=c.picker=Ext.widget(a);if(c.pageSize){b.pagingToolbar.on("beforechange",c.onPageChange,c)}c.mon(b,{itemclick:c.onItemClick,refresh:c.onListRefresh,scope:c});c.mon(b.getSelectionModel(),{beforeselect:c.onBeforeSelect,beforedeselect:c.onBeforeDeselect,selectionchange:c.onListSelectionChange,scope:c});return b},alignPicker:function(){var b=this,a=b.getPicker(),e=b.getPosition()[1]-Ext.getBody().getScroll().top,d=Ext.Element.getViewHeight()-e-b.getHeight(),c=Math.max(e,d);if(a.height){delete a.height;a.updateLayout()}if(a.getHeight()>c-5){a.setHeight(c-5)}b.callParent()},onListRefresh:function(){if(!this.expanding){this.alignPicker()}this.syncSelection()},onItemClick:function(c,a){var e=this,d=e.picker.getSelectionModel().getSelection(),b=e.valueField;if(!e.multiSelect&&d.length){if(a.get(b)===d[0].get(b)){e.displayTplData=[a.data];e.setRawValue(e.getDisplayValue());e.collapse()}}},onBeforeSelect:function(b,a){return this.fireEvent("beforeselect",this,a,a.index)},onBeforeDeselect:function(b,a){return this.fireEvent("beforedeselect",this,a,a.index)},onListSelectionChange:function(b,d){var a=this,e=a.multiSelect,c=d.length>0;if(!a.ignoreSelection&&a.isExpanded){if(!e){Ext.defer(a.collapse,1,a)}if(e||c){a.setValue(d,false)}if(c){a.fireEvent("select",a,d)}a.inputEl.focus()}},onExpand:function(){var d=this,a=d.listKeyNav,c=d.selectOnTab,b=d.getPicker();if(a){a.enable()}else{a=d.listKeyNav=new Ext.view.BoundListKeyNav(this.inputEl,{boundList:b,forceKeyDown:true,tab:function(g){if(c){this.selectHighlighted(g);d.triggerBlur()}return true},enter:function(j){var g=b.getSelectionModel(),h=g.getCount();this.selectHighlighted(j);if(!d.multiSelect&&h===g.getCount()){d.collapse()}}})}if(c){d.ignoreMonitorTab=true}Ext.defer(a.enable,1,a);d.inputEl.focus()},onCollapse:function(){var b=this,a=b.listKeyNav;if(a){a.disable();b.ignoreMonitorTab=false}},select:function(e,b){var d=this,c=d.picker,a=true,g;if(e&&e.isModel&&b===true&&c){g=!c.getSelectionModel().isSelected(e)}d.setValue(e,true);if(g){d.fireEvent("select",d,e)}},findRecord:function(d,c){var b=this.store,a=b.findExact(d,c);return a!==-1?b.getAt(a):false},findRecordByValue:function(a){return this.findRecord(this.valueField,a)},findRecordByDisplay:function(a){return this.findRecord(this.displayField,a)},setValue:function(m,e){var k=this,c=k.valueNotFoundText,n=k.inputEl,g,j,h,a,l=[],b=[],d=[];if(k.store.loading){k.value=m;k.setHiddenValue(k.value);return k}m=Ext.Array.from(m);for(g=0,j=m.length;g0){e.hiddenDataEl.update(Ext.DomHelper.markup({tag:"input",type:"hidden",name:a}));c=1;h=b.firstChild}while(c>g){b.removeChild(k[0]);--c}while(c=0){g.push(j)}}h.ignoreSelection++;c=d.getSelectionModel();c.deselectAll();if(g.length){c.select(g,undefined,true)}h.ignoreSelection--}},onEditorTab:function(b){var a=this.listKeyNav;if(this.selectOnTab&&a){a.selectHighlighted(b)}}},0,["combobox","combo"],["field","trigger","combobox","textfield","pickerfield","component","combo","box","triggerfield"],{field:true,trigger:true,combobox:true,textfield:true,pickerfield:true,component:true,combo:true,box:true,triggerfield:true},["widget.combo","widget.combobox"],[["bindable",Ext.util.Bindable]],[Ext.form.field,"ComboBox",Ext.form,"ComboBox"],0));(Ext.cmd.derive("Ext.picker.Month",Ext.Component,{alternateClassName:"Ext.MonthPicker",childEls:["bodyEl","prevEl","nextEl","buttonsEl","monthEl","yearEl"],renderTpl:['
    ','
    ','','
    ','{.}',"
    ","
    ","
    ",'
    ','
    ','
    ','',"
    ",'
    ','',"
    ","
    ",'','
    ','{.}',"
    ","
    ","
    ",'
    ',"
    ",'','
    {%',"var me=values.$comp, okBtn=me.okBtn, cancelBtn=me.cancelBtn;","okBtn.ownerLayout = cancelBtn.ownerLayout = me.componentLayout;","okBtn.ownerCt = cancelBtn.ownerCt = me;","Ext.DomHelper.generateMarkup(okBtn.getRenderTree(), out);","Ext.DomHelper.generateMarkup(cancelBtn.getRenderTree(), out);","%}
    ","
    "],okText:"OK",cancelText:"Cancel",baseCls:Ext.baseCSSPrefix+"monthpicker",showButtons:true,measureWidth:35,measureMaxHeight:20,smallCls:Ext.baseCSSPrefix+"monthpicker-small",totalYears:10,yearOffset:5,monthOffset:6,initComponent:function(){var a=this;a.selectedCls=a.baseCls+"-selected";a.addEvents("cancelclick","monthclick","monthdblclick","okclick","select","yearclick","yeardblclick");if(a.small){a.addCls(a.smallCls)}a.setValue(a.value);a.activeYear=a.getYear(new Date().getFullYear()-4,-4);if(a.showButtons){a.okBtn=new Ext.button.Button({text:a.okText,handler:a.onOkClick,scope:a});a.cancelBtn=new Ext.button.Button({text:a.cancelText,handler:a.onCancelClick,scope:a})}this.callParent()},beforeRender:function(){var g=this,c=0,b=[],a=Ext.Date.getShortMonthName,e=g.monthOffset,h=g.monthMargin,d="";g.callParent();for(;cd.measureMaxHeight){--c;a.setStyle("margin","0 "+c+"px")}return c},getLargest:function(a){var b=0;this.months.each(function(d){var c=d.getHeight();if(c>b){b=c}});return b},setValue:function(d){var c=this,e=c.activeYear,g=c.monthOffset,b,a;if(!d){c.value=[null,null]}else{if(Ext.isDate(d)){c.value=[d.getMonth(),d.getFullYear()]}else{c.value=[d[0],d[1]]}}if(c.rendered){b=c.value[1];if(b!==null){if((be+c.yearOffset)){c.activeYear=b-c.yearOffset+1}}c.updateBody()}return c},getValue:function(){return this.value},hasSelection:function(){var a=this.value;return a[0]!==null&&a[1]!==null},getYears:function(){var d=this,e=d.yearOffset,g=d.activeYear,a=g+e,c=g,b=[];for(;c','",'','','','","","",'','',"{#:this.isEndOfWeek}",'","","","
    ','
    {.:this.firstInitial}
    ',"
    ','',"
    ",'','',"","",{firstInitial:function(a){return Ext.picker.Date.prototype.getDayInitial(a)},isEndOfWeek:function(b){b--;var a=b%7===0&&b!==0;return a?'':""},renderTodayBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.todayBtn.getRenderTree(),b)},renderMonthBtn:function(a,b){Ext.DomHelper.generateMarkup(a.$comp.monthBtn.getRenderTree(),b)}}],todayText:"Today",ariaTitle:"Date Picker: {0}",ariaTitleDateFormat:"F d, Y",todayTip:"{0} (Spacebar)",minText:"This date is before the minimum date",maxText:"This date is after the maximum date",disabledDaysText:"Disabled",disabledDatesText:"Disabled",nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",monthYearFormat:"F Y",startDay:0,showToday:true,disableAnim:false,baseCls:Ext.baseCSSPrefix+"datepicker",longDayFormat:"F d, Y",focusOnShow:false,focusOnSelect:true,initHour:12,numDays:42,initComponent:function(){var b=this,a=Ext.Date.clearTime;b.selectedCls=b.baseCls+"-selected";b.disabledCellCls=b.baseCls+"-disabled";b.prevCls=b.baseCls+"-prevday";b.activeCls=b.baseCls+"-active";b.cellCls=b.baseCls+"-cell";b.nextCls=b.baseCls+"-prevday";b.todayCls=b.baseCls+"-today";if(!b.format){b.format=Ext.Date.defaultFormat}if(!b.dayNames){b.dayNames=Ext.Date.dayNames}b.dayNames=b.dayNames.slice(b.startDay).concat(b.dayNames.slice(0,b.startDay));b.callParent();b.value=b.value?a(b.value,true):a(new Date());b.addEvents("select");b.initDisabledDays()},beforeRender:function(){var b=this,c=new Array(b.numDays),a=Ext.Date.format(new Date(),b.format);if(b.up("menu")){b.addCls(Ext.baseCSSPrefix+"menu")}b.monthBtn=new Ext.button.Split({ownerCt:b,ownerLayout:b.getComponentLayout(),text:"",tooltip:b.monthYearText,listeners:{click:b.showMonthPicker,arrowclick:b.showMonthPicker,scope:b}});if(b.showToday){b.todayBtn=new Ext.button.Button({ownerCt:b,ownerLayout:b.getComponentLayout(),text:Ext.String.format(b.todayText,a),tooltip:Ext.String.format(b.todayTip,a),tooltipType:"title",handler:b.selectToday,scope:b})}b.callParent();Ext.applyIf(b,{renderData:{}});Ext.apply(b.renderData,{dayNames:b.dayNames,showToday:b.showToday,prevText:b.prevText,nextText:b.nextText,days:c});b.protoEl.unselectable()},finishRenderChildren:function(){var a=this;a.callParent();a.monthBtn.finishRender();if(a.showToday){a.todayBtn.finishRender()}},onRender:function(b,a){var c=this;c.callParent(arguments);c.cells=c.eventEl.select("tbody td");c.textNodes=c.eventEl.query("tbody td a");c.mon(c.eventEl,{scope:c,mousewheel:c.handleMouseWheel,click:{fn:c.handleDateClick,delegate:"a."+c.baseCls+"-date"}})},initEvents:function(){var c=this,a=Ext.Date,b=a.DAY;c.callParent();c.prevRepeater=new Ext.util.ClickRepeater(c.prevEl,{handler:c.showPrevMonth,scope:c,preventDefault:true,stopDefault:true});c.nextRepeater=new Ext.util.ClickRepeater(c.nextEl,{handler:c.showNextMonth,scope:c,preventDefault:true,stopDefault:true});c.keyNav=new Ext.util.KeyNav(c.eventEl,Ext.apply({scope:c,left:function(d){if(d.ctrlKey){c.showPrevMonth()}else{c.update(a.add(c.activeDate,b,-1))}},right:function(d){if(d.ctrlKey){c.showNextMonth()}else{c.update(a.add(c.activeDate,b,1))}},up:function(d){if(d.ctrlKey){c.showNextYear()}else{c.update(a.add(c.activeDate,b,-7))}},down:function(d){if(d.ctrlKey){c.showPrevYear()}else{c.update(a.add(c.activeDate,b,7))}},pageUp:function(d){if(d.altKey){c.showPrevYear()}else{c.showPrevMonth()}},pageDown:function(d){if(d.altKey){c.showNextYear()}else{c.showNextMonth()}},tab:function(d){c.doCancelFieldFocus=true;c.handleTabClick(d);delete c.doCancelFieldFocus;return true},enter:function(d){d.stopPropagation();return true},home:function(d){c.update(a.getFirstDateOfMonth(c.activeDate))},end:function(d){c.update(a.getLastDateOfMonth(c.activeDate))}},c.keyNavConfig));if(c.showToday){c.todayKeyListener=c.eventEl.addKeyListener(Ext.EventObject.SPACE,c.selectToday,c)}c.update(c.value)},handleTabClick:function(d){var c=this,a=c.getSelectedDate(c.activeDate),b=c.handler;if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},getSelectedDate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;b0){this.showPrevMonth()}else{if(b<0){this.showNextMonth()}}}},handleDateClick:function(d,a){var c=this,b=c.handler;d.stopEvent();if(!c.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasCls(c.disabledCellCls)){c.doCancelFocus=c.focusOnSelect===false;c.setValue(new Date(a.dateValue));delete c.doCancelFocus;c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}},onSelect:function(){if(this.hideOnSelect){this.hide()}},selectToday:function(){var c=this,a=c.todayBtn,b=c.handler;if(a&&!a.disabled){c.setValue(Ext.Date.clearTime(new Date()));c.fireEvent("select",c,c.value);if(b){b.call(c.scope||c,c,c.value)}c.onSelect()}return c},selectedUpdate:function(a){var d=this,j=a.getTime(),k=d.cells,l=d.selectedCls,g=k.elements,b,e=g.length,h;k.removeCls(l);for(b=0;bv||(C&&x&&C.test(o.dateFormat(F,x)))||(H&&H.indexOf(F.getDay())!=-1));if(!E.disabled){E.todayBtn.setDisabled(a);E.todayKeyListener.setDisabled(a)}}n=function(I,J){s=+o.clearTime(r,true);I.title=o.format(r,b);I.firstChild.dateValue=s;if(s==z){J+=" "+E.todayCls;I.title=E.todayText;E.todayElSpan=Ext.DomHelper.append(I.firstChild,{tag:"span",cls:Ext.baseCSSPrefix+"hide-clip",html:E.todayText},true)}if(s==m){J+=" "+E.selectedCls;E.fireEvent("highlightitem",E,I);if(e&&E.floating){Ext.fly(I.firstChild).focus(50)}}if(sv){J+=" "+G;I.title=E.maxText}else{if(H&&H.indexOf(r.getDay())!==-1){I.title=B;J+=" "+G}else{if(C&&x){j=o.dateFormat(r,x);if(C.test(j)){I.title=t.replace("%0",j);J+=" "+G}}}}}I.className=J+" "+E.cellCls};for(;w=l){p=(++D);c=E.nextCls}else{p=w-h+1;c=E.activeCls}}d[w].innerHTML=p;r.setDate(r.getDate()+1);n(g[w],c)}E.monthBtn.setText(Ext.Date.format(A,E.monthYearFormat))},update:function(a,d){var b=this,c=b.activeDate;if(b.rendered){b.activeDate=a;if(!d&&c&&b.el&&c.getMonth()==a.getMonth()&&c.getFullYear()==a.getFullYear()){b.selectedUpdate(a,c)}else{b.fullUpdate(a,c)}}return b},beforeDestroy:function(){var a=this;if(a.rendered){Ext.destroy(a.todayKeyListener,a.keyNav,a.monthPicker,a.monthBtn,a.nextRepeater,a.prevRepeater,a.todayBtn);delete a.textNodes;delete a.cells.elements}a.callParent()},onShow:function(){this.callParent(arguments);if(this.focusOnShow){this.focus()}}},0,["datepicker"],["datepicker","component","box"],{datepicker:true,component:true,box:true},["widget.datepicker"],0,[Ext.picker,"Date",Ext,"DatePicker"],0));(Ext.cmd.derive("Ext.form.field.Date",Ext.form.field.Picker,{alternateClassName:["Ext.form.DateField","Ext.form.Date"],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}",triggerCls:Ext.baseCSSPrefix+"form-date-trigger",showToday:true,useStrict:undefined,initTime:"12",initTimeFormat:"H",matchFieldWidth:false,startDay:0,initComponent:function(){var d=this,b=Ext.isString,c,a;c=d.minValue;a=d.maxValue;if(b(c)){d.minValue=d.parseDate(c)}if(b(a)){d.maxValue=d.parseDate(a)}d.disabledDatesRE=null;d.initDisabledDays();d.callParent()},initValue:function(){var a=this,b=a.value;if(Ext.isString(b)){a.value=a.rawToValue(b)}a.callParent()},initDisabledDays:function(){if(this.disabledDates){var b=this.disabledDates,a=b.length-1,g="(?:",h,e=b.length,c;for(h=0;hk(h).getTime()){o.push(p(j.maxText,j.formatDate(h)))}if(n){l=q.getDay();for(;e {splitCls}','{childElCls}" unselectable="on">','','',"{text}","",'background-image:url({iconUrl});','font-family:{glyphFontFamily};">','&#{glyph}; ',"","","",''],getTemplateArgs:function(){var a=this.callParent();a.inputCls=this.inputCls;a.inputName=this.inputName;return a},afterRender:function(){var a=this;a.callParent(arguments);a.fileInputEl.on("change",a.fireChange,a)},fireChange:function(a){this.fireEvent("change",this,a,this.fileInputEl.dom.value)},createFileInput:function(a){var b=this;b.fileInputEl=b.el.createChild({name:b.inputName,id:!a?b.id+"-fileInputEl":undefined,cls:b.inputCls,tag:"input",type:"file",size:1});b.fileInputEl.on("change",b.fireChange,b)},reset:function(a){if(a){this.fileInputEl.remove()}this.createFileInput(!a)},restoreInput:function(a){this.fileInputEl.remove();a=Ext.get(a);this.el.appendChild(a);this.fileInputEl=a},onDisable:function(){this.callParent();this.fileInputEl.dom.disabled=true},onEnable:function(){this.callParent();this.fileInputEl.dom.disabled=false}},0,["filebutton"],["filebutton","button","component","box"],{filebutton:true,button:true,component:true,box:true},["widget.filebutton"],0,[Ext.form.field,"FileButton"],0));(Ext.cmd.derive("Ext.form.field.File",Ext.form.field.Trigger,{alternateClassName:["Ext.form.FileUploadField","Ext.ux.form.FileUploadField","Ext.form.File"],buttonText:"Browse...",buttonOnly:false,buttonMargin:3,clearOnSubmit:true,extraFieldBodyCls:Ext.baseCSSPrefix+"form-file-wrap",readOnly:true,triggerNoEditCls:"",componentLayout:"triggerfield",childEls:["browseButtonWrap"],onRender:function(){var a=this,c=a.id,b;a.callParent(arguments);b=a.inputEl;b.dom.name="";a.button=new Ext.form.field.FileButton(Ext.apply({renderTo:c+"-browseButtonWrap",ownerCt:a,ownerLayout:a.componentLayout,id:c+"-button",ui:a.ui,disabled:a.disabled,text:a.buttonText,style:a.buttonOnly?"":a.getButtonMarginProp()+a.buttonMargin+"px",inputName:a.getName(),listeners:{scope:a,change:a.onFileChange}},a.buttonConfig));a.fileInputEl=a.button.fileInputEl;if(a.buttonOnly){a.inputCell.setDisplayed(false)}a.browseButtonWrap.dom.style.width=(a.browseButtonWrap.dom.lastChild.offsetWidth+a.button.getEl().getMargin("lr"))+"px";if(Ext.isIE){a.button.getEl().repaint()}},getTriggerMarkup:function(){return''},onFileChange:function(a,c,b){this.lastValue=null;Ext.form.field.File.superclass.setValue.call(this,b)},setValue:Ext.emptyFn,reset:function(){var b=this,a=b.clearOnSubmit;if(b.rendered){b.button.reset(a);b.fileInputEl=b.button.fileInputEl;if(a){b.inputEl.dom.value=""}}b.callParent()},onShow:function(){this.callParent();this.button.updateLayout()},onDisable:function(){this.callParent();this.button.disable()},onEnable:function(){this.callParent();this.button.enable()},isFileUpload:function(){return true},extractFileInput:function(){var a=this.button.fileInputEl.dom;this.reset();return a},restoreInput:function(b){var a=this.button;a.restoreInput(b);this.fileInputEl=a.fileInputEl},onDestroy:function(){Ext.destroyMembers(this,"button");delete this.fileInputEl;this.callParent()},getButtonMarginProp:function(){return"margin-left:"}},0,["fileuploadfield","filefield"],["field","trigger","textfield","component","fileuploadfield","filefield","box","triggerfield"],{field:true,trigger:true,textfield:true,component:true,fileuploadfield:true,filefield:true,box:true,triggerfield:true},["widget.filefield","widget.fileuploadfield"],0,[Ext.form.field,"File",Ext.form,"FileUploadField",Ext.ux.form,"FileUploadField",Ext.form,"File"],0));(Ext.cmd.derive("Ext.form.field.Hidden",Ext.form.field.Base,{alternateClassName:"Ext.form.Hidden",inputType:"hidden",hideLabel:true,hidden:true,initComponent:function(){this.formItemCls+="-hidden";this.callParent()},isEqual:function(b,a){return this.isEqualAsString(b,a)},initEvents:Ext.emptyFn,setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn},0,["hidden","hiddenfield"],["field","component","hidden","hiddenfield","box"],{field:true,component:true,hidden:true,hiddenfield:true,box:true},["widget.hidden","widget.hiddenfield"],0,[Ext.form.field,"Hidden",Ext.form,"Hidden"],0));(Ext.cmd.derive("Ext.picker.Color",Ext.Component,{alternateClassName:"Ext.ColorPalette",componentCls:Ext.baseCSSPrefix+"color-picker",selectedCls:Ext.baseCSSPrefix+"color-picker-selected",itemCls:Ext.baseCSSPrefix+"color-picker-item",value:null,clickEvent:"click",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"],colorRe:/(?:^|\s)color-(.{6})(?:\s|$)/,renderTpl:['','',' ',"",""],initComponent:function(){var a=this;a.callParent(arguments);a.addEvents("select");if(a.handler){a.on("select",a.handler,a.scope,true)}},initRenderData:function(){var a=this;return Ext.apply(a.callParent(),{itemCls:a.itemCls,colors:a.colors})},onRender:function(){var b=this,a=b.clickEvent;b.callParent(arguments);b.mon(b.el,a,b.handleClick,b,{delegate:"a"});if(a!="click"){b.mon(b.el,"click",Ext.emptyFn,b,{delegate:"a",stopEvent:true})}},afterRender:function(){var a=this,b;a.callParent(arguments);if(a.value){b=a.value;a.value=null;a.select(b,true)}},handleClick:function(c,d){var b=this,a;c.stopEvent();if(!b.disabled){a=d.className.match(b.colorRe)[1];b.select(a.toUpperCase())}},select:function(b,a){var d=this,g=d.selectedCls,e=d.value,c;b=b.replace("#","");if(!d.rendered){d.value=b;return}if(b!=e||d.allowReselect){c=d.el;if(d.value){c.down("a.color-"+e).removeCls(g)}c.down("a.color-"+b).addCls(g);d.value=b;if(a!==true){d.fireEvent("select",d,b)}}},clear:function(){var b=this,c=b.value,a;if(c&&b.rendered){a=b.el.down("a.color-"+c);a.removeCls(b.selectedCls)}b.value=null},getValue:function(){return this.value||null}},0,["colorpicker"],["component","box","colorpicker"],{component:true,box:true,colorpicker:true},["widget.colorpicker"],0,[Ext.picker,"Color",Ext,"ColorPalette"],0));(Ext.cmd.derive("Ext.layout.component.field.HtmlEditor",Ext.layout.component.field.FieldContainer,{type:"htmleditor",naturalHeight:150,naturalWidth:300,beginLayout:function(b){var a=this.owner,c;if(Ext.isGecko){c=a.textareaEl.dom;this.lastValue=c.value;c.value=""}this.callParent(arguments);b.toolbarContext=b.context.getCmp(a.toolbar);b.inputCmpContext=b.context.getCmp(a.inputCmp);b.textAreaContext=b.getEl("textareaEl");b.iframeContext=b.getEl("iframeEl")},beginLayoutCycle:function(h){var g=this,c=h.widthModel,b=h.heightModel,a=g.owner,e=a.iframeEl,d=a.textareaEl;g.callParent(arguments);if(c.shrinkWrap){e.setStyle("width","");d.setStyle("width","")}else{if(c.natural){h.bodyCellContext.setWidth(g.naturalWidth)}}if(b.natural||b.shrinkWrap){e.setHeight(g.naturalHeight);d.setHeight(g.naturalHeight)}},finishedLayout:function(){var a=this.owner;this.callParent(arguments);if(Ext.isIE9m&&Ext.isIEQuirks){a.el.repaint()}if(Ext.isGecko){a.textareaEl.dom.value=this.lastValue}},publishOwnerWidth:function(b,a){this.callParent(arguments);a-=b.inputCmpContext.getBorderInfo().width;b.textAreaContext.setWidth(a);b.iframeContext.setWidth(a)},publishInnerWidth:function(e,c){var b=e.inputCmpContext.getBorderInfo().width,d=Ext.isStrict&&Ext.isIE8m,a=e.widthModel.natural;this.callParent(arguments);c=e.bodyCellContext.props.width-b;if(a){if(d){c-=2}e.textAreaContext.setWidth(c);e.iframeContext.setWidth(c)}else{if(d){e.textAreaContext.setWidth(c)}}},publishInnerHeight:function(c,a){var d=c.toolbarContext.getProp("height"),b=this.owner.sourceEditMode;this.callParent(arguments);a=c.bodyCellContext.props.height;if(d!==undefined){a-=d+c.inputCmpContext.getFrameInfo().height;if(Ext.isIE8&&Ext.isStrict){a-=2}else{if(Ext.isIEQuirks&&(Ext.isIE8||Ext.isIE9)){a-=4}}c.iframeContext.setHeight(a);c.textAreaContext.setHeight(a)}else{this.done=false}}},0,0,0,0,["layout.htmleditor"],0,[Ext.layout.component.field,"HtmlEditor"],0));(Ext.cmd.derive("Ext.form.field.HtmlEditor",Ext.form.FieldContainer,{alternateClassName:"Ext.form.HtmlEditor",componentLayout:"htmleditor",componentTpl:["{beforeTextAreaTpl}",'","{afterTextAreaTpl}","{beforeIFrameTpl}",'',"{afterIFrameTpl}",{disableFormats:true}],stretchInputElFixed:true,subTplInsertions:["beforeTextAreaTpl","afterTextAreaTpl","beforeIFrameTpl","afterIFrameTpl","iframeAttrTpl","inputAttrTpl"],enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http://",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultValue:(Ext.isOpera||Ext.isIE6)?" ":"​",extraFieldBodyCls:Ext.baseCSSPrefix+"html-editor-wrap",initialized:false,activated:false,sourceEditMode:false,iframePad:3,hideMode:"offsets",maskOnDisable:true,containerElCls:Ext.baseCSSPrefix+"html-editor-container",initComponent:function(){var a=this;a.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");a.items=[a.createToolbar(),a.createInputCmp()];a.layout={type:"vbox",align:"stretch"};a.callParent(arguments);a.initField()},createInputCmp:function(){this.inputCmp=Ext.widget(this.getInputCmpCfg());return this.inputCmp},getInputCmpCfg:function(){var a=this,c=a.id+"-inputCmp",b={id:c,name:a.name,textareaCls:Ext.baseCSSPrefix+"hidden",value:a.value,iframeName:Ext.id(),iframeSrc:Ext.SSL_SECURE_URL,iframeCls:Ext.baseCSSPrefix+"htmleditor-iframe"};a.getInsertionRenderData(b,a.subTplInsertions);return{flex:1,xtype:"component",tpl:a.getTpl("componentTpl"),childEls:["iframeEl","textareaEl"],id:c,cls:Ext.baseCSSPrefix+"html-editor-input",data:b}},createToolbar:function(){this.toolbar=Ext.widget(this.getToolbarCfg());return this.toolbar},getToolbarCfg:function(){var h=this,b=[],e,a=Ext.quickTipsActive&&Ext.tip.QuickTipManager.isEnabled(),d=Ext.baseCSSPrefix,j,g;function c(m,k,l){return{itemId:m,cls:d+"btn-icon",iconCls:d+"edit-"+m,enableToggle:k!==false,scope:h,handler:l||h.relayBtnCmd,clickEvent:"mousedown",tooltip:a?h.buttonTips[m]||g:g,overflowText:h.buttonTips[m].title||g,tabIndex:-1}}if(h.enableFont&&!Ext.isSafari2){j=Ext.widget("component",{itemId:"fontSelect",renderTpl:['"],childEls:["selectEl"],afterRender:function(){h.fontSelect=this.selectEl;Ext.Component.prototype.afterRender.apply(this,arguments)},onDisable:function(){var k=this.selectEl;if(k){k.dom.disabled=true}Ext.Component.prototype.onDisable.apply(this,arguments)},onEnable:function(){var k=this.selectEl;if(k){k.dom.disabled=false}Ext.Component.prototype.onEnable.apply(this,arguments)},listeners:{change:function(){h.win.focus();h.relayCmd("fontName",h.fontSelect.dom.value);h.deferFocus()},element:"selectEl"}});b.push(j,"-")}if(h.enableFormat){b.push(c("bold"),c("italic"),c("underline"))}if(h.enableFontSize){b.push("-",c("increasefontsize",false,h.adjustFont),c("decreasefontsize",false,h.adjustFont))}if(h.enableColors){b.push("-",{itemId:"forecolor",cls:d+"btn-icon",iconCls:d+"edit-forecolor",overflowText:h.buttonTips.forecolor.title,tooltip:a?h.buttonTips.forecolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,clickEvent:"mousedown",handler:function(l,k){h.relayCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+k:k);this.up("menu").hide()}}]})},{itemId:"backcolor",cls:d+"btn-icon",iconCls:d+"edit-backcolor",overflowText:h.buttonTips.backcolor.title,tooltip:a?h.buttonTips.backcolor||g:g,tabIndex:-1,menu:Ext.widget("menu",{plain:true,items:[{xtype:"colorpicker",focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,clickEvent:"mousedown",handler:function(l,k){if(Ext.isGecko){h.execCmd("useCSS",false);h.execCmd("hilitecolor","#"+k);h.execCmd("useCSS",true);h.deferFocus()}else{h.relayCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE||Ext.isOpera?"#"+k:k)}this.up("menu").hide()}}]})})}if(h.enableAlignments){b.push("-",c("justifyleft"),c("justifycenter"),c("justifyright"))}if(!Ext.isSafari2){if(h.enableLinks){b.push("-",c("createlink",false,h.createLink))}if(h.enableLists){b.push("-",c("insertorderedlist"),c("insertunorderedlist"))}if(h.enableSourceEdit){b.push("-",c("sourceedit",true,function(k){h.toggleSourceEdit(!h.sourceEditMode)}))}}for(e=0;e")+'",b.iframePad,a,b.defaultFont)},getEditorBody:function(){var a=this.getDoc();return a.body||a.documentElement},getDoc:function(){return(!Ext.isIE&&this.iframeEl.dom.contentDocument)||this.getWin().document},getWin:function(){return Ext.isIE?this.iframeEl.dom.contentWindow:window.frames[this.iframeEl.dom.name]},initDefaultFont:function(){var h=this,a=0,j,b,k,e,d,g,c;if(!h.defaultFont){b=h.textareaEl.getStyle("font-family");b=Ext.String.capitalize(b.split(",")[0]);j=Ext.Array.clone(h.fontFamilies);Ext.Array.include(j,b);j.sort();h.defaultFont=b;k=h.down("#fontSelect").selectEl.dom;for(d=0,g=j.length;d'+d+""}}d=g.cleanHtml(d);if(g.fireEvent("beforesync",g,d)!==false){if(Ext.isGecko&&e.value===""&&d==="
    "){d=""}if(e.value!==d){e.value=d;h=true}g.fireEvent("sync",g,d);if(h){g.checkChange()}}}},getValue:function(){var a=this,b;if(!a.sourceEditMode){a.syncValue()}b=a.rendered?a.textareaEl.dom.value:a.value;a.value=b;return b},pushValue:function(){var b=this,a;if(b.initialized){a=b.textareaEl.dom.value||"";if(!b.activated&&a.length<1){a=b.defaultValue}if(b.fireEvent("beforepush",b,a)!==false){b.getEditorBody().innerHTML=a;if(Ext.isGecko){b.setDesignMode(false);b.setDesignMode(true)}b.fireEvent("push",b,a)}}},deferFocus:function(){this.focus(false,true)},getFocusEl:function(){var a=this,b=a.win;return b&&!a.sourceEditMode?b:a.textareaEl},focus:function(d,b){var c=this,e,a;if(b){if(!c.focusTask){c.focusTask=new Ext.util.DelayedTask(c.focus)}c.focusTask.delay(Ext.isNumber(b)?b:10,null,c,[d,false])}else{if(d){if(c.textareaEl&&c.textareaEl.dom){e=c.textareaEl.dom.value}if(e&&e.length){c.execCmd("selectall",true)}}a=c.getFocusEl();if(a&&a.focus){a.focus()}}return c},initEditor:function(){try{var g=this,d=g.getEditorBody(),b=g.textareaEl.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),j,c;b["background-attachment"]="fixed";d.bgProperties="fixed";Ext.DomHelper.applyStyles(d,b);j=g.getDoc();if(j){try{Ext.EventManager.removeAll(j)}catch(h){}}c=Ext.Function.bind(g.onEditorEvent,g);Ext.EventManager.on(j,{mousedown:c,dblclick:c,click:c,keyup:c,buffer:100});c=g.onRelayedEvent;Ext.EventManager.on(j,{mousedown:c,mousemove:c,mouseup:c,click:c,dblclick:c,scope:g});if(Ext.isGecko){Ext.EventManager.on(j,"keypress",g.applyCommand,g)}if(g.fixKeys){Ext.EventManager.on(j,"keydown",g.fixKeys,g)}if(g.fixKeysAfter){Ext.EventManager.on(j,"keyup",g.fixKeysAfter,g)}if(Ext.isIE9&&Ext.isStrict){Ext.EventManager.on(j.documentElement,"focus",g.focus,g)}if(Ext.isIE8m||(Ext.isIE9&&!Ext.isStrict)){Ext.EventManager.on(j,"focusout",function(){g.savedSelection=j.selection.type!=="None"?j.selection.createRange():null},g);Ext.EventManager.on(j,"focusin",function(){if(g.savedSelection){g.savedSelection.select()}},g)}Ext.EventManager.onWindowUnload(g.beforeDestroy,g);j.editorInitialized=true;g.initialized=true;g.pushValue();g.setReadOnly(g.readOnly);g.fireEvent("initialize",g)}catch(a){}},beforeDestroy:function(){var a=this,d=a.monitorTask,c,g;if(d){Ext.TaskManager.stop(d)}if(a.rendered){Ext.EventManager.removeUnloadListener(a.beforeDestroy,a);try{c=a.getDoc();if(c){Ext.EventManager.removeAll(Ext.fly(c));for(g in c){if(c.hasOwnProperty&&c.hasOwnProperty(g)){delete c[g]}}}}catch(b){}delete a.iframeEl;delete a.textareaEl;delete a.toolbar;delete a.inputCmp}a.callParent()},onRelayedEvent:function(c){var b=this.iframeEl,d=Ext.Element.getTrueXY(b),e=c.getXY(),a=Ext.EventManager.getPageXY(c.browserEvent);c.xy=[d[0]+a[0],d[1]+a[1]];c.injectEvent(b);c.xy=e},onFirstFocus:function(){var c=this,b,a;c.activated=true;c.disableItems(c.readOnly);if(Ext.isGecko){c.win.focus();b=c.win.getSelection();if(!b.focusNode||b.focusNode.nodeType!==3){a=b.getRangeAt(0);a.selectNodeContents(c.getEditorBody());a.collapse(true);c.deferFocus()}try{c.execCmd("useCSS",true);c.execCmd("styleWithCSS",false)}catch(d){}}c.fireEvent("activate",c)},adjustFont:function(d){var e=d.getItemId()==="increasefontsize"?1:-1,c=this.getDoc().queryCommandValue("FontSize")||"2",a=Ext.isString(c)&&c.indexOf("px")!==-1,b;c=parseInt(c,10);if(a){if(c<=10){c=1+e}else{if(c<=13){c=2+e}else{if(c<=16){c=3+e}else{if(c<=18){c=4+e}else{if(c<=24){c=5+e}else{c=6+e}}}}}c=Ext.Number.constrain(c,1,6)}else{b=Ext.isSafari;if(b){e*=2}c=Math.max(1,c+e)+(b?"px":0)}this.relayCmd("FontSize",c)},onEditorEvent:function(a){this.updateToolbar()},updateToolbar:function(){var j=this,e,c,d,k,b,g,a,h;if(j.readOnly){return}if(!j.activated){j.onFirstFocus();return}d=j.getToolbar().items.map;k=j.getDoc();if(j.enableFont&&!Ext.isSafari2){g=k.queryCommandValue("fontName");b=(g?g.split(",")[0].replace(/^'/,"").replace(/'$/,""):j.defaultFont).toLowerCase();a=j.fontSelect.dom;if(b!==a.value||b!=g){a.value=b}}function m(){var l;for(e=0,c=arguments.length,b;e0){g=String.fromCharCode(g);switch(g){case"b":b="bold";break;case"i":b="italic";break;case"u":b="underline";break}if(b){a.win.focus();a.execCmd(b);a.deferFocus();d.preventDefault()}}}},insertAtCursor:function(c){var b=this,a;if(b.activated){b.win.focus();if(Ext.isIE){a=b.getDoc().selection.createRange();if(a){a.pasteHTML(c);b.syncValue();b.deferFocus()}}else{b.execCmd("InsertHTML",c);b.deferFocus()}}},fixKeys:(function(){if(Ext.isIE){return function(h){var c=this,b=h.getKey(),g=c.getDoc(),j=c.readOnly,a,d;if(b===h.TAB){h.stopEvent();if(!j){a=g.selection.createRange();if(a){if(a.collapse){a.collapse(true);a.pasteHTML("    ")}c.deferFocus()}}}else{if(b===h.ENTER){if(!j){a=g.selection.createRange();if(a){d=a.parentElement();if(!d||d.tagName.toLowerCase()!=="li"){h.stopEvent();a.pasteHTML("
    ");a.collapse(false);a.select()}}}}}}}if(Ext.isOpera){return function(c){var b=this,a=c.getKey(),d=b.readOnly;if(a===c.TAB){c.stopEvent();if(!d){b.win.focus();b.execCmd("InsertHTML","    ");b.deferFocus()}}}}return null}()),fixKeysAfter:(function(){if(Ext.isIE){return function(d){var b=this,a=d.getKey(),c=b.getDoc(),h=b.readOnly,g;if(!h&&(a===d.BACKSPACE||a===d.DELETE)){g=c.body.innerHTML;if(g==="

     

    "||g==="

     

    "){c.body.innerHTML=""}}}}return null}()),getToolbar:function(){return this.toolbar},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:Ext.baseCSSPrefix+"html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:Ext.baseCSSPrefix+"html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:Ext.baseCSSPrefix+"html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:Ext.baseCSSPrefix+"html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:Ext.baseCSSPrefix+"html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:Ext.baseCSSPrefix+"html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:Ext.baseCSSPrefix+"html-editor-tip"}}},0,["htmleditor"],["htmleditor","component","container","fieldcontainer","box"],{htmleditor:true,component:true,container:true,fieldcontainer:true,box:true},["widget.htmleditor"],[["field",Ext.form.field.Field]],[Ext.form.field,"HtmlEditor",Ext.form,"HtmlEditor"],0));(Ext.cmd.derive("Ext.picker.Time",Ext.view.BoundList,{increment:15,format:"g:i A",displayField:"disp",initDate:[2008,0,1],componentCls:Ext.baseCSSPrefix+"timepicker",loadMask:false,initComponent:function(){var c=this,a=Ext.Date,b=a.clearTime,d=c.initDate;c.absMin=b(new Date(d[0],d[1],d[2]));c.absMax=a.add(b(new Date(d[0],d[1],d[2])),"mi",(24*60)-1);c.store=c.createStore();c.store.addFilter(c.rangeFilter=new Ext.util.Filter({id:"time-picker-filter"}),false);c.updateList();c.callParent()},setMinValue:function(a){this.minValue=a;this.updateList()},setMaxValue:function(a){this.maxValue=a;this.updateList()},normalizeDate:function(a){var b=this.initDate;a.setFullYear(b[0],b[1],b[2]);return a},updateList:function(){var c=this,b=c.normalizeDate(c.minValue||c.absMin),a=c.normalizeDate(c.maxValue||c.absMax);c.rangeFilter.setFilterFn(function(d){var e=d.get("date");return e>=b&&e<=a});c.store.filter()},createStore:function(){var d=this,c=Ext.Date,e=[],b=d.absMin,a=d.absMax;while(b<=a){e.push({disp:c.dateFormat(b,d.format),date:b});b=c.add(b,"mi",d.increment)}return new Ext.data.Store({fields:["disp","date"],data:e})},focusNode:function(a){return false}},0,["timepicker"],["timepicker","component","boundlist","box","dataview"],{timepicker:true,component:true,boundlist:true,box:true,dataview:true},["widget.timepicker"],0,[Ext.picker,"Time"],0));(Ext.cmd.derive("Ext.form.field.Time",Ext.form.field.ComboBox,{alternateClassName:["Ext.form.TimeField","Ext.form.Time"],triggerCls:Ext.baseCSSPrefix+"form-time-trigger",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,pickerMaxHeight:300,selectOnTab:true,snapToIncrement:false,initDate:"1/1/2008",initDateFormat:"j/n/Y",ignoreSelection:0,queryMode:"local",displayField:"disp",valueField:"date",initComponent:function(){var c=this,b=c.minValue,a=c.maxValue;if(b){c.setMinValue(b)}if(a){c.setMaxValue(a)}c.displayTpl=new Ext.XTemplate('{[typeof values === "string" ? values : this.formatDate(values["'+c.displayField+'"])]}'+c.delimiter+"",{formatDate:Ext.Function.bind(c.formatDate,c)});this.callParent()},transformOriginalValue:function(a){if(Ext.isString(a)){return this.rawToValue(a)}return a},isEqual:function(b,a){return Ext.Date.isEqual(b,a)},setMinValue:function(c){var b=this,a=b.picker;b.setLimit(c,true);if(a){a.setMinValue(b.minValue)}},setMaxValue:function(c){var b=this,a=b.picker;b.setLimit(c,false);if(a){a.setMaxValue(b.maxValue)}},setLimit:function(b,g){var a=this,e,c;if(Ext.isString(b)){e=a.parseDate(b)}else{if(Ext.isDate(b)){e=b}}if(e){c=Ext.Date.clearTime(new Date(a.initDate));c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}else{c=null}a[g?"minValue":"maxValue"]=c},rawToValue:function(a){return this.parseDate(a)||a||null},valueToRaw:function(a){return this.formatDate(this.parseDate(a))},getErrors:function(d){var b=this,g=Ext.String.format,h=b.callParent(arguments),c=b.minValue,e=b.maxValue,a;d=b.formatDate(d||b.processRawValue(b.getRawValue()));if(d===null||d.length<1){return h}a=b.parseDate(d);if(!a){h.push(g(b.invalidText,d,Ext.Date.unescapeFormat(b.format)));return h}if(c&&ae){h.push(g(b.maxText,b.formatDate(e)))}return h},formatDate:function(){return Ext.form.field.Date.prototype.formatDate.apply(this,arguments)},parseDate:function(e){var d=this,h=e,b=d.altFormats,g=d.altFormatsArray,c=0,a;if(e&&!Ext.isDate(e)){h=d.safeParse(e,d.format);if(!h&&b){g=g||b.split("|");a=g.length;for(;c0){c=c[0];if(c&&Ext.Date.isEqual(a.get("date"),c.get("date"))){d.collapse()}}},onListSelectionChange:function(b,d){if(d.length){var a=this,c=d[0].get("date");if(!a.ignoreSelection){a.skipSync=true;a.setValue(c);a.skipSync=false;a.fireEvent("select",a,c);a.picker.clearHighlight();a.collapse();a.inputEl.focus()}}},syncSelection:function(){var k=this,h=k.picker,c,g,l,b,j,e,a;if(h&&!k.skipSync){h.clearHighlight();l=k.getValue();g=h.getSelectionModel();k.ignoreSelection++;if(l===null){g.deselectAll()}else{if(Ext.isDate(l)){b=h.store.data.items;e=b.length;for(j=0;j0){l=Math.floor(c/2);j=c-l;d.titleContext.setProp("padding-top",l);d.titleContext.setProp("padding-bottom",j)}}}else{e=b.titleEl.getHeight();d.setProp("innerHeight",a-e,false)}if((Ext.isIE6||Ext.isIEQuirks)&&d.triggerContext){d.triggerContext.setHeight(e)}},measureContentHeight:function(a){return a.el.dom.offsetHeight},publishOwnerHeight:function(b,a){this.callParent(arguments);if((Ext.isIE6||Ext.isIEQuirks)&&b.triggerContext){b.triggerContext.setHeight(a)}},publishInnerWidth:function(a,b){if(!a.hasRawContent){a.setProp("innerWidth",b-a.getBorderInfo().width,false)}},calculateOwnerHeightFromContentHeight:function(c,b){var a=this.callParent(arguments);if(!c.hasRawContent){if(this.owner.noWrap||c.hasDomProp("width")){return b+this.owner.titleEl.getHeight()+c.getBorderInfo().height}return null}return a},calculateOwnerWidthFromContentWidth:function(g,b){var a=this.owner,e=Math.max(b,a.textEl.getWidth()+g.titleContext.getPaddingInfo().width),d=g.getPaddingInfo().width,c=this.getTriggerOffset(a,g);return e+d+c},getTriggerOffset:function(a,c){var b=0;if(c.widthModel.shrinkWrap&&!a.menuDisabled){if(a.query(">:not([hidden])").length===0){b=a.self.triggerElWidth}}return b}},0,0,0,0,["layout.columncomponent"],0,[Ext.grid,"ColumnComponentLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnLayout",Ext.layout.container.HBox,{type:"gridcolumn",reserveOffset:false,firstHeaderCls:Ext.baseCSSPrefix+"column-header-first",lastHeaderCls:Ext.baseCSSPrefix+"column-header-last",initLayout:function(){if(!this.scrollbarWidth){this.self.prototype.scrollbarWidth=Ext.getScrollbarSize().width}this.grid=this.owner.up("[scrollerOwner]");this.callParent()},beginLayout:function(c){var j=this,b=j.owner,a=j.grid,k=a.view,h=j.getVisibleItems(),g=h.length,d=j.firstHeaderCls,m=j.lastHeaderCls,e,l;if(a.lockable){if(b.up("tablepanel")===k.normalGrid){k=k.normalGrid.getView()}else{k=null}}for(e=0;eb){a.width-=Ext.getScrollbarSize().width;e.state.parallelDone=false;c.invalidate()}}}}return a},getColumnContainerSize:function(g){var j=g.paddingContext.getPaddingInfo(),b=0,e=0,h,d,c,a;if(!g.widthModel.shrinkWrap){++e;c=g.getProp("innerWidth");h=(typeof c=="number");if(h){++b;c-=j.width;if(c<0){c=0}}}if(!g.heightModel.shrinkWrap){++e;a=g.getProp("innerHeight");d=(typeof a=="number");if(d){++b;a-=j.height;if(a<0){a=0}}}return{width:c,height:a,needed:e,got:b,gotAll:b==e,gotWidth:h,gotHeight:d}},publishInnerCtSize:function(e){var d=this,c=e.state.boxPlan.targetSize,b=e.peek("contentWidth"),a;d.owner.tooNarrow=e.state.boxPlan.tooNarrow;if((b!=null)&&!d.owner.isColumn){c.width=b;a=d.owner.ownerCt.view;if(a.scrollFlags.y){c.width+=Ext.getScrollbarSize().width}}return d.callParent(arguments)}},0,0,0,0,["layout.gridcolumn"],0,[Ext.grid,"ColumnLayout"],0));(Ext.cmd.derive("Ext.grid.ColumnManager",Ext.Base,{alternateClassName:["Ext.grid.ColumnModel"],columns:null,constructor:function(b,a){this.headerCt=b;if(a){this.secondHeaderCt=a}},getColumns:function(){if(!this.columns){this.cacheColumns()}return this.columns},getHeaderIndex:function(a){if(a.isGroupHeader){a=a.down(":not([isGroupHeader])")}return Ext.Array.indexOf(this.getColumns(),a)},getHeaderAtIndex:function(a){var b=this.getColumns();return b.length?b[a]:null},getHeaderById:function(e){var c=this.getColumns(),a=c.length,b,d;for(b=0;b'+a.view.emptyText+""}a.view.getComponentLayout().headerCt=a.headerCt;a.mon(a.view,{uievent:a.processEvent,scope:a});b.view=a.view;a.headerCt.view=a.view}return a.view},setAutoScroll:Ext.emptyFn,processEvent:function(h,k,l,a,j,d,c,m){var g=this,b;if(j!==-1){b=g.columnManager.getColumns()[j];return b.processEvent.apply(b,arguments)}},determineScrollbars:function(){},invalidateScroller:function(){},scrollByDeltaY:function(b,a){this.getView().scrollBy(0,b,a)},scrollByDeltaX:function(b,a){this.getView().scrollBy(b,0,a)},afterCollapse:function(){var a=this;a.saveScrollPos();a.saveScrollPos();a.callParent(arguments)},afterExpand:function(){var a=this;a.callParent(arguments);a.restoreScrollPos();a.restoreScrollPos()},saveScrollPos:Ext.emptyFn,restoreScrollPos:Ext.emptyFn,onHeaderResize:function(){this.delayScroll()},onHeaderMove:function(e,g,a,b,d){var c=this;if(c.optimizedColumnMove===false){c.view.refresh()}else{c.view.moveColumn(b,d,a)}c.delayScroll()},onHeaderHide:function(a,b){this.view.refresh();this.delayScroll()},onHeaderShow:function(a,b){this.view.refresh();this.delayScroll()},delayScroll:function(){var a=this.getScrollTarget().el;if(a){this.scrollTask.delay(10,null,null,[a.dom.scrollLeft])}},onViewReady:function(){this.fireEvent("viewready",this)},onRestoreHorzScroll:function(){var a=this.scrollLeftPos;if(a){this.syncHorizontalScroll(a,true)}},getScrollerOwner:function(){var a=this;if(!this.scrollerOwner){a=this.up("[scrollerOwner]")}return a},getLhsMarker:function(){var a=this;return a.lhsMarker||(a.lhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getRhsMarker:function(){var a=this;return a.rhsMarker||(a.rhsMarker=Ext.DomHelper.append(a.el,{cls:a.resizeMarkerCls},true))},getSelectionModel:function(){var c=this,a=c.selModel,e,d,b;if(!a){a={};e=true}if(!a.events){b=a.selType||c.selType;e=!a.mode;a=c.selModel=Ext.create("selection."+b,a)}if(c.simpleSelect){d="SIMPLE"}else{if(c.multiSelect){d="MULTI"}}Ext.applyIf(a,{allowDeselect:c.allowDeselect});if(d&&e){a.setSelectionMode(d)}if(!a.hasRelaySetup){c.relayEvents(a,["selectionchange","beforeselect","beforedeselect","select","deselect"]);a.hasRelaySetup=true}if(c.disableSelection){a.locked=true}return a},getScrollTarget:function(){var a=this.getScrollerOwner(),b=a.query("tableview");return b[1]||b[0]},onHorizontalScroll:function(a,b){this.syncHorizontalScroll(b.scrollLeft)},syncHorizontalScroll:function(d,b){var c=this,a;b=b===true;if(c.rendered&&(b||d!==c.scrollLeftPos)){if(b){a=c.getScrollTarget();a.el.dom.scrollLeft=d}c.headerCt.el.dom.scrollLeft=d;c.scrollLeftPos=d}},onStoreLoad:Ext.emptyFn,getEditorParent:function(){return this.body},bindStore:function(b,c){var d=this,a=d.getView(),e=b&&b.buffered,g;d.store=b;g=d.findPlugin("bufferedrenderer");if(g){d.verticalScroller=g;if(g.store){g.bindStore(b)}}else{if(e){d.verticalScroller=g=d.addPlugin(Ext.apply({ptype:"bufferedrenderer"},d.initialConfig.verticalScroller))}}if(a.store!==b){if(c){a.bindStore(b,false,"dataSource")}else{a.bindStore(b,false)}}d.mon(b,{load:d.onStoreLoad,scope:d});d.storeRelayers=d.relayEvents(b,["filterchange"]);if(g){d.invalidateScrollerOnRefresh=false}if(d.invalidateScrollerOnRefresh!==undefined){a.preserveScrollOnRefresh=!d.invalidateScrollerOnRefresh}},unbindStore:function(){var b=this,a=b.store;if(a){b.store=null;b.mun(a,{load:b.onStoreLoad,scope:b});Ext.destroy(b.storeRelayers)}},reconfigure:function(b,e){var g=this,a=g.getView(),d,j=g.store,h=g.headerCt,c=h?h.items.getRange():g.columns;if(e){e=Ext.Array.slice(e)}g.fireEvent("beforereconfigure",g,b,e,j,c);if(g.lockable){g.reconfigureLockable(b,e)}else{Ext.suspendLayouts();if(e){delete g.scrollLeftPos;h.removeAll();h.add(e)}if(b&&(b=Ext.StoreManager.lookup(b))!==j){if(g.store){g.unbindStore()}d=a.deferInitialRefresh;a.deferInitialRefresh=false;g.bindStore(b);a.deferInitialRefresh=d}else{g.getView().refresh()}h.setSortState();Ext.resumeLayouts(true)}g.fireEvent("reconfigure",g,b,e,j,c)},beforeDestroy:function(){var a=this.scrollTask;if(a){a.cancel();this.scrollTask=null}this.callParent()},onDestroy:function(){if(this.lockable){this.destroyLockable()}this.callParent()}},0,["tablepanel"],["panel","component","tablepanel","container","box"],{panel:true,component:true,tablepanel:true,container:true,box:true},["widget.tablepanel"],0,[Ext.panel,"Table"],0));(Ext.cmd.derive("Ext.util.CSS",Ext.Base,function(){var c,e=null,d=document,b=/(-[a-z])/gi,a=function(g,h){return h.charAt(1).toUpperCase()};return{singleton:true,rules:e,initialized:false,constructor:function(){c=this},createStyleSheet:function(j,m){var h,g=d.getElementsByTagName("head")[0],l=d.createElement("style");l.setAttribute("type","text/css");if(m){l.setAttribute("id",m)}if(Ext.isIE){g.appendChild(l);h=l.styleSheet;h.cssText=j}else{try{l.appendChild(d.createTextNode(j))}catch(k){l.cssText=j}g.appendChild(l);h=l.styleSheet?l.styleSheet:(l.sheet||d.styleSheets[d.styleSheets.length-1])}c.cacheStyleSheet(h);return h},removeStyleSheet:function(h){var g=d.getElementById(h);if(g){g.parentNode.removeChild(g)}},swapStyleSheet:function(j,g){var h;c.removeStyleSheet(j);h=d.createElement("link");h.setAttribute("rel","stylesheet");h.setAttribute("type","text/css");h.setAttribute("id",j);h.setAttribute("href",g);d.getElementsByTagName("head")[0].appendChild(h)},refreshCache:function(){return c.getRules(true)},cacheStyleSheet:function(m){if(!e){e=c.rules={}}try{var p=m.cssRules||m.rules,l=p.length-1,h=m.imports,g=h?h.length:0,o,k;for(k=0;k=0;--l){o=p[l];if(o.styleSheet){c.cacheStyleSheet(o.styleSheet)}c.cacheRule(o,m)}}catch(n){}},cacheRule:function(h,m){if(h.styleSheet){return c.cacheStyleSheet(h.styleSheet)}var l=h.selectorText,k,g;if(l){l=l.split(",");k=l.length;for(g=0;g=g+a;c--){e[c]=e[c-a];e[c].setAttribute("data-recordIndex",c)}}d.endIndex=d.endIndex+a}else{d.startIndex=g;d.endIndex=g+a-1}for(c=0;c-1){c=Ext.getDom(c);if(a){d=e[b];d.parentNode.insertBefore(c,d);Ext.removeNode(d);c.setAttribute("data-recordIndex",b)}this.elements[b]=c}return this},indexOf:function(b){var c=this.elements,a;b=Ext.getDom(b);for(a=this.startIndex;a<=this.endIndex;a++){if(c[a]===b){return a}}return -1},removeRange:function(b,g,d){var j=this,a=j.elements,e,h,c,k;if(g===undefined){g=j.count}else{g=Math.min(j.endIndex+1,g+1)}if(!b){b=0}c=g-b;for(h=b,k=g;h=h.startIndex&&k<=h.endIndex){m[m.length]=k}}Ext.Array.sort(m);e=m.length}else{if(mh.endIndex){return}e=1;m=[m]}for(g=j=m[0],b=0;g<=h.endIndex;g++,j++){if(b=h.startIndex){d=a[g]=a[j];d.setAttribute("data-recordIndex",g)}else{delete a[g]}}h.endIndex-=e;h.count-=e},scroll:function(e,l,c){var k=this,a=k.elements,n=e.length,h,d,b,g,j=k.view.getNodeContainer(),m=document.createDocumentFragment();if(l==-1){for(h=(k.endIndex-c)+1;h<=k.endIndex;h++){d=a[h];delete a[h];d.parentNode.removeChild(d)}k.endIndex-=c;g=k.view.bufferRender(e,k.startIndex-=n);for(h=0;h',"{[view.renderColumnSizer(out)]}","{[view.renderTHead(values, out)]}","{[view.renderTFoot(values, out)]}",'',"{%","view.renderRows(values.rows, values.viewStartIndex, out);","%}","","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'','{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","",{priority:0}],cellTpl:['','
    {style}">{value}
    ',"",{priority:0}],refreshSelmodelOnRefresh:false,tableValues:{},rowValues:{itemClasses:[],rowClasses:[]},cellValues:{classes:[Ext.baseCSSPrefix+"grid-cell "+Ext.baseCSSPrefix+"grid-td"]},renderBuffer:document.createElement("div"),constructor:function(a){if(a.grid.isTree){a.baseCls=Ext.baseCSSPrefix+"tree-view"}this.callParent([a])},initComponent:function(){var b=this,a=b.scroll;this.addEvents("beforecellclick","cellclick","beforecelldblclick","celldblclick","beforecellcontextmenu","cellcontextmenu","beforecellmousedown","cellmousedown","beforecellmouseup","cellmouseup","beforecellkeydown","cellkeydown");b.body=new Ext.dom.Element.Fly();b.body.id=b.id+"gridBody";b.autoScroll=undefined;if(!b.trackOver){b.overItemCls=null;b.beforeOverItemCls=null}if(a===true||a==="both"){b.autoScroll=true}else{if(a==="horizontal"){b.overflowX="auto"}else{if(a==="vertical"){b.overflowY="auto"}}}b.selModel.view=b;b.headerCt.view=b;b.grid.view=b;b.initFeatures(b.grid);delete b.grid;b.tpl=b.getTpl("tpl");b.itemSelector=b.getItemSelector();b.all=new Ext.view.NodeCache(b);b.callParent()},moveColumn:function(a,o,d){var n=this,l=(d>1)?document.createDocumentFragment():undefined,c=o,p=n.getGridColumns().length,h=p-1,b=(n.firstCls||n.lastCls)&&(o===0||o==p||a===0||a==h),g,e,s,k,m,r,q;if(n.rendered&&o!==a){s=n.el.query(n.getDataRowSelector());if(o>a&&l){c-=d}for(g=0,k=s.length;g-1){return this.store.data.getAt(a)}}return this.dataSource.data.get(b.getAttribute("data-recordId"))}},indexOf:function(a){a=this.getNode(a,false);if(!a&&a!==0){return -1}return this.all.indexOf(a)},indexInStore:function(b){b=this.getNode(b,true);if(!b&&b!==0){return -1}var a=b.getAttribute("data-recordIndex");if(a){return parseInt(a,10)}return this.dataSource.indexOf(this.getRecord(b))},renderRows:function(e,d,b){var g=this.rowValues,a=e.length,c;g.view=this;g.columns=this.ownerCt.columnManager.getColumns();for(c=0;c')}},renderRow:function(g,a,e){var j=this,d=a===-1,h=j.selModel,m=j.rowValues,c=m.itemClasses,b=m.rowClasses,l,k=j.rowTpl;m.record=g;m.recordId=g.internalId;m.recordIndex=a;m.rowId=j.getRowId(g);m.itemCls=m.rowCls="";if(!m.columns){m.columns=j.ownerCt.columnManager.getColumns()}c.length=b.length=0;if(!d){c[0]=Ext.baseCSSPrefix+"grid-row";if(h&&h.isRowSelected){if(h.isRowSelected(a+1)){c.push(j.beforeSelectedItemCls)}if(h.isRowSelected(g)){c.push(j.selectedItemCls)}}if(j.stripeRows&&a%2!==0){b.push(j.altRowCls)}if(j.getRowClass){l=j.getRowClass(g,a,null,j.dataSource);if(l){b.push(l)}}}if(e){k.applyOut(m,e)}else{return k.apply(m)}},renderCell:function(c,g,e,j,d){var l=this,h=l.selModel,k=l.cellValues,b=k.classes,a=g.data[c.dataIndex],n=l.cellTpl,o,m;k.record=g;k.column=c;k.recordIndex=e;k.columnIndex=j;k.cellIndex=j;k.align=c.align;k.tdCls=c.tdCls;k.innerCls=c.innerCls;k.style=k.tdAttr="";k.unselectableAttr=l.enableTextSelection?"":'unselectable="on"';if(c.renderer&&c.renderer.call){o=c.renderer.call(c.scope||l.ownerCt,a,k,g,e,j,l.dataSource,l);if(k.css){g.cssWarning=true;k.tdCls+=" "+k.css;delete k.css}}else{o=a}k.value=(o==null||o==="")?" ":o;b[1]=Ext.baseCSSPrefix+"grid-cell-"+c.getItemId();m=2;if(c.tdCls){b[m++]=c.tdCls}if(l.markDirty&&g.isModified(c.dataIndex)){b[m++]=l.dirtyCls}if(c.isFirstVisible){b[m++]=l.firstCls}if(c.isLastVisible){b[m++]=l.lastCls}if(!l.enableTextSelection){b[m++]=Ext.baseCSSPrefix+"unselectable"}b[m++]=k.tdCls;if(h&&h.isCellSelected&&h.isCellSelected(l,e,j)){b[m++]=(l.selectedCellCls)}b.length=m;k.tdCls=b.join(" ");n.applyOut(k,d);k.column=null},getNode:function(c,b){var d,a=this.callParent(arguments);if(a&&a.tagName){if(b){if(!(d=Ext.fly(a)).is(this.dataRowSelector)){return d.down(this.dataRowSelector,true)}}else{if(b===false){if(!(d=Ext.fly(a)).is(this.itemSelector)){return d.up(this.itemSelector,null,true)}}}}return a},getRowId:function(a){return this.id+"-record-"+a.internalId},constructRowId:function(a){return this.id+"-record-"+a},getNodeById:function(b,a){b=this.constructRowId(b);return this.retrieveNode(b,a)},getNodeByRecord:function(a,b){var c=this.getRowId(a);return this.retrieveNode(c,b)},retrieveNode:function(e,c){var a=this.el.getById(e,true),b=this.itemSelector,d;if(c===false&&a){if(!(d=Ext.fly(a)).is(b)){return d.up(b,null,true)}}return a},updateIndexes:Ext.emptyFn,bodySelector:"table",nodeContainerSelector:"tbody",itemSelector:"tr."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"tr."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"td."+Ext.baseCSSPrefix+"grid-cell",sizerSelector:"col."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainer:function(){return this.el.down(this.nodeContainerSelector,true)},getBodySelector:function(){return this.bodySelector+"."+Ext.baseCSSPrefix+this.id+"-table"},getNodeContainerSelector:function(){return this.nodeContainerSelector},getColumnSizerSelector:function(a){return this.sizerSelector+"-"+a.getItemId()},getItemSelector:function(){return this.itemSelector},getDataRowSelector:function(){return this.dataRowSelector},getCellSelector:function(b){var a=this.cellSelector;if(b){a+="-"+b.getItemId()}return a},getCellInnerSelector:function(a){return this.getCellSelector(a)+" "+this.innerSelector},addRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).addCls(a)}},removeRowCls:function(b,a){var c=this.getNode(b,false);if(c){Ext.fly(c).removeCls(a)}},setHighlightedItem:function(c){var b=this,a=b.highlightedItem;if(a&&b.el.isAncestor(a)&&b.isRowStyleFirst(a)){b.getRowStyleTableEl(a).removeCls(b.tableOverFirstCls)}if(c&&b.isRowStyleFirst(c)){b.getRowStyleTableEl(c).addCls(b.tableOverFirstCls)}b.callParent(arguments)},onRowSelect:function(b){var a=this;a.addRowCls(b,a.selectedItemCls);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).addCls(a.tableSelectedFirstCls)}else{a.addRowCls(b-1,a.beforeSelectedItemCls)}},onRowDeselect:function(b){var a=this;a.removeRowCls(b,[a.selectedItemCls,a.focusedItemCls]);if(a.isRowStyleFirst(b)){a.getRowStyleTableEl(b).removeCls([a.tableFocusedFirstCls,a.tableSelectedFirstCls])}else{a.removeRowCls(b-1,[a.beforeFocusedItemCls,a.beforeSelectedItemCls])}},onCellSelect:function(b){var a=this.getCellByPosition(b);if(a){a.addCls(this.selectedCellCls);this.scrollCellIntoView(a)}},onCellDeselect:function(b){var a=this.getCellByPosition(b,true);if(a){Ext.fly(a).removeCls(this.selectedCellCls)}},getCellByPosition:function(a,b){if(a){var c=this.getNode(a.row,true),d=this.ownerCt.columnManager.getHeaderAtIndex(a.column);if(d&&c){return Ext.fly(c).down(this.getCellSelector(d),b)}}return false},getFocusEl:function(){var b=this,a;if(b.refreshCounter){a=b.focusedRow;if(!(a&&b.el.contains(a))){if(b.all.getCount()&&(a=b.getNode(b.all.item(0).dom,true))){b.focusRow(a)}else{a=b.body}}}else{return b.el}return Ext.get(a)},onRowFocus:function(d,b,a){var c=this;if(b){c.addRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).addCls(c.tableFocusedFirstCls)}else{c.addRowCls(d-1,c.beforeFocusedItemCls)}if(!a){c.focusRow(d)}}else{c.removeRowCls(d,c.focusedItemCls);if(c.isRowStyleFirst(d)){c.getRowStyleTableEl(d).removeCls(c.tableFocusedFirstCls)}else{c.removeRowCls(d-1,c.beforeFocusedItemCls)}}if((Ext.isIE6||Ext.isIE7)&&!c.ownerCt.rowLines){c.repaintRow(d)}},focus:function(d,b){var c=this,a=Ext.isIE&&!b,e;if(a){e=c.el.dom.scrollLeft}this.callParent(arguments);if(a){c.el.dom.scrollLeft=e}},focusRow:function(g,b){var d=this,c,e=d.ownerCt&&d.ownerCt.collapsed,a;if(d.isVisible(true)&&!e&&(g=d.getNode(g,true))){d.scrollRowIntoView(g);a=d.getRecord(g);c=d.indexInStore(g);d.selModel.setLastFocused(a);d.focusedRow=g;d.focus(false,b,function(){d.fireEvent("rowfocus",a,g,c)})}},scrollRowIntoView:function(a){a=this.getNode(a,true);if(a){Ext.fly(a).scrollIntoView(this.el,false)}},focusCell:function(b){var d=this,a=d.getCellByPosition(b),c=d.getRecord(b.row);d.focusRow(c);if(a){d.scrollCellIntoView(a);d.fireEvent("cellfocus",c,a,b)}},scrollCellIntoView:function(a){if(a.row!=null&&a.column!=null){a=this.getCellByPosition(a)}if(a){Ext.fly(a).scrollIntoView(this.el,true)}},scrollByDelta:function(c,b){b=b||"scrollTop";var a=this.el.dom;a[b]=(a[b]+=c)},isDataRow:function(a){return Ext.fly(a).hasCls(Ext.baseCSSPrefix+"grid-data-row")},syncRowHeights:function(g,a){g=Ext.get(g);a=Ext.get(a);g.dom.style.height=a.dom.style.height="";var d=this,e=d.rowTpl,b=g.dom.offsetHeight,c=a.dom.offsetHeight;if(b!==c){while(e){if(e.syncRowHeights){if(e.syncRowHeights(g,a)===false){break}}e=e.nextTpl}b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b!==c){g=g.down("[data-recordId]")||g;a=a.down("[data-recordId]")||a;if(g&&a){g.dom.style.height=a.dom.style.height="";b=g.dom.offsetHeight;c=a.dom.offsetHeight;if(b>c){g.setHeight(b);a.setHeight(b)}else{if(c>b){g.setHeight(c);a.setHeight(c)}}}}}},onIdChanged:function(a,h,g,c,b){var e=this,d;if(e.viewReady){d=e.getNodeById(b);if(d){d.setAttribute("data-recordId",h.internalId);d.id=e.getRowId(h)}}},onUpdate:function(g,c,m,r){var v=this,o=v.rowTpl,j,s,b,l,n,t,u,e,p,q,k,d,w,h,a;if(v.viewReady){b=v.getNodeByRecord(c,false);if(b){p=v.overItemCls;q=v.overItemCls;k=v.focusedItemCls;d=v.beforeFocusedItemCls;w=v.selectedItemCls;h=v.beforeSelectedItemCls;j=v.indexInStore(c);s=Ext.fly(b,"_internal");l=v.createRowElement(c,j);if(s.hasCls(p)){Ext.fly(l).addCls(p)}if(s.hasCls(q)){Ext.fly(l).addCls(q)}if(s.hasCls(k)){Ext.fly(l).addCls(k)}if(s.hasCls(d)){Ext.fly(l).addCls(d)}if(s.hasCls(w)){Ext.fly(l).addCls(w)}if(s.hasCls(h)){Ext.fly(l).addCls(h)}a=v.ownerCt.columnManager.getColumns();if(Ext.isIE9m&&b.mergeAttributes){b.mergeAttributes(l,true)}else{n=l.attributes;t=n.length;for(e=0;e0){l=g.getCellPaddingAfter(m[0])}a.setWidth(1);j=d.textEl.dom.offsetWidth+d.titleEl.getPadding("lr");for(;c=c:k<=0){return l||c}k+=g;if((b=Ext.fly(d.getNode(k,true)))&&b.isVisible(true)){e+=g;l=k}}while(e!==a);return k},walkRecs:function(b,a){var h=this,j=0,m=b,c,l=(h.store.buffered?h.store.getTotalCount():h.store.getCount())-1,e=(a<0)?0:l,k=e?1:-1,g=h.store.indexOf(b),d;do{if(e?g>=e:g<=0){return m}g+=k;d=h.store.getAt(g);if((c=Ext.fly(h.getNodeByRecord(d,true)))&&c.isVisible(true)){j+=k;m=d}}while(j!==a);return m},getFirstVisibleRowIndex:function(){var c=this,b=(c.dataSource.buffered?c.dataSource.getTotalCount():c.dataSource.getCount()),a=c.indexOf(c.all.first())-1;do{a+=1;if(a===b){return}}while(!Ext.fly(c.getNode(a,true)).isVisible(true));return a},getLastVisibleRowIndex:function(){var b=this,a=b.indexOf(b.all.last());do{a-=1;if(a===-1){return}}while(!Ext.fly(b.getNode(a,true)).isVisible(true));return a},getHeaderCt:function(){return this.headerCt},getPosition:function(a,b){return new Ext.grid.CellContext(this).setPosition(a,b)},beforeDestroy:function(){var a=this;if(a.rendered){a.el.removeAllListeners()}a.callParent(arguments)},onDestroy:function(){var d=this,c=d.featuresMC,a,b;if(c){for(b=0,a=c.getCount();bg.viewSize){if(ce.startIndex){d.refreshView()}else{g.stretchView(d,g.getScrollHeight())}}else{d.callParent([b,a,c])}},onRemove:function(b,a,d){var c=this,e=c.bufferedRenderer;c.callParent([b,a,d]);if(c.rendered&&e){if(c.dataSource.getCount()>e.viewSize){c.refreshView()}else{e.stretchView(c,e.getScrollHeight())}}},onDataRefresh:function(){var a=this;if(a.bufferedRenderer){a.all.clear();a.bufferedRenderer.onStoreClear()}a.callParent()}});(Ext.cmd.derive("Ext.grid.RowEditorButtons",Ext.container.Container,{frame:true,shrinkWrap:true,position:"bottom",constructor:function(b){var d=this,a=b.rowEditor,e=Ext.baseCSSPrefix,c=a.editingPlugin;b=Ext.apply({baseCls:e+"grid-row-editor-buttons",defaults:{xtype:"button",ui:a.buttonUI,scope:c,flex:1,minWidth:Ext.panel.Panel.prototype.minButtonWidth},items:[{cls:e+"row-editor-update-button",itemId:"update",handler:c.completeEdit,text:a.saveBtnText,disabled:a.updateButtonDisabled},{cls:e+"row-editor-cancel-button",handler:c.cancelEdit,text:a.cancelBtnText}]},b);d.callParent([b]);d.addClsWithUI(d.position)},setButtonPosition:function(a){var b=this;b.removeClsWithUI(b.position);b.position=a;b.addClsWithUI(a)},getFramingInfoCls:function(){return this.baseCls+"-"+this.ui+"-"+this.position},getFrameInfo:function(){var a=this.callParent();a.top=true;return a}},1,["roweditorbuttons"],["component","container","box","roweditorbuttons"],{component:true,container:true,box:true,roweditorbuttons:true},["widget.roweditorbuttons"],0,[Ext.grid,"RowEditorButtons"],0));(Ext.cmd.derive("Ext.grid.RowEditor",Ext.form.Panel,{saveBtnText:"Update",cancelBtnText:"Cancel",errorsText:"Errors",dirtyText:"You need to commit or cancel your changes",lastScrollLeft:0,lastScrollTop:0,border:false,buttonUI:"default",hideMode:"offsets",initComponent:function(){var c=this,b=c.editingPlugin.grid,a=Ext.container.Container;c.cls=Ext.baseCSSPrefix+"grid-editor "+Ext.baseCSSPrefix+"grid-row-editor";c.layout={type:"hbox",align:"middle"};c.lockable=b.lockable;if(c.lockable){c.items=[c.lockedColumnContainer=new a({id:b.id+"-locked-editor-cells",layout:{type:"hbox",align:"middle"},margin:"0 1 0 0"}),c.normalColumnContainer=new a({flex:1,id:b.id+"-normal-editor-cells",layout:{type:"hbox",align:"middle"}})]}else{c.lockedColumnContainer=c.normalColumnContainer=c}c.callParent(arguments);if(c.fields){c.addFieldsForColumn(c.fields,true);c.insertColumnEditor(c.fields);delete c.fields}c.mon(c.hierarchyEventSource,{scope:c,show:c.repositionIfVisible});c.getForm().trackResetOnLoad=true},onGridResize:function(){var c=this,e=c.getClientWidth(),a=c.editingPlugin.grid,d=a.body,b=c.getFloatingButtons();c.setLocalX(d.getOffsetsTo(a)[0]+d.getBorderWidth("l")-a.el.getBorderWidth("l"));c.setWidth(e);b.setLocalX((e-b.getWidth())/2)},onFieldRender:function(c){var b=this,a=c.column;if(a.isVisible()){b.syncFieldWidth(a)}else{if(!a.rendered){b.view.headerCt.on({afterlayout:Ext.Function.bind(b.syncFieldWidth,b,[a]),single:true})}}},syncFieldWidth:function(b){var c=b.getEditor(),a;c._marginWidth=(c._marginWidth||c.el.getMargin("lr"));a=b.getWidth()-c._marginWidth;c.setWidth(a);if(c.xtype==="displayfield"){c.inputWidth=a}},onFieldChange:function(){var c=this,b=c.getForm(),a=b.isValid();if(c.errorSummary&&c.isVisible()){c[a?"hideToolTip":"showToolTip"]()}c.updateButton(a);c.isValid=a},updateButton:function(b){var a=this.floatingButtons;if(a){a.child("#update").setDisabled(!b)}else{this.updateButtonDisabled=!b}},afterRender:function(){var d=this,c=d.editingPlugin,b=c.grid,a=b.lockable?b.normalGrid.view:b.view,e;d.callParent(arguments);d.scrollingView=a;d.scrollingViewEl=a.el;a.mon(d.scrollingViewEl,"scroll",d.onViewScroll,d);d.mon(d.el,{click:Ext.emptyFn,stopPropagation:true});d.mon(b,{resize:d.onGridResize,scope:d});d.el.swallowEvent(["keypress","keydown"]);d.fieldScroller=d.normalColumnContainer.layout.innerCt;d.fieldScroller.dom.style.overflow="hidden";d.fieldScroller.on({scroll:d.onFieldContainerScroll,scope:d});d.keyNav=new Ext.util.KeyNav(d.el,{enter:c.completeEdit,esc:c.onEscKey,scope:c});d.mon(c.view,{beforerefresh:d.onBeforeViewRefresh,refresh:d.onViewRefresh,itemremove:d.onViewItemRemove,scope:d});d.preventReposition=true;Ext.Array.each(d.query("[isFormField]"),function(g){if(g.column.isVisible()){d.onColumnShow(g.column)}},d);delete d.preventReposition},onBeforeViewRefresh:function(b){var c=this,a=b.el.dom;if(c.el.dom.parentNode===a){a.removeChild(c.el.dom)}},onViewRefresh:function(a){var c=this,b=c.context,d;if(b&&(d=a.getNode(b.record,true))){b.row=d;c.reposition();if(c.tooltip&&c.tooltip.isVisible()){c.tooltip.setTarget(b.row)}}else{c.editingPlugin.cancelEdit()}},onViewItemRemove:function(a,b){var c=this.context;if(c&&a===c.record){this.editingPlugin.cancelEdit()}},onViewScroll:function(){var c=this,b=c.editingPlugin.view.el,d=c.scrollingViewEl,e=d.dom.scrollTop,j=d.getScrollLeft(),h=j!==c.lastScrollLeft,a=e!==c.lastScrollTop,g;c.lastScrollTop=e;c.lastScrollLeft=j;if(c.isVisible()){g=Ext.getDom(c.context.row.id);if(g&&b.contains(g)){if(a){c.context.row=g;c.reposition(null,true);if((c.tooltip&&c.tooltip.isVisible())||c.hiddenTip){c.repositionTip()}c.syncEditorClip()}}else{c.setLocalY(-400)}}if(c.rendered&&h){c.syncFieldsHorizontalScroll()}},syncFieldsHorizontalScroll:function(){this.fieldScroller.setScrollLeft(this.lastScrollLeft)},onFieldContainerScroll:function(){this.scrollingViewEl.setScrollLeft(this.fieldScroller.getScrollLeft())},onColumnResize:function(b,a){var c=this;if(c.rendered){c.onGridResize();c.onViewScroll();if(!b.isGroupHeader){c.syncFieldWidth(b);c.repositionIfVisible()}}},onColumnHide:function(a){if(!a.isGroupHeader){a.getEditor().hide();this.repositionIfVisible()}},onColumnShow:function(a){var b=this;if(b.rendered&&!a.isGroupHeader){a.getEditor().show();b.syncFieldWidth(a);if(!b.preventReposition){this.repositionIfVisible()}}},onColumnMove:function(c,a,k){var h=this,d,b=1,g,j,l,e=c.isLocked()?h.lockedColumnContainer:h.normalColumnContainer;if(c.isGroupHeader){Ext.suspendLayouts();c=c.getGridColumns();if(k>a){k--;b=0}this.addFieldsForColumn(c);for(d=0,g=c.length;da){k--}this.addFieldsForColumn(c);j=c.getEditor();l=e.items.indexOf(j);if(l===-1){e.insert(k,j)}else{if(l!=k){e.move(a,k)}}}},onColumnAdd:function(a){if(a.isGroupHeader){a=a.getGridColumns()}this.addFieldsForColumn(a);this.insertColumnEditor(a);this.preventReposition=false},insertColumnEditor:function(c){var d=this,e,a,b;if(Ext.isArray(c)){for(b=0,a=c.length;b0){a=Math.max(a+e.getHeight()+e.floatingButtons.getHeight()-d.clientHeight-b.getBorderWidth("b"),0)}}return a},calculateLocalRowTop:function(b){var a=this.editingPlugin.grid;return Ext.fly(b).getOffsetsTo(a)[1]-a.el.getBorderWidth("t")+this.lastScrollTop},calculateEditorTop:function(a){return a-this.body.getBorderPadding().beforeY-this.lastScrollTop},getClientWidth:function(){var c=this,b=c.editingPlugin.grid,a;if(c.lockable){a=b.lockedGrid.getWidth()+b.normalGrid.view.el.dom.clientWidth-1}else{a=b.view.el.dom.clientWidth}return a},getEditor:function(a){var b=this;if(Ext.isNumber(a)){return b.query("[isFormField]")[a]}else{if(a.isHeader&&!a.isGroupHeader){return a.getEditor()}}},addFieldsForColumn:function(c,a){var e=this,b,d,g;if(Ext.isArray(c)){for(b=0,d=c.length;bdisplayfield");b=g.length;for(c=0;c0){if(!b._buttonsOnTop){a.setButtonPosition("top");b._buttonsOnTop=true}d=0}else{if(b._buttonsOnTop){a.setButtonPosition("bottom");b._buttonsOnTop=false}}return d},syncEditorClip:function(){var b=this,c=b.getScrollDelta(),a;if(c){b.isOverflowing=true;a=b.floatingButtons.getHeight();if(c>0){b.clipBottom(Math.max(b.getHeight()-c+a,-a))}else{if(c<0){c=Math.abs(c);b.clipTop(Math.max(c,0))}}}else{if(b.isOverflowing){b.clearClip();b.isOverflowing=false}}},focusContextCell:function(){var a=this.getEditor(this.context.column);if(a&&a.focus){a.focus()}},cancelEdit:function(){var g=this,e=g.getForm(),a=e.getFields(),b=a.items,d=b.length,c;g.hide();e.clearInvalid();for(c=0;cg&&a[isFormField]"),c=a.length,b;for(b=0;b'+e.join("")+""},createErrorListItem:function(a){return'
  • '+a+"
  • "},beforeDestroy:function(){Ext.destroy(this.floatingButtons,this.tooltip);this.callParent()},clipBottom:function(a){this.el.setStyle("clip","rect(-1000px auto "+a+"px auto)")},clipTop:function(a){this.el.setStyle("clip","rect("+a+"px auto 1000px auto)")},clearClip:function(a){this.el.setStyle("clip",Ext.isIE8m||Ext.isIEQuirks?"rect(-1000px auto 1000px auto)":"auto")}},0,["roweditor"],["panel","form","component","container","roweditor","box"],{panel:true,form:true,component:true,container:true,roweditor:true,box:true},["widget.roweditor"],0,[Ext.grid,"RowEditor"],0));(Ext.cmd.derive("Ext.view.DropZone",Ext.dd.DropZone,{indicatorHtml:'
    ',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",constructor:function(a){var b=this;Ext.apply(b,a);if(!b.ddGroup){b.ddGroup="view-dd-zone-"+b.view.id}b.callParent([b.view.el])},fireViewEvent:function(){var b=this,a;b.lock();a=b.view.fireEvent.apply(b.view,arguments);b.unlock();return a},getTargetFromEvent:function(k){var j=k.getTarget(this.view.getItemSelector()),d,c,b,g,a,h;if(!j){d=k.getPageY();for(g=0,c=this.view.getNodes(),a=c.length;g=(b.bottom-b.top)/2){d="before"}else{d="after"}return d},containsRecordAtOffset:function(d,b,g){if(!b){return false}var a=this.view,c=a.indexOf(b),e=a.getNode(c+g,true),h=e?a.getRecord(e):null;return h&&Ext.Array.contains(d,h)},positionIndicator:function(b,c,d){var g=this,j=g.view,h=g.getPosition(d,b),l=j.getRecord(b),a=c.records,k;if(!Ext.Array.contains(a,l)&&(h=="before"&&!g.containsRecordAtOffset(a,l,-1)||h=="after"&&!g.containsRecordAtOffset(a,l,1))){g.valid=true;if(g.overRecord!=l||g.currentPosition!=h){k=Ext.fly(b).getY()-j.el.getY()-1;if(h=="after"){k+=Ext.fly(b).getHeight()}g.getIndicator().setWidth(Ext.fly(j.el).getWidth()).showAt(0,k);g.overRecord=l;g.currentPosition=h}}else{g.invalidateDrop()}},invalidateDrop:function(){if(this.valid){this.valid=false;this.getIndicator().hide()}},onNodeOver:function(c,a,g,d){var b=this;if(!Ext.Array.contains(d.records,b.view.getRecord(c))){b.positionIndicator(c,d,g)}return b.valid?b.dropAllowed:b.dropNotAllowed},notifyOut:function(c,a,g,d){var b=this;b.callParent(arguments);b.overRecord=b.currentPosition=null;b.valid=false;if(b.indicator){b.indicator.hide()}},onContainerOver:function(a,h,g){var d=this,b=d.view,c=b.dataSource.getCount();if(c){d.positionIndicator(b.all.last(),g,h)}else{d.overRecord=d.currentPosition=null;d.getIndicator().setWidth(Ext.fly(b.el).getWidth()).showAt(0,0);d.valid=true}return d.dropAllowed},onContainerDrop:function(a,c,b){return this.onNodeDrop(a,null,c,b)},onNodeDrop:function(j,a,h,g){var d=this,c=false,b={wait:false,processDrop:function(){d.invalidateDrop();d.handleNodeDrop(g,d.overRecord,d.currentPosition);c=true;d.fireViewEvent("drop",j,g,d.overRecord,d.currentPosition)},cancelDrop:function(){d.invalidateDrop();c=true}},k=false;if(d.valid){k=d.fireViewEvent("beforedrop",j,g,d.overRecord,d.currentPosition,b);if(b.wait){return}if(k!==false){if(!c){b.processDrop()}}}return k},destroy:function(){Ext.destroy(this.indicator);delete this.indicator;this.callParent()}},1,0,0,0,0,0,[Ext.view,"DropZone"],0));(Ext.cmd.derive("Ext.grid.ViewDropZone",Ext.view.DropZone,{indicatorHtml:'
    ',indicatorCls:Ext.baseCSSPrefix+"grid-drop-indicator",handleNodeDrop:function(b,d,e){var j=this.view,k=j.getStore(),h,a,c,g;if(b.copy){a=b.records;b.records=[];for(c=0,g=a.length;cn){q-=1}}Ext.suspendLayouts();if(l){a.move(n,q)}else{u.remove(r,false);a.insert(q,r)}if(a.isGroupHeader){if(!l){r.savedFlex=r.flex;delete r.flex;r.width=g}}else{if(r.savedFlex){r.flex=r.savedFlex;delete r.width}}k.purgeCache();Ext.resumeLayouts(true);k.onHeaderMoved(r,o,b,t)}}}}},1,0,0,0,0,0,[Ext.grid.header,"DropZone"],0));(Ext.cmd.derive("Ext.grid.plugin.HeaderReorderer",Ext.AbstractPlugin,{init:function(a){this.headerCt=a;a.on({render:this.onHeaderCtRender,single:true,scope:this})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},onHeaderCtRender:function(){var a=this;a.dragZone=new Ext.grid.header.DragZone(a.headerCt);a.dropZone=new Ext.grid.header.DropZone(a.headerCt);if(a.disabled){a.dragZone.disable()}},enable:function(){this.disabled=false;if(this.dragZone){this.dragZone.enable()}},disable:function(){this.disabled=true;if(this.dragZone){this.dragZone.disable()}}},0,0,0,0,["plugin.gridheaderreorderer"],0,[Ext.grid.plugin,"HeaderReorderer"],0));(Ext.cmd.derive("Ext.grid.header.Container",Ext.container.Container,{border:true,baseCls:Ext.baseCSSPrefix+"grid-header-ct",dock:"top",weight:100,defaultType:"gridcolumn",detachOnRemove:false,defaultWidth:100,sortAscText:"Sort Ascending",sortDescText:"Sort Descending",sortClearText:"Clear Sort",columnsText:"Columns",headerOpenCls:Ext.baseCSSPrefix+"column-header-open",menuSortAscCls:Ext.baseCSSPrefix+"hmenu-sort-asc",menuSortDescCls:Ext.baseCSSPrefix+"hmenu-sort-desc",menuColsIcon:Ext.baseCSSPrefix+"cols-icon",triStateSort:false,ddLock:false,dragging:false,sortable:true,enableColumnHide:true,initComponent:function(){var a=this;a.headerCounter=0;a.plugins=a.plugins||[];if(!a.isColumn){if(a.enableColumnResize){a.resizer=new Ext.grid.plugin.HeaderResizer();a.plugins.push(a.resizer)}if(a.enableColumnMove){a.reorderer=new Ext.grid.plugin.HeaderReorderer();a.plugins.push(a.reorderer)}}if(a.isColumn&&(!a.items||a.items.length===0)){a.isContainer=false;a.layout={type:"container",calculate:Ext.emptyFn}}else{a.layout=Ext.apply({type:"gridcolumn",align:"stretch"},a.initialConfig.layout);if(a.isRootHeader){a.grid.columnManager=a.columnManager=new Ext.grid.ColumnManager(a)}}a.defaults=a.defaults||{};Ext.applyIf(a.defaults,{triStateSort:a.triStateSort,sortable:a.sortable});a.menuTask=new Ext.util.DelayedTask(a.updateMenuDisabledState,a);a.callParent();a.addEvents("columnresize","headerclick","headercontextmenu","headertriggerclick","columnmove","columnhide","columnshow","columnschanged","sortchange","menucreate")},isLayoutRoot:function(){if(this.hiddenHeaders){return false}return this.callParent()},getOwnerHeaderCt:function(){var a=this;return a.isRootHeader?a:a.up("[isRootHeader]")},onDestroy:function(){var a=this;if(a.menu){a.menu.un("hide",a.onMenuHide,a)}a.menuTask.cancel();Ext.destroy(a.resizer,a.reorderer);a.callParent()},applyColumnsState:function(e){if(!e||!e.length){return}var m=this,k=m.items.items,j=k.length,g=0,b=e.length,l,d,a,h;for(l=0;lgridcolumn[hideable]"),h=a.length,d;for(;b{text}
    {%this.renderContainer(out,values)%}',dataIndex:null,text:" ",menuText:null,emptyCellText:" ",sortable:true,resizable:true,hideable:true,menuDisabled:false,renderer:false,editRenderer:false,align:"left",draggable:true,tooltipType:"qtip",initDraggable:Ext.emptyFn,tdCls:"",isHeader:true,isColumn:true,ascSortCls:Ext.baseCSSPrefix+"column-header-sort-ASC",descSortCls:Ext.baseCSSPrefix+"column-header-sort-DESC",componentLayout:"columncomponent",groupSubHeaderCls:Ext.baseCSSPrefix+"group-sub-header",groupHeaderCls:Ext.baseCSSPrefix+"group-header",clickTargetName:"titleEl",detachOnRemove:true,initResizable:Ext.emptyFn,initComponent:function(){var b=this,c,a;if(b.header!=null){b.text=b.header;b.header=null}if(!b.triStateSort){b.possibleSortStates.length=2}if(b.columns!=null){b.isGroupHeader=true;b.items=b.columns;b.columns=b.flex=b.width=null;b.cls=(b.cls||"")+" "+b.groupHeaderCls;b.sortable=b.resizable=false;b.align="center"}else{if(b.flex){b.minWidth=b.minWidth||Ext.grid.plugin.HeaderResizer.prototype.minColWidth}}b.addCls(Ext.baseCSSPrefix+"column-header-align-"+b.align);c=b.renderer;if(c){if(typeof c=="string"){b.renderer=Ext.util.Format[c]}b.hasCustomRenderer=true}else{if(b.defaultRenderer){b.scope=b;b.renderer=b.defaultRenderer}}b.callParent(arguments);a={element:b.clickTargetName,click:b.onTitleElClick,contextmenu:b.onTitleElContextMenu,mouseenter:b.onTitleMouseOver,mouseleave:b.onTitleMouseOut,scope:b};if(b.resizable){a.dblclick=b.onTitleElDblClick}b.on(a)},onAdd:function(a){if(a.isColumn){a.isSubHeader=true;a.addCls(this.groupSubHeaderCls)}if(this.hidden){a.hide()}this.callParent(arguments)},onRemove:function(a){if(a.isSubHeader){a.isSubHeader=false;a.removeCls(this.groupSubHeaderCls)}this.callParent(arguments)},initRenderData:function(){var b=this,d="",c=b.tooltip,a=b.tooltipType=="qtip"?"data-qtip":"title";if(!Ext.isEmpty(c)){d=a+'="'+c+'" '}return Ext.applyIf(b.callParent(arguments),{text:b.text,menuDisabled:b.menuDisabled,tipMarkup:d})},applyColumnState:function(b){var a=this;a.applyColumnsState(b.columns);if(b.hidden!=null){a.hidden=b.hidden}if(b.locked!=null){a.locked=b.locked}if(b.sortable!=null){a.sortable=b.sortable}if(b.width!=null){a.flex=null;a.width=b.width}else{if(b.flex!=null){a.width=null;a.flex=b.flex}}},getColumnState:function(){var e=this,b=e.items.items,a=b?b.length:0,d,c=[],g={id:e.getStateId()};e.savePropsToState(["hidden","sortable","locked","flex","width"],g);if(e.isGroupHeader){for(d=0;d:not([hidden]):not([menuDisabled])");c=b.length;if(Ext.Array.contains(b,a.hideCandidate)){c--}if(c){return false}a.hideCandidate=this},isLockable:function(){var a={result:this.lockable!==false};if(a.result){this.ownerCt.bubble(this.hasMultipleVisibleChildren,null,[a])}return a.result},isLocked:function(){return this.locked||!!this.up("[isColumn][locked]","[isRootHeader]")},hasMultipleVisibleChildren:function(a){if(!this.isXType("headercontainer")){a.result=false;return false}if(this.query(">:not([hidden])").length>1){return false}},hide:function(c){var j=this,e=j.getOwnerHeaderCt(),b=j.ownerCt,a,k,h,g,d;if(!j.isVisible()){return j}if(!e){j.callParent();return j}if(e.forceFit){j.visibleSiblingCount=e.getVisibleGridColumns().length-1;if(j.flex){j.savedWidth=j.getWidth();j.flex=null}}a=b.isGroupHeader;if(a&&!c){h=b.query(">:not([hidden])");if(h.length===1&&h[0]==j){j.ownerCt.hide();return}}Ext.suspendLayouts();if(j.isGroupHeader){h=j.items.items;for(d=0,g=h.length;dk.view.el.dom.clientHeight?Ext.getScrollbarSize().width:0);if(k.forceFit){m=Ext.ComponentQuery.query(":not([flex])",k.getVisibleGridColumns());if(m.length){n.width=n.savedWidth||n.width||p}else{m=k.getVisibleGridColumns();l=m.length;c=n.visibleSiblingCount;b=(n.savedWidth||n.width||p);b=Math.min(b*(c/l),p,Math.max(a-(l*p),p));n.width=null;n.flex=b;a-=b;e=0;for(j=0;jActions",sortable:false,innerCls:Ext.baseCSSPrefix+"grid-cell-inner-action-col",constructor:function(d){var g=this,b=Ext.apply({},d),c=b.items||g.items||[g],h,e,a;g.origRenderer=b.renderer||g.renderer;g.origScope=b.scope||g.scope;g.renderer=g.scope=b.renderer=b.scope=null;b.items=null;g.callParent([b]);g.items=c;for(e=0,a=c.length;e"}return j},enableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=false;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).removeCls(c.disabledCls);if(!a){c.fireEvent("enable",c)}},disableAction:function(b,a){var c=this;if(!b){b=0}else{if(!Ext.isNumber(b)){b=Ext.Array.indexOf(c.items,b)}}c.items[b].disabled=true;c.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"action-col-"+b).addCls(c.disabledCls);if(!a){c.fireEvent("disable",c)}},destroy:function(){delete this.items;delete this.renderer;return this.callParent(arguments)},processEvent:function(k,n,p,b,l,h,d,r){var j=this,g=h.getTarget(),c,q,m,o=k=="keydown"&&h.getKey(),a;if(o&&!Ext.fly(g).findParent(n.getCellSelector())){g=Ext.fly(p).down("."+Ext.baseCSSPrefix+"action-col-icon",true)}if(g&&(c=g.className.match(j.actionIdRe))){q=j.items[parseInt(c[1],10)];a=q.disabled||(q.isDisabled?q.isDisabled.call(q.scope||j.origScope||j,n,b,l,q,d):false);if(q&&!a){if(k=="click"||(o==h.ENTER||o==h.SPACE)){m=q.handler||j.handler;if(m){m.call(q.scope||j.origScope||j,n,b,l,q,h,d,r)}}else{if(k=="mousedown"&&q.stopSelection!==false){return false}}}}return j.callParent(arguments)},cascade:function(b,a){b.call(a||this,this)},getRefItems:function(){return[]}},1,["actioncolumn"],["component","gridcolumn","container","actioncolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,actioncolumn:true,box:true,headercontainer:true},["widget.actioncolumn"],0,[Ext.grid.column,"Action",Ext.grid,"ActionColumn"],0));(Ext.cmd.derive("Ext.grid.column.Boolean",Ext.grid.column.Column,{alternateClassName:"Ext.grid.BooleanColumn",trueText:"true",falseText:"false",undefinedText:" ",defaultRenderer:function(a){if(a===undefined){return this.undefinedText}if(!a||a==="false"){return this.falseText}return this.trueText}},0,["booleancolumn"],["booleancolumn","component","gridcolumn","container","box","headercontainer"],{booleancolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.booleancolumn"],0,[Ext.grid.column,"Boolean",Ext.grid,"BooleanColumn"],0));(Ext.cmd.derive("Ext.grid.column.CheckColumn",Ext.grid.column.Column,{alternateClassName:"Ext.ux.CheckColumn",align:"center",stopSelection:true,tdCls:Ext.baseCSSPrefix+"grid-cell-checkcolumn",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-checkcolumn",clickTargetName:"el",constructor:function(){this.addEvents("beforecheckchange","checkchange");this.scope=this;this.callParent(arguments)},processEvent:function(h,k,o,b,j,d,c,p){var g=this,n=h==="keydown"&&d.getKey(),a=h=="mousedown";if(!g.disabled&&(a||(n==d.ENTER||n==d.SPACE))){var l=g.dataIndex,m=!c.get(l);if(g.fireEvent("beforecheckchange",g,b,m)!==false){c.set(l,m);g.fireEvent("checkchange",g,b,m);if(a){d.stopEvent()}if(!g.stopSelection){k.selModel.selectByPosition({row:b,column:j})}return false}else{return !g.stopSelection}}else{return g.callParent(arguments)}},onEnable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).removeCls(b.disabledCls);if(!a){b.fireEvent("enable",b)}},onDisable:function(a){var b=this;b.callParent(arguments);b.up("tablepanel").el.select("."+Ext.baseCSSPrefix+"grid-cell-"+b.id).addCls(b.disabledCls);if(!a){b.fireEvent("disable",b)}},renderer:function(b,c){var d=Ext.baseCSSPrefix,a=[d+"grid-checkcolumn"];if(this.disabled){c.tdCls+=" "+this.disabledCls}if(b){a.push(d+"grid-checkcolumn-checked")}return''}},1,["checkcolumn"],["checkcolumn","component","gridcolumn","container","box","headercontainer"],{checkcolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.checkcolumn"],0,[Ext.grid.column,"CheckColumn",Ext.ux,"CheckColumn"],0));(Ext.cmd.derive("Ext.grid.column.Date",Ext.grid.column.Column,{alternateClassName:"Ext.grid.DateColumn",initComponent:function(){if(!this.format){this.format=Ext.Date.defaultFormat}this.callParent(arguments)},defaultRenderer:function(a){return Ext.util.Format.date(a,this.format)}},0,["datecolumn"],["component","gridcolumn","container","datecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,datecolumn:true,box:true,headercontainer:true},["widget.datecolumn"],0,[Ext.grid.column,"Date",Ext.grid,"DateColumn"],0));(Ext.cmd.derive("Ext.grid.column.Number",Ext.grid.column.Column,{alternateClassName:"Ext.grid.NumberColumn",format:"0,000.00",defaultRenderer:function(a){return Ext.util.Format.number(a,this.format)}},0,["numbercolumn"],["component","gridcolumn","container","box","headercontainer","numbercolumn"],{component:true,gridcolumn:true,container:true,box:true,headercontainer:true,numbercolumn:true},["widget.numbercolumn"],0,[Ext.grid.column,"Number",Ext.grid,"NumberColumn"],0));(Ext.cmd.derive("Ext.grid.column.RowNumberer",Ext.grid.column.Column,{alternateClassName:"Ext.grid.RowNumberer",text:" ",width:23,sortable:false,draggable:false,autoLock:true,lockable:false,align:"right",constructor:function(a){var b=this;b.width=b.width;b.callParent(arguments);b.scope=b},resizable:false,hideable:false,menuDisabled:true,dataIndex:"",cls:Ext.baseCSSPrefix+"row-numberer",tdCls:Ext.baseCSSPrefix+"grid-cell-row-numberer "+Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-numberer",rowspan:undefined,renderer:function(h,a,e,b,d,j){var c=this.rowspan,g=j.currentPage,k=e.index;if(c){a.tdAttr='rowspan="'+c+'"'}if(k==null){k=b;if(g>1){k+=(g-1)*j.pageSize}}return k+1}},1,["rownumberer"],["rownumberer","component","gridcolumn","container","box","headercontainer"],{rownumberer:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.rownumberer"],0,[Ext.grid.column,"RowNumberer",Ext.grid,"RowNumberer"],0));(Ext.cmd.derive("Ext.grid.column.Template",Ext.grid.column.Column,{alternateClassName:"Ext.grid.TemplateColumn",initComponent:function(){var a=this;a.tpl=(!Ext.isPrimitive(a.tpl)&&a.tpl.compile)?a.tpl:new Ext.XTemplate(a.tpl);a.hasCustomRenderer=true;a.callParent(arguments)},defaultRenderer:function(c,d,a){var b=Ext.apply({},a.data,a.getAssociatedData());return this.tpl.apply(b)}},0,["templatecolumn"],["templatecolumn","component","gridcolumn","container","box","headercontainer"],{templatecolumn:true,component:true,gridcolumn:true,container:true,box:true,headercontainer:true},["widget.templatecolumn"],0,[Ext.grid.column,"Template",Ext.grid,"TemplateColumn"],0));(Ext.cmd.derive("Ext.grid.feature.Feature",Ext.util.Observable,{wrapsItem:false,isFeature:true,disabled:false,hasFeatureEvent:true,eventPrefix:null,eventSelector:null,view:null,grid:null,constructor:function(a){this.initialConfig=a;this.callParent(arguments)},clone:function(){return new this.self(this.initialConfig)},init:Ext.emptyFn,destroy:function(){this.clearListeners()},getFireEventArgs:function(b,a,c,d){return[b,a,c,d]},vetoEvent:Ext.emptyFn,enable:function(){this.disabled=false},disable:function(){this.disabled=true}},1,0,0,0,["feature.feature"],0,[Ext.grid.feature,"Feature"],0));(Ext.cmd.derive("Ext.grid.feature.AbstractSummary",Ext.grid.feature.Feature,{summaryRowCls:Ext.baseCSSPrefix+"grid-row-summary",summaryTableCls:Ext.plainTableCls+" "+Ext.baseCSSPrefix+"grid-table",summaryRowSelector:"."+Ext.baseCSSPrefix+"grid-row-summary",summaryRowTpl:{before:function(a,b){if(a.record.isSummary){this.summaryFeature.outputSummaryRecord(a.record,a,b);return false}},priority:1000},showSummaryRow:true,init:function(){var a=this;a.view.summaryFeature=a;a.rowTpl=a.view.self.prototype.rowTpl;a.view.addRowTpl(a.summaryRowTpl).summaryFeature=a},toggleSummaryRow:function(a){this.showSummaryRow=!!a},outputSummaryRecord:function(g,l,d){var h=l.view,a=h.rowValues,c=l.columns||h.headerCt.getVisibleGridColumns(),k=c.length,e,b,j={view:h,record:g,rowStyle:"",rowClasses:[this.summaryRowCls],itemClasses:[],recordIndex:-1,rowId:h.getRowId(g),columns:c};for(e=0;e',' '+Ext.baseCSSPrefix+'grid-group-row">','','',"{%",'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";',"%}",'
    ','
    ','{[values.groupHeaderTpl.apply(values.groupInfo, parent) || " "]}',"
    ","
    ","
    ",'',' ',Ext.baseCSSPrefix,'grid-table-summary"','border="0" cellspacing="0" cellpadding="0" style="width:100%">',"{[values.view.renderColumnSizer(out)]}",'',"{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent);","%}","",'',"{%me.outputSummaryRecord(values.summaryRecord, values, out);%}","","
    ","
    ","","","","{%this.nextTpl.applyOut(values, out, parent);%}","",{priority:200,syncRowHeights:function(d,k){d=Ext.fly(d,"syncDest");k=Ext.fly(k,"sycSrc");var b=this.owner,e=d.down(b.eventSelector,true),g,h=d.down(b.summaryRowSelector,true),c,a,j;if(e&&(g=k.down(b.eventSelector,true))){e.style.height=g.style.height="";if((a=e.offsetHeight)>(j=g.offsetHeight)){Ext.fly(g).setHeight(a)}else{if(j>a){Ext.fly(e).setHeight(j)}}}if(h&&(c=k.down(b.summaryRowSelector,true))){h.style.height=c.style.height="";if((a=h.offsetHeight)>(j=c.offsetHeight)){Ext.fly(c).setHeight(a)}else{if(j>a){Ext.fly(h).setHeight(j)}}}},syncContent:function(b,h){b=Ext.fly(b,"syncDest");h=Ext.fly(h,"sycSrc");var a=this.owner,d=b.down(a.eventSelector,true),c=h.down(a.eventSelector,true),g=b.down(a.summaryRowSelector,true),e=h.down(a.summaryRowSelector,true);if(d&&c){Ext.fly(d).syncContent(c)}if(g&&e){Ext.fly(g).syncContent(e)}}}],constructor:function(){this.groupCache={};this.callParent(arguments)},init:function(b){var c=this,a=c.view;a.isGrouping=true;if(c.lockingPartner&&c.lockingPartner.groupCache){c.groupCache=c.lockingPartner.groupCache}c.mixins.summary.init.call(c);c.callParent(arguments);a.headerCt.on({columnhide:c.onColumnHideShow,columnshow:c.onColumnHideShow,columnmove:c.onColumnMove,scope:c});a.addTableTpl(c.tableTpl).groupingFeature=c;a.addRowTpl(Ext.XTemplate.getTpl(c,"groupTpl")).groupingFeature=c;a.preserveScrollOnRefresh=true;if(a.store.buffered){c.collapsible=false}else{if(this.lockingPartner&&this.lockingPartner.dataSource){c.dataSource=a.dataSource=this.lockingPartner.dataSource}else{c.dataSource=a.dataSource=new Ext.grid.feature.GroupStore(c,a.store)}}c.grid.on({reconfigure:c.onReconfigure});a.on({afterrender:c.afterViewRender,scope:c,single:true})},clearGroupCache:function(){var b=this,a=b.groupCache={};if(b.lockingPartner){b.lockingPartner.groupCache=a}return a},vetoEvent:function(a,c,d,b){if(b.type!=="mouseover"&&b.type!=="mouseout"&&b.type!=="mouseenter"&&b.type!=="mouseleave"&&b.getTarget(this.eventSelector)){return false}},enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();a.isGrouping=true;if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");if(d){d.setChecked(true,true)}c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,e,c;a.isGrouping=false;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");if(e){e.setChecked(false,true)}d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},afterViewRender:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},onColumnHideShow:function(c,g){var k=this.view,b=k.headerCt,a=b.getMenu(),e=a.down("#groupMenuItem"),l=b.getGridColumns().length,j,h,d;if(e){if(b.getVisibleGridColumns().length>1){e.enable()}else{e.disable()}}if(k.rendered){j=k.el.query("."+this.ctCls);for(d=0,h=j.length;d','','
    {rowBody}
    ',"","",{priority:100,syncRowHeights:function(g,c){var a=this.owner,b=Ext.fly(g).down(a.eventSelector,true),h,d,e;if(b&&(h=Ext.fly(c).down(a.eventSelector,true))){if((d=b.offsetHeight)>(e=h.offsetHeight)){Ext.fly(h).setHeight(d)}else{if(e>d){Ext.fly(b).setHeight(e)}}}},syncContent:function(b,e){var a=this.owner,c=Ext.fly(b).down(a.eventSelector,true),d;if(c&&(d=Ext.fly(e).down(a.eventSelector,true))){Ext.fly(c).syncContent(d)}}}],init:function(b){var c=this,a=c.view;a.rowBodyFeature=c;if(!a.findFeature("rowwrap")){b.mon(a,{element:"el",mousedown:c.onMouseDown,scope:c});c.mon(b.getStore(),"remove",c.onStoreRemove,c)}a.headerCt.on({columnschanged:c.onColumnsChanged,scope:c});a.addTableTpl(c.tableTpl).rowBody=c;a.addRowTpl(Ext.XTemplate.getTpl(this,"extraRowTpl"));c.callParent(arguments)},onStoreRemove:function(b,d,c){var a=this.view,e;if(a.rendered){e=a.getNode(c);if(e){e=Ext.fly(e).next(this.eventSelector);if(e){e.remove()}}}},onMouseDown:function(c){var b=this,a=c.getTarget(b.eventSelector);if(a&&Ext.fly(a=a.previousSibling).is(b.view.getItemSelector())){c.target=a;b.view.handleEvent(c)}},getSelectedRow:function(a,c){var b=a.getNode(c,false);if(b){return Ext.fly(b).down(this.eventSelector)}return null},onColumnsChanged:function(d){var b=this.view.el.query(this.rowBodyTdSelector),e=d.getVisibleGridColumns().length,a=b.length,c;for(c=0;c','','',"{[values.view.renderColumnSizer(out)]}","{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent)","%}","
    ","","",{priority:200}],init:function(a){var b=this;b.view.addTableTpl(b.tableTpl);b.view.addRowTpl(Ext.XTemplate.getTpl(b,"wrapTpl"));b.view.headerCt.on({columnhide:b.onColumnHideShow,columnshow:b.onColumnHideShow,scope:b})},onColumnHideShow:function(){var b=this.view,c=b.el.query(this.rowWrapTd),e=b.headerCt.getVisibleGridColumns().length,a=c.length,d;for(d=0;d','','',"
    ",""],style:"overflow:hidden",itemId:"summaryBar",cls:[c.dockedSummaryCls,c.dockedSummaryCls+"-"+c.dock],xtype:"component",dock:c.dock,weight:10000000})[0]},afterrender:function(){b.body.addCls(c.panelBodyCls+c.dock);a.mon(a.el,{scroll:c.onViewScroll,scope:c});c.onStoreUpdate()},single:true});b.headerCt.afterComponentLayout=Ext.Function.createSequence(b.headerCt.afterComponentLayout,function(){c.summaryBar.innerCt.setWidth(this.getFullWidth()+Ext.getScrollbarSize().width)})}else{c.view.addFooterFn(c.renderTFoot)}b.on({columnmove:c.onStoreUpdate,scope:c});a.mon(a.store,{update:c.onStoreUpdate,datachanged:c.onStoreUpdate,scope:c})},renderTFoot:function(b,c){var a=b.view,d=a.findFeature("summary");if(d.showSummaryRow){c.push("");d.outputSummaryRecord(d.createSummaryRecord(a),b,c);c.push("")}},vetoEvent:function(a,c,d,b){return !b.getTarget(this.summaryRowSelector)},onViewScroll:function(){this.summaryBar.el.dom.scrollLeft=this.view.el.dom.scrollLeft},createSummaryRecord:function(a){var d=a.headerCt.getVisibleGridColumns(),h={records:a.store.getRange()},g=d.length,c,e,b=this.summaryRecord||(this.summaryRecord=new a.store.model(null,a.id+"-summary-record"));b.beginEdit();for(c=0;c>#normalHeaderCt",items:j},g={itemId:"normalHeaderCt",stretchMaxPartner:"^^>>#lockedHeaderCt",items:d},l={lockedWidth:0,locked:a,normal:g};if(Ext.isObject(c)){Ext.applyIf(a,c);Ext.applyIf(g,c);Ext.apply(k,c);c=c.items}for(e=0,h=c.length;ea.clientWidth){d=0}b.el.dom.style.borderBottomWidth=d+"px";if(!Ext.isBorderBox){b.el.setHeight(b.lastBox.height)}},onLockedViewMouseWheel:function(j){var d=this,h=-d.scrollDelta,a=h*j.getWheelDeltas().y,b=d.lockedGrid.getView().el.dom,c,g;if(!d.ignoreMousewheel){if(b){c=b.scrollTop!==b.scrollHeight-b.clientHeight;g=b.scrollTop!==0}if((a<0&&g)||(a>0&&c)){j.stopEvent();b.scrollTop+=a;d.normalGrid.getView().el.dom.scrollTop=b.scrollTop;d.onNormalViewScroll()}}},onLockedViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){h.scrollTop=g.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);a.style.position="absolute";a.style.top=b.style.top}}},onNormalViewScroll:function(){var e=this,d=e.lockedGrid.getView(),c=e.normalGrid.getView(),h=c.el.dom,g=d.el.dom,a,b;if(h.scrollTop!==g.scrollTop){g.scrollTop=h.scrollTop;if(e.store.buffered){b=d.el.child("table",true);a=c.el.child("table",true);b.style.position="absolute";b.style.top=a.style.top}}},syncRowHeights:function(){var e=this,a,d=e.lockedGrid.getView(),b=e.normalGrid.getView(),g=d.all.slice(),j=b.all.slice(),c=g.length,h;if(j.length===c){for(a=0;a','
    ','',h.join(""),"
    ","
    ",""].join("")},"after");return{record:a,node:e,el:d,expanding:false,collapsing:false,animating:false,animateEl:d.down("div"),targetEl:d.down("tbody")}},getAnimWrap:function(d,a){if(!this.animate){return null}var b=this.animWraps,c=b[d.internalId];if(a!==false){while(!c&&d){d=d.parentNode;if(d){c=b[d.internalId]}}}return c},doAdd:function(c,h){var j=this,a=j.bufferRender(c,h,true),e=c[0],k=e.parentNode,l=j.all,n,d=j.getAnimWrap(k),m,b,g;if(!d||!d.expanding){return j.callParent(arguments)}k=d.record;m=d.targetEl;b=m.dom.childNodes;g=b.length;n=h-j.indexInStore(k)-1;if(!g||n>=g){m.appendChild(a)}else{Ext.fly(b[n]).insertSibling(a,"before",true)}l.insert(h,a);if(d.isAnimating){j.onExpand(k)}},onRemove:function(g,a,b){var d=this,e,c;if(d.viewReady){e=d.store.getCount()===0;if(e){d.refresh()}else{for(c=b.length-1;c>=0;--c){d.doRemove(a[c],b[c])}}if(d.hasListeners.itemremove){for(c=b.length-1;c>=0;--c){d.fireEvent("itemremove",a[c],b[c])}}}},doRemove:function(a,c){var h=this,d=h.all,b=h.getAnimWrap(a),g=d.item(c),e=g?g.dom:null;if(!e||!b||!b.collapsing){return h.callParent(arguments)}b.targetEl.dom.insertBefore(e,b.targetEl.dom.firstChild);d.removeElement(c)},onBeforeExpand:function(d,b,c){var e=this,a;if(e.rendered&&e.all.getCount()&&e.animate){if(e.getNode(d)){a=e.getAnimWrap(d,false);if(!a){a=e.animWraps[d.internalId]=e.createAnimWrap(d);a.animateEl.setHeight(0)}else{if(a.collapsing){a.targetEl.select(e.itemSelector).remove()}}a.expanding=true;a.collapsing=false}}},onExpand:function(k){var j=this,g=j.animQueue,a=k.getId(),c=j.getNode(k),h=c?j.indexOf(c):-1,e,b,l,d=Ext.isIEQuirks?1:0;if(j.singleExpand){j.ensureSingleExpand(k)}if(h===-1){return}e=j.getAnimWrap(k,false);if(!e){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c);j.refreshSize();return}b=e.animateEl;l=e.targetEl;b.stopAnimation();g[a]=true;b.dom.style.height=d+"px";b.animate({from:{height:d},to:{height:l.getHeight()},duration:j.expandDuration,listeners:{afteranimate:function(){var m=l.query(j.itemSelector);if(m.length){e.el.insertSibling(m,"before",true)}e.el.remove();j.refreshSize();delete j.animWraps[e.record.internalId];delete g[a]}},callback:function(){k.isExpandingOrCollapsing=false;j.fireEvent("afteritemexpand",k,h,c)}});e.isAnimating=true},onBeforeCollapse:function(e,b,c,h,d){var g=this,a;if(g.rendered&&g.all.getCount()){if(g.animate){if(Ext.Array.contains(e.stores,g.store)){a=g.getAnimWrap(e);if(!a){a=g.animWraps[e.internalId]=g.createAnimWrap(e,c)}else{if(a.expanding){a.targetEl.select(this.itemSelector).remove()}}a.expanding=false;a.collapsing=true;a.callback=h;a.scope=d}}else{g.onCollapseCallback=h;g.onCollapseScope=d}}},onCollapse:function(d){var g=this,a=g.animQueue,j=d.getId(),e=g.getNode(d),c=e?g.indexOf(e):-1,b=g.getAnimWrap(d),h;if(!g.all.getCount()||!Ext.Array.contains(d.stores,g.store)){return}if(!b){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);g.refreshSize();Ext.callback(g.onCollapseCallback,g.onCollapseScope);g.onCollapseCallback=g.onCollapseScope=null;return}h=b.animateEl;a[j]=true;h.stopAnimation();h.animate({to:{height:Ext.isIEQuirks?1:0},duration:g.collapseDuration,listeners:{afteranimate:function(){b.el.remove();g.refreshSize();delete g.animWraps[b.record.internalId];delete a[j]}},callback:function(){d.isExpandingOrCollapsing=false;g.fireEvent("afteritemcollapse",d,c,e);Ext.callback(b.callback,b.scope);b.callback=b.scope=null}});b.isAnimating=true},isAnimating:function(a){return !!this.animQueue[a.getId()]},expand:function(d,c,h,e){var g=this,b=!!g.animate,a;if(!b||!d.isExpandingOrCollapsing){if(!d.isLeaf()){d.isExpandingOrCollapsing=b}Ext.suspendLayouts();a=d.expand(c,h,e);Ext.resumeLayouts(true);return a}},collapse:function(c,b,g,d){var e=this,a=!!e.animate;if(!a||!c.isExpandingOrCollapsing){if(!c.isLeaf()){c.isExpandingOrCollapsing=a}return c.collapse(b,g,d)}},toggle:function(b,a,d,c){if(b.isExpanded()){this.collapse(b,a,d,c)}else{this.expand(b,a,d,c)}},onItemDblClick:function(a,e,c){var d=this,b=d.editingPlugin;d.callParent(arguments);if(d.toggleOnDblClick&&a.isExpandable()&&!(b&&b.clicksToEdit===2)){d.toggle(a)}},onBeforeItemMouseDown:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)){return false}return this.callParent(arguments)},onItemClick:function(a,c,b,d){if(d.getTarget(this.expanderSelector,c)&&a.isExpandable()){this.toggle(a,d.ctrlKey);return false}return this.callParent(arguments)},onExpanderMouseOver:function(b,a){b.getTarget(this.cellSelector,10,true).addCls(this.expanderIconOverCls)},onExpanderMouseOut:function(b,a){b.getTarget(this.cellSelector,10,true).removeCls(this.expanderIconOverCls)},getStoreListeners:function(){var b=this,a=b.callParent(arguments);return Ext.apply(a,{beforeexpand:b.onBeforeExpand,expand:b.onExpand,beforecollapse:b.onBeforeCollapse,collapse:b.onCollapse,write:b.onStoreWrite,datachanged:b.onStoreDataChanged})},onBindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mon(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mon(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},onUnbindStore:function(){var a=this,b=a.getTreeStore();a.callParent(arguments);a.mun(b,{scope:a,beforefill:a.onBeforeFill,fillcomplete:a.onFillComplete});if(!b.remoteSort){a.mun(b,{scope:a,beforesort:a.onBeforeSort,sort:a.onSort})}},getTreeStore:function(){return this.panel.store},ensureSingleExpand:function(b){var a=b.parentNode;if(a){a.eachChild(function(c){if(c!==b&&c.isExpanded()){c.collapse()}})}},shouldUpdateCell:function(b,e,d){if(d){var c=0,a=d.length;for(;c0?1:-1;if(Math.abs(c)>=20||(a!==g.lastScrollDirection)){g.lastScrollDirection=a;g.handleViewScroll(g.lastScrollDirection);h=true}}if(!h){if(g.lockingPartner&&g.lockingPartner.scrollTop!==b){g.lockingPartner.view.el.dom.scrollTop=b}}},handleViewScroll:function(h){var e=this,g=e.view.all,b=e.store,j=e.viewSize,a=(b.buffered?b.getTotalCount():b.getCount()),d,c;if(h==-1){if(g.startIndex){if((e.getFirstVisibleRowIndex()-g.startIndex)o.endIndex||eo.endIndex){a=Math.max(b-o.startIndex,0);if(k.variableRowHeight){n=o.item(o.startIndex+a,true).offsetTop}o.scroll(Ext.Array.slice(h,o.endIndex+1-b),1,a,b,e);if(k.variableRowHeight){l=k.bodyTop+n}else{l=g}}else{a=Math.max(o.endIndex-e,0);d=o.startIndex;o.scroll(Ext.Array.slice(h,0,o.startIndex-b),-1,a,b,e);if(k.variableRowHeight){l=k.bodyTop-o.item(d,true).offsetTop}else{l=g}}}k.position=k.scrollTop;if(m.positionBody){k.setBodyTop(l,g)}if(j&&!j.disabled&&!c){j.onRangeFetched(h,b,e,true);if(j.scrollTop!==k.scrollTop){j.view.el.dom.scrollTop=k.scrollTop}}},setBodyTop:function(d,g){var e=this,b=e.view,c=e.store,a=b.body.dom,h;d=Math.floor(d);if(g!==undefined){h=d-g;d=g}a.style.position="absolute";a.style.top=(e.bodyTop=d)+"px";if(h){e.scrollTop=e.position=b.el.dom.scrollTop-=h}if(b.all.endIndex===(c.buffered?c.getTotalCount():c.getCount())-1){e.stretchView(b,e.bodyTop+a.offsetHeight)}},getFirstVisibleRowIndex:function(k,c,b,g){var h=this,j=h.view,m=j.all,a=m.elements,d=j.el.dom.clientHeight,e,l;if(m.getCount()&&h.variableRowHeight){if(!arguments.length){k=m.startIndex;c=m.endIndex;b=h.scrollTop;g=b+d;if(h.bodyTop>g||h.bodyTop+j.body.getHeight()g||j.bodyTop+k.body.getHeight()g){return j.getLastVisibleRowIndex(l,e-1,b,g)}h=m+a[e].offsetHeight;if(h>=g){return e}else{if(e!==c){return j.getLastVisibleRowIndex(e+1,c,b,g)}}}return j.getFirstVisibleRowIndex()+Math.ceil(d/j.rowHeight)},getScrollHeight:function(){var d=this,a=d.view,b=d.store,c=!d.hasOwnProperty("rowHeight"),e=d.store.getCount();if(!e){return 0}if(c){if(a.all.getCount()){d.rowHeight=Math.floor(a.body.getHeight()/a.all.getCount())}}return this.scrollHeight=Math.floor((b.buffered?b.getTotalCount():b.getCount())*d.rowHeight)},attemptLoad:function(c,a){var b=this;if(b.scrollToLoadBuffer){if(!b.loadTask){b.loadTask=new Ext.util.DelayedTask(b.doAttemptLoad,b,[])}b.loadTask.delay(b.scrollToLoadBuffer,b.doAttemptLoad,b,[c,a])}else{b.store.getRange(c,a,{callback:b.onRangeFetched,scope:b,fireEvent:false})}},cancelLoad:function(){if(this.loadTask){this.loadTask.cancel()}},doAttemptLoad:function(b,a){this.store.getRange(b,a,{callback:this.onRangeFetched,scope:this,fireEvent:false})},destroy:function(){var b=this,a=b.view;if(a&&a.el){a.el.un("scroll",b.onViewScroll,b)}Ext.destroy(b.viewListeners,b.storeListeners,b.gridListeners)}},0,0,0,0,["plugin.bufferedrenderer"],0,[Ext.grid.plugin,"BufferedRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.Editing",Ext.AbstractPlugin,{clicksToEdit:2,triggerEvent:undefined,relayedEvents:["beforeedit","edit","validateedit","canceledit"],defaultFieldXType:"textfield",editStyle:"",constructor:function(a){var b=this;b.addEvents("beforeedit","edit","validateedit","canceledit");b.callParent(arguments);b.mixins.observable.constructor.call(b);b.on("edit",function(c,d){b.fireEvent("afteredit",c,d)})},init:function(a){var b=this;b.grid=a;b.view=a.view;b.initEvents();b.mon(a,{reconfigure:b.onReconfigure,scope:b,beforerender:{fn:b.onReconfigure,single:true,scope:b}});a.relayEvents(b,b.relayedEvents);if(b.grid.ownerLockable){b.grid.ownerLockable.relayEvents(b,b.relayedEvents)}a.isEditable=true;a.editingPlugin=a.view.editingPlugin=b},onReconfigure:function(){var a=this.grid;a=a.ownerLockable?a.ownerLockable:a;this.initFieldAccessors(a.getView().getGridColumns())},destroy:function(){var b=this,a=b.grid;Ext.destroy(b.keyNav);b.clearListeners();if(a){b.removeFieldAccessors(a.columnManager.getColumns());a.editingPlugin=a.view.editingPlugin=b.grid=b.view=b.editor=b.keyNav=null}},getEditStyle:function(){return this.editStyle},initFieldAccessors:function(a){if(a.isGroupHeader){a=a.getGridColumns()}else{if(!Ext.isArray(a)){a=[a]}}var d=this,g,e=a.length,b;for(g=0;g',"{%","values.view.renderRows(values.rows, values.viewStartIndex, out);","%}","",{priority:0}],rowTpl:["{%",'var dataRowCls = values.recordIndex === -1 ? "" : " '+Ext.baseCSSPrefix+'grid-data-row";',"%}",'
    ",'{%',"parent.view.renderCell(values, parent.record, parent.recordIndex, xindex - 1, out, parent)","%}","","
    ",{priority:0}],cellTpl:['
    ','
    {style}">{value}
    ',"
    ",{priority:0}],selectors:{bodySelector:"div",nodeContainerSelector:"div",itemSelector:"dl."+Ext.baseCSSPrefix+"grid-row",dataRowSelector:"dl."+Ext.baseCSSPrefix+"grid-data-row",cellSelector:"dt."+Ext.baseCSSPrefix+"grid-cell",innerSelector:"div."+Ext.baseCSSPrefix+"grid-cell-inner",getNodeContainerSelector:function(){return this.getBodySelector()},getNodeContainer:function(){return this.el.getById(this.id+"-table",true)}},init:function(b){var a=b.getView();a.tableTpl=Ext.XTemplate.getTpl(this,"tableTpl");a.rowTpl=Ext.XTemplate.getTpl(this,"rowTpl");a.cellTpl=Ext.XTemplate.getTpl(this,"cellTpl");Ext.apply(a,this.selectors)}},0,0,0,0,["plugin.divrenderer"],0,[Ext.grid.plugin,"DivRenderer"],0));(Ext.cmd.derive("Ext.grid.plugin.DragDrop",Ext.AbstractPlugin,{dragText:"{0} selected row{1}",ddGroup:"GridDD",enableDrop:true,enableDrag:true,containerScroll:false,init:function(a){a.on("render",this.onViewRender,this,{single:true})},destroy:function(){Ext.destroy(this.dragZone,this.dropZone)},enable:function(){var a=this;if(a.dragZone){a.dragZone.unlock()}if(a.dropZone){a.dropZone.unlock()}a.callParent()},disable:function(){var a=this;if(a.dragZone){a.dragZone.lock()}if(a.dropZone){a.dropZone.lock()}a.callParent()},onViewRender:function(a){var b=this,c;if(b.enableDrag){if(b.containerScroll){c=a.getEl()}b.dragZone=new Ext.view.DragZone({view:a,ddGroup:b.dragGroup||b.ddGroup,dragText:b.dragText,containerScroll:b.containerScroll,scrollEl:c})}if(b.enableDrop){b.dropZone=new Ext.grid.ViewDropZone({view:a,ddGroup:b.dropGroup||b.ddGroup})}}},0,0,0,0,["plugin.gridviewdragdrop"],0,[Ext.grid.plugin,"DragDrop"],0));(Ext.cmd.derive("Ext.grid.plugin.RowEditing",Ext.grid.plugin.Editing,{lockableScope:"top",editStyle:"row",autoCancel:true,errorSummary:true,constructor:function(){var a=this;a.callParent(arguments);if(!a.clicksToMoveEditor){a.clicksToMoveEditor=a.clicksToEdit}a.autoCancel=!!a.autoCancel},destroy:function(){Ext.destroy(this.editor);this.callParent(arguments)},startEdit:function(a,e){var d=this,c=d.getEditor(),b;if(c.beforeEdit()!==false){b=d.callParent(arguments);if(b){d.context=b;if(d.lockingPartner){d.lockingPartner.cancelEdit()}c.startEdit(b.record,b.column,b);return true}}return false},cancelEdit:function(){var a=this;if(a.editing){a.getEditor().cancelEdit();a.callParent(arguments);return}return true},completeEdit:function(){var a=this;if(a.editing&&a.validateEdit()){a.editing=false;a.fireEvent("edit",a,a.context)}},validateEdit:function(){var l=this,h=l.editor,b=l.context,g=b.record,n={},d={},k=h.query(">[isFormField]"),j,c=k.length,a,m;for(j=0;jg){d.style.height=b+"px"}else{if(g>b){c.style.height=g+"px"}}}}},getHeaderConfig:function(){var a=this;return{width:24,lockable:false,sortable:false,resizable:false,draggable:false,hideable:false,menuDisabled:true,tdCls:Ext.baseCSSPrefix+"grid-cell-special",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-row-expander",renderer:function(c,b){if(!a.grid.ownerLockable){b.tdAttr+=' rowspan="2"'}return'
    '},processEvent:function(h,d,b,k,g,j,c){if(h=="mousedown"&&j.getTarget(".x-grid-row-expander")){a.toggleRow(k,c);return a.selectRowOnExpand}}}}},0,0,0,0,["plugin.rowexpander"],0,[Ext.grid.plugin,"RowExpander"],0));(Ext.cmd.derive("Ext.grid.property.Grid",Ext.grid.Panel,{alternateClassName:"Ext.grid.PropertyGrid",valueField:"value",nameField:"name",inferTypes:true,enableColumnMove:false,columnLines:true,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,gridCls:Ext.baseCSSPrefix+"property-grid",initComponent:function(){var a=this;a.source=a.source||{};a.addCls(a.gridCls);a.plugins=a.plugins||[];a.plugins.push(new Ext.grid.plugin.CellEditing({clicksToEdit:a.clicksToEdit,startEdit:function(b,c){return this.self.prototype.startEdit.call(this,b,a.headerCt.child("#"+a.valueField))}}));a.selModel={selType:"cellmodel",onCellSelect:function(b){if(b.column!=1){b.column=1}return this.self.prototype.onCellSelect.call(this,b)}};a.sourceConfig=Ext.apply({},a.sourceConfig);if(!a.store){a.propStore=a.store=new Ext.grid.property.Store(a,a.source)}a.configure(a.sourceConfig);if(a.sortableColumns){a.store.sort("name","ASC")}a.columns=new Ext.grid.property.HeaderContainer(a,a.store);a.addEvents("beforepropertychange","propertychange");a.callParent();a.getView().walkCells=this.walkCells;a.editors={date:new Ext.grid.CellEditor({field:new Ext.form.field.Date({selectOnFocus:true})}),string:new Ext.grid.CellEditor({field:new Ext.form.field.Text({selectOnFocus:true})}),number:new Ext.grid.CellEditor({field:new Ext.form.field.Number({selectOnFocus:true})}),"boolean":new Ext.grid.CellEditor({field:new Ext.form.field.ComboBox({editable:false,store:[[true,a.headerCt.trueText],[false,a.headerCt.falseText]]})})};a.store.on("update",a.onUpdate,a)},configure:function(b){var h=this,k=h.store,d=0,e=h.store.getCount(),l=h.nameField,m=h.valueField,a,j,c,g;h.configureLegacy(b);if(h.inferTypes){for(;d0);if(j){t.widthModel=t.heightModel=null;b=v.getSizeModel(l&&l.widthModel.pairsByHeightOrdinal[l.heightModel.ordinal]);if(h){t.sizeModel=b}t.widthModel=b.width;t.heightModel=b.height;if(l&&!t.isComponentChild){l.remainingChildDimensions+=2}}else{if(a){t.recoverProp("x",a,d);t.recoverProp("y",a,d);if(t.widthModel.calculated){t.recoverProp("width",a,d)}else{if("width" in a){++s}}if(t.heightModel.calculated){t.recoverProp("height",a,d)}else{if("height" in a){++s}}if(l&&!t.isComponentChild){l.remainingChildDimensions+=s}}}if(a&&p&&p.manageMargins){t.recoverProp("margin-top",a,d);t.recoverProp("margin-right",a,d);t.recoverProp("margin-bottom",a,d);t.recoverProp("margin-left",a,d)}if(c){k=c.heightModel;r=c.widthModel;if(r&&k&&g&&w){if(g.shrinkWrap&&w.shrinkWrap){if(r.constrainedMax&&k.constrainedMin){k=null}}}if(r){t.widthModel=r}if(k){t.heightModel=k}if(c.state){Ext.apply(t.state,c.state)}}return u},initContinue:function(e){var g=this,d=g.ownerCtContext,a=g.target,c=g.widthModel,h=a.getHierarchyState(),b;if(c.fixed){h.inShrinkWrapTable=false}else{delete h.inShrinkWrapTable}if(e){if(d&&c.shrinkWrap){b=d.isBoxParent?d:d.boxParent;if(b){b.addBoxChild(g)}}else{if(c.natural){g.boxParent=d}}}return e},initDone:function(d){var b=this,a=b.props,c=b.state;if(b.remainingChildDimensions===0){a.containerChildrenSizeDone=true}if(d){a.containerLayoutDone=true}if(b.boxChildren&&b.boxChildren.length&&b.widthModel.shrinkWrap){b.el.setWidth(10000);c.blocks=(c.blocks||0)+1}},initAnimation:function(){var b=this,c=b.target,a=b.ownerCtContext;if(a&&a.isTopLevel){b.animatePolicy=c.ownerLayout.getAnimatePolicy(b)}else{if(!a&&c.isCollapsingOrExpanding&&c.animCollapse){b.animatePolicy=c.componentLayout.getAnimatePolicy(b)}}if(b.animatePolicy){b.context.queueAnimation(b)}},addCls:function(a){this.getClassList().addMany(a)},removeCls:function(a){this.getClassList().removeMany(a)},addBlock:function(b,d,e){var c=this,g=c[b]||(c[b]={}),a=g[e]||(g[e]={});if(!a[d.id]){a[d.id]=d;++d.blockCount;++c.context.blockCount}},addBoxChild:function(d){var c=this,b,a=d.widthModel;d.boxParent=this;d.measuresBox=a.shrinkWrap?d.hasRawContent:a.natural;if(d.measuresBox){b=c.boxChildren;if(b){b.push(d)}else{c.boxChildren=[d]}}},addPositionStyles:function(d,b){var a=b.x,e=b.y,c=0;if(a!==undefined){d.left=a+"px";++c}if(e!==undefined){d.top=e+"px";++c}return c},addTrigger:function(g,h){var e=this,a=h?"domTriggers":"triggers",j=e[a]||(e[a]={}),b=e.context,d=b.currentLayout,c=j[g]||(j[g]={});if(!c[d.id]){c[d.id]=d;++d.triggerCount;c=b.triggers[h?"dom":"data"];(c[d.id]||(c[d.id]=[])).push({item:this,prop:g});if(e.props[g]!==undefined){if(!h||!(e.dirty&&(g in e.dirty))){++d.firedTriggers}}}},boxChildMeasured:function(){var b=this,c=b.state,a=(c.boxesMeasured=(c.boxesMeasured||0)+1);if(a==b.boxChildren.length){c.clearBoxWidth=1;++b.context.progressCount;b.markDirty()}},borderNames:["border-top-width","border-right-width","border-bottom-width","border-left-width"],marginNames:["margin-top","margin-right","margin-bottom","margin-left"],paddingNames:["padding-top","padding-right","padding-bottom","padding-left"],trblNames:["top","right","bottom","left"],cacheMissHandlers:{borderInfo:function(a){var b=a.getStyles(a.borderNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},marginInfo:function(a){var b=a.getStyles(a.marginNames,a.trblNames);b.width=b.left+b.right;b.height=b.top+b.bottom;return b},paddingInfo:function(b){var a=b.frameBodyContext||b,c=a.getStyles(b.paddingNames,b.trblNames);c.width=c.left+c.right;c.height=c.top+c.bottom;return c}},checkCache:function(a){return this.cacheMissHandlers[a](this)},clearAllBlocks:function(a){var c=this[a],b;if(c){for(b in c){this.clearBlocks(a,b)}}},clearBlocks:function(c,g){var h=this[c],b=h&&h[g],d,e,a;if(b){delete h[g];d=this.context;for(a in b){e=b[a];--d.blockCount;if(!--e.blockCount&&!e.pending&&!e.done){d.queueLayout(e)}}}},block:function(a,b){this.addBlock("blocks",a,b)},domBlock:function(a,b){this.addBlock("domBlocks",a,b)},fireTriggers:function(b,g){var h=this[b],d=h&&h[g],c=this.context,e,a;if(d){for(a in d){e=d[a];++e.firedTriggers;if(!e.done&&!e.blockCount&&!e.pending){c.queueLayout(e)}}}},flush:function(){var b=this,a=b.dirty,c=b.state,d=b.el;b.dirtyCount=0;if(b.classList&&b.classList.dirty){b.classList.flush()}if("attributes" in b){d.set(b.attributes);delete b.attributes}if("innerHTML" in b){d.innerHTML=b.innerHTML;delete b.innerHTML}if(c&&c.clearBoxWidth){c.clearBoxWidth=0;b.el.setStyle("width",null);if(!--c.blocks){b.context.queueItemLayouts(b)}}if(a){delete b.dirty;b.writeProps(a,true)}},flushAnimations:function(){var p=this,c=p.previousSize,m,o,e,h,g,d,k,n,l,a,b;if(c){m=p.target;o=m.layout&&m.layout.animate;if(o){e=Ext.isNumber(o)?o:o.duration}h=Ext.Object.getKeys(p.animatePolicy);g=Ext.apply({},{from:{},to:{},duration:e||Ext.fx.Anim.prototype.duration},o);for(d=0,k=0,n=h.length;k0||m>0)){if(!x.frameBodyContext){u=x.paddingInfo.width;l=x.paddingInfo.height}if(q){q=s(parseInt(q,10)-(x.borderInfo.width+u),0);j.width=q+"px";++h}if(m){m=s(parseInt(m,10)-(x.borderInfo.height+l),0);j.height=m+"px";++h}}if(x.wrapsComponent&&Ext.isIE9&&Ext.isStrict){if((g=q!==undefined&&x.hasOverflowY)||(a=m!==undefined&&x.hasOverflowX)){p=x.isAbsolute;if(p===undefined){p=false;n=x.target.getTargetEl();t=n.getStyle("position");if(t=="absolute"){t=n.getStyle("box-sizing");p=(t=="border-box")}x.isAbsolute=p}if(p){r=Ext.getScrollbarSize();if(g){q=parseInt(q,10)+r.width;j.width=q+"px";++h}if(a){m=parseInt(m,10)+r.height;j.height=m+"px";++h}}}}if(h){c.setStyle(j)}}},1,0,0,0,0,0,[Ext.layout,"ContextItem"],function(){var c={dom:true,parseInt:true,suffix:"px"},b={dom:true},a={dom:false};this.prototype.styleInfo={containerChildrenSizeDone:a,containerLayoutDone:a,displayed:a,done:a,x:a,y:a,columnWidthsDone:a,left:c,top:c,right:c,bottom:c,width:c,height:c,"border-top-width":c,"border-right-width":c,"border-bottom-width":c,"border-left-width":c,"margin-top":c,"margin-right":c,"margin-bottom":c,"margin-left":c,"padding-top":c,"padding-right":c,"padding-bottom":c,"padding-left":c,"line-height":b,display:b}}));(Ext.cmd.derive("Ext.layout.Context",Ext.Base,{remainingLayouts:0,state:0,constructor:function(a){var b=this;Ext.apply(b,a);b.items={};b.layouts={};b.blockCount=0;b.cycleCount=0;b.flushCount=0;b.calcCount=0;b.animateQueue=b.newQueue();b.completionQueue=b.newQueue();b.finalizeQueue=b.newQueue();b.finishQueue=b.newQueue();b.flushQueue=b.newQueue();b.invalidateData={};b.layoutQueue=b.newQueue();b.invalidQueue=[];b.triggers={data:{},dom:{}}},callLayout:function(b,a){this.currentLayout=b;b[a](this.getCmp(b.owner))},cancelComponent:function(j,a,m){var p=this,h=j,l=!j.isComponent,b=l?h.length:1,d,c,o,n,g,s,q,r,t,e;for(d=0;d0},runLayout:function(b){var a=this,c=a.getCmp(b.owner);b.pending=false;if(c.state.blocks){return}b.done=true;++b.calcCount;++a.calcCount;b.calculate(c);if(b.done){a.layoutDone(b);if(b.completeLayout){a.queueCompletion(b)}if(b.finalizeLayout){a.queueFinalize(b)}}else{if(!b.pending&&!b.invalid&&!(b.blockCount+b.triggerCount-b.firedTriggers)){a.queueLayout(b)}}},setItemSize:function(h,g,b){var d=h,a=1,c,e;if(h.isComposite){d=h.elements;a=d.length;h=d[0]}else{if(!h.dom&&!h.el){a=d.length;h=d[0]}}for(e=0;e0){b.insert(0,l)}}}}},getItemsRenderTree:function(a){this.beforeRenderItems(a);return this.callParent(arguments)},renderItems:function(a,b){this.beforeRenderItems(a);this.callParent(arguments)},configureItem:function(a){this.callParent(arguments);a.animCollapse=a.border=false;if(this.fill){a.flex=1}},beginLayout:function(a){this.callParent(arguments);this.updatePanelClasses(a)},updatePanelClasses:function(e){var c=e.visibleItems,d=c.length,a=true,b,h,g;for(b=0;b','
     ',"
    ",""],baseCls:Ext.baseCSSPrefix+"splitter",collapsedClsInternal:Ext.baseCSSPrefix+"splitter-collapsed",canResize:true,collapsible:false,collapseOnDblClick:true,defaultSplitMin:40,defaultSplitMax:1000,collapseTarget:"next",horizontal:false,vertical:false,size:5,getTrackerConfig:function(){return{xclass:"Ext.resizer.SplitterTracker",el:this.el,splitter:this}},beforeRender:function(){var a=this,b=a.getCollapseTarget();a.callParent();if(b.collapsed){a.addCls(a.collapsedClsInternal)}if(!a.canResize){a.addCls(a.baseCls+"-noresize")}Ext.applyIf(a.renderData,{collapseDir:a.getCollapseDirection(),collapsible:a.collapsible||b.collapsible});a.protoEl.unselectable()},onRender:function(){var b=this,a;b.callParent(arguments);if(b.performCollapse!==false){if(b.renderData.collapsible){b.mon(b.collapseEl,"click",b.toggleTargetCmp,b)}if(b.collapseOnDblClick){b.mon(b.el,"dblclick",b.toggleTargetCmp,b)}}b.mon(b.getCollapseTarget(),{collapse:b.onTargetCollapse,expand:b.onTargetExpand,beforeexpand:b.onBeforeTargetExpand,beforecollapse:b.onBeforeTargetCollapse,scope:b});if(b.canResize){b.tracker=Ext.create(b.getTrackerConfig());b.relayEvents(b.tracker,["beforedragstart","dragstart","dragend"])}a=b.collapseEl;if(a){a.lastCollapseDirCls=b.collapseDirProps[b.collapseDirection].cls}},getCollapseDirection:function(){var g=this,c=g.collapseDirection,e,a,b,d;if(!c){e=g.collapseTarget;if(e.isComponent){c=e.collapseDirection}if(!c){d=g.ownerCt.layout.type;if(e.isComponent){b=g.ownerCt.items;a=Number(b.indexOf(e)===b.indexOf(g)-1)<<1|Number(d==="hbox")}else{a=Number(g.collapseTarget==="prev")<<1|Number(d==="hbox")}c=["bottom","right","top","left"][a]}g.collapseDirection=c}g.setOrientation((c==="top"||c==="bottom")?"horizontal":"vertical");return c},getCollapseTarget:function(){var a=this;return a.collapseTarget.isComponent?a.collapseTarget:a.collapseTarget==="prev"?a.previousSibling():a.nextSibling()},setCollapseEl:function(b){var a=this.collapseEl;if(a){a.setDisplayed(b)}},onBeforeTargetExpand:function(a){this.setCollapseEl("none")},onBeforeTargetCollapse:function(){this.setCollapseEl("none")},onTargetCollapse:function(a){this.el.addCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},onTargetExpand:function(a){this.el.removeCls([this.collapsedClsInternal,this.collapsedCls]);this.setCollapseEl("")},collapseDirProps:{top:{cls:Ext.baseCSSPrefix+"layout-split-top"},right:{cls:Ext.baseCSSPrefix+"layout-split-right"},bottom:{cls:Ext.baseCSSPrefix+"layout-split-bottom"},left:{cls:Ext.baseCSSPrefix+"layout-split-left"}},orientationProps:{horizontal:{opposite:"vertical",fixedAxis:"height",stretchedAxis:"width"},vertical:{opposite:"horizontal",fixedAxis:"width",stretchedAxis:"height"}},applyCollapseDirection:function(){var c=this,b=c.collapseEl,d=c.collapseDirProps[c.collapseDirection],a;if(b){a=b.lastCollapseDirCls;if(a){b.removeCls(a)}b.addCls(b.lastCollapseDirCls=d.cls)}},applyOrientation:function(){var e=this,c=e.orientation,d=e.orientationProps[c],g=e.size,b=d.fixedAxis,h=d.stretchedAxis,a=e.baseCls+"-";e[c]=true;e[d.opposite]=false;if(!e.hasOwnProperty(b)||e[b]==="100%"){e[b]=g}if(!e.hasOwnProperty(h)||e[h]===g){e[h]="100%"}e.removeCls(a+d.opposite);e.addCls(a+c)},setOrientation:function(a){var b=this;if(b.orientation!==a){b.orientation=a;b.applyOrientation()}},updateOrientation:function(){delete this.collapseDirection;this.getCollapseDirection();this.applyCollapseDirection()},toggleTargetCmp:function(d,b){var c=this.getCollapseTarget(),g=c.placeholder,a;if(Ext.isFunction(c.expand)&&Ext.isFunction(c.collapse)){if(g&&!g.hidden){a=true}else{a=!c.hidden}if(a){if(c.collapsed){c.expand()}else{if(c.collapseDirection){c.collapse()}else{c.collapse(this.renderData.collapseDir)}}}}},setSize:function(){var a=this;a.callParent(arguments);if(Ext.isIE&&a.el){a.el.repaint()}},beforeDestroy:function(){Ext.destroy(this.tracker);this.callParent()}},0,["splitter"],["component","box","splitter"],{component:true,box:true,splitter:true},["widget.splitter"],0,[Ext.resizer,"Splitter"],0));(Ext.cmd.derive("Ext.resizer.BorderSplitter",Ext.resizer.Splitter,{collapseTarget:null,getTrackerConfig:function(){var a=this.callParent();a.xclass="Ext.resizer.BorderSplitterTracker";return a}},0,["bordersplitter"],["bordersplitter","component","box","splitter"],{bordersplitter:true,component:true,box:true,splitter:true},["widget.bordersplitter"],0,[Ext.resizer,"BorderSplitter"],0));(Ext.cmd.derive("Ext.layout.container.Border",Ext.layout.container.Container,{alternateClassName:"Ext.layout.BorderLayout",targetCls:Ext.baseCSSPrefix+"border-layout-ct",itemCls:[Ext.baseCSSPrefix+"border-item",Ext.baseCSSPrefix+"box-item"],type:"border",isBorderLayout:true,padding:undefined,percentageRe:/(\d+)%/,horzMarginProp:"left",padOnContainerProp:"left",padNotOnContainerProp:"right",axisProps:{horz:{borderBegin:"west",borderEnd:"east",horizontal:true,posProp:"x",sizeProp:"width",sizePropCap:"Width"},vert:{borderBegin:"north",borderEnd:"south",horizontal:false,posProp:"y",sizeProp:"height",sizePropCap:"Height"}},centerRegion:null,manageMargins:true,panelCollapseAnimate:true,panelCollapseMode:"placeholder",regionWeights:{north:20,south:10,center:0,west:-10,east:-20},beginAxis:function(m,b,w){var u=this,c=u.axisProps[w],r=!c.horizontal,l=c.sizeProp,p=0,a=m.childItems,g=a.length,t,q,o,h,s,e,k,n,d,v,j;for(q=0;q',renderTpl:['',"{%this.renderBody(out,values)%}","
    ","{%this.renderPadder(out,values)%}"],getRenderData:function(){var a=this.callParent();a.tableCls=this.tableCls;return a},calculate:function(g){var e=this,j=e.getContainerSize(g,true),a,h,b=0,d,c=g.sizeModel.height.shrinkWrap;if(c){if(g.hasDomProp("containerChildrenSizeDone")){g.setProp("contentHeight",e.formTable.dom.offsetHeight+g.targetContext.getPaddingInfo().height)}else{e.done=false}}if(j.gotWidth){a=e.formTable.dom.offsetWidth;h=g.childItems;for(d=h.length;b');c.scrollRangeFlags=e}}},getContainerSize:function(d,j,b){var e=d.targetContext,h=e.getFrameInfo(),m=e.getPaddingInfo(),l=0,n=0,a=b?null:d.state.overflowAdjust,g,k,c,o;if(!d.widthModel.shrinkWrap){++n;c=j?e.getDomProp("width"):e.getProp("width");g=(typeof c=="number");if(g){++l;c-=h.width+m.width;if(a){c-=a.width}}}if(!d.heightModel.shrinkWrap){++n;o=j?e.getDomProp("height"):e.getProp("height");k=(typeof o=="number");if(k){++l;o-=h.height+m.height;if(a){o-=a.height}}}return{width:c,height:o,needed:n,got:l,gotAll:l==n,gotWidth:g,gotHeight:k}},getOverflowXStyle:function(b){var a=this;return a.overflowXStyle||(a.overflowXStyle=a.owner.scrollFlags.overflowX||b.targetContext.getStyle("overflow-x"))},getOverflowYStyle:function(b){var a=this;return a.overflowYStyle||(a.overflowYStyle=a.owner.scrollFlags.overflowY||b.targetContext.getStyle("overflow-y"))},getScrollRangeFlags:(function(){var a=-1;return function(){if(a<0){var g=Ext.getBody().createChild({cls:Ext.baseCSSPrefix+"border-box",style:{width:"100px",height:"100px",padding:"10px",overflow:"auto"},children:[{style:{border:"1px solid red",width:"150px",height:"150px",margin:"0 5px 5px 0"}}]}),d=g.dom.scrollHeight,c=g.dom.scrollWidth,e={175:0,165:1,170:2,160:3},b={175:0,165:4,170:8,160:12};a=(e[d]||0)|(b[c]||0);g.remove()}return a}}()),initLayout:function(){var b=this,a=Ext.getScrollbarSize().width;b.callParent();if(a&&b.manageOverflow&&!b.hasOwnProperty("lastOverflowAdjust")){if(b.owner.scrollFlags.y||b.reserveScrollbar){b.lastOverflowAdjust={width:a,height:0}}}},setupRenderTpl:function(a){this.callParent(arguments);a.renderPadder=this.doRenderPadder}},0,0,0,0,["layout.form"],0,[Ext.layout.container,"Form",Ext.layout,"FormLayout"],0));(Ext.cmd.derive("Ext.menu.Item",Ext.Component,{alternateClassName:"Ext.menu.TextItem",activeCls:Ext.baseCSSPrefix+"menu-item-active",ariaRole:"menuitem",canActivate:true,clickHideDelay:0,destroyMenu:true,disabledCls:Ext.baseCSSPrefix+"menu-item-disabled",hideOnClick:true,isMenuItem:true,menuAlign:"tl-tr?",menuExpandDelay:200,menuHideDelay:200,tooltipType:"qtip",arrowCls:Ext.baseCSSPrefix+"menu-item-arrow",childEls:["itemEl","iconEl","textEl","arrowEl"],renderTpl:['',"{text}","",' target="{hrefTarget}"',' hidefocus="true"',' unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'",'{text}','',"",""],maskOnDisable:false,activate:function(){var a=this;if(!a.activated&&a.canActivate&&a.rendered&&!a.isDisabled()&&a.isVisible()){a.el.addCls(a.activeCls);a.focus();a.activated=true;a.fireEvent("activate",a)}},getFocusEl:function(){return this.itemEl},deactivate:function(){var a=this;if(a.activated){a.el.removeCls(a.activeCls);a.blur();a.hideMenu();a.activated=false;a.fireEvent("deactivate",a)}},deferHideMenu:function(){if(this.menu.isVisible()){this.menu.hide()}},cancelDeferHide:function(){clearTimeout(this.hideMenuTimer)},deferHideParentMenus:function(){var a;Ext.menu.Manager.hideAll();if(!Ext.Element.getActiveElement()){a=this.up(":not([hidden])");if(a){a.focus()}}},expandMenu:function(a){var b=this;if(b.menu){b.cancelDeferHide();if(a===0){b.doExpandMenu()}else{clearTimeout(b.expandMenuTimer);b.expandMenuTimer=Ext.defer(b.doExpandMenu,Ext.isNumber(a)?a:b.menuExpandDelay,b)}}},doExpandMenu:function(){var a=this,b=a.menu;if(a.activated&&(!b.rendered||!b.isVisible())){a.parentMenu.activeChild=b;b.parentItem=a;b.parentMenu=a.parentMenu;b.showBy(a,a.menuAlign)}},getRefItems:function(a){var c=this.menu,b;if(c){b=c.getRefItems(a);b.unshift(c)}return b||[]},hideMenu:function(a){var b=this;if(b.menu){clearTimeout(b.expandMenuTimer);b.hideMenuTimer=Ext.defer(b.deferHideMenu,Ext.isNumber(a)?a:b.menuHideDelay,b)}},initComponent:function(){var b=this,c=Ext.baseCSSPrefix,a=[c+"menu-item"],d;b.addEvents("activate","click","deactivate","textchange","iconchange");if(b.plain){a.push(c+"menu-item-plain")}if(b.cls){a.push(b.cls)}b.cls=a.join(" ");if(b.menu){d=b.menu;delete b.menu;b.setMenu(d)}b.callParent(arguments)},onClick:function(c){var b=this,a=b.clickHideDelay;if(!b.href){c.stopEvent()}if(b.disabled){return}if(b.hideOnClick){if(!a){b.deferHideParentMenus()}else{b.deferHideParentMenusTimer=Ext.defer(b.deferHideParentMenus,a,b)}}Ext.callback(b.handler,b.scope||b,[b,c]);b.fireEvent("click",b,c);if(!b.hideOnClick){b.focus()}},onRemoved:function(){var a=this;if(a.activated&&a.parentMenu.activeItem===a){a.parentMenu.deactivateActiveItem()}a.callParent(arguments);a.parentMenu=a.ownerButton=null},beforeDestroy:function(){var a=this;if(a.rendered){a.clearTip()}a.callParent()},onDestroy:function(){var a=this;clearTimeout(a.expandMenuTimer);a.cancelDeferHide();clearTimeout(a.deferHideParentMenusTimer);a.setMenu(null);a.callParent(arguments)},beforeRender:function(){var d=this,h=Ext.BLANK_IMAGE_URL,c=d.glyph,g=Ext._glyphFontFamily,b,a,e;d.callParent();if(d.iconAlign==="right"){a=d.checkChangeDisabled?d.disabledCls:"";e=Ext.baseCSSPrefix+"menu-item-icon-right "+d.iconCls}else{a=(d.iconCls||"")+(d.checkChangeDisabled?" "+d.disabledCls:"");e=d.menu?d.arrowCls:""}if(typeof c==="string"){b=c.split("@");c=b[0];g=b[1]}Ext.applyIf(d.renderData,{href:d.href||"#",hrefTarget:d.hrefTarget,icon:d.icon,iconCls:a,glyph:c,glyphCls:c?Ext.baseCSSPrefix+"menu-item-glyph":undefined,glyphFontFamily:g,hasIcon:!!(d.icon||d.iconCls||c),iconAlign:d.iconAlign,plain:d.plain,text:d.text,arrowCls:e,blank:h,tabIndex:d.tabIndex})},onRender:function(){var a=this;a.callParent(arguments);if(a.tooltip){a.setTooltip(a.tooltip,true)}},setMenu:function(e,d){var c=this,b=c.menu,a=c.arrowEl;if(b){delete b.parentItem;delete b.parentMenu;delete b.ownerItem;if(d===true||(d!==false&&c.destroyMenu)){Ext.destroy(b)}}if(e){c.menu=Ext.menu.Manager.get(e);c.menu.ownerItem=c}else{c.menu=null}if(c.rendered&&!c.destroying&&a){a[c.menu?"addCls":"removeCls"](c.arrowCls)}},setHandler:function(b,a){this.handler=b||null;this.scope=a},setIcon:function(b){var a=this.iconEl,c=this.icon;if(a){a.src=b||Ext.BLANK_IMAGE_URL}this.icon=b;this.fireEvent("iconchange",this,c,b)},setIconCls:function(b){var d=this,a=d.iconEl,c=d.iconCls;if(a){if(d.iconCls){a.removeCls(d.iconCls)}if(b){a.addCls(b)}}d.iconCls=b;d.fireEvent("iconchange",d,c,b)},setText:function(d){var c=this,b=c.textEl||c.el,a=c.text;c.text=d;if(c.rendered){b.update(d||"");c.ownerCt.updateLayout()}c.fireEvent("textchange",c,a,d)},getTipAttr:function(){return this.tooltipType=="qtip"?"data-qtip":"title"},clearTip:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.itemEl)}},setTooltip:function(c,a){var b=this;if(b.rendered){if(!a){b.clearTip()}if(Ext.quickTipsActive&&Ext.isObject(c)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.itemEl.id},c));b.tooltip=c}else{b.itemEl.dom.setAttribute(b.getTipAttr(),c)}}else{b.tooltip=c}return b}},0,["menuitem"],["component","menuitem","box"],{component:true,menuitem:true,box:true},["widget.menuitem"],[["queryable",Ext.Queryable]],[Ext.menu,"Item",Ext.menu,"TextItem"],0));(Ext.cmd.derive("Ext.menu.CheckItem",Ext.menu.Item,{checkedCls:Ext.baseCSSPrefix+"menu-item-checked",uncheckedCls:Ext.baseCSSPrefix+"menu-item-unchecked",groupCls:Ext.baseCSSPrefix+"menu-group-icon",hideOnClick:false,checkChangeDisabled:false,childEls:["itemEl","iconEl","textEl","checkEl"],showCheckbox:true,renderTpl:['',"{text}","","{%var showCheckbox = values.showCheckbox,",' rightCheckbox = showCheckbox && values.hasIcon && (values.iconAlign !== "left"), textCls = rightCheckbox ? "'+Ext.baseCSSPrefix+'right-check-item-text" : "";%}','target="{hrefTarget}" hidefocus="true" unselectable="on"','',' tabIndex="{tabIndex}"',"",">",'{%if (values.hasIcon && (values.iconAlign !== "left")) {%}','","{%} else if (showCheckbox){%}",'',"{%}%}",'style="margin-right: 17px;" >{text}',"{%if (rightCheckbox) {%}",'',"{%} else if (values.arrowCls) {%}",'',"{%}%}","",""],initComponent:function(){var a=this;a.checked=!!a.checked;a.addEvents("beforecheckchange","checkchange");a.callParent(arguments);Ext.menu.Manager.registerCheckable(a);if(a.group){a.showCheckbox=false;if(!(a.iconCls||a.icon||a.glyph)){a.iconCls=a.groupCls}if(a.initialConfig.hideOnClick!==false){a.hideOnClick=true}}},beforeRender:function(){this.callParent();this.renderData.showCheckbox=this.showCheckbox},afterRender:function(){var a=this;a.callParent();a.checked=!a.checked;a.setChecked(!a.checked,true);if(a.checkChangeDisabled){a.disableCheckChange()}},disableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.addCls(b.disabledCls)}if(!(Ext.isIE10p||(Ext.isIE9&&Ext.isStrict))&&b.rendered){b.el.repaint()}b.checkChangeDisabled=true},enableCheckChange:function(){var b=this,a=b.checkEl;if(a){a.removeCls(b.disabledCls)}b.checkChangeDisabled=false},onClick:function(b){var a=this;if(!a.disabled&&!a.checkChangeDisabled&&!(a.checked&&a.group)){a.setChecked(!a.checked)}this.callParent([b])},onDestroy:function(){Ext.menu.Manager.unregisterCheckable(this);this.callParent(arguments)},setChecked:function(c,a){var b=this;if(b.checked!==c&&(a||b.fireEvent("beforecheckchange",b,c)!==false)){if(b.el){b.el[c?"addCls":"removeCls"](b.checkedCls)[!c?"addCls":"removeCls"](b.uncheckedCls)}b.checked=c;Ext.menu.Manager.onCheckChange(b,c);if(!a){Ext.callback(b.checkHandler,b.scope,[b,c]);b.fireEvent("checkchange",b,c)}}}},0,["menucheckitem"],["component","menucheckitem","menuitem","box"],{component:true,menucheckitem:true,menuitem:true,box:true},["widget.menucheckitem"],0,[Ext.menu,"CheckItem"],0));(Ext.cmd.derive("Ext.menu.KeyNav",Ext.util.KeyNav,{constructor:function(a){var b=this;b.menu=a.target;b.callParent([Ext.apply({down:b.down,enter:b.enter,esc:b.escape,left:b.left,right:b.right,space:b.enter,tab:b.tab,up:b.up},a)])},down:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.DOWN&&a.isWhitelisted(c)){return true}a.focusNextItem(1)},enter:function(b){var c=this.menu,a=c.focusedItem;if(c.activeItem){c.onClick(b)}else{if(a&&a.isFormField){return true}}},escape:function(a){Ext.menu.Manager.hideAll()},focusNextItem:function(b){var a=this.menu,e=a.items,h=a.focusedItem,g=h?e.indexOf(h):-1,j=g+b,d=e.length,c=0,k;while(c=d){j=0}}k=e.getAt(j);if(a.canActivateItem(k)){a.setActiveItem(k);break}j+=b;++c}},isWhitelisted:function(a){return Ext.FocusManager.isWhitelisted(a)},left:function(a){var b=this.menu,c=b.focusedItem;if(c&&this.isWhitelisted(c)){return true}b.hide();if(b.parentMenu){b.parentMenu.focus()}},right:function(c){var d=this.menu,g=d.focusedItem,a=d.activeItem,b;if(g&&this.isWhitelisted(g)){return true}if(a){b=d.activeItem.menu;if(b){a.expandMenu(0);b.setActiveItem(b.child(":focusable"))}}},tab:function(b){var a=this;if(b.shiftKey){a.up(b)}else{a.down(b)}},up:function(b){var a=this,c=a.menu.focusedItem;if(c&&b.getKey()==Ext.EventObject.UP&&a.isWhitelisted(c)){return true}a.focusNextItem(-1)}},1,0,0,0,0,0,[Ext.menu,"KeyNav"],0));(Ext.cmd.derive("Ext.menu.Separator",Ext.menu.Item,{canActivate:false,focusable:false,hideOnClick:false,plain:true,separatorCls:Ext.baseCSSPrefix+"menu-item-separator",text:" ",beforeRender:function(a,c){var b=this;b.callParent();b.addCls(b.separatorCls)}},0,["menuseparator"],["component","menuseparator","menuitem","box"],{component:true,menuseparator:true,menuitem:true,box:true},["widget.menuseparator"],0,[Ext.menu,"Separator"],0));(Ext.cmd.derive("Ext.menu.Menu",Ext.panel.Panel,{enableKeyNav:true,allowOtherMenus:false,ariaRole:"menu",floating:true,constrain:true,hidden:true,hideMode:"visibility",ignoreParentClicks:false,isMenu:true,showSeparator:true,minWidth:undefined,defaultMinWidth:120,initComponent:function(){var b=this,d=Ext.baseCSSPrefix,a=[d+"menu"],c=b.bodyCls?[b.bodyCls]:[],e=b.floating!==false;b.addEvents("click","mouseenter","mouseleave","mouseover");Ext.menu.Manager.register(b);if(b.plain){a.push(d+"menu-plain")}b.cls=a.join(" ");c.push(d+"menu-body",Ext.dom.Element.unselectableCls);b.bodyCls=c.join(" ");if(!b.layout){b.layout={type:"vbox",align:"stretchmax",overflowHandler:"Scroller"}}if(e){if(b.minWidth===undefined){b.minWidth=b.defaultMinWidth}}else{b.hidden=!!b.initialConfig.hidden;b.constrain=false}b.callParent(arguments)},registerWithOwnerCt:function(){if(this.floating){this.ownerCt=null;Ext.WindowManager.register(this)}},initHierarchyEvents:Ext.emptyFn,isVisible:function(){return this.callParent()},getHierarchyState:function(){var a=this.callParent();a.hidden=this.hidden;return a},beforeRender:function(){this.callParent(arguments);if(!this.getSizeModel().width.shrinkWrap){this.layout.align="stretch"}},onBoxReady:function(){var a=this;a.callParent(arguments);if(a.showSeparator){a.iconSepEl=a.layout.getElementTarget().insertFirst({cls:Ext.baseCSSPrefix+"menu-icon-separator",html:" "})}a.mon(a.el,{click:a.onClick,mouseover:a.onMouseOver,scope:a});a.mouseMonitor=a.el.monitorMouseLeave(100,a.onMouseLeave,a);if(a.enableKeyNav){a.keyNav=new Ext.menu.KeyNav({target:a,keyMap:a.getKeyMap()})}},getRefOwner:function(){return this.parentMenu||this.ownerButton||this.callParent(arguments)},canActivateItem:function(a){return a&&!a.isDisabled()&&a.isVisible()&&(a.canActivate||a.getXTypes().indexOf("menuitem")<0)},deactivateActiveItem:function(b){var c=this,d=c.activeItem,a=c.focusedItem;if(d){d.deactivate();if(!d.activated){delete c.activeItem}}if(a&&b){a.blur();delete c.focusedItem}},getFocusEl:function(){return this.focusedItem||this.el},hide:function(){this.deactivateActiveItem(true);this.callParent(arguments)},getItemFromEvent:function(a){return this.getChildByElement(a.getTarget())},lookupComponent:function(b){var a=this;if(typeof b=="string"){b=a.lookupItemFromString(b)}else{if(Ext.isObject(b)){b=a.lookupItemFromObject(b)}}b.minWidth=b.minWidth||a.minWidth;return b},lookupItemFromObject:function(c){var b=this,d=Ext.baseCSSPrefix,a;if(!c.isComponent){if(!c.xtype){c=Ext.create("Ext.menu."+(Ext.isBoolean(c.checked)?"Check":"")+"Item",c)}else{c=Ext.ComponentManager.create(c,c.xtype)}}if(c.isMenuItem){c.parentMenu=b}if(!c.isMenuItem&&!c.dock){a=[d+"menu-item-cmp"];if(!b.plain&&(c.indent!==false||c.iconCls==="no-icon")){a.push(d+"menu-item-indent")}if(c.rendered){c.el.addCls(a)}else{c.cls=(c.cls||"")+" "+a.join(" ")}}return c},lookupItemFromString:function(a){return(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.Item({canActivate:false,hideOnClick:false,plain:true,text:a})},onClick:function(c){var b=this,a;if(b.disabled){c.stopEvent();return}a=(c.type==="click")?b.getItemFromEvent(c):b.activeItem;if(a&&a.isMenuItem){if(!a.menu||!b.ignoreParentClicks){a.onClick(c)}else{c.stopEvent()}}if(!a||a.disabled){a=undefined}b.fireEvent("click",b,a,c)},onDestroy:function(){var a=this;Ext.menu.Manager.unregister(a);a.parentMenu=a.ownerButton=null;if(a.rendered){a.el.un(a.mouseMonitor);Ext.destroy(a.keyNav);a.keyNav=null}a.callParent(arguments)},onMouseLeave:function(b){var a=this;a.deactivateActiveItem();if(a.disabled){return}a.fireEvent("mouseleave",a,b)},onMouseOver:function(h){var g=this,j=h.getRelatedTarget(),b=!g.el.contains(j),d=g.getItemFromEvent(h),c=g.parentMenu,a=g.parentItem;if(b&&c){c.setActiveItem(a);a.cancelDeferHide();c.mouseMonitor.mouseenter()}if(g.disabled){return}if(d&&!d.activated){g.setActiveItem(d);if(d.activated&&d.expandMenu){d.expandMenu()}}if(b){g.fireEvent("mouseenter",g,h)}g.fireEvent("mouseover",g,d,h)},setActiveItem:function(b){var a=this;if(b&&(b!=a.activeItem)){a.deactivateActiveItem();if(a.canActivateItem(b)){if(b.activate){b.activate();if(b.activated){a.activeItem=b;a.focusedItem=b;a.focus()}}else{b.focus();a.focusedItem=b}}b.el.scrollIntoView(a.layout.getRenderTarget())}},showBy:function(b,d,c){var a=this;a.callParent(arguments);if(!a.hidden){a.setVerticalPosition()}return a},beforeShow:function(){var b=this,a;if(b.floating){b.savedMaxHeight=b.maxHeight;a=b.container.getViewSize().height;b.maxHeight=Math.min(b.maxHeight||a,a)}b.callParent(arguments)},afterShow:function(){var a=this;a.callParent(arguments);if(a.floating){a.maxHeight=a.savedMaxHeight}},setVerticalPosition:function(){var d=this,g,e=d.getY(),h=e,k=d.getHeight(),b=Ext.Element.getViewportHeight().height,c=d.el.parent(),a=c.getViewSize().height,j=e-c.getScroll().top;c=null;if(d.floating){g=d.maxHeight?d.maxHeight:a-j;if(k>a){h=e-j}else{if(gb){h=b-k}}}}d.setY(h)}},0,["menu"],["panel","component","container","menu","box"],{panel:true,component:true,container:true,menu:true,box:true},["widget.menu"],0,[Ext.menu,"Menu"],0));(Ext.cmd.derive("Ext.menu.ColorPicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{plain:true,showSeparator:false,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-color-item",id:b.pickerId,xtype:"colorpicker"},a)});b.callParent(arguments);b.picker=b.down("colorpicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["colormenu"],["panel","component","container","menu","colormenu","box"],{panel:true,component:true,container:true,menu:true,colormenu:true,box:true},["widget.colormenu"],0,[Ext.menu,"ColorPicker"],0));(Ext.cmd.derive("Ext.menu.DatePicker",Ext.menu.Menu,{hideOnClick:true,pickerId:null,initComponent:function(){var b=this,a=Ext.apply({},b.initialConfig);delete a.listeners;Ext.apply(b,{showSeparator:false,plain:true,border:false,bodyPadding:0,items:Ext.applyIf({cls:Ext.baseCSSPrefix+"menu-date-item",id:b.pickerId,xtype:"datepicker"},a)});b.callParent(arguments);b.picker=b.down("datepicker");b.relayEvents(b.picker,["select"]);if(b.hideOnClick){b.on("select",b.hidePickerOnSelect,b)}},hidePickerOnSelect:function(){Ext.menu.Manager.hideAll()}},0,["datemenu"],["panel","datemenu","component","container","menu","box"],{panel:true,datemenu:true,component:true,container:true,menu:true,box:true},["widget.datemenu"],0,[Ext.menu,"DatePicker"],0));(Ext.cmd.derive("Ext.panel.Tool",Ext.Component,{isTool:true,baseCls:Ext.baseCSSPrefix+"tool",disabledCls:Ext.baseCSSPrefix+"tool-disabled",toolPressedCls:Ext.baseCSSPrefix+"tool-pressed",toolOverCls:Ext.baseCSSPrefix+"tool-over",ariaRole:"button",childEls:["toolEl"],renderTpl:[''],toolOwner:null,tooltipType:"qtip",stopEvent:true,height:15,width:15,initComponent:function(){var a=this;a.addEvents("click");a.type=a.type||a.id;Ext.applyIf(a.renderData,{baseCls:a.baseCls,blank:Ext.BLANK_IMAGE_URL,type:a.type});a.tooltip=a.tooltip||a.qtip;a.callParent()},afterRender:function(){var b=this,a;b.callParent(arguments);b.el.on({click:b.onClick,mousedown:b.onMouseDown,mouseover:b.onMouseOver,mouseout:b.onMouseOut,scope:b});if(b.tooltip){if(Ext.quickTipsActive&&Ext.isObject(b.tooltip)){Ext.tip.QuickTipManager.register(Ext.apply({target:b.id},b.tooltip))}else{a=b.tooltipType=="qtip"?"data-qtip":"title";b.el.dom.setAttribute(a,b.tooltip)}}},getFocusEl:function(){return this.el},setType:function(a){var b=this,c=b.type;b.type=a;if(b.rendered){if(c){b.toolEl.removeCls(b.baseCls+"-"+c)}b.toolEl.addCls(b.baseCls+"-"+a)}else{b.renderData.type=a}return b},onClick:function(c,b){var a=this;if(a.disabled){return false}a.el.removeCls(a.toolPressedCls);a.el.removeCls(a.toolOverCls);if(a.stopEvent!==false){c.stopEvent()}if(a.handler){Ext.callback(a.handler,a.scope||a,[c,b,a.ownerCt,a])}else{if(a.callback){Ext.callback(a.callback,a.scope||a,[a.toolOwner||a.ownerCt,a,c])}}a.fireEvent("click",a,c);return true},onDestroy:function(){if(Ext.quickTipsActive&&Ext.isObject(this.tooltip)){Ext.tip.QuickTipManager.unregister(this.id)}this.callParent()},onMouseDown:function(){if(this.disabled){return false}this.el.addCls(this.toolPressedCls)},onMouseOver:function(){if(this.disabled){return false}this.el.addCls(this.toolOverCls)},onMouseOut:function(){this.el.removeCls(this.toolOverCls)}},0,["tool"],["component","tool","box"],{component:true,tool:true,box:true},["widget.tool"],0,[Ext.panel,"Tool"],0));(Ext.cmd.derive("Ext.resizer.SplitterTracker",Ext.dd.DragTracker,{enabled:true,overlayCls:Ext.baseCSSPrefix+"resizable-overlay",createDragOverlay:function(){var a;a=this.overlay=Ext.getBody().createChild({cls:this.overlayCls,html:" "});a.unselectable();a.setSize(Ext.Element.getViewWidth(true),Ext.Element.getViewHeight(true));a.show()},getPrevCmp:function(){var a=this.getSplitter();return a.previousSibling(":not([hidden])")},getNextCmp:function(){var a=this.getSplitter();return a.nextSibling(":not([hidden])")},onBeforeStart:function(j){var d=this,g=d.getPrevCmp(),a=d.getNextCmp(),c=d.getSplitter().collapseEl,h=j.getTarget(),b;if(!g||!a){return false}if(c&&h===d.getSplitter().collapseEl.dom){return false}if(a.collapsed||g.collapsed){return false}d.prevBox=g.getEl().getBox();d.nextBox=a.getEl().getBox();d.constrainTo=b=d.calculateConstrainRegion();if(!b){return false}return b},onStart:function(b){var a=this.getSplitter();this.createDragOverlay();a.addCls(a.baseCls+"-active")},calculateConstrainRegion:function(){var h=this,a=h.getSplitter(),j=a.getWidth(),k=a.defaultSplitMin,b=a.orientation,e=h.prevBox,l=h.getPrevCmp(),c=h.nextBox,g=h.getNextCmp(),n,m,d;if(b==="vertical"){d={prevCmp:l,nextCmp:g,prevBox:e,nextBox:c,defaultMin:k,splitWidth:j};n=new Ext.util.Region(e.y,h.getVertPrevConstrainRight(d),e.bottom,h.getVertPrevConstrainLeft(d));m=new Ext.util.Region(c.y,h.getVertNextConstrainRight(d),c.bottom,h.getVertNextConstrainLeft(d))}else{n=new Ext.util.Region(e.y+(l.minHeight||k),e.right,(l.maxHeight?e.y+l.maxHeight:c.bottom-(g.minHeight||k))+j,e.x);m=new Ext.util.Region((g.maxHeight?c.bottom-g.maxHeight:e.y+(l.minHeight||k))-j,c.right,c.bottom-(g.minHeight||k),c.x)}return n.intersect(m)},performResize:function(n,h){var p=this,a=p.getSplitter(),j=a.orientation,q=p.getPrevCmp(),o=p.getNextCmp(),b=a.ownerCt,l=b.query(">[flex]"),m=l.length,c=j==="vertical",k=0,g=c?"width":"height",d=0,r,s;for(;kq){v=q}}if(v-m<2){return null}n=new Ext.util.Region(p,x,k,g);y.constraintAdjusters[y.getCollapseDirection()](n,m,v,a);y.dragInfo={minRange:m,maxRange:v,targetSize:b};return n},constraintAdjusters:{left:function(c,a,b,d){c[0]=c.x=c.left=c.right+a;c.right+=b+d.getWidth()},top:function(c,a,b,d){c[1]=c.y=c.top=c.bottom+a;c.bottom+=b+d.getHeight()},bottom:function(c,a,b,d){c.bottom=c.top-a;c.top-=b+d.getHeight()},right:function(c,a,b,d){c.right=c.left-a;c[0]=c.x=c.left=c.x-b+d.getWidth()}},onBeforeStart:function(h){var k=this,b=k.splitter,a=b.collapseTarget,m=b.neighbors,d=k.getSplitter().collapseEl,j=h.getTarget(),c=m.length,g,l;if(d&&j===b.collapseEl.dom){return false}if(a.collapsed){return false}for(g=0;gc){d.minWidth=d.el.getWidth()*a}else{d.minHeight=d.el.getHeight()*c}}if(d.throttle){e=Ext.Function.createThrottled(function(){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)},d.throttle);d.resize=function(h,j,g){if(g){Ext.resizer.ResizeTracker.prototype.resize.apply(d,arguments)}else{e.apply(null,arguments)}}}},onBeforeStart:function(a){this.startBox=this.target.getBox()},getDynamicTarget:function(){var a=this,b=a.target;if(a.dynamic){return b}else{if(!a.proxy){a.proxy=a.createProxy(b)}}a.proxy.show();return a.proxy},createProxy:function(c){var b,a=this.proxyCls;if(c.isComponent){b=c.getProxy().addCls(a)}else{b=c.createProxy({tag:"div",cls:a,id:c.id+"-rzproxy"},Ext.getBody())}b.removeCls(Ext.baseCSSPrefix+"proxy-el");return b},onStart:function(a){this.activeResizeHandle=Ext.get(this.getDragTarget().id);if(!this.dynamic){this.resize(this.startBox,{horizontal:"none",vertical:"none"})}},onDrag:function(a){if(this.dynamic||this.proxy){this.updateDimensions(a)}},updateDimensions:function(t,n){var u=this,c=u.activeResizeHandle.region,g=u.getOffset(u.constrainTo?"dragTarget":null),l=u.startBox,h,q=0,v=0,k,r,a=0,x=0,w,o=g[0]<0?"right":"left",s=g[1]<0?"down":"up",j,b,d,p,m;c=u.convertRegionName(c);switch(c){case"south":v=g[1];b=2;break;case"north":v=-g[1];x=-v;b=2;break;case"east":q=g[0];b=1;break;case"west":q=-g[0];a=-q;b=1;break;case"northeast":v=-g[1];x=-v;q=g[0];j=[l.x,l.y+l.height];b=3;break;case"southeast":v=g[1];q=g[0];j=[l.x,l.y];b=3;break;case"southwest":q=-g[0];a=-q;v=g[1];j=[l.x+l.width,l.y];b=3;break;case"northwest":v=-g[1];x=-v;q=-g[0];a=-q;j=[l.x+l.width,l.y+l.height];b=3;break}d={width:l.width+q,height:l.height+v,x:l.x+a,y:l.y+x};k=Ext.Number.snap(d.width,u.widthIncrement);r=Ext.Number.snap(d.height,u.heightIncrement);if(k!=d.width||r!=d.height){switch(c){case"northeast":d.y-=r-d.height;break;case"north":d.y-=r-d.height;break;case"southwest":d.x-=k-d.width;break;case"west":d.x-=k-d.width;break;case"northwest":d.x-=k-d.width;d.y-=r-d.height}d.width=k;d.height=r}if(d.widthu.maxWidth){d.width=Ext.Number.constrain(d.width,u.minWidth,u.maxWidth);if(a){d.x=l.x+(l.width-d.width)}}else{u.lastX=d.x}if(d.heightu.maxHeight){d.height=Ext.Number.constrain(d.height,u.minHeight,u.maxHeight);if(x){d.y=l.y+(l.height-d.height)}}else{u.lastY=d.y}if(u.preserveRatio||t.shiftKey){h=u.startBox.width/u.startBox.height;p=Math.min(Math.max(u.minHeight,d.width/h),u.maxHeight);m=Math.min(Math.max(u.minWidth,d.height*h),u.maxWidth);if(b==1){d.height=p}else{if(b==2){d.width=m}else{w=Math.abs(j[0]-this.lastXY[0])/Math.abs(j[1]-this.lastXY[1]);if(w>h){d.height=p}else{d.width=m}if(c=="northeast"){d.y=l.y-(d.height-l.height)}else{if(c=="northwest"){d.y=l.y-(d.height-l.height);d.x=l.x-(d.width-l.width)}else{if(c=="southwest"){d.x=l.x-(d.width-l.width)}}}}}}if(v===0){s="none"}if(q===0){o="none"}u.resize(d,{horizontal:o,vertical:s},n)},getResizeTarget:function(a){return a?this.target:this.getDynamicTarget()},resize:function(c,e,a){var b=this,d=b.getResizeTarget(a);d.setBox(c);if(b.originalTarget&&(b.dynamic||a)){b.originalTarget.setBox(c)}},onEnd:function(a){this.updateDimensions(a,true);if(this.proxy){this.proxy.hide()}},convertRegionName:function(a){return a}},1,0,0,0,0,0,[Ext.resizer,"ResizeTracker"],0));(Ext.cmd.derive("Ext.resizer.Resizer",Ext.Base,{alternateClassName:"Ext.Resizable",handleCls:Ext.baseCSSPrefix+"resizable-handle",pinnedCls:Ext.baseCSSPrefix+"resizable-pinned",overCls:Ext.baseCSSPrefix+"resizable-over",wrapCls:Ext.baseCSSPrefix+"resizable-wrap",delimiterRe:/(?:\s*[,;]\s*)|\s+/,dynamic:true,handles:"s e se",height:null,width:null,heightIncrement:0,widthIncrement:0,minHeight:20,minWidth:20,maxHeight:10000,maxWidth:10000,pinned:false,preserveRatio:false,transparent:false,possiblePositions:{n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"},constructor:function(b){var m=this,j,q,s,r=m.handles,c,p,g,d=0,o,n=[],h,a,e,l,k=Ext.dom.Element.unselectableCls;m.addEvents("beforeresize","resizedrag","resize");if(Ext.isString(b)||Ext.isElement(b)||b.dom){j=b;b=arguments[1]||{};b.target=j}m.mixins.observable.constructor.call(m,b);j=m.target;if(j){if(j.isComponent){j.addClsWithUI("resizable");m.el=j.getEl();if(j.minWidth){m.minWidth=j.minWidth}if(j.minHeight){m.minHeight=j.minHeight}if(j.maxWidth){m.maxWidth=j.maxWidth}if(j.maxHeight){m.maxHeight=j.maxHeight}if(j.floating){if(!m.hasOwnProperty("handles")){m.handles="n ne e se s sw w nw"}}}else{m.el=m.target=Ext.get(j)}}else{m.target=m.el=Ext.get(m.el)}s=m.el.dom.tagName.toUpperCase();if(s=="TEXTAREA"||s=="IMG"||s=="TABLE"){m.originalTarget=m.target;q=m.el;e=q.getBox();m.target=m.el=m.el.wrap({cls:m.wrapCls,id:m.el.id+"-rzwrap",style:q.getStyles("margin-top","margin-bottom")});m.el.setPositioning(q.getPositioning());q.clearPositioning();m.el.setBox(e);q.setStyle("position","absolute")}m.el.position();if(m.pinned){m.el.addCls(m.pinnedCls)}m.resizeTracker=new Ext.resizer.ResizeTracker({disabled:m.disabled,target:m.target,constrainTo:m.constrainTo,overCls:m.overCls,throttle:m.throttle,originalTarget:m.originalTarget,delegate:"."+m.handleCls,dynamic:m.dynamic,preserveRatio:m.preserveRatio,heightIncrement:m.heightIncrement,widthIncrement:m.widthIncrement,minHeight:m.minHeight,maxHeight:m.maxHeight,minWidth:m.minWidth,maxWidth:m.maxWidth});m.resizeTracker.on({mousedown:m.onBeforeResize,drag:m.onResize,dragend:m.onResizeEnd,scope:m});if(m.handles=="all"){m.handles="n s e w ne nw se sw"}r=m.handles=m.handles.split(m.delimiterRe);p=m.possiblePositions;g=r.length;c=m.handleCls+" "+m.handleCls+"-{0}";if(m.target.isComponent){l=m.target.baseCls;c+=" "+l+"-handle "+l+"-handle-{0}";if(Ext.supports.CSS3BorderRadius){c+=" "+l+"-handle-{0}-br"}}h=Ext.isIE6?' style="height:'+m.el.getHeight()+'px"':"";for(;d")}}Ext.DomHelper.append(m.el,n.join(""));for(d=0;dj.row){return}for(c=0;c-1){this.doSelect(a.record,false,b)}},onCellDeselect:function(a,b){if(a&&a.row!==undefined){this.doDeselect(a.record,b)}},onSelectChange:function(b,e,d,h){var g=this,j,c,a;if(e){j=g.nextSelection;c="select"}else{j=g.lastSelection||g.noSelection;c="deselect"}a=j.view||g.primaryView;if((d||g.fireEvent("before"+c,g,b,j.row,j.column))!==false&&h()!==false){if(e){a.focusRow(b,true);a.onCellSelect(j)}else{a.onCellDeselect(j);delete g.selection}if(!d){g.fireEvent(c,g,b,j.row,j.column)}}},onKeyTab:function(d,b){var c=this,g=c.getCurrentPosition(),a;if(g){a=g.view.editingPlugin;if(a&&c.wasEditing){c.onEditorTab(a,d)}else{c.move(d.shiftKey?"left":"right",d)}}},onEditorTab:function(b,g){var c=this,d=g.shiftKey?"left":"right",a=c.move(d,g);if(a){if(b.startEdit(a.record,a.columnHeader)){c.wasEditing=false}else{c.wasEditing=true}}},refresh:function(){var b=this.getCurrentPosition(),a;if(b&&(a=this.store.indexOf(this.selected.last()))!==-1){b.row=a}},onColumnMove:function(d,e,b,c){var a=d.up("tablepanel");if(a){this.onViewRefresh(a.view)}},onUpdate:function(a){var b=this,c;if(b.isSelected(a)){c=b.selecting?b.nextSelection:b.selection;b.view.onCellSelect(c)}},onViewRefresh:function(b){var c=this,g=c.getCurrentPosition(),e=b.headerCt,a,d;if(g&&g.view===b){a=g.record;d=g.columnHeader;if(!d.isDescendantOf(e)){d=e.queryById(d.id)||e.down('[text="'+d.text+'"]')||e.down('[dataIndex="'+d.dataIndex+'"]')}if(d&&(b.store.indexOfId(a.getId())!==-1)){c.setCurrentPosition({row:a,column:d,view:b})}}},selectByPosition:function(a,b){this.setCurrentPosition(a,b)}},1,0,0,0,["selection.cellmodel"],0,[Ext.selection,"CellModel"],0));(Ext.cmd.derive("Ext.selection.RowModel",Ext.selection.Model,{deltaScroll:5,enableKeyNav:true,ignoreRightMouseSelection:false,constructor:function(){this.addEvents("beforedeselect","beforeselect","deselect","select");this.views=[];this.callParent(arguments)},bindComponent:function(a){var b=this;a.on({itemmousedown:b.onRowMouseDown,itemclick:b.onRowClick,scope:b});if(b.enableKeyNav){b.initKeyNav(a)}},initKeyNav:function(a){var b=this;if(!a.rendered){a.on("render",Ext.Function.bind(b.initKeyNav,b,[a],0),b,{single:true});return}a.el.set({tabIndex:-1});b.keyNav=new Ext.util.KeyNav({target:a,ignoreInputFields:true,eventName:"itemkeydown",processEvent:function(d,c,h,e,g){g.record=c;g.recordIndex=e;return g},up:b.onKeyUp,down:b.onKeyDown,right:b.onKeyRight,left:b.onKeyLeft,pageDown:b.onKeyPageDown,pageUp:b.onKeyPageUp,home:b.onKeyHome,end:b.onKeyEnd,space:b.onKeySpace,enter:b.onKeyEnter,scope:b})},onUpdate:function(b){var d=this,a=d.view,c;if(a&&d.isSelected(b)){c=a.indexOf(b);a.onRowSelect(c);if(b===d.lastFocused){a.onRowFocus(c,true)}}},getRowsVisible:function(){var e=false,a=this.views[0],d=a.all.first(),b,c;if(d){b=d.getHeight();c=a.el.getHeight();e=Math.floor(c/b)}return e},onKeyEnd:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(b.store.getCount()-1,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(a.all.getCount()-1))}},onKeyHome:function(c){var b=this,a=b.views[0];if(a.bufferedRenderer){a.bufferedRenderer.scrollTo(0,false,function(e,d){b.afterKeyNavigate(c,d)})}else{b.afterKeyNavigate(c,a.getRecord(0))}},onKeyPageUp:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.max(g.recordIndex-h,0);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,-h);d.afterKeyNavigate(g,b)}}},onKeyPageDown:function(g){var d=this,a=d.views[0],h=d.getRowsVisible(),c,b;if(h){if(a.bufferedRenderer){c=Math.min(g.recordIndex+h,d.store.getCount()-1);(d.lastKeyEvent||(d.lastKeyEvent=new Ext.EventObjectImpl())).setEvent(g.browserEvent);a.bufferedRenderer.scrollTo(c,false,d.afterBufferedScrollTo,d)}else{b=a.walkRecs(g.record,h);d.afterKeyNavigate(g,b)}}},onKeySpace:function(b){var a=this.lastFocused;if(a){this.afterKeyNavigate(b,a)}},onKeyEnter:Ext.emptyFn,onKeyUp:function(b){var a=this.views[0].walkRecs(b.record,-1);if(a){this.afterKeyNavigate(b,a)}},onKeyDown:function(b){var a=this.views[0].walkRecs(b.record,1);if(a){this.afterKeyNavigate(b,a)}},afterBufferedScrollTo:function(b,a){this.afterKeyNavigate(this.lastKeyEvent,a)},scrollByDeltaX:function(d){var a=this.views[0],c=a.up(),b=c.horizontalScroller;if(b){b.scrollByDeltaX(d)}},onKeyLeft:function(a){this.scrollByDeltaX(-this.deltaScroll)},onKeyRight:function(a){this.scrollByDeltaX(this.deltaScroll)},onRowMouseDown:function(b,a,g,c,h){var d=this;if(c!==-1){if(!d.allowRightMouseSelection(h)){return}if(!d.isSelected(a)){d.mousedownAction=true;d.processSelection(b,a,g,c,h)}else{d.mousedownAction=false}}},onVetoUIEvent:function(g,c,a,j,d,h,b){if(g=="mousedown"){this.mousedownAction=!this.isSelected(b)}},onRowClick:function(b,a,d,c,g){if(this.mousedownAction){this.mousedownAction=false}else{this.processSelection(b,a,d,c,g)}},processSelection:function(b,a,d,c,g){this.selectWithEvent(a,g)},allowRightMouseSelection:function(a){var b=this.ignoreRightMouseSelection&&a.button!==0;if(b){b=this.hasSelection()}return !b},onSelectChange:function(g,c,k,a){var j=this,l=j.views,d=l.length,b=l[0].indexOf(g),h=c?"select":"deselect",e=0;if((k||j.fireEvent("before"+h,j,g,b))!==false&&a()!==false){for(;e=a.value){g=a.value}}c.setValue(b,g,false);c.fireEvent("drag",c,h,d)}},getValueFromTracker:function(){var a=this.slider,b=a.getTrackpoint(this.tracker.getXY());if(b!==undefined){return a.reversePixelValue(b)}},onDragEnd:function(d){var b=this,a=b.slider,c=b.value;a.onDragEnd(b,d);b.el.removeCls(Ext.baseCSSPrefix+"slider-thumb-drag");b.dragging=a.dragging=false;a.fireEvent("dragend",a,d);if(b.dragStartValue!=c){a.fireEvent("changecomplete",a,c,b)}},destroy:function(){Ext.destroy(this.tracker)}},1,0,0,0,0,0,[Ext.slider,"Thumb"],0));(Ext.cmd.derive("Ext.slider.Tip",Ext.tip.Tip,{minWidth:10,offsets:null,align:null,position:"",defaultVerticalPosition:"left",defaultHorizontalPosition:"top",isSliderTip:true,init:function(c){var b=this,d,a;if(!b.position){b.position=c.vertical?b.defaultVerticalPosition:b.defaultHorizontalPosition}switch(b.position){case"top":a=[0,-10];d="b-t?";break;case"bottom":a=[0,10];d="t-b?";break;case"left":a=[-10,0];d="r-l?";break;case"right":a=[10,0];d="l-r?"}if(!b.align){b.align=d}if(!b.offsets){b.offsets=a}c.on({scope:b,dragstart:b.onSlide,drag:b.onSlide,dragend:b.hide,destroy:b.destroy})},onSlide:function(c,d,a){var b=this;b.show();b.update(b.getText(a));b.el.alignTo(a.el,b.align,b.offsets)},getText:function(a){return String(a.value)}},0,["slidertip"],["panel","component","container","slidertip","box"],{panel:true,component:true,container:true,slidertip:true,box:true},["widget.slidertip"],0,[Ext.slider,"Tip"],0));(Ext.cmd.derive("Ext.slider.Multi",Ext.form.field.Base,{alternateClassName:"Ext.slider.MultiSlider",childEls:["endEl","innerEl"],fieldSubTpl:['
    ','","
    ",{renderThumbs:function(g,e){var j=e.$comp,h=0,c=j.thumbs,b=c.length,d,a;for(;hg){e.setValue(d,g,false)}}e.syncThumbs()},setValue:function(e,k,b,d){var j=this,h=j.thumbs,a,g,c,l;if(Ext.isArray(e)){l=e;b=k;for(c=0,g=l.length;c0)?a.changedTouches[0]:a;return new this(a.pageX,a.pageY)}},constructor:function(a,b){this.callParent([b,a,b,a])},toString:function(){return"Point["+this.x+","+this.y+"]"},equals:function(a){return(this.x==a.x&&this.y==a.y)},isWithin:function(b,a){if(!Ext.isObject(a)){a={x:a,y:a}}return(this.x<=b.x+a.x&&this.x>=b.x-a.x&&this.y<=b.y+a.y&&this.y>=b.y-a.y)},isContainedBy:function(a){if(!(a instanceof Ext.util.Region)){a=Ext.get(a.el||a).getRegion()}return a.contains(this)},roundedEquals:function(a){return(Math.round(this.x)==Math.round(a.x)&&Math.round(this.y)==Math.round(a.y))}},3,0,0,0,0,0,[Ext.util,"Point"],function(){this.prototype.translate=Ext.util.Region.prototype.translateBy}));(Ext.cmd.derive("Ext.tab.Bar",Ext.panel.Header,{baseCls:Ext.baseCSSPrefix+"tab-bar",isTabBar:true,defaultType:"tab",plain:false,childEls:["body","strip"],renderTpl:['
    {baseCls}-body-{ui} {parent.baseCls}-body-{parent.ui}-{.}" style="{bodyStyle}">',"{%this.renderContainer(out,values)%}","
    ",'
    {baseCls}-strip-{ui}',' {parent.baseCls}-strip-{parent.ui}-{.}','">',"
    "],_reverseDockNames:{left:"right",right:"left"},initComponent:function(){var a=this;if(a.plain){a.addCls(a.baseCls+"-plain")}a.addClsWithUI(a.orientation);a.addEvents("change");a.callParent(arguments);Ext.merge(a.layout,a.initialConfig.layout);a.layout.align=(a.orientation=="vertical")?"left":"top";a.layout.overflowHandler=new Ext.layout.container.boxOverflow.Scroller(a.layout);a.remove(a.titleCmp);delete a.titleCmp;Ext.apply(a.renderData,{bodyCls:a.bodyCls,dock:a.dock})},onRender:function(){var a=this;a.callParent();if(a.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a.el.on({mousemove:a.onMouseMove,scope:a})}},afterRender:function(){var a=this.layout;this.callParent();if(Ext.isIE9&&Ext.isStrict&&this.orientation==="vertical"){a.innerCt.on("scroll",function(){a.innerCt.dom.scrollLeft=0})}},afterLayout:function(){this.adjustTabPositions();this.callParent(arguments)},adjustTabPositions:function(){var a=this.items.items,b=a.length,c;if(!Ext.isIE9m){if(this.dock==="right"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",c.lastBox.width+"px")}}}else{if(this.dock==="left"){while(b--){c=a[b];if(c.isVisible()){c.el.setStyle("left",-c.lastBox.height+"px")}}}}}},getLayout:function(){var a=this;a.layout.type=(a.orientation==="horizontal")?"hbox":"vbox";return a.callParent(arguments)},onAdd:function(a){a.position=this.dock;this.callParent(arguments)},onRemove:function(a){var b=this;if(a===b.previousTab){b.previousTab=null}b.callParent(arguments)},afterComponentLayout:function(b){var c=this,a=c.needsScroll;c.callParent(arguments);if(a){c.layout.overflowHandler.scrollToItem(c.activeTab)}delete c.needsScroll},onClick:function(h,g){var d=this,k=d.tabPanel,j,c,b,a;if(h.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}if(d.orientation==="vertical"&&(Ext.isIE8||Ext.isIE9)&&Ext.isStrict){a=d.getTabInfoFromPoint(h.getXY());c=a.tab;b=a.close}else{j=h.getTarget("."+Ext.tab.Tab.prototype.baseCls);c=j&&Ext.getCmp(j.id);b=c&&c.closeEl&&(g===c.closeEl.dom)}if(b){h.preventDefault()}if(c&&c.isDisabled&&!c.isDisabled()){if(c.closable&&b){c.onCloseClick()}else{if(k){k.setActiveTab(c.card)}else{d.setActiveTab(c)}c.focus()}}},onMouseMove:function(g){var d=this,b=d._overTab,a,c;if(g.getTarget("."+Ext.baseCSSPrefix+"box-scroller")){return}a=d.getTabInfoFromPoint(g.getXY());c=a.tab;if(c!==b){if(b&&b.rendered){b.onMouseLeave(g);d._overTab=null}if(c){c.onMouseEnter(g);d._overTab=c;if(!c.disabled){d.el.setStyle("cursor","pointer")}}else{d.el.setStyle("cursor","default")}}},onMouseLeave:function(b){var a=this._overTab;if(a&&a.rendered){a.onMouseLeave(b)}},getTabInfoFromPoint:function(g){var A=this,w=A.items.items,e=w.length,o=A.layout.innerCt,u=o.getXY(),t=new Ext.util.Point(g[0],g[1]),v=0,x,b,a,p,y,j,h,d,r,l,k,n,m,s,q,z,c;for(;v1){return(b.previousTab&&b.previousTab!==a&&!b.previousTab.disabled)?b.previousTab:(a.next("tab[disabled=false]")||a.prev("tab[disabled=false]"))}},setActiveTab:function(b,a){var c=this;if(!b.disabled&&b!==c.activeTab){if(c.activeTab){if(c.activeTab.isDestroyed){c.previousTab=null}else{c.previousTab=c.activeTab;c.activeTab.deactivate()}}b.activate();c.activeTab=b;c.needsScroll=true;if(!a){c.fireEvent("change",c,b,b.card);c.updateLayout()}}}},0,["tabbar"],["component","tabbar","container","box","header"],{component:true,tabbar:true,container:true,box:true,header:true},["widget.tabbar"],0,[Ext.tab,"Bar"],0));(Ext.cmd.derive("Ext.tree.Column",Ext.grid.column.Column,{tdCls:Ext.baseCSSPrefix+"grid-cell-treecolumn",autoLock:true,lockable:false,draggable:false,hideable:false,iconCls:Ext.baseCSSPrefix+"tree-icon",checkboxCls:Ext.baseCSSPrefix+"tree-checkbox",elbowCls:Ext.baseCSSPrefix+"tree-elbow",expanderCls:Ext.baseCSSPrefix+"tree-expander",textCls:Ext.baseCSSPrefix+"tree-node-text",innerCls:Ext.baseCSSPrefix+"grid-cell-inner-treecolumn",isTreeColumn:true,cellTpl:['','lineempty"/>',"",'-end-plus {expanderCls}"/>','','aria-checked="true" ','class="{childCls} {checkboxCls} {checkboxCls}-checked"/>',"",'leafparent {iconCls}"','style="background-image:url({icon})"/>','','{value}',"",'{value}',""],initComponent:function(){var a=this;a.origRenderer=a.renderer;a.origScope=a.scope||window;a.renderer=a.treeRenderer;a.scope=a;a.callParent()},treeRenderer:function(m,a,e,b,d,n,k){var j=this,p=e.get("cls"),h=j.origRenderer,c=e.data,l=e.parentNode,o=k.rootVisible,q=[],g;if(p){a.tdCls+=" "+p}while(l&&(o||l.data.depth>0)){g=l.data;q[o?g.depth:g.depth-1]=g.isLast?0:1;l=l.parentNode}return j.getTpl("cellTpl").apply({record:e,baseIconCls:j.iconCls,iconCls:c.iconCls,icon:c.icon,checkboxCls:j.checkboxCls,checked:c.checked,elbowCls:j.elbowCls,expanderCls:j.expanderCls,textCls:j.textCls,leaf:c.leaf,expandable:e.isExpandable(),isLast:c.isLast,blankUrl:Ext.BLANK_IMAGE_URL,href:c.href,hrefTarget:c.hrefTarget,lines:q,metaData:a,childCls:j.getChildCls?j.getChildCls()+" ":"",value:h?h.apply(j.origScope,arguments):m})}},0,["treecolumn"],["component","gridcolumn","container","treecolumn","box","headercontainer"],{component:true,gridcolumn:true,container:true,treecolumn:true,box:true,headercontainer:true},["widget.treecolumn"],0,[Ext.tree,"Column"],0));(Ext.cmd.derive("Ext.selection.CheckboxModel",Ext.selection.RowModel,{mode:"MULTI",injectCheckbox:0,checkOnly:false,showHeaderCheckbox:undefined,checkSelector:"."+Ext.baseCSSPrefix+"grid-row-checker",headerWidth:24,checkerOnCls:Ext.baseCSSPrefix+"grid-hd-checker-on",constructor:function(){var a=this;a.callParent(arguments);if(a.mode==="SINGLE"&&a.showHeaderCheckbox!==true){a.showHeaderCheckbox=false}},beforeViewRender:function(b){var c=this,a;c.callParent(arguments);if(!c.hasLockedHeader()||b.headerCt.lockedCt){if(c.showHeaderCheckbox!==false){b.headerCt.on("headerclick",c.onHeaderClick,c)}c.addCheckbox(b,true);a=b.ownerCt;if(b.headerCt.lockedCt){a=a.ownerCt}c.mon(a,"reconfigure",c.onReconfigure,c)}},bindComponent:function(a){var b=this;b.sortable=false;b.callParent(arguments)},hasLockedHeader:function(){var a=this.views,c=a.length,b;for(b=0;b '},processSelection:function(b,a,h,d,j){var g=this,c=j.getTarget(g.checkSelector),k;if(g.checkOnly&&!c){return}if(c){k=g.getSelectionMode();if(k!=="SINGLE"){g.setSelectionMode("SIMPLE")}g.selectWithEvent(a,j);g.setSelectionMode(k)}else{g.selectWithEvent(a,j)}},onSelectChange:function(){this.callParent(arguments);if(!this.suspendChange){this.updateHeaderState()}},onStoreLoad:function(){this.callParent(arguments);this.updateHeaderState()},onStoreAdd:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRemove:function(){this.callParent(arguments);this.updateHeaderState()},onStoreRefresh:function(){this.callParent(arguments);this.updateHeaderState()},maybeFireSelectionChange:function(a){if(a&&!this.suspendChange){this.updateHeaderState()}this.callParent(arguments)},resumeChanges:function(){this.callParent();if(!this.suspendChange){this.updateHeaderState()}},updateHeaderState:function(){var g=this,h=g.store,e=h.getCount(),j=g.views,k=false,a=0,b,d,c;if(!h.buffered&&e>0){b=g.selected;k=true;for(c=0,d=b.getCount();c1){b.expandPath(h.join(a),d,a,function(n,m){var l=m;if(n&&m){m=m.findChild(d,e);if(m){b.getSelectionModel().select(m);Ext.callback(g,j||b,[true,m]);return}}Ext.callback(g,j||b,[false,l])},b)}else{c=b.getRootNode();if(c.getId()===e){b.getSelectionModel().select(c);Ext.callback(g,j||b,[true,c])}else{Ext.callback(g,j||b,[false,null])}}}},1,["treepanel"],["panel","component","tablepanel","container","box","treepanel"],{panel:true,component:true,tablepanel:true,container:true,box:true,treepanel:true},["widget.treepanel"],0,[Ext.tree,"Panel",Ext.tree,"TreePanel",Ext,"TreePanel"],0));(Ext.cmd.derive("Ext.view.DragZone",Ext.dd.DragZone,{containerScroll:false,constructor:function(b){var e=this,a,d,c;Ext.apply(e,b);if(!e.ddGroup){e.ddGroup="view-dd-zone-"+e.view.id}a=e.view;d=a.ownerCt;if(d){c=d.getTargetEl().dom}else{c=a.el.dom.parentNode}e.callParent([c]);e.ddel=Ext.get(document.createElement("div"));e.ddel.addCls(Ext.baseCSSPrefix+"grid-dd-wrap")},init:function(c,a,b){this.initTarget(c,a,b);this.view.mon(this.view,{itemmousedown:this.onItemMouseDown,scope:this})},onValidDrop:function(b,a,c){this.callParent();b.el.focus()},onItemMouseDown:function(b,a,d,c,g){if(!this.isPreventDrag(g,a,d,c)){if(b.focusRow){b.focusRow(a)}this.handleMouseDown(g)}},isPreventDrag:function(a){return false},getDragData:function(c){var a=this.view,b=c.getTarget(a.getItemSelector());if(b){return{copy:a.copy||(a.allowCopy&&c.ctrlKey),event:new Ext.EventObjectImpl(c),view:a,ddel:this.ddel,item:b,records:a.getSelectionModel().getSelection(),fromPosition:Ext.fly(b).getXY()}}},onInitDrag:function(b,h){var e=this,g=e.dragData,d=g.view,a=d.getSelectionModel(),c=d.getRecord(g.item);if(!a.isSelected(c)){a.select(c,true)}g.records=a.getSelection();e.ddel.update(e.getDragText());e.proxy.update(e.ddel.dom);e.onStartDrag(b,h);return true},getDragText:function(){var a=this.dragData.records.length;return Ext.String.format(this.dragText,a,a==1?"":"s")},getRepairXY:function(b,a){return a?a.fromPosition:false}},1,0,0,0,0,0,[Ext.view,"DragZone"],0));(Ext.cmd.derive("Ext.tree.ViewDragZone",Ext.view.DragZone,{isPreventDrag:function(b,a){return(a.get("allowDrag")===false)||!!b.getTarget(this.view.expanderSelector)},getDragText:function(){var a=this.dragData.records,b=a.length,d=a[0].get(this.displayField),c="s";if(b===1&&d){return d}else{if(!d){c=""}}return Ext.String.format(this.dragText,b,c)},afterRepair:function(){var h=this,a=h.view,j=a.selectedItemCls,b=h.dragData.records,g,e=b.length,c=Ext.fly,d;if(Ext.enableFx&&h.repairHighlight){for(g=0;g=j.top&&h<(j.top+d)){return"before"}else{if(!a&&(l||(h>=(j.bottom-d)&&h<=j.bottom))){return"after"}else{return"append"}}},isValidDropPoint:function(b,j,n,k,g){if(!b||!g.item){return false}var o=this.view,l=o.getRecord(b),d=g.records,a=d.length,m=d.length,c,h;if(!(l&&j&&a)){return false}for(c=0;c2)?a[2]:null,h=(j>3)?a[3]:"/",d=(j>4)?a[4]:null,g=(j>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+"=",g=b.length,a=document.cookie.length,e=0,c=0;while(e=0?a.substr(b+1):null},setHash:function(d){var a=this,c=a.useTopWindow?window.top:window;try{c.location.hash=d}catch(b){}},doSave:function(){this.hiddenField.value=this.currentToken},handleStateChange:function(a){this.currentToken=a;this.fireEvent("change",a)},updateIFrame:function(b){var a='
    '+Ext.util.Format.htmlEncode(b)+"
    ",d;try{d=this.iframe.contentWindow.document;d.open();d.write(a);d.close();return true}catch(c){return false}},checkIFrame:function(){var d=this,b=d.iframe.contentWindow,e,c,a,g;if(!b||!b.document){Ext.Function.defer(this.checkIFrame,10,this);return}e=b.document;c=e.getElementById("state");a=c?c.innerText:null;g=d.getHash();Ext.TaskManager.start({run:function(){var l=b.document,k=l.getElementById("state"),h=k?k.innerText:null,j=d.getHash();if(h!==a){a=h;d.handleStateChange(h);d.setHash(h);g=h;d.doSave()}else{if(j!==g){g=j;d.updateIFrame(j)}}},interval:50,scope:d});d.ready=true;d.fireEvent("ready",d)},startUp:function(){var a=this,b;a.currentToken=a.hiddenField.value||this.getHash();if(a.oldIEMode){a.checkIFrame()}else{b=a.getHash();Ext.TaskManager.start({run:function(){var c=a.getHash();if(c!==b){b=c;a.handleStateChange(b);a.doSave()}},interval:50,scope:a});a.ready=true;a.fireEvent("ready",a)}},init:function(d,b){var c=this,a=Ext.DomHelper;if(c.ready){Ext.callback(d,b,[c]);return}if(!Ext.isReady){Ext.onReady(function(){c.init(d,b)});return}c.hiddenField=Ext.getDom(c.fieldId);if(!c.hiddenField){c.hiddenField=Ext.getBody().createChild({id:Ext.id(),tag:"form",cls:Ext.baseCSSPrefix+"hide-display",children:[{tag:"input",type:"hidden",id:c.fieldId}]},false,true).firstChild}if(c.oldIEMode){c.iframe=Ext.getDom(c.iframeId);if(!c.iframe){c.iframe=a.append(c.hiddenField.parentNode,{tag:"iframe",id:c.iframeId,src:Ext.SSL_SECURE_URL})}}c.addEvents("ready","change");if(d){c.on("ready",d,b,{single:true})}c.startUp()},add:function(a,c){var b=this;if(c!==false){if(b.getToken()===a){return true}}if(b.oldIEMode){return b.updateIFrame(a)}else{b.setHash(a);return true}},back:function(){window.history.go(-1)},forward:function(){window.history.go(1)},getToken:function(){return this.ready?this.currentToken:this.getHash()}},1,0,0,0,0,[["observable",Ext.util.Observable]],[Ext.util,"History",Ext,"History"],0)); \ No newline at end of file diff --git a/js/extux/statusbar/StatusBar.js b/js/extux/statusbar/StatusBar.js new file mode 100644 index 00000000..39fdebba --- /dev/null +++ b/js/extux/statusbar/StatusBar.js @@ -0,0 +1,405 @@ +/** + * 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.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. + * + * Ext.create('Ext.Panel', { + * title: 'StatusBar', + * // etc. + * bbar: Ext.create('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 + * + */ +Ext.define('Ext.ux.statusbar.StatusBar', { + extend: 'Ext.toolbar.Toolbar', + alternateClassName: 'Ext.ux.StatusBar', + alias: 'widget.statusbar', + requires: ['Ext.toolbar.TextItem'], + /** + * @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 #cfg-items} config, or added via {@link #method-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): + * Ext.create('Ext.Panel', { + * title: 'StatusBar', + * // etc. + * bbar: Ext.create('Ext.ux.statusbar.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: + * Ext.create('Ext.Panel', { + * title: 'StatusBar', + * // etc. + * bbar: Ext.create('Ext.ux.statusbar.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. + */ + /** + * @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. + */ + /** + * @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. + * + * 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 = Ext.create('Ext.ux.statusbar.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. + */ + cls : 'x-statusbar', + /** + * @cfg {String} busyIconCls + * The default {@link #iconCls} applied when calling {@link #showBusy}. + * It can be overridden at any time by passing the `iconCls` argument into {@link #showBusy}. + */ + busyIconCls : 'x-status-busy', + /** + * @cfg {String} busyText + * The default {@link #text} applied when calling {@link #showBusy}. + * 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. + * 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. 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(){ + var right = this.statusAlign === 'right'; + + this.callParent(arguments); + this.currIconCls = this.iconCls || this.defaultIconCls; + this.statusEl = Ext.create('Ext.toolbar.TextItem', { + cls: 'x-status-text ' + (this.currIconCls || ''), + text: this.text || this.defaultText || '' + }); + + if (right) { + this.cls += ' x-status-right'; + this.add('->'); + this.add(this.statusEl); + } else { + this.insert(0, this.statusEl); + this.insert(1, '->'); + } + }, + + /** + * Sets the status {@link #text} and/or {@link #iconCls}. Also supports automatically clearing the + * status that was set after a specified interval. + * + * 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 + * } + * }); + * + * @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: + * + * @param {String} config.text The status text to display. If not specified, any current + * status text will remain unchanged. + * + * @param {String} config.iconCls The CSS class used to customize the status icon (see + * {@link #iconCls} for details). If not specified, any current iconCls will remain unchanged. + * + * @param {Boolean/Number/Object} config.clear 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: + * + * @param {Number} config.clear.wait The number of milliseconds to wait before clearing + * (defaults to {@link #autoClear}). + * @param {Boolean} config.clear.anim False to clear the status immediately once the callback + * executes (defaults to true which fades the status out). + * @param {Boolean} config.clear.useDefaults False to completely clear the status text and iconCls + * (defaults to true which uses {@link #defaultText} and {@link #defaultIconCls}). + * + * @return {Ext.ux.statusbar.StatusBar} this + */ + setStatus : function(o) { + var me = this; + + o = o || {}; + Ext.suspendLayouts(); + if (Ext.isString(o)) { + o = {text:o}; + } + if (o.text !== undefined) { + me.setText(o.text); + } + if (o.iconCls !== undefined) { + me.setIcon(o.iconCls); + } + + if (o.clear) { + var c = o.clear, + wait = me.autoClear, + defaults = {useDefaults: true, anim: true}; + + if (Ext.isObject(c)) { + c = Ext.applyIf(c, defaults); + if (c.wait) { + wait = c.wait; + } + } else if (Ext.isNumber(c)) { + wait = c; + c = defaults; + } else if (Ext.isBoolean(c)) { + c = defaults; + } + + c.threadId = this.activeThreadId; + Ext.defer(me.clearStatus, wait, me, [c]); + } + Ext.resumeLayouts(true); + return me; + }, + + /** + * Clears the status {@link #text} and {@link #iconCls}. Also supports clearing via an optional fade out animation. + * + * @param {Object} [config] 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: + * @param {Boolean} config.anim True to clear the status by fading out the status element (defaults + * to false which clears immediately). + * @param {Boolean} config.useDefaults 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.StatusBar} this + */ + clearStatus : function(o) { + o = o || {}; + + var me = this, + statusEl = me.statusEl; + + if (o.threadId && o.threadId !== me.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 me; + } + + var text = o.useDefaults ? me.defaultText : me.emptyText, + iconCls = o.useDefaults ? (me.defaultIconCls ? me.defaultIconCls : '') : ''; + + if (o.anim) { + // animate the statusEl Ext.Element + statusEl.el.puff({ + remove: false, + useDisplay: true, + callback: function() { + statusEl.el.show(); + me.setStatus({ + text: text, + iconCls: iconCls + }); + } + }); + } else { + me.setStatus({ + text: text, + iconCls: iconCls + }); + } + return me; + }, + + /** + * 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.StatusBar} this + */ + setText : function(text) { + var me = this; + me.activeThreadId++; + me.text = text || ''; + if (me.rendered) { + me.statusEl.setText(me.text); + } + return me; + }, + + /** + * 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.StatusBar} this + */ + setIcon : function(cls) { + var me = this; + + me.activeThreadId++; + cls = cls || ''; + + if (me.rendered) { + if (me.currIconCls) { + me.statusEl.removeCls(me.currIconCls); + me.currIconCls = null; + } + if (cls.length > 0) { + me.statusEl.addCls(cls); + me.currIconCls = cls; + } + } else { + me.currIconCls = cls; + } + return me; + }, + + /** + * 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.StatusBar} this + */ + showBusy : function(o){ + if (Ext.isString(o)) { + o = { text: o }; + } + o = Ext.applyIf(o || {}, { + text: this.busyText, + iconCls: this.busyIconCls + }); + return this.setStatus(o); + } +}); diff --git a/js/extux/statusbar/ValidationStatus.js b/js/extux/statusbar/ValidationStatus.js new file mode 100644 index 00000000..fd157cfe --- /dev/null +++ b/js/extux/statusbar/ValidationStatus.js @@ -0,0 +1,210 @@ +/** + * A {@link Ext.ux.statusbar.StatusBar} plugin that provides automatic error + * notification when the associated form contains validation errors. + */ +Ext.define('Ext.ux.statusbar.ValidationStatus', { + extend: 'Ext.Component', + requires: ['Ext.util.MixedCollection'], + /** + * @cfg {String} errorIconCls + * The {@link Ext.ux.statusbar.StatusBar#iconCls iconCls} value to be applied + * to the status message when there is a validation error. + */ + errorIconCls : 'x-status-error', + /** + * @cfg {String} errorListCls + * The css class to be used for the error list when there are validation errors. + */ + errorListCls : 'x-status-error-list', + /** + * @cfg {String} validIconCls + * The {@link Ext.ux.statusbar.StatusBar#iconCls iconCls} value to be applied + * to the status message when the form validates. + */ + validIconCls : 'x-status-valid', + + /** + * @cfg {String} showText + * The {@link Ext.ux.statusbar.StatusBar#text text} value to be applied when + * there is a form validation error. + */ + showText : 'The form has errors (click for details...)', + /** + * @cfg {String} hideText + * The {@link Ext.ux.statusbar.StatusBar#text text} value to display when + * the error list is displayed. + */ + hideText : 'Click again to hide the error list', + /** + * @cfg {String} submitText + * The {@link Ext.ux.statusbar.StatusBar#text text} value to be applied when + * the form is being submitted. + */ + submitText : 'Saving...', + + // private + init : function(sb) { + var me = this; + + me.statusBar = sb; + sb.on({ + single: true, + scope: me, + render: me.onStatusbarRender, + beforedestroy: me.destroy + }); + sb.on({ + click: { + element: 'el', + fn: me.onStatusClick, + scope: me, + buffer: 200 + } + }); + }, + + onStatusbarRender: function(sb) { + var me = this, + startMonitor = function() { + me.monitor = true; + }; + + me.monitor = true; + me.errors = Ext.create('Ext.util.MixedCollection'); + me.listAlign = (sb.statusAlign === 'right' ? 'br-tr?' : 'bl-tl?'); + + if (me.form) { + me.formPanel = Ext.getCmp(me.form); + me.basicForm = me.formPanel.getForm(); + me.startMonitoring(); + me.basicForm.on('beforeaction', function(f, action) { + if (action.type === 'submit') { + // Ignore monitoring while submitting otherwise the field validation + // events cause the status message to reset too early + me.monitor = false; + } + }); + me.basicForm.on('actioncomplete', startMonitor); + me.basicForm.on('actionfailed', startMonitor); + } + }, + + // private + startMonitoring : function() { + this.basicForm.getFields().each(function(f) { + f.on('validitychange', this.onFieldValidation, this); + }, this); + }, + + // private + stopMonitoring : function() { + this.basicForm.getFields().each(function(f) { + f.un('validitychange', this.onFieldValidation, this); + }, this); + }, + + // private + onDestroy : function() { + this.stopMonitoring(); + this.statusBar.statusEl.un('click', this.onStatusClick, this); + this.callParent(arguments); + }, + + // private + onFieldValidation : function(f, isValid) { + var me = this, + msg; + + if (!me.monitor) { + return false; + } + msg = f.getErrors()[0]; + if (msg) { + me.errors.add(f.id, {field:f, msg:msg}); + } else { + me.errors.removeAtKey(f.id); + } + this.updateErrorList(); + if (me.errors.getCount() > 0) { + if (me.statusBar.getText() !== me.showText) { + me.statusBar.setStatus({ + text: me.showText, + iconCls: me.errorIconCls + }); + } + } else { + me.statusBar.clearStatus().setIcon(me.validIconCls); + } + }, + + // private + updateErrorList : function() { + var me = this, + msg, + msgEl = me.getMsgEl(); + + if (me.errors.getCount() > 0) { + msg = ['
      ']; + this.errors.each(function(err) { + msg.push('
    • ', err.msg, '
    • '); + }); + msg.push('
    '); + msgEl.update(msg.join('')); + } else { + msgEl.update(''); + } + // reset msgEl size + msgEl.setSize('auto', 'auto'); + }, + + // private + getMsgEl : function() { + var me = this, + msgEl = me.msgEl, + t; + + if (!msgEl) { + msgEl = me.msgEl = Ext.DomHelper.append(Ext.getBody(), { + cls: me.errorListCls + }, true); + msgEl.hide(); + msgEl.on('click', function(e) { + t = e.getTarget('li', 10, true); + if (t) { + Ext.getCmp(t.id.split('x-err-')[1]).focus(); + me.hideErrors(); + } + }, null, {stopEvent: true}); // prevent anchor click navigation + } + return msgEl; + }, + + // private + showErrors : function() { + var me = this; + + me.updateErrorList(); + me.getMsgEl().alignTo(me.statusBar.getEl(), me.listAlign).slideIn('b', {duration: 300, easing: 'easeOut'}); + me.statusBar.setText(me.hideText); + me.formPanel.body.on('click', me.hideErrors, me, {single:true}); // hide if the user clicks directly into the form + }, + + // private + hideErrors : function() { + var el = this.getMsgEl(); + if (el.isVisible()) { + el.slideOut('b', {duration: 300, easing: 'easeIn'}); + this.statusBar.setText(this.showText); + } + this.formPanel.body.un('click', this.hideErrors, this); + }, + + // private + onStatusClick : function() { + if (this.getMsgEl().isVisible()) { + this.hideErrors(); + } else if (this.errors.getCount() > 0) { + this.showErrors(); + } + } +}); \ No newline at end of file diff --git a/js/extux/statusbar/css/statusbar.css b/js/extux/statusbar/css/statusbar.css new file mode 100644 index 00000000..115316da --- /dev/null +++ b/js/extux/statusbar/css/statusbar.css @@ -0,0 +1,116 @@ +/* StatusBar - structure */ +.x-statusbar .x-status-text { + cursor: default; +/* + height: 21px; + line-height: 21px; + padding: 0 4px; +*/ +} +.x-statusbar .x-status-busy { + padding-left: 25px !important; + background: transparent no-repeat 3px 0; +} + +.x-toolbar div.xtb-text + +.x-statusbar .x-status-text-panel { + border-top: 1px solid; + border-right: 1px solid; + border-bottom: 1px solid; + border-left: 1px solid; + padding: 2px 8px 2px 5px; +} + +/* StatusBar word processor example styles */ + +#word-status .x-status-text-panel .spacer { + width: 60px; + font-size:0; + line-height:0; +} +#word-status .x-status-busy { + padding-left: 25px !important; + background: transparent no-repeat 3px 0; +} +#word-status .x-status-saved { + padding-left: 25px !important; + background: transparent no-repeat 3px 0; +} + +/* StatusBar form validation example styles */ + +.x-statusbar .x-status-error { + cursor: pointer; + padding-left: 25px !important; + background: transparent no-repeat 3px 0; +} +.x-statusbar .x-status-valid { + padding-left: 25px !important; + background: transparent no-repeat 3px 0; +} +.x-status-error-list { + font: 11px tahoma,arial,verdana,sans-serif; + position: absolute; + z-index: 9999; + border-top: 1px solid; + border-right: 1px solid; + border-bottom: 1px solid; + border-left: 1px solid; + padding: 5px 10px; +} +.x-status-error-list li { + cursor: pointer; + list-style: disc; + margin-left: 10px; +} +.x-status-error-list li a { + text-decoration: none; +} +.x-status-error-list li a:hover { + text-decoration: underline; +} + + +/* *********************************************************** */ +/* *********************************************************** */ +/* *********************************************************** */ + + +/* StatusBar - visual */ + +.x-statusbar .x-status-busy { + background-image: url(../images/loading.gif); +} +.x-statusbar .x-status-text-panel { + border-color: #99bbe8 #fff #fff #99bbe8; +} + +/* StatusBar word processor example styles */ + +#word-status .x-status-text { + color: #777; +} +#word-status .x-status-busy { + background-image: url(../images/saving.gif); +} +#word-status .x-status-saved { + background-image: url(../images/saved.png); +} + +/* StatusBar form validation example styles */ + +.x-statusbar .x-status-error { + color: #C33; + background-image: url(../images/exclamation.gif); +} +.x-statusbar .x-status-valid { + background-image: url(../images/accept.png); +} +.x-status-error-list { + border-color: #C33; + background: white; +} +.x-status-error-list li a { + color: #15428B; +} \ No newline at end of file diff --git a/js/extux/statusbar/images/accept.png b/js/extux/statusbar/images/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..89c8129a490b329f3165f32fa0781701aab417ea GIT binary patch literal 781 zcmV+o1M>WdP)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+@ literal 0 HcmV?d00001 diff --git a/js/extux/statusbar/images/saved.png b/js/extux/statusbar/images/saved.png new file mode 100644 index 0000000000000000000000000000000000000000..a9925a06ab02db30c1e7ead9c701c15bc63145cb GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/js/highcharts-more.js b/js/highcharts-more.js new file mode 100644 index 00000000..1ccdd52b --- /dev/null +++ b/js/highcharts-more.js @@ -0,0 +1,50 @@ +/* + Highcharts JS v3.0.4 (2013-08-02) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(l,C){function J(a,b,c){this.init.call(this,a,b,c)}function K(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment=function(a){var c=this.xAxis.center;a.push("L",c[0],c[1])},this.closedStacks=!0}function L(a,b){var c=this.chart,d=this.options.animation,g=this.group,f=this.markerGroup,e=this.xAxis.center,i=c.plotLeft,o=c.plotTop;if(c.polar){if(c.renderer.isSVG)if(d===!0&&(d={}),b){if(c={translateX:e[0]+i,translateY:e[1]+o,scaleX:0.001,scaleY:0.001},g.attr(c),f)f.attrSetters=g.attrSetters, +f.attr(c)}else c={translateX:i,translateY:o,scaleX:1,scaleY:1},g.animate(c,d),f&&f.animate(c,d),this.animate=null}else a.call(this,b)}var P=l.arrayMin,Q=l.arrayMax,r=l.each,F=l.extend,p=l.merge,R=l.map,q=l.pick,v=l.pInt,m=l.getOptions().plotOptions,h=l.seriesTypes,x=l.extendClass,M=l.splat,n=l.wrap,N=l.Axis,u=l.Tick,z=l.Series,t=h.column.prototype,s=Math,D=s.round,A=s.floor,S=s.max,w=function(){};F(J.prototype,{init:function(a,b,c){var d=this,g=d.defaultOptions;d.chart=b;if(b.angular)g.background= +{};d.options=a=p(g,a);(a=a.background)&&r([].concat(M(a)).reverse(),function(a){var b=a.backgroundColor,a=p(d.defaultBackgroundOptions,a);if(b)a.backgroundColor=b;a.color=a.backgroundColor;c.options.plotBands.unshift(a)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{shape:"circle",borderWidth:1,borderColor:"silver",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#FFF"],[1,"#DDD"]]},from:Number.MIN_VALUE,innerRadius:0,to:Number.MAX_VALUE, +outerRadius:"105%"}});var G=N.prototype,u=u.prototype,T={getOffset:w,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:w,setCategories:w,setTitle:w},O={isRadial:!0,defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,plotBands:[],tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2},defaultRadialXOptions:{gridLineWidth:1,labels:{align:null, +distance:15,x:0,y:null},maxPadding:0,minPadding:0,plotBands:[],showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},plotBands:[],showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){this.options=p(this.defaultOptions,this.defaultRadialOptions,a)},getOffset:function(){G.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center=h.pie.prototype.getCenter.call(this.pane)},getLinePath:function(a, +b){var c=this.center,b=q(b,c[2]/2-this.offset);return this.chart.renderer.symbols.arc(this.left+c[0],this.top+c[1],b,b,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})},setAxisTranslation:function(){G.setAxisTranslation.call(this);if(this.center&&(this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.isXAxis))this.minPixelPadding=this.transA*this.minPointOffset+(this.reversed?(this.endAngleRad-this.startAngleRad)/ +4:0)},beforeSetTickPositions:function(){this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange)},setAxisSize:function(){G.setAxisSize.call(this);if(this.center)this.len=this.width=this.height=this.isCircular?this.center[2]*(this.endAngleRad-this.startAngleRad)/2:this.center[2]/2},getPosition:function(a,b){if(!this.isCircular)b=this.translate(a),a=this.min;return this.postTranslate(this.translate(a),q(b,this.center[2]/2)-this.offset)},postTranslate:function(a,b){var c= +this.chart,d=this.center,a=this.startAngleRad+a;return{x:c.plotLeft+d[0]+Math.cos(a)*b,y:c.plotTop+d[1]+Math.sin(a)*b}},getPlotBandPath:function(a,b,c){var d=this.center,g=this.startAngleRad,f=d[2]/2,e=[q(c.outerRadius,"100%"),c.innerRadius,q(c.thickness,10)],i=/%$/,o,k=this.isCircular;this.options.gridLineInterpolation==="polygon"?d=this.getPlotLinePath(a).concat(this.getPlotLinePath(b,!0)):(k||(e[0]=this.translate(a),e[1]=this.translate(b)),e=R(e,function(a){i.test(a)&&(a=v(a,10)*f/100);return a}), +c.shape==="circle"||!k?(a=-Math.PI/2,b=Math.PI*1.5,o=!0):(a=g+this.translate(a),b=g+this.translate(b)),d=this.chart.renderer.symbols.arc(this.left+d[0],this.top+d[1],e[0],e[0],{start:a,end:b,innerR:q(e[1],e[0]-e[2]),open:o}));return d},getPlotLinePath:function(a,b){var c=this.center,d=this.chart,g=this.getPosition(a),f,e,i;this.isCircular?i=["M",c[0]+d.plotLeft,c[1]+d.plotTop,"L",g.x,g.y]:this.options.gridLineInterpolation==="circle"?(a=this.translate(a))&&(i=this.getLinePath(0,a)):(f=d.xAxis[0], +i=[],a=this.translate(a),c=f.tickPositions,f.autoConnect&&(c=c.concat([c[0]])),b&&(c=[].concat(c).reverse()),r(c,function(c,b){e=f.getPosition(c,a);i.push(b?"L":"M",e.x,e.y)}));return i},getTitlePosition:function(){var a=this.center,b=this.chart,c=this.options.title;return{x:b.plotLeft+a[0]+(c.x||0),y:b.plotTop+a[1]-{high:0.5,middle:0.25,low:0}[c.align]*a[2]+(c.y||0)}}};n(G,"init",function(a,b,c){var j;var d=b.angular,g=b.polar,f=c.isX,e=d&&f,i,o;o=b.options;var k=c.pane||0;if(d){if(F(this,e?T:O), +i=!f)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else if(g)F(this,O),this.defaultRadialOptions=(i=f)?this.defaultRadialXOptions:p(this.defaultYAxisOptions,this.defaultRadialYOptions);a.call(this,b,c);if(!e&&(d||g)){a=this.options;if(!b.panes)b.panes=[];this.pane=(j=b.panes[k]=b.panes[k]||new J(M(o.pane)[k],b,this),k=j);k=k.options;b.inverted=!1;o.chart.zoomType=null;this.startAngleRad=b=(k.startAngle-90)*Math.PI/180;this.endAngleRad=o=(q(k.endAngle,k.startAngle+360)-90)*Math.PI/180;this.offset= +a.offset||0;if((this.isCircular=i)&&c.max===C&&o-b===2*Math.PI)this.autoConnect=!0}});n(u,"getPosition",function(a,b,c,d,g){var f=this.axis;return f.getPosition?f.getPosition(c):a.call(this,b,c,d,g)});n(u,"getLabelPosition",function(a,b,c,d,g,f,e,i,o){var k=this.axis,j=f.y,h=f.align,l=(k.translate(this.pos)+k.startAngleRad+Math.PI/2)/Math.PI*180%360;k.isRadial?(a=k.getPosition(this.pos,k.center[2]/2+q(f.distance,-25)),f.rotation==="auto"?d.attr({rotation:l}):j===null&&(j=v(d.styles.lineHeight)*0.9- +d.getBBox().height/2),h===null&&(h=k.isCircular?l>20&&l<160?"left":l>200&&l<340?"right":"center":"center",d.attr({align:h})),a.x+=f.x,a.y+=j):a=a.call(this,b,c,d,g,f,e,i,o);return a});n(u,"getMarkPath",function(a,b,c,d,g,f,e){var i=this.axis;i.isRadial?(a=i.getPosition(this.pos,i.center[2]/2+d),b=["M",b,c,"L",a.x,a.y]):b=a.call(this,b,c,d,g,f,e);return b});m.arearange=p(m.area,{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'{series.name}: {point.low} - {point.high}
    '}, +trackByArea:!0,dataLabels:{verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0}});h.arearange=l.extendClass(h.area,{type:"arearange",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",getSegments:function(){var a=this;r(a.points,function(b){if(!a.options.connectNulls&&(b.low===null||b.high===null))b.y=null;else if(b.low===null&&b.high!==null)b.y=b.high});z.prototype.getSegments.call(this)},translate:function(){var a=this.yAxis;h.area.prototype.translate.apply(this); +r(this.points,function(b){var c=b.low,d=b.high,g=b.plotY;d===null&&c===null?b.y=null:c===null?(b.plotLow=b.plotY=null,b.plotHigh=a.translate(d,0,1,0,1)):d===null?(b.plotLow=g,b.plotHigh=null):(b.plotLow=g,b.plotHigh=a.translate(d,0,1,0,1))})},getSegmentPath:function(a){var b,c=[],d=a.length,g=z.prototype.getSegmentPath,f,e;e=this.options;var i=e.step;for(b=HighchartsAdapter.grep(a,function(a){return a.plotLow!==null});d--;)f=a[d],f.plotHigh!==null&&c.push({plotX:f.plotX,plotY:f.plotHigh});a=g.call(this, +b);if(i)i===!0&&(i="left"),e.step={left:"right",center:"center",right:"left"}[i];c=g.call(this,c);e.step=i;e=[].concat(a,c);c[0]="L";this.areaPath=this.areaPath.concat(a,c);return e},drawDataLabels:function(){var a=this.data,b=a.length,c,d=[],g=z.prototype,f=this.options.dataLabels,e,i=this.chart.inverted;if(f.enabled||this._hasPointLabels){for(c=b;c--;)e=a[c],e.y=e.high,e.plotY=e.plotHigh,d[c]=e.dataLabel,e.dataLabel=e.dataLabelUpper,e.below=!1,i?(f.align="left",f.x=f.xHigh):f.y=f.yHigh;g.drawDataLabels.apply(this, +arguments);for(c=b;c--;)e=a[c],e.dataLabelUpper=e.dataLabel,e.dataLabel=d[c],e.y=e.low,e.plotY=e.plotLow,e.below=!0,i?(f.align="right",f.x=f.xLow):f.y=f.yLow;g.drawDataLabels.apply(this,arguments)}},alignDataLabel:h.column.prototype.alignDataLabel,getSymbol:h.column.prototype.getSymbol,drawPoints:w});m.areasplinerange=p(m.arearange);h.areasplinerange=x(h.arearange,{type:"areasplinerange",getPointSpline:h.spline.prototype.getPointSpline});m.columnrange=p(m.column,m.arearange,{lineWidth:1,pointRange:null}); +h.columnrange=x(h.arearange,{type:"columnrange",translate:function(){var a=this,b=a.yAxis,c;t.translate.apply(a);r(a.points,function(d){var g=d.shapeArgs,f=a.options.minPointLength,e;d.plotHigh=c=b.translate(d.high,0,1,0,1);d.plotLow=d.plotY;e=c;d=d.plotY-c;d{series.name}
    Maximum: {point.high}
    Upper quartile: {point.q3}
    Median: {point.median}
    Lower quartile: {point.q1}
    Minimum: {point.low}
    '},whiskerLength:"50%",whiskerWidth:2});h.boxplot=x(h.column,{type:"boxplot",pointArrayMap:["low","q1","median","q3","high"],toYData:function(a){return[a.low, +a.q1,a.median,a.q3,a.high]},pointValKey:"high",pointAttrToOptions:{fill:"fillColor",stroke:"color","stroke-width":"lineWidth"},drawDataLabels:w,translate:function(){var a=this.yAxis,b=this.pointArrayMap;h.column.prototype.translate.apply(this);r(this.points,function(c){r(b,function(b){c[b]!==null&&(c[b+"Plot"]=a.translate(c[b],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.points,c=a.options,d=a.chart.renderer,g,f,e,i,o,k,j,h,l,m,n,H,p,E,I,t,w,s,v,u,z,y,x=a.doQuartiles!==!1,B=parseInt(a.options.whiskerLength, +10)/100;r(b,function(b){l=b.graphic;z=b.shapeArgs;n={};E={};t={};y=b.color||a.color;if(b.plotY!==C)if(g=b.pointAttr[b.selected?"selected":""],w=z.width,s=A(z.x),v=s+w,u=D(w/2),f=A(x?b.q1Plot:b.lowPlot),e=A(x?b.q3Plot:b.lowPlot),i=A(b.highPlot),o=A(b.lowPlot),n.stroke=b.stemColor||c.stemColor||y,n["stroke-width"]=q(b.stemWidth,c.stemWidth,c.lineWidth),n.dashstyle=b.stemDashStyle||c.stemDashStyle,E.stroke=b.whiskerColor||c.whiskerColor||y,E["stroke-width"]=q(b.whiskerWidth,c.whiskerWidth,c.lineWidth), +t.stroke=b.medianColor||c.medianColor||y,t["stroke-width"]=q(b.medianWidth,c.medianWidth,c.lineWidth),j=n["stroke-width"]%2/2,h=s+u+j,m=["M",h,e,"L",h,i,"M",h,f,"L",h,o,"z"],x&&(j=g["stroke-width"]%2/2,h=A(h)+j,f=A(f)+j,e=A(e)+j,s+=j,v+=j,H=["M",s,e,"L",s,f,"L",v,f,"L",v,e,"L",s,e,"z"]),B&&(j=E["stroke-width"]%2/2,i+=j,o+=j,p=["M",h-u*B,i,"L",h+u*B,i,"M",h-u*B,o,"L",h+u*B,o]),j=t["stroke-width"]%2/2,k=D(b.medianPlot)+j,I=["M",s,k,"L",v,k,"z"],l)b.stem.animate({d:m}),B&&b.whiskers.animate({d:p}),x&& +b.box.animate({d:H}),b.medianShape.animate({d:I});else{b.graphic=l=d.g().add(a.group);b.stem=d.path(m).attr(n).add(l);if(B)b.whiskers=d.path(p).attr(E).add(l);if(x)b.box=d.path(H).attr(g).add(l);b.medianShape=d.path(I).attr(t).add(l)}})}});m.errorbar=p(m.boxplot,{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:m.arearange.tooltip.pointFormat},whiskerWidth:null});h.errorbar=x(h.boxplot,{type:"errorbar",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"high", +doQuartiles:!1,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||h.column.prototype.getColumnMetrics.call(this)}});m.waterfall=p(m.column,{lineWidth:1,lineColor:"#333",dashStyle:"dot",borderColor:"#333"});h.waterfall=x(h.column,{type:"waterfall",upColorProp:"fill",pointArrayMap:["low","y"],pointValKey:"y",init:function(a,b){b.stacking=!0;h.column.prototype.init.call(this,a,b)},translate:function(){var a=this.options,b=this.yAxis,c,d,g,f,e,i,o,k,j;c=a.threshold; +a=a.borderWidth%2/2;h.column.prototype.translate.apply(this);k=c;g=this.points;for(d=0,c=g.length;d0&&!a.color)a.pointAttr=d,a.color=c})},getGraphPath:function(){var a=this.data,b=a.length,c=D(this.options.lineWidth+this.options.borderWidth)%2/2,d=[],g,f,e;for(e=1;e0?(i[f]-a)/(b-a):0.5,h.push(s.ceil(c+e*(d-c))/2);this.radii=h},animate:function(a){var b=this.options.animation;if(!a)r(this.points,function(a){var d=a.graphic,a=a.shapeArgs;d&&a&&(d.attr("r",1),d.animate({r:a.r},b))}),this.animate=null},translate:function(){var a,b=this.data,c,d,g=this.radii;h.scatter.prototype.translate.call(this);for(a=b.length;a--;)c=b[a],d=g?g[a]:0,c.negative=c.z<(this.options.zThreshold||0),d>=this.minPxSize/2?(c.shapeType="circle",c.shapeArgs={x:c.plotX,y:c.plotY, +r:d},c.dlBox={x:c.plotX-d,y:c.plotY-d,width:2*d,height:2*d}):c.shapeArgs=c.plotY=c.dlBox=C},drawLegendSymbol:function(a,b){var c=v(a.itemStyle.fontSize)/2;b.legendSymbol=this.chart.renderer.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker=!0},drawPoints:h.column.prototype.drawPoints,alignDataLabel:h.column.prototype.alignDataLabel});N.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,g=b,f=this.isXAxis,e=f?"xData":"yData",i=this.min,h={}, +k=s.min(c.plotWidth,c.plotHeight),j=Number.MAX_VALUE,l=-Number.MAX_VALUE,m=this.max-i,n=b/m,p=[];this.tickPositions&&(r(this.series,function(b){var c=b.options;if(b.type==="bubble"&&b.visible&&(a.allowZoomOutside=!0,p.push(b),f))r(["minSize","maxSize"],function(a){var b=c[a],d=/%$/.test(b),b=v(b);h[a]=d?k*b/100:b}),b.minPxSize=h.minSize,b=b.zData,b.length&&(j=s.min(j,s.max(P(b),c.displayNegative===!1?c.zThreshold:-Number.MAX_VALUE)),l=s.max(l,Q(b)))}),r(p,function(a){var b=a[e],c=b.length,k;f&&a.getRadii(j, +l,h.minSize,h.maxSize);if(m>0)for(;c--;)k=a.radii[c],d=Math.min((b[c]-i)*n-k,d),g=Math.max((b[c]-i)*n+k,g)}),m>0&&q(this.options.min,this.userMin)===C&&q(this.options.max,this.userMax)===C&&(g-=b,n*=(b+d-g)/b,this.min+=d/n,this.max+=g/n))};var y=z.prototype,m=l.Pointer.prototype;y.toXY=function(a){var b,c=this.chart;b=a.plotX;var d=a.plotY;a.rectPlotX=b;a.rectPlotY=d;a.clientX=(b/Math.PI*180+this.xAxis.pane.options.startAngle)%360;b=this.xAxis.postTranslate(a.plotX,this.yAxis.len-d);a.plotX=a.polarPlotX= +b.x-c.plotLeft;a.plotY=a.polarPlotY=b.y-c.plotTop};y.orderTooltipPoints=function(a){if(this.chart.polar&&(a.sort(function(a,c){return a.clientX-c.clientX}),a[0]))a[0].wrappedClientX=a[0].clientX+360,a.push(a[0])};n(h.area.prototype,"init",K);n(h.areaspline.prototype,"init",K);n(h.spline.prototype,"getPointSpline",function(a,b,c,d){var g,f,e,i,h,k,j;if(this.chart.polar){g=c.plotX;f=c.plotY;a=b[d-1];e=b[d+1];this.connectEnds&&(a||(a=b[b.length-2]),e||(e=b[1]));if(a&&e)i=a.plotX,h=a.plotY,b=e.plotX, +k=e.plotY,i=(1.5*g+i)/2.5,h=(1.5*f+h)/2.5,e=(1.5*g+b)/2.5,j=(1.5*f+k)/2.5,b=Math.sqrt(Math.pow(i-g,2)+Math.pow(h-f,2)),k=Math.sqrt(Math.pow(e-g,2)+Math.pow(j-f,2)),i=Math.atan2(h-f,i-g),h=Math.atan2(j-f,e-g),j=Math.PI/2+(i+h)/2,Math.abs(i-j)>Math.PI/2&&(j-=Math.PI),i=g+Math.cos(j)*b,h=f+Math.sin(j)*b,e=g+Math.cos(Math.PI+j)*k,j=f+Math.sin(Math.PI+j)*k,c.rightContX=e,c.rightContY=j;d?(c=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,i||g,h||f,g,f],a.rightContX=a.rightContY=null):c=["M",g,f]}else c= +a.call(this,b,c,d);return c});n(y,"translate",function(a){a.call(this);if(this.chart.polar&&!this.preventPostTranslate)for(var a=this.points,b=a.length;b--;)this.toXY(a[b])});n(y,"getSegmentPath",function(a,b){var c=this.points;if(this.chart.polar&&this.options.connectEnds!==!1&&b[b.length-1]===c[c.length-1]&&c[0].y!==null)this.connectEnds=!0,b=[].concat(b,[c[0]]);return a.call(this,b)});n(y,"animate",L);n(t,"animate",L);n(y,"setTooltipPoints",function(a,b){this.chart.polar&&F(this.xAxis,{tooltipLen:360}); +return a.call(this,b)});n(t,"translate",function(a){var b=this.xAxis,c=this.yAxis.len,d=b.center,g=b.startAngleRad,f=this.chart.renderer,e,h;this.preventPostTranslate=!0;a.call(this);if(b.isRadial){b=this.points;for(h=b.length;h--;)e=b[h],a=e.barX+g,e.shapeType="path",e.shapeArgs={d:f.symbols.arc(d[0],d[1],c-e.plotY,null,{start:a,end:a+e.pointWidth,innerR:c-q(e.yBottom,c)})},this.toXY(e)}});n(t,"alignDataLabel",function(a,b,c,d,g,f){if(this.chart.polar){a=b.rectPlotX/Math.PI*180;if(d.align===null)d.align= +a>20&&a<160?"left":a>200&&a<340?"right":"center";if(d.verticalAlign===null)d.verticalAlign=a<45||a>315?"bottom":a>135&&a<225?"top":"middle";y.alignDataLabel.call(this,b,c,d,g,f)}else a.call(this,b,c,d,g,f)});n(m,"getIndex",function(a,b){var c,d=this.chart,g;d.polar?(g=d.xAxis[0].center,c=b.chartX-g[0]-d.plotLeft,d=b.chartY-g[1]-d.plotTop,c=180-Math.round(Math.atan2(c,d)/Math.PI*180)):c=a.call(this,b);return c});n(m,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?r(c.axes, +function(a){var f=a.isXAxis,e=a.center,h=b.chartX-e[0]-c.plotLeft,e=b.chartY-e[1]-c.plotTop;d[f?"xAxis":"yAxis"].push({axis:a,value:a.translate(f?Math.PI-Math.atan2(h,e):Math.sqrt(Math.pow(h,2)+Math.pow(e,2)),!0)})}):d=a.call(this,b);return d})})(Highcharts); diff --git a/js/highcharts.js b/js/highcharts.js new file mode 100644 index 00000000..9f2c8cbe --- /dev/null +++ b/js/highcharts.js @@ -0,0 +1,277 @@ +/* + Highcharts JS v3.0.4 (2013-08-02) + + (c) 2009-2013 Torstein Hønsi + + License: www.highcharts.com/license +*/ +(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}function x(){var a,b=arguments.length,c={},d=function(a,b){var c,h;typeof a!=="object"&&(a={});for(h in b)b.hasOwnProperty(h)&&(c=b[h],a[h]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&typeof c.nodeType!=="number"?d(a[h]||{},c):b[h]);return a};for(a=0;a3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+P(a-c).toFixed(f).slice(2):"")}function za(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Bb(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this,a)}}function Aa(a,b){for(var c="{",d=!1, +e,f,g,h,i,j=[];(c=a.indexOf(c))!==-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h-1?h.thousandsSep:"")):e=Xa(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function lb(a){return N.pow(10,S(N.log(a)/N.LN10))}function mb(a,b,c,d){var e,c=p(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d&&d.allowDecimals=== +!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d=y[nb]&&(i.setMilliseconds(0),i.setSeconds(j>=y[Ya]?0:k*S(i.getSeconds()/k)));if(j>=y[Ya])i[Fb](j>=y[Qa]?0:k*S(i[ob]()/k));if(j>=y[Qa])i[Gb](j>=y[ra]?0:k*S(i[pb]()/k));if(j>=y[ra])i[qb](j>=y[Ra]?1:k*S(i[Sa]()/k));j>=y[Ra]&&(i[Hb](j>=y[sa]?0:k*S(i[$a]()/k)),h=i[ab]());j>=y[sa]&&(h-=h%k,i[Ib](h));if(j===y[Za])i[qb](i[Sa]()-i[rb]()+ +p(d,1));b=1;h=i[ab]();for(var d=i.getTime(),l=i[$a](),m=i[Sa](),o=g?0:(864E5+i.getTimezoneOffset()*6E4)%864E5;dc&&(c=a[b]);return c}function Ja(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}function Ta(a){cb||(cb=T(Ba));a&&cb.appendChild(a);cb.innerHTML=""}function ua(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;else E.console&&console.log(c)}function ia(a){return parseFloat(a.toPrecision(14))} +function Ka(a,b){Ca=p(a,b.animation)}function Lb(){var a=O.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";bb=a?Date.UTC:function(a,b,c,g,h,i){return(new Date(a,b,p(c,1),p(g,0),p(h,0),p(i,0))).getTime()};ob=b+"Minutes";pb=b+"Hours";rb=b+"Day";Sa=b+"Date";$a=b+"Month";ab=b+"FullYear";Fb=c+"Minutes";Gb=c+"Hours";qb=c+"Date";Hb=c+"Month";Ib=c+"FullYear"}function va(){}function La(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function tb(a,b){this.axis=a;if(b)this.options= +b,this.id=b.id}function Mb(a,b,c,d,e,f){var g=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=0;this.points={};this.stack=e;this.percent=f==="percent";this.alignOptions={align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:p(b.y,g?4:c?14:-6),x:p(b.x,g?c?-6:6:0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function db(){this.init.apply(this,arguments)}function ub(){this.init.apply(this,arguments)} +function vb(a,b){this.init(a,b)}function wb(a,b){this.init(a,b)}function xb(){this.init.apply(this,arguments)}var v,z=document,E=window,N=Math,s=N.round,S=N.floor,ja=N.ceil,u=N.max,I=N.min,P=N.abs,V=N.cos,ba=N.sin,Ma=N.PI,Ua=Ma*2/360,Da=navigator.userAgent,Nb=E.opera,qa=/msie/i.test(Da)&&!Nb,eb=z.documentMode===8,fb=/AppleWebKit/.test(Da),gb=/Firefox/.test(Da),Ob=/(Mobile|Android|Windows Phone)/.test(Da),wa="http://www.w3.org/2000/svg",Y=!!z.createElementNS&&!!z.createElementNS(wa,"svg").createSVGRect, +Vb=gb&&parseInt(Da.split("Firefox/")[1],10)<4,Z=!Y&&!qa&&!!z.createElement("canvas").getContext,Va,hb=z.documentElement.ontouchstart!==v,Pb={},yb=0,cb,O,Xa,Ca,zb,y,xa=function(){},Ea=[],Ba="div",R="none",Qb="rgba(192,192,192,"+(Y?1.0E-4:0.002)+")",Db="millisecond",nb="second",Ya="minute",Qa="hour",ra="day",Za="week",Ra="month",sa="year",Rb="stroke-width",bb,ob,pb,rb,Sa,$a,ab,Fb,Gb,qb,Hb,Ib,$={};E.Highcharts=E.Highcharts?ua(16,!0):{};Xa=function(a,b,c){if(!t(b)||isNaN(b))return"Invalid date";var a= +p(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b),e,f=d[pb](),g=d[rb](),h=d[Sa](),i=d[$a](),j=d[ab](),k=O.lang,l=k.weekdays,d=r({a:l[g].substr(0,3),A:l[g],d:za(h),e:h,b:k.shortMonths[i],B:k.months[i],m:za(i+1),y:j.toString().substr(2,2),Y:j,H:za(f),I:za(f%12||12),l:f%12||12,M:za(d[ob]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:za(d.getSeconds()),L:za(s(b%1E3),3)},Highcharts.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+ +a.substr(1):a};Jb.prototype={wrapColor:function(a){if(this.color>=a)this.color=0},wrapSymbol:function(a){if(this.symbol>=a)this.symbol=0}};y=function(){for(var a=0,b=arguments,c=b.length,d={};a-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&& +(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length{point.key}
    ',pointFormat:'{series.name}: {point.y}
    ',shadow:!0,snap:Ob?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com", +position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var X=O.plotOptions,W=X.line;Lb();var oa=function(a){var b=[],c,d;(function(a){a&&a.stops?d=Na(a.stops,function(a){return oa(a[1])}):(c=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(a))?b=[A(c[1]),A(c[2]),A(c[3]),parseFloat(c[4],10)]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?b=[A(c[1],16),A(c[2],16),A(c[3], +16),1]:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))&&(b=[A(c[1]),A(c[2]),A(c[3]),1])})(a);return{get:function(c){var f;d?(f=x(a),f.stops=[].concat(f.stops),n(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)n(d,function(b){b.brighten(a)});else if(pa(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=A(a*255),b[c]<0&&(b[c]=0),b[c]>255&& +(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this}}};va.prototype={init:function(a,b){this.element=b==="span"?T(b):z.createElementNS(wa,b);this.renderer=a;this.attrSetters={}},opacity:1,animate:function(a,b,c){b=p(b,Ca,!0);Wa(this);if(b){b=x(b);if(c)b.complete=c;Ab(this,a,b)}else this.attr(a),c&&c()},attr:function(a,b){var c,d,e,f,g=this.element,h=g.nodeName.toLowerCase(),i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,o,q=this;da(a)&&t(b)&&(c=a,a={},a[c]=b);if(da(a))c= +a,h==="circle"?c={x:"cx",y:"cy"}[c]||c:c==="strokeWidth"&&(c="stroke-width"),q=w(g,c)||this[c]||0,c!=="d"&&c!=="visibility"&&(q=parseFloat(q));else{for(c in a)if(j=!1,d=a[c],e=k[c]&&k[c].call(this,d,c),e!==!1){e!==v&&(d=e);if(c==="d")d&&d.join&&(d=d.join(" ")),/(NaN| {2}|^$)/.test(d)&&(d="M 0 0");else if(c==="x"&&h==="text")for(e=0;em&&/[ \-]/.test(b.textContent||b.innerText))M(b,{width:m+"px",display:"block",whiteSpace:"normal"}),k=m;m=a.fontMetrics(b.style.fontSize).b;D=o<0&&-k;F=q<0&&-l;ka=o*q<0;D+=q*m*(ka?1-h:h);F-=o*m*(j?ka?h:1-h:1);i&&(D-=k*h*(o<0?-1:1),j&&(F-=l*h*(q<0?-1:1)),M(b,{textAlign:g}));this.xCorr=D;this.yCorr=F}M(b,{left:e+D+"px",top:f+F+"px"});if(fb)l=b.offsetHeight; +this.cTT=Tb}}else this.alignOnAdd=!0},setSpanRotation:function(a){var b={};b[qa?"-ms-transform":fb?"-webkit-transform":gb?"MozTransform":Nb?"-o-transform":""]=b.transform="rotate("+a+"deg)";M(this.element,b)},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(this.x||0)+" "+(this.y|| +0)+")");(t(c)||t(d))&&a.push("scale("+p(c,1)+" "+p(d,1)+")");a.length&&w(this.element,"transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||da(c))this.alignTo=d=c||"renderer",fa(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=p(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x|| +0)+(a.x||0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=s(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=s(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(){var a=this.bBox,b=this.renderer,c,d=this.rotation;c=this.element;var e=this.styles,f=d*Ua;if(!a){if(c.namespaceURI===wa||b.forExport){try{a=c.getBBox? +r({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(g){}if(!a||a.width<0)a={width:0,height:0}}else a=this.htmlGetBBox();if(b.isSVG){b=a.width;c=a.height;if(qa&&e&&e.fontSize==="11px"&&c.toPrecision(3)==="22.7")a.height=c=14;if(d)a.width=P(c*ba(f))+P(b*V(f)),a.height=P(c*V(f))+P(b*ba(f))}this.bBox=a}return a},show:function(){return this.attr({visibility:"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a|| +150,complete:function(){b.hide()}})},add:function(a){var b=this.renderer,c=a||b,d=c.element||b.box,e=d.childNodes,f=this.element,g=w(f,"zIndex"),h;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);if(g)c.handleZ=!0,g=A(g);if(c.handleZ)for(c=0;cg||!t(g)&&t(b))){d.insertBefore(f,a);h=!0;break}h||d.appendChild(f);this.added=!0;C(this,"add");return this},safeRemoveChild:function(a){var b=a.parentNode; +b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&b.parentNode,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;Wa(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f/g,'').replace(/<(i|em)>/g,'').replace(//g,"").split(//g),f=b.childNodes,g=/style="([^"]+)"/, +h=/href="(http[^"]+)"/,i=w(b,"x"),j=a.styles,k=j&&j.width&&A(j.width),l=j&&j.lineHeight,m=f.length;m--;)b.removeChild(f[m]);k&&!a.added&&this.box.appendChild(b);e[e.length-1]===""&&e.pop();n(e,function(e,f){var m,p=0,e=e.replace(//g,"|||");m=e.split("|||");n(m,function(e){if(e!==""||m.length===1){var o={},n=z.createElementNS(wa,"tspan"),t;g.test(e)&&(t=e.match(g)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),w(n,"style",t));h.test(e)&&!d&&(w(n,"onclick",'location.href="'+ +e.match(h)[1]+'"'),M(n,{cursor:"pointer"}));e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"<").replace(/>/g,">");if(e!==" "&&(n.appendChild(z.createTextNode(e)),p?o.dx=0:o.x=i,w(n,o),!p&&f&&(!Y&&d&&M(n,{display:"block"}),w(n,"dy",l||c.fontMetrics(/px$/.test(n.style.fontSize)?n.style.fontSize:j.fontSize).h,fb&&n.offsetHeight)),b.appendChild(n),p++,k))for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),u,s=[];e.length||s.length;)delete a.bBox,u=a.getBBox().width,o=u>k,!o||e.length===1?(e=s, +s=[],e.length&&(n=z.createElementNS(wa,"tspan"),w(n,{dy:l||16,x:i}),t&&w(n,"style",t),b.appendChild(n),u>k&&(k=u))):(n.removeChild(n.firstChild),s.unshift(e.pop())),e.length&&n.appendChild(z.createTextNode(e.join(" ").replace(/- /g,"-")))}})})},button:function(a,b,c,d,e,f,g){var h=this.label(a,b,c,null,null,null,null,null,"button"),i=0,j,k,l,m,o,a={x1:0,y1:0,x2:0,y2:1},e=x({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}}, +e);l=e.style;delete e.style;f=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);m=f.style;delete f.style;g=x(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);o=g.style;delete g.style;J(h.element,qa?"mouseover":"mouseenter",function(){h.attr(f).css(m)});J(h.element,qa?"mouseout":"mouseleave",function(){j=[e,f,g][i];k=[l,m,o][i];h.attr(j).css(k)});h.setState=function(a){(i=a)?a===2&&h.attr(g).css(o):h.attr(e).css(l)};return h.on("click",function(){d.call(h)}).attr(e).css(r({cursor:"default"}, +l))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=s(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=s(a[2])+b%2/2);return a},path:function(a){var b={fill:R};Ha(a)?b.d=a:U(a)&&r(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=U(a)?a:{x:a,y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(U(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d, +e,f){e=U(a)?a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:R});return e.attr(U(a)?a:e.crisp(f,a,b,u(c,0),u(d,0)))},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");return t(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:R};arguments.length>1&&r(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f); +f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(s(b),s(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),r(g,{symbolName:a,x:b,y:c,width:d,height:e}),f&&r(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(s((d-b[0])/2),s((e-b[1])/2)))},j=a.match(i)[1],a=Pb[j],g=this.image(j).attr({x:b, +y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),T("img",{onload:function(){k(g,Pb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a, +b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=V(f),j=ba(f),k=V(g),g=ba(g),e=e.end-f');if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=T(c);this.renderer=a;this.attrSetters={}},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();C(this,"add");return this},updateTransform:va.prototype.htmlUpdateTransform,setSpanRotation:function(a,b,c){M(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=", +c,", M12=",-b,", M21=",b,", M22=",c,", sizingMethod='auto expand')"].join(""):R})},attr:function(a,b){var c,d,e,f=this.element||{},g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,k,l=this.shadows,m,o=this.attrSetters,q=this;da(a)&&t(b)&&(c=a,a={},a[c]=b);if(da(a))c=a,q=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c];else for(c in a)if(d=a[c],m=!1,e=o[c]&&o[c].call(this,d,c),e!==!1&&d!==null){e!==v&&(d=e);if(j&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(c))k|| +(this.symbolAttr(a),k=!0),m=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");e=d.length;m=[];for(var p;e--;)if(pa(d[e]))m[e]=s(d[e]*10)-5;else if(d[e]==="Z")m[e]="x";else if(m[e]=d[e],d.isArc&&(d[e]==="wa"||d[e]==="at"))p=d[e]==="wa"?1:-1,m[e+5]===m[e+7]&&(m[e+7]-=p),m[e+6]===m[e+8]&&(m[e+8]-=p);d=m.join(" ")||"x";f.path=d;if(l)for(e=l.length;e--;)l[e].path=l[e].cutOff?this.cutOffPath(d,l[e].cutOff):d;m=!0}else if(c==="visibility"){if(l)for(e=l.length;e--;)l[e].style[c]=d;h==="DIV"&&(d=d==="hidden"? +"-999em":0,eb||(g[c]=d?"visible":"hidden"),c="top");g[c]=d;m=!0}else if(c==="zIndex")d&&(g[c]=d),m=!0;else if(na(c,["x","y","width","height"])!==-1)this[c]=d,c==="x"||c==="y"?c={x:"left",y:"top"}[c]:d=u(0,d),this.updateClipping?(this[c]=d,this.updateClipping()):g[c]=d,m=!0;else if(c==="class"&&h==="DIV")f.className=d;else if(c==="stroke")d=i.color(d,f,c),c="strokecolor";else if(c==="stroke-width"||c==="strokeWidth")f.stroked=d?!0:!1,c="strokeweight",this[c]=d,pa(d)&&(d+="px");else if(c==="dashstyle")(f.getElementsByTagName("stroke")[0]|| +T(i.prepVML([""]),null,null,f))[c]=d||"solid",this.dashstyle=d,m=!0;else if(c==="fill")if(h==="SPAN")g.color=d;else{if(h!=="IMG")f.filled=d!==R?!0:!1,d=i.color(d,f,c,this),c="fillcolor"}else if(c==="opacity")m=!0;else if(h==="shape"&&c==="rotation")this[c]=f.style[c]=d,f.style.left=-s(ba(d*Ua)+1)+"px",f.style.top=s(V(d*Ua))+"px";else if(c==="translateX"||c==="translateY"||c==="rotation")this[c]=d,this.updateTransform(),m=!0;else if(c==="text")this.bBox=null,f.innerHTML=d,m=!0;m||(eb?f[c]= +d:w(f,c,d))}return q},clip:function(a){var b=this,c;a?(c=a.members,fa(c,b),c.push(b),b.destroyClip=function(){fa(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:eb?"inherit":"rect(auto)"});return b.css(a)},css:va.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Ta(a)},destroy:function(){this.destroyClip&&this.destroyClip();return va.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=E.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a, +b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=A(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,o,q;k&&typeof k.value!=="string"&&(k="x");m=k;if(a){o=p(a.width,3);q=(a.opacity||0.15)/o;for(e=1;e<=3;e++){l=o*2+1-2*e;c&&(m=this.cutOffPath(k.value,l+0.5));j=[''];h=T(g.prepVML(j),null, +{left:A(i.left)+p(a.offsetX,1),top:A(i.top)+p(a.offsetY,1)});if(c)h.cutOff=l+1;j=[''];T(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this}};K=ga(va,K);var la={Element:K,isIE8:Da.indexOf("MSIE 8.0")>-1,init:function(a,b,c){var d,e;this.alignedObjects=[];d=this.createElement(Ba);e=d.element;e.style.position="relative";a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper= +d;this.setSize(b,c,!1);if(!z.namespaces.hcv)z.namespaces.add("hcv","urn:schemas-microsoft-com:vml"),z.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "},isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=U(a);return r(e,{members:[],left:f?a.x:a,top:f?a.y:b,width:f?a.width:c,height:f?a.height:d,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top- +(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+s(a?e:d)+"px,"+s(a?f:b)+"px,"+s(a?b:f)+"px,"+s(a?d:e)+"px)"};!a&&eb&&c==="DIV"&&r(d,{width:b+"px",height:f+"px"});return d},updateClipping:function(){n(e.members,function(a){a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=R;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,m=a.linearGradient||a.radialGradient,o,q,p,D,F,u="",a=a.stops,t,s=[],v=function(){h= +[''];T(e.prepVML(h),null,null,b)};o=a[0];t=a[a.length-1];o[0]>0&&a.unshift([0,o[1]]);t[0]<1&&a.push([1,t[1]]);n(a,function(a,b){g.test(a[1])?(f=oa(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);s.push(a[0]*100+"% "+k);b?(p=l,D=k):(q=l,F=k)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,o=m.x2||m[2]||0,m=m.y2||m[3]||0,u='angle="'+(90-N.atan((m-a)/(o-c))*180/Ma)+'"',v(); +else{var j=m.r,r=j*2,G=j*2,H=m.cx,B=m.cy,x=b.radialReference,w,j=function(){x&&(w=d.getBBox(),H+=(x[0]-w.x)/w.width-0.5,B+=(x[1]-w.y)/w.height-0.5,r*=x[2]/w.width,G*=x[2]/w.height);u='src="'+O.global.VMLRadialGradientURL+'" size="'+r+","+G+'" origin="0.5,0.5" position="'+H+","+B+'" color2="'+F+'" ';v()};d.added?j():J(d,"add",j);j=D}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=oa(a),h=["<",c,' opacity="',f.get("a"),'"/>'],T(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c); +if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","1&&f.attr({x:b,y:c,width:d,height:e});return f},rect:function(a,b,c,d,e,f){if(U(a))b=a.y,c=a.width,d=a.height,f=a.strokeWidth,a=a.x;var g=this.symbol("rect"); +g.r=e;return g.attr(g.crisp(f,a,b,u(c,0),u(d,0)))},invertChild:function(a,b){var c=b.style;M(a,{flip:"x",left:A(c.width)-1,top:A(c.height)-1,rotation:-90})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=V(f),i=ba(f),j=V(g),k=ba(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&e.isCircle&&(a-=c/2, +b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){var f=a+c,g=b+d,h;!t(e)||!e.r?f=Fa.prototype.symbols.square.apply(0,arguments):(h=I(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b+h,"L",f,g-h,"wa",f-2*h,g-2*h,f,g,f,g-h,f-h,g,"L",a+h,g,"wa",a,g-2*h,a+2*h,g,a+h,g,a,g-h,"L",a,b+h,"wa",a,b,a+2*h,b+2*h,a,b+h,a+h,b,"x","e"]);return f}}};Highcharts.VMLRenderer=K=function(){this.init.apply(this,arguments)};K.prototype=x(Fa.prototype,la);Va=K}var Ub;if(Z)Highcharts.CanVGRenderer= +K=function(){wa="http://www.w3.org/1999/xhtml"},K.prototype.symbols={},Ub=function(){function a(){var a=b.length,d;for(d=0;dj&&(c=!1)):h+k>m&&(h=m-k,d&&h+l0&&b.height>0){f=x({align:c&&k&&"center",x:c?!k&& +4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90},f);if(!g)a.label=g=r.text(f.text,0,0,f.useHTML).attr({align:f.textAlign||f.align,rotation:f.rotation,zIndex:F}).css(f.style).add();b=[q[1],q[4],p(q[6],q[1])];q=[q[2],q[5],p(q[7],q[2])];c=Ia(b);k=Ia(q);g.align(f,!1,{x:c,y:k,width:ta(b)-c,height:ta(q)-k});g.show()}else g&&g.hide();return a},destroy:function(){fa(this.axis.plotLinesAndBands,this);delete this.axis;Ja(this)}};Mb.prototype={destroy:function(){Ja(this,this.axis)}, +setTotal:function(a){this.cum=this.total=a},addValue:function(a){this.setTotal(ia(this.total+a))},render:function(a){var b=this.options,c=b.format,c=c?Aa(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,0,0,b.useHTML).css(b.style).attr({align:this.textAlign,rotation:b.rotation,visibility:"hidden"}).add(a)},cacheExtremes:function(a,b){this.points[a.index]=b},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted, +f=this.isNegative,g=c.translate(this.percent?100:this.total,0,0,0,1),c=c.translate(0),c=P(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e.attr({visibility:this.options.crop===!1||d.isInsidePlot(f.x,f.y)?Y?"inherit":"visible":"hidden"})}};db.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b", +week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#C0C0C0",labels:L,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#4d759e",fontWeight:"bold"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0, +gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return ya(this.total,-1)},style:L.style}},defaultLeftAxisOptions:{labels:{x:-8,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:8,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{x:0,y:14},title:{rotation:0}},defaultTopAxisOptions:{labels:{x:0,y:-5}, +title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.xOrY=(this.isXAxis=c)?"x":"y";this.opposite=b.opposite;this.side=this.horiz?this.opposite?0:2:this.opposite?1:3;this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.isLog=e==="logarithmic";this.isDatetimeAxis= +e==="datetime";this.isLinked=t(d.linkedTo);this.tickmarkOffset=this.categories&&d.tickmarkPlacement==="between"?0.5:0;this.ticks={};this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.stacksMax={};this._stacksTouched=0;this.min=this.max=null;var f,d=this.options.events;na(this,a.axes)===-1&&(a.axes.push(this),a[c?"xAxis":"yAxis"].push(this)); +this.series=this.series||[];if(a.inverted&&c&&this.reversed===v)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)J(this,f,d[f]);if(this.isLog)this.val2lin=ma,this.lin2val=ea},setOptions:function(a){this.options=x(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],x(O[this.isXAxis?"xAxis":"yAxis"],a))},update:function(a, +b){var c=this.chart,a=c.options[this.xOrY+"Axis"][this.options.index]=x(this.userOptions,a);this.destroy(!0);this._addedPlotLB=!1;this.init(c,r(a,{events:v}));c.isDirtyBox=!0;p(b,!0)&&c.redraw()},remove:function(a){var b=this.chart,c=this.xOrY+"Axis";n(this.series,function(a){a.remove(!1)});fa(b.axes,this);fa(b[c],this);b.options[c].splice(this.options.index,1);n(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=!0;p(a,!0)&&b.redraw()},defaultLabelFormatter:function(){var a=this.axis, +b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=O.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Aa(h,this);else if(c)g=b;else if(d)g=Xa(d,b);else if(f&&a>=1E3)for(;f--&&g===v;)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=ya(b/c,-1)+e[f]);g===v&&(g=b>=1E3?ya(b,0):ya(b,-1));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=null;a.stacksMax={};a.buildStacks();n(a.series,function(c){if(c.visible|| +!b.options.chart.ignoreHiddenSeries){var d=c.options,e;e=d.threshold;a.hasVisibleSeries=!0;a.isLog&&e<=0&&(e=null);if(a.isXAxis){if(e=c.xData,e.length)a.dataMin=I(p(a.dataMin,e[0]),Ia(e)),a.dataMax=u(p(a.dataMax,e[0]),ta(e))}else{d=d.stacking;a.usePercentage=d==="percent";if(a.usePercentage)a.dataMin=0,a.dataMax=99;c.getExtremes();d=c.dataMax;c=c.dataMin;if(!a.usePercentage&&t(c)&&t(d))a.dataMin=I(p(a.dataMin,c),c),a.dataMax=u(p(a.dataMax,d),d);if(t(e))if(a.dataMin>=e)a.dataMin=e,a.ignoreMinPadding= +!0;else if(a.dataMaxf+this.width)m=!0}else if(c=f,i=l-this.right,hg+this.height)m=!0;return m&&!d? +null:e.renderer.crispLine(["M",c,h,"L",i,j],b||0)},getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);d&&c?d.push(c[4],c[5],c[1],c[2]):d=null;return d},getLinearTickPositions:function(a,b,c){for(var d,b=ia(S(b/a)*a),c=ia(ja(c/a)*a),e=[];b<=c;){e.push(b);b=ia(b+a);if(b===d)break;d=b}return e},getLogTickPositions:function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=s(a),g=this.getLinearTickPositions(a,b,c);else if(a>= +0.08)for(var f=S(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];fb&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}else if(b=ea(b),c=ea(c),a=e[d?"minorTickInterval":"tickInterval"],a=p(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=mb(a,null,lb(a)),g=Na(this.getLinearTickPositions(a,b,c),ma),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g}, +getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;if(this.isLog){e=b.length;for(a=1;a=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===v&&!this.isLog)t(a.min)||t(a.max)?this.minRange=null:(n(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===v||hb&&(g=0);c=u(c,g);e=u(e,da(h)?0:g/2);f=u(f,h==="on"?0:g);!a.noSharedTooltip&&t(l)&&(d=t(d)?I(d,l):l)}),g=this.ordinalSlope&&d?this.ordinalSlope/d:1,this.minPointOffset=e*=g,this.pointRangePadding=f*=g,this.pointRange=I(c,b),this.closestPointRange= +d;if(a)this.oldTransA=h;this.translationSlope=this.transA=h=this.len/(b+f||1);this.transB=this.horiz?this.left:this.bottom;this.minPixelPadding=h*e},setTickPositions:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,k=d.minPadding,l=d.tickInterval,m=d.minTickInterval,o=d.tickPixelInterval,q=b.categories;h?(b.linkedParent=c[g?"xAxis":"yAxis"][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=p(c.min,c.dataMin), +b.max=p(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&ua(11,1)):(b.min=p(b.userMin,d.min,b.dataMin),b.max=p(b.userMax,d.max,b.dataMax));if(e)!a&&I(b.min,p(b.dataMin,b.min))<=0&&ua(10,1),b.min=ia(ma(b.min)),b.max=ia(ma(b.max));if(b.range&&(b.userMin=b.min=u(b.min,b.max-b.range),b.userMax=b.max,a))b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!q&&!b.usePercentage&&!h&&t(b.min)&&t(b.max)&&(c=b.max-b.min)){if(!t(d.min)&&!t(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-= +c*k;if(!t(d.max)&&!t(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}b.tickInterval=b.min===b.max||b.min===void 0||b.max===void 0?1:h&&!l&&o===b.linkedParent.options.tickPixelInterval?b.linkedParent.tickInterval:p(l,q?1:(b.max-b.min)*o/(b.len||1));g&&!a&&n(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval); +if(b.pointRange)b.tickInterval=u(b.pointRange,b.tickInterval);if(!l&&b.tickIntervale&&a.shift(),d.endOnTick?b.max=f:b.max+h(b[d]||0)&& +this.options.alignTicks!==!1)b[d]=c.length;a.maxTicks=b},adjustTickAmount:function(){var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1){var d=this.tickAmount,e=b.length;this.tickAmount=a=c[a];if(e=this.dataMax&&(b=v));this.displayBtn= +a!==v||b!==v;this.setExtremes(a,b,!1,v,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=b.offsetRight||0,e=this.horiz,f,g;this.left=g=p(b.left,a.plotLeft+c);this.top=f=p(b.top,a.plotTop);this.width=c=p(b.width,a.plotWidth-c+d);this.height=b=p(b.height,a.plotHeight);this.bottom=a.chartHeight-b-f;this.right=a.chartWidth-c-g;this.len=u(e?c:b,0);this.pos=e?g:f},getExtremes:function(){var a=this.isLog;return{min:a?ia(ea(this.min)):this.min,max:a?ia(ea(this.max)): +this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ea(this.min):this.min,b=b?ea(this.max):this.max;c>a||a===null?a=c:b15&&a<165?"right":a>195&&a<345?"left":"center"},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,m=0,o=d.title,q=d.labels,ka=0,D=b.axisOffset,F=b.clipOffset,s=[-1,1,1,-1][h],r,w=1,x=p(q.maxStaggerLines,5),Ga,G,H,B;a.hasData=j=a.hasVisibleSeries||t(a.min)&&t(a.max)&&!!e;a.showAxis=b=j||p(d.showEmpty,!0);a.staggerLines=a.horiz&& +q.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:q.zIndex||7}).add();if(j||a.isLinked){a.labelAlign=p(q.align||a.autoLabelAlign(q.rotation));n(e,function(b){f[b]?f[b].addLabel():f[b]=new La(a,b)});if(a.horiz&&!a.staggerLines&&x&&!q.rotation){for(r=a.reversed?[].concat(e).reverse():e;w1)a.staggerLines=w}n(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===a.labelAlign)ka=u(f[b].getLabelSize(),ka)});if(a.staggerLines)ka*=a.staggerLines,a.labelOffset=ka}else for(r in f)f[r].destroy(),delete f[r];if(o&&o.text&&o.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(o.text,0,0,o.useHTML).attr({zIndex:7,rotation:o.rotation||0,align:o.textAlign||{low:"left",middle:"center",high:"right"}[o.align]}).css(o.style).add(a.axisGroup), +a.axisTitle.isNew=!0;if(b)k=a.axisTitle.getBBox()[g?"height":"width"],m=p(o.margin,g?5:10),l=o.offset;a.axisTitle[b?"show":"hide"]()}a.offset=s*p(d.offset,D[h]);a.axisTitleMargin=p(l,ka+m+(h!==2&&ka&&s*d.labels[g?"y":"x"]));D[h]=u(D[h],a.axisTitleMargin+k+s*a.offset);F[i]=u(F[i],d.lineWidth)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d;this.lineTop=d=b.chartHeight-this.bottom-(c?this.height:0)+d;c||(a*=-1);return b.renderer.crispLine(["M", +e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=A(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?i:0);return{x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}},render:function(){var a=this, +b=a.chart,c=b.renderer,d=a.options,e=a.isLog,f=a.isLinked,g=a.tickPositions,h=a.axisTitle,i=a.stacks,j=a.ticks,k=a.minorTicks,l=a.alternateBands,m=d.stackLabels,o=d.alternateGridColor,q=a.tickmarkOffset,p=d.lineWidth,D,F=b.hasRendered&&t(a.oldMin)&&!isNaN(a.oldMin);D=a.hasData;var u=a.showAxis,s,r;n([j,k,l],function(a){for(var b in a)a[b].isActive=!1});if(D||f)if(a.minorTickInterval&&!a.categories&&n(a.getMinorTickPositions(),function(b){k[b]||(k[b]=new La(a,b,"minor"));F&&k[b].isNew&&k[b].render(null, +!0);k[b].render(null,!1,1)}),g.length&&(n(g.slice(1).concat([g[0]]),function(b,c){c=c===g.length-1?0:c+1;if(!f||b>=a.min&&b<=a.max)j[b]||(j[b]=new La(a,b)),F&&j[b].isNew&&j[b].render(c,!0),j[b].render(c,!1,1)}),q&&a.min===0&&(j[-1]||(j[-1]=new La(a,-1,null,!0)),j[-1].render(-1))),o&&n(g,function(b,c){if(c%2===0&&b1||P(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(){var a=this,b;clearTimeout(this.hideTimer);if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){a.label.fadeOut();a.isHidden=!0},p(this.options.hideDelay,500)),b&&n(b,function(a){a.setState()}),this.chart.hoverPoints=null},hideCrosshairs:function(){n(this.crosshairs,function(a){a&&a.hide()})},getAnchor:function(a, +b){var c,d=this.chart,e=d.inverted,f=d.plotTop,g=0,h=0,i,a=ha(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===v&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(n(a,function(a){i=a.series.yAxis;g+=a.plotX;h+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);return Na(c,s)},getPosition:function(a,b,c){var d=this.chart,e=d.plotLeft,f=d.plotTop,g=d.plotWidth, +h=d.plotHeight,i=p(this.options.distance,12),j=c.plotX,c=c.plotY,d=j+e+(d.inverted?i:-a-i),k=c-b+f+15,l;d<7&&(d=e+u(j,0)+i);d+a>e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);k=k&&c<=k+b&&(k=c+f+i));k+b>f+h&&(k=u(f,f+h-b-i));return{x:d,y:k}},defaultFormatter:function(a){var b=this.points||ha(this),c=b[0].series,d;d=[c.tooltipHeaderFormatter(b[0])];n(b,function(a){c=a.series;d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))});d.push(a.options.footerFormat|| +"");return d.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h,i={},j,k=[];j=e.formatter||this.defaultFormatter;var i=c.hoverPoints,l,m=e.crosshairs;h=this.shared;clearTimeout(this.hideTimer);this.followPointer=ha(a)[0].series.tooltipOptions.followPointer;g=this.getAnchor(a,b);f=g[0];g=g[1];h&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,i&&n(i,function(a){a.setState()}),n(a,function(a){a.setState("hover");k.push(a.getLabelConfig())}),i={x:a[0].category, +y:a[0].y},i.points=k,a=a[0]):i=a.getLabelConfig();j=j.call(i,this);i=a.series;h=h||!i.isCartesian||i.tooltipOutsidePlot||c.isInsidePlot(f,g);j===!1||!h?this.hide():(this.isHidden&&(Wa(d),d.attr("opacity",1).show()),d.attr({text:j}),l=e.borderColor||a.color||i.color||"#606060",d.attr({stroke:l}),this.updatePosition({plotX:f,plotY:g}),this.isHidden=!1);if(m){m=ha(m);for(d=m.length;d--;)if(i=a.series,e=i[d?"yAxis":"xAxis"],m[d]&&e)if(h=d?p(a.stackY,a.y):a.x,e.isLog&&(h=ma(h)),i.modifyValue&&(h=i.modifyValue(h)), +e=e.getPlotLinePath(h,1),this.crosshairs[d])this.crosshairs[d].attr({d:e,visibility:"visible"});else{h={"stroke-width":m[d].width||1,stroke:m[d].color||"#C0C0C0",zIndex:m[d].zIndex||2};if(m[d].dashStyle)h.dashstyle=m[d].dashStyle;this.crosshairs[d]=c.renderer.path(e).attr(h).add()}}C(c,"tooltipRefresh",{text:j,x:f+c.plotLeft,y:g+c.plotTop,borderColor:l})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(s(c.x), +s(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)}};vb.prototype={init:function(a,b){var c=Z?"":b.chart.zoomType,d=a.inverted,e;this.options=b;this.chart=a;this.zoomX=e=/x/.test(c);this.zoomY=c=/y/.test(c);this.zoomHor=e&&!d||c&&d;this.zoomVert=c&&!d||e&&d;this.pinchDown=[];this.lastValidTouch={};if(b.tooltip.enabled)a.tooltip=new ub(a,b.tooltip);this.setDOMEvents()},normalize:function(a){var b,c,a=a||E.event;if(!a.target)a.target=a.srcElement;a=Sb(a);c=a.touches?a.touches.item(0):a;this.chartPosition= +b=Xb(this.chart.container);return r(a,{chartX:s(p(c.pageX,c.clientX)-b.left),chartY:s(p(c.pageY,c.clientY)-b.top)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};n(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getIndex:function(a){var b=this.chart;return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e,f=b.hoverPoint,g=b.hoverSeries, +h,i,j=b.chartWidth,k=this.getIndex(a);if(d&&this.options.tooltip.shared&&(!g||!g.noSharedTooltip)){e=[];h=c.length;for(i=0;ij&&e.splice(h,1);if(e.length&&e[0].clientX!==this.hoverX)d.refresh(e,a),this.hoverX=e[0].clientX}if(g&&g.tracker){if((b=g.tooltipPoints[k])&&b!==f)b.onMouseOver(a)}else d&& +d.followPointer&&!d.isHidden&&(a=d.getAnchor([{}],a),d.updatePosition({plotX:a[0],plotY:a[1]}))},reset:function(a){var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,b=e&&e.shared?b.hoverPoints:d;(a=a&&e&&b)&&ha(b)[0].plotX===v&&(a=!1);if(a)e.refresh(b);else{if(d)d.onMouseOut();if(c)c.onMouseOut();e&&(e.hide(),e.hideCrosshairs());this.hoverX=null}},scaleGroups:function(a,b){var c=this.chart,d;n(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&& +(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},pinchTranslateDirection:function(a,b,c,d,e,f,g){var h=this.chart,i=a?"x":"y",j=a?"X":"Y",k="chart"+j,l=a?"width":"height",m=h["plot"+(a?"Left":"Top")],o,q,p=1,n=h.inverted,u=h.bounds[a?"h":"v"],s=b.length===1,t=b[0][k],r=c[0][k],w=!s&&b[1][k],v=!s&&c[1][k],x,c=function(){!s&&P(t-w)>20&&(p=P(r-v)/P(t-w));q=(m-r)/p+t;o=h["plot"+(a?"Width":"Height")]/p};c();b=q; +bu.max&&(b=u.max-o,x=!0);x?(r-=0.8*(r-g[i][0]),s||(v-=0.8*(v-g[i][1])),c()):g[i]=[r,v];n||(f[i]=q-m,f[l]=o);f=n?1/p:p;e[l]=o;e[i]=b;d[n?a?"scaleY":"scaleX":"scale"+j]=p;d["translate"+j]=f*m+(r-f*t)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=c.tooltip&&c.tooltip.options.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.zoomHor||b.pinchHor,j=b.zoomVert||b.pinchVert,k=i||j,l=b.selectionMarker,m={},o={};a.type==="touchstart"&&(e||k)&&a.preventDefault(); +Na(f,function(a){return b.normalize(a)});if(a.type==="touchstart")n(f,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],n(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=I(e,f),e=u(e,f);b.min=I(a.pos,g-d);b.max=u(a.pos+a.len,e+d)}});else if(d.length){if(!l)b.selectionMarker=l=r({destroy:xa},c.plotBox);i&&b.pinchTranslateDirection(!0, +d,f,m,l,o,h);j&&b.pinchTranslateDirection(!1,d,f,m,l,o,h);b.hasPinched=k;b.scaleGroups(m,o);!k&&e&&g===1&&this.runPointActions(b.normalize(a))}},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,a=a.chartY,e=this.zoomHor,f=this.zoomVert,g=b.plotLeft,h=b.plotTop,i=b.plotWidth,j=b.plotHeight,k,l=this.mouseDownX,m=this.mouseDownY;dg+i&&(d= +g+i);ah+j&&(a=h+j);this.hasDragged=Math.sqrt(Math.pow(l-d,2)+Math.pow(m-a,2));if(this.hasDragged>10){k=b.isInsidePlot(l-g,m-h);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&k&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(g,h,e?1:i,f?1:j,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&e&&(e=d-l,this.selectionMarker.attr({width:P(e),x:(e>0?0:e)+l}));this.selectionMarker&&f&&(e=a-m,this.selectionMarker.attr({height:P(e), +y:(e>0?0:e)+m}));k&&!this.selectionMarker&&c.panning&&b.pan(d)}},drop:function(a){var b=this.chart,c=this.hasPinched;if(this.selectionMarker){var d={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},e=this.selectionMarker,f=e.x,g=e.y,h;if(this.hasDragged||c)n(b.axes,function(a){if(a.zoomEnabled){var b=a.horiz,c=a.toValue(b?f:g),b=a.toValue(b?f+e.width:g+e.height);!isNaN(c)&&!isNaN(b)&&(d[a.xOrY+"Axis"].push({axis:a,min:I(c,b),max:u(c,b)}),h=!0)}}),h&&C(b,"selection",d,function(a){b.zoom(r(a,c?{animation:!1}: +null))});this.selectionMarker=this.selectionMarker.destroy();c&&this.scaleGroups()}if(b)M(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){this.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=Sb(a);c&&d&&d.isCartesian&&!b.isInsidePlot(a.pageX- +c.left-b.plotLeft,a.pageY-c.top-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){this.reset();this.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart,a=this.normalize(a);a.returnValue=!1;b.mouseIsDown==="mousedown"&&this.drag(a);b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=w(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==-1)return!1;a=a.parentNode}}, +onTrackerMouseOut:function(a){var b=this.chart.hoverSeries;if(b&&!b.options.stickyTracking&&!this.inClass(a.toElement||a.relatedTarget,"highcharts-tooltip"))b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,f=b.inverted,g,h,i,a=this.normalize(a);a.cancelBubble=!0;if(!b.cancelClick)c&&this.inClass(a.target,"highcharts-tracker")?(g=this.chartPosition,h=c.plotX,i=c.plotY,r(c,{pageX:g.left+d+(f?b.plotWidth-i:h),pageY:g.top+e+(f?b.plotHeight-h:i)}),C(c.series, +"click",r(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&C(b,"click",a))},onContainerTouchStart:function(a){var b=this.chart;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a),this.pinch(a)):this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchMove:function(a){(a.touches.length===1||a.touches.length===2)&&this.pinch(a)},onDocumentTouchEnd:function(a){this.drop(a)}, +setDOMEvents:function(){var a=this,b=a.chart.container,c;this._events=c=[[b,"onmousedown","onContainerMouseDown"],[b,"onmousemove","onContainerMouseMove"],[b,"onclick","onContainerClick"],[b,"mouseleave","onContainerMouseLeave"],[z,"mousemove","onDocumentMouseMove"],[z,"mouseup","onDocumentMouseUp"]];hb&&c.push([b,"ontouchstart","onContainerTouchStart"],[b,"ontouchmove","onContainerTouchMove"],[z,"touchend","onDocumentTouchEnd"]);n(c,function(b){a["_"+b[2]]=function(c){a[b[2]](c)};b[1].indexOf("on")=== +0?b[0][b[1]]=a["_"+b[2]]:J(b[0],b[1],a["_"+b[2]])})},destroy:function(){var a=this;n(a._events,function(b){b[1].indexOf("on")===0?b[0][b[1]]=null:aa(b[0],b[1],a["_"+b[2]])});delete a._events;clearInterval(a.tooltipTimeout)}};wb.prototype={init:function(a,b){var c=this,d=b.itemStyle,e=p(b.padding,8),f=b.itemMarginTop||0;this.options=b;if(b.enabled)c.baseline=A(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=x(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=e-5,c.maxItemWidth= +0,c.chart=a,c.itemHeight=0,c.lastLineHeight=0,c.render(),J(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.color:g,g=a.options&&a.options.marker,i={stroke:h,fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in g=a.convertAttribs(g),g)d=g[j],d!==v&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options, +c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;n(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Ta(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight|| +this.legendHeight;if(b)c=b.translateY,n(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,M(f,{left:b.translateX+e.legendItemWidth+f.x-20+"px",top:g+"px",display:g>c-6&&g(o||c.chartWidth-2*k-s))b.itemX=s,b.itemY+=n+b.lastLineHeight+q,b.lastLineHeight=0;b.maxItemWidth=u(b.maxItemWidth,e);b.lastItemY=n+b.itemY+q;b.lastLineHeight=u(g,b.lastLineHeight);a._legendItemPos= +[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY+=n+g+q,b.lastLineHeight=g);b.offsetWidth=o||u((f?b.itemX-s-l:e)+k,b.offsetWidth)},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=[];n(b.series, +function(a){var b=a.options;b.showInLegend&&!t(b.linkedTo)&&(e=e.concat(a.legendItems||(b.legendType==="point"?a.data:a)))});Kb(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;n(e,function(b){a.renderItem(b)});g=j.width||a.offsetWidth;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||m){g+=k;h+=k;if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null, +g,h)),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,"stroke-width":l||0,fill:m||R}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;n(e,function(b){a.positionItem(b)});f&&d.align(r({width:g,height:h},j),!0,"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight, +h=this.clipRect,i=e.navigation,j=p(i.animation,!0),k=i.arrowSize||12,l=this.nav;e.layout==="horizontal"&&(f/=2);g&&(f=I(f,g));if(a>f&&!e.useHTML){this.clipHeight=c=f-20-this.titleHeight;this.pageCount=ja(a/c);this.currentPage=p(this.currentPage,1);this.fullHeight=a;if(!h)h=b.clipRect=d.clipRect(0,0,9999,0),b.contentGroup.clip(h);h.attr({height:c});if(!l)this.nav=l=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,k,k).on("click",function(){b.scroll(-1,j)}).add(l),this.pager=d.text("", +15,10).css(i.style).add(l),this.down=d.symbol("triangle-down",0,0,k,k).on("click",function(){b.scroll(1,j)}).add(l);b.scroll(0);a=f}else if(l)h.attr({height:c.chartHeight}),l.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pageCount,d=this.currentPage+a,e=this.clipHeight,f=this.options.navigation,g=f.activeColor,h=f.inactiveColor,f=this.pager,i=this.padding;d>c&&(d=c);if(d>0)b!==v&&Ka(b,this.chart),this.nav.attr({translateX:i,translateY:e+7+ +this.titleHeight,visibility:"visible"}),this.up.attr({fill:d===1?h:g}).css({cursor:d===1?"default":"pointer"}),f.attr({text:d+"/"+this.pageCount}),this.down.attr({x:18+this.pager.getBBox().width,fill:d===c?h:g}).css({cursor:d===c?"default":"pointer"}),e=-I(e*(d-1),this.fullHeight-e+i)+1,this.scrollGroup.animate({translateY:e}),f.attr({text:d+"/"+c}),this.currentPage=d,this.positionCheckboxes(e)}};xb.prototype={init:function(a,b){var c,d=a.series;a.series=null;c=x(O,a);c.series=a.series=d;var d=c.chart, +e=d.margin,e=U(e)?e:[e,e,e,e];this.optionsMarginTop=p(d.marginTop,e[0]);this.optionsMarginRight=p(d.marginRight,e[1]);this.optionsMarginBottom=p(d.marginBottom,e[2]);this.optionsMarginLeft=p(d.marginLeft,e[3]);e=d.events;this.bounds={h:{},v:{}};this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Ea.length;Ea.push(f);d.reflow!==!1&&J(f,"load",function(){f.initReflow()});if(e)for(g in e)J(f,g,e[g]);f.xAxis=[];f.yAxis=[]; +f.animation=Z?!1:p(d.animation,!0);f.pointCount=0;f.counters=new Jb;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=$[a.type||b.type||b.defaultSeriesType])||ua(17,!0);b=new b;b.init(this,a);return b},addSeries:function(a,b,c){var d,e=this;a&&(b=p(b,!0),C(e,"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new db(this,x(a,{index:this[e].length,isX:b}));f[e]=ha(f[e]|| +{});f[e].push(a);p(c,!0)&&this.redraw(d)},isInsidePlot:function(a,b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},adjustTickAmounts:function(){this.options.chart.alignTicks!==!1&&n(this.axes,function(a){a.adjustTickAmount()});this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.isDirtyBox,j=c.length,k=j,l=this.renderer,m=l.isHidden(),o=[];Ka(a,this);m&&this.cloneRenderTo();for(this.layOutTitles();k--;)if(a= +c[k],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(k=j;k--;)if(a=c[k],a.options.stacking)a.isDirty=!0;n(c,function(a){a.isDirty&&a.options.legendType==="point"&&(f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(this.hasCartesianSeries){if(!this.isResizing)this.maxTicks=null,n(b,function(a){a.setScale()});this.adjustTickAmounts();this.getMargins();n(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,o.push(function(){C(a,"afterSetExtremes",a.getExtremes())}); +if(a.isDirty||i||g)a.redraw(),i=!0})}i&&this.drawChartBox();n(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()});d&&d.reset&&d.reset(!0);l.draw();C(this,"redraw");m&&this.cloneRenderTo(!0);n(o,function(a){a.call()})},showLoading:function(a){var b=this.options,c=this.loadingDiv,d=b.loading;if(!c)this.loadingDiv=c=T(Ba,{className:"highcharts-loading"},r(d.style,{zIndex:10,display:R}),this.container),this.loadingSpan=T("span",null,d.labelStyle,c);this.loadingSpan.innerHTML=a|| +b.lang.loading;if(!this.loadingShown)M(c,{opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}),Ab(c,{opacity:d.style.opacity},{duration:d.showDuration||0}),this.loadingShown=!0},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&Ab(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){M(b,{display:R})}});this.loadingShown=!1},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;dI(e.dataMin,e.min)&&c=18&&a<=25&&(a=15);c&&(c.css({width:(d.width||f)+"px"}).align(r({y:a+e.margin},d),!1,"spacingBox"),!d.floating&&!d.verticalAlign&&(a=ja(a+c.getBBox().height)));this.titleOffset=a},getChartSize:function(){var a=this.options.chart,b=this.renderToClone||this.renderTo;this.containerWidth=ib(b,"width"); +this.containerHeight=ib(b,"height");this.chartWidth=u(0,a.width||this.containerWidth||600);this.chartHeight=u(0,p(a.height,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Ta(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),M(b,{position:"absolute",top:"-9999px",display:"block"}),z.body.appendChild(b), +c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+yb++;if(da(a))this.renderTo=a=z.getElementById(a);a||ua(13,!0);c=A(w(a,"data-highcharts-chart"));!isNaN(c)&&Ea[c]&&Ea[c].destroy();w(a,"data-highcharts-chart",this.index);a.innerHTML="";a.offsetWidth||this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=T(Ba,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},r({position:"relative", +overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=b.forExport?new Fa(a,c,d,!0):new Va(a,c,d);Z&&this.renderer.create(this,a,c,d)},getMargins:function(){var a=this.options.chart,b=a.spacingTop,c=a.spacingRight,d=a.spacingBottom,a=a.spacingLeft,e,f=this.legend,g=this.optionsMarginTop,h=this.optionsMarginLeft,i=this.optionsMarginRight,j=this.optionsMarginBottom, +k=this.options.legend,l=p(k.margin,10),m=k.x,o=k.y,q=k.align,s=k.verticalAlign,r=this.titleOffset;this.resetMargins();e=this.axisOffset;if(r&&!t(g))this.plotTop=u(this.plotTop,r+this.options.title.margin+b);if(f.display&&!k.floating)if(q==="right"){if(!t(i))this.marginRight=u(this.marginRight,f.legendWidth-m+l+c)}else if(q==="left"){if(!t(h))this.plotLeft=u(this.plotLeft,f.legendWidth+m+l+a)}else if(s==="top"){if(!t(g))this.plotTop=u(this.plotTop,f.legendHeight+o+l+b)}else if(s==="bottom"&&!t(j))this.marginBottom= +u(this.marginBottom,f.legendHeight-o+l+d);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);this.hasCartesianSeries&&n(this.axes,function(a){a.getOffset()});t(h)||(this.plotLeft+=e[3]);t(g)||(this.plotTop+=e[0]);t(j)||(this.marginBottom+=e[2]);t(i)||(this.marginRight+=e[1]);this.setChartSize()},initReflow:function(){function a(a){var g=c.width||ib(d,"width"),h=c.height||ib(d,"height"),a=a?a.target:E;if(!b.hasUserSize&&g&&h&& +(a===E||a===z)){if(g!==b.containerWidth||h!==b.containerHeight)clearTimeout(e),b.reflowTimeout=e=setTimeout(function(){if(b.container)b.setSize(g,h,!1),b.hasUserSize=null},100);b.containerWidth=g;b.containerHeight=h}}var b=this,c=b.options.chart,d=b.renderTo,e;J(E,"resize",a);J(b,"destroy",function(){aa(E,"resize",a)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&C(d,"endResize",null,function(){d.isResizing-=1})};Ka(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth= +d.chartWidth;if(t(a))d.chartWidth=e=u(0,s(a)),d.hasUserSize=!!e;if(t(b))d.chartHeight=f=u(0,s(b));M(d.container,{width:e+"px",height:f+"px"});d.setChartSize(!0);d.renderer.setSize(e,f,c);d.maxTicks=null;n(d.axes,function(a){a.isDirty=!0;a.setScale()});n(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.getMargins();d.redraw(c);d.oldChartHeight=null;C(d,"resize");Ca===!1?g():setTimeout(g,Ca&&Ca.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth, +e=this.chartHeight,f=this.options.chart,g=f.spacingTop,h=f.spacingRight,i=f.spacingBottom,j=f.spacingLeft,k=this.clipOffset,l,m,o,q;this.plotLeft=l=s(this.plotLeft);this.plotTop=m=s(this.plotTop);this.plotWidth=o=u(0,s(d-l-this.marginRight));this.plotHeight=q=u(0,s(e-m-this.marginBottom));this.plotSizeX=b?q:o;this.plotSizeY=b?o:q;this.plotBorderWidth=b=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:j,y:g,width:d-j-h,height:e-g-i};this.plotBox=c.plotBox={x:l,y:m,width:o,height:q};c=ja(u(b,k[3])/ +2);d=ja(u(b,k[0])/2);this.clipBox={x:c,y:d,width:S(this.plotSizeX-u(b,k[1])/2-c),height:S(this.plotSizeY-u(b,k[2])/2-d)};a||n(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this.options.chart,b=a.spacingRight,c=a.spacingBottom,d=a.spacingLeft;this.plotTop=p(this.optionsMarginTop,a.spacingTop);this.marginRight=p(this.optionsMarginRight,b);this.marginBottom=p(this.optionsMarginBottom,c);this.plotLeft=p(this.optionsMarginLeft,d);this.axisOffset=[0,0,0,0]; +this.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||0,o,q=this.plotLeft,p=this.plotTop,n=this.plotWidth,s=this.plotHeight,t=this.plotBox,u=this.clipRect,r=this.clipBox;o=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp(null,null,null,c- +o,d-o));else{e={fill:j||R};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(o/2,o/2,c-o,d-o,a.borderRadius,i).attr(e).add().shadow(a.shadow)}if(k)f?f.animate(t):this.plotBackground=b.rect(q,p,n,s,0).attr({fill:k}).add().shadow(a.plotShadow);if(l)h?h.animate(t):this.plotBGImage=b.image(l,q,p,n,s).add();u?u.animate({width:r.width,height:r.height}):this.clipRect=b.clipRect(r);if(m)g?g.animate(g.crisp(null,q,p,n,s)):this.plotBorder=b.rect(q,p,n,s,0,m).attr({stroke:a.plotBorderColor, +"stroke-width":m,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;n(["inverted","angular","polar"],function(g){c=$[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];for(e=d&&d.length;!f&&e--;)(c=$[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},render:function(){var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=d.credits,g;a.setTitle();a.legend=new wb(a,d.legend);a.getStacks();n(b,function(a){a.setScale()});a.getMargins(); +a.maxTicks=null;n(b,function(a){a.setTickPositions(!0);a.setMaxTicks()});a.adjustTickAmounts();a.getMargins();a.drawChartBox();a.hasCartesianSeries&&n(b,function(a){a.render()});if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({zIndex:3}).add();n(a.series,function(a){a.translate();a.setTooltipPoints();a.render()});e.items&&n(e.items,function(b){var d=r(e.style,b.style),f=A(d.left)+a.plotLeft,g=A(d.top)+a.plotTop+12;delete d.left;delete d.top;c.text(b.html,f,g).attr({zIndex:2}).css(d).add()}); +if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){if(g)location.href=g}).attr({align:f.position.align,zIndex:8}).css(f.style).add().align(f.position);a.hasRendered=!0},destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;C(a,"destroy");Ea[a.index]=v;a.renderTo.removeAttribute("data-highcharts-chart");aa(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();n("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","), +function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML="",aa(d),f&&Ta(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!Y&&E==E.top&&z.readyState!=="complete"||Z&&!E.canvg?(Z?Ub.push(function(){a.firstRender()},a.options.global.canvasToolsURL):z.attachEvent("onreadystatechange",function(){z.detachEvent("onreadystatechange",a.firstRender);z.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender())a.getContainer(), +C(a,"init"),a.resetMargins(),a.setChartSize(),a.propFromSeries(),a.getAxes(),n(b.series||[],function(b){a.initSeries(b)}),C(a,"beforeRender"),a.pointer=new vb(a,b),a.render(),a.renderer.draw(),c&&c.apply(a,[a]),n(a.callbacks,function(b){b.apply(a,[a])}),a.cloneRenderTo(!0),C(a,"load")}};xb.prototype.callbacks=[];var Pa=function(){};Pa.prototype={init:function(a,b,c){this.series=a;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color= +this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.pointValKey,a=Pa.prototype.optionsToObject.call(this,a);r(this,a);this.options=this.options?r(this.options,a):a;if(d)this.y=this[d];if(this.x===v&&c)this.x=b===v?c.autoIncrement():b;return this},optionsToObject:function(a){var b,c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;if(typeof a==="number"||a===null)b={y:a};else if(Ha(a)){b= +{};if(a.length>e){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];f++}for(;ga+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))});this.segments= +b},setOptions:function(a){var b=this.chart.options,c=b.plotOptions,d=c[this.type];this.userOptions=a;a=x(d,c.series,a);this.tooltipOptions=x(b.tooltip,a.tooltip);d.marker===null&&delete a.marker;return a},getColor:function(){var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,e;e=a.color||X[this.type].color;if(!e&&!a.colorByPoint)t(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];this.color=e;d.wrapColor(c.length)},getSymbol:function(){var a= +this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;this.symbol=b.symbol;if(!this.symbol)t(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];if(/^url/.test(this.symbol))b.radius=0;c.wrapSymbol(d.length)},drawLegendSymbol:function(a){var b=this.options,c=b.marker,d=a.options,e;e=d.symbolWidth;var f=this.chart.renderer,g=this.legendGroup,a=a.baseline-s(f.fontMetrics(d.itemStyle.fontSize).b*0.3);if(b.lineWidth){d={"stroke-width":b.lineWidth}; +if(b.dashStyle)d.dashstyle=b.dashStyle;this.legendLine=f.path(["M",0,a,"L",e,a]).attr(d).add(g)}if(c&&c.enabled)b=c.radius,this.legendSymbol=e=f.symbol(this.symbol,e/2-b,a-b,2*b,2*b).add(g),e.isMarker=!0},addPoint:function(a,b,c,d){var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xData,k=this.yData,l=this.zData,m=this.names,o=g&&g.shift||0,q=e.data;Ka(d,i);c&&n([g,h,this.graphNeg,this.areaNeg],function(a){if(a)a.shift=o+1});if(h)h.isArea=!0;b=p(b,!0);d={series:this};this.pointClass.prototype.applyOptions.apply(d, +[a]);j.push(d.x);k.push(this.toYData?this.toYData(d):d.y);l.push(d.z);if(m)m[d.x]=d.name;q.push(a);e.legendType==="point"&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),j.shift(),k.shift(),l.shift(),q.shift()));this.isDirtyData=this.isDirty=!0;b&&(this.getAttribs(),i.redraw())},setData:function(a,b){var c=this.points,d=this.options,e=this.chart,f=null,g=this.xAxis,h=g&&g.categories&&!g.categories.length?[]:null,i;this.xIncrement=null;this.pointRange=g&&g.categories?1:d.pointRange; +this.colorCounter=0;var j=[],k=[],l=[],m=a?a.length:[];i=p(d.turboThreshold,1E3);var o=this.pointArrayMap,o=o&&o.length,q=!!this.toYData;if(i&&m>i){for(i=0;f===null&&ij||this.forceCrop))if(a=h.min,h=h.max,b[d-1]h)b=[],c=[];else if(b[0]h)e=this.cropData(this.xData,this.yData,a,h),b=e.xData,c=e.yData,e=e.start,f=!0;for(h=b.length-1;h>=0;h--)d=b[h]-b[h-1],d>0&&(g===v||d=c){f=u(0,h-1);break}for(;hd){g=h+1;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length, +h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(m=0;ml[n]&&!m)l[n]=p.total;else if(p.total0),l=this.getExtremesFromAll||this.cropped||(f[d+1]||l)>=k&&(f[d-1]||l)<=a,e&&l)if(e=c.length)for(;e--;)c[e]!==null&&(i[j++]=c[e]);else i[j++]= +c;m=p(m,Ia(i));o=p(o,ta(i))}this.dataMin=m;this.dataMax=o},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||pa(i),k=a.threshold,a=0;a=0&&c<=d;)i[c++]=f}this.tooltipPoints=i}}, +tooltipHeaderFormatter:function(a){var b=this.tooltipOptions,c=b.xDateFormat,d=b.dateTimeLabelFormats,e=this.xAxis,f=e&&e.options.type==="datetime",b=b.headerFormat,e=e&&e.closestPointRange,g;if(f&&!c)if(e)for(g in y){if(y[g]>=e){c=d[g];break}}else c=d.day;f&&c&&pa(a.key)&&(b=b.replace("{point.key}","{point.key:"+c+"}"));return Aa(b,{point:a,series:this})},onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&C(this,"mouseOver");this.setState("hover"); +a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;if(d)d.onMouseOut();this&&a.events.mouseOut&&C(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState();b.hoverSeries=null},animate:function(a){var b=this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.inverted,h;if(e&&!U(e))e=X[b.type].animation;h="_sharedClip"+e.duration+e.easing;if(a)a=c[h],e=c[h+"m"],a||(c[h]=a=d.clipRect(r(f,{width:0})), +c[h+"m"]=e=d.clipRect(-99,g?-c.plotLeft:-c.plotTop,99,g?c.chartWidth:c.chartHeight)),b.group.clip(a),b.markerGroup.clip(e),b.sharedClipKey=h;else{if(a=c[h])a.animate({width:c.plotSizeX},e),c[h+"m"].animate({width:c.plotSizeX+99},e);b.animate=null;b.animationTimeout=setTimeout(function(){b.afterAnimate()},e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=this.group;c&&this.options.clip!==!1&&(c.clip(a.clipRect),this.markerGroup.clip());setTimeout(function(){b&&a[b]&&(a[b]= +a[b].destroy(),a[b+"m"]=a[b+"m"].destroy())},100)},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m,o=this.markerGroup;if(l.enabled||this._hasPointMarkers)for(f=b.length;f--;)if(g=b[f],d=S(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{},a=l.enabled&&i.enabled===v||i.enabled,m=c.isInsidePlot(s(d),e,c.inverted),a&&e!==v&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""],h=a.r,i=p(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k.attr({visibility:m? +Y?"inherit":"visible":"hidden"}).animate(r({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(m&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(o)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=p(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=X[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color,h={stroke:g,fill:g}, +i=a.points||[],j=[],k,l=a.pointAttrToOptions,m=b.negativeColor,o;b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=e.color||oa(e.color||g).brighten(e.brightness).get();j[""]=a.convertAttribs(c,h);n(["hover","select"],function(b){j[b]=a.convertAttribs(d[b],j[""])});a.pointAttr=j;for(g=i.length;g--;){h=i[g];if((c=h.options&&h.options.marker||h.options)&&c.enabled===!1)c.radius=0;if(h.negative&&m)h.color=h.fillColor=m;f=b.colorByPoint||h.color;if(h.options)for(o in l)t(c[l[o]])&& +(f=!0);if(f){c=c||{};k=[];d=c.states||{};f=d.hover=d.hover||{};if(!b.marker)f.color=oa(f.color||h.color).brighten(f.brightness||e.brightness).get();k[""]=a.convertAttribs(r({color:h.color},c),j[""]);k.hover=a.convertAttribs(d.hover,j.hover,k[""]);k.select=a.convertAttribs(d.select,j.select,k[""]);if(h.negative&&b.marker&&m)k[""].fill=k.hover.fill=k.select.fill=a.convertAttribs({fillColor:m}).fill}else k=j;h.pointAttr=k}},update:function(a,b){var c=this.chart,d=this.type,a=x(this.userOptions,{animation:!1, +index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);r(this,$[a.type||d].prototype);this.init(c,a);p(b,!0)&&c.redraw(!1)},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(Da),d,e,f=a.data||[],g,h,i;C(a,"destroy");aa(a);n(["xAxis","yAxis"],function(b){if(i=a[b])fa(i.series,a),i.isDirty=i.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(e=f.length;e--;)(g=f[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout);n("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","), +function(b){a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())});if(b.hoverSeries===a)b.hoverSeries=null;fa(b.series,a);for(h in a)delete a[h]},drawDataLabels:function(){var a=this,b=a.options.dataLabels,c=a.points,d,e,f,g;if(b.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(b),g=a.plotGroup("dataLabelsGroup","data-labels",a.visible?"visible":"hidden",b.zIndex||6),e=b,n(c,function(c){var i,j=c.dataLabel,k,l,m=c.connector,o=!0;d=c.options&&c.options.dataLabels;i=e.enabled||d&&d.enabled; +if(j&&!i)c.dataLabel=j.destroy();else if(i){b=x(e,d);i=b.rotation;k=c.getLabelConfig();f=b.format?Aa(b.format,k):b.formatter.call(k,b);b.style.color=p(b.color,b.style.color,a.color,"black");if(j)if(t(f))j.attr({text:f}),o=!1;else{if(c.dataLabel=j=j.destroy(),m)c.connector=m.destroy()}else if(t(f)){j={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:i,padding:b.padding,zIndex:1};for(l in j)j[l]===v&&delete j[l];j=c.dataLabel=a.chart.renderer[i?"text": +"label"](f,0,-999,null,null,null,b.useHTML).attr(j).css(b.style).add(g).shadow(b.shadow)}j&&a.alignDataLabel(c,j,b,null,o)}})},alignDataLabel:function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=p(a.plotX,-999),i=p(a.plotY,-999),a=b.getBBox(),d=r({x:g?f.plotWidth-i:h,y:s(g?f.plotHeight-h:i),width:0,height:0},d);r(c,{width:a.width,height:a.height});c.rotation?(d={align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2},b[e?"attr":"animate"](d)):(b.align(c,null,d),d=b.alignAttr);b.attr({visibility:c.crop=== +!1||f.isInsidePlot(d.x,d.y)&&f.isInsidePlot(d.x+a.width,d.y+a.height)?f.renderer.isSVG?"inherit":"visible":"hidden"})},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;n(a,function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=this,b=[],c, +d=[];n(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=this.getGraphPath(),g=b.negativeColor;g&&c.push(["graphNeg",g]);n(c,function(c,g){var j=c[0],k=a[j];if(k)Wa(k),k.animate({d:f});else if(d&&f.length){k={stroke:c[1],"stroke-width":d,zIndex:1};if(e)k.dashstyle=e;a[j]=a.chart.renderer.path(f).attr(k).add(a.group).shadow(!g&& +b.shadow)}})},clipNeg:function(){var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;e=b.chartWidth;var j=b.chartHeight,k=u(e,j),l=this.yAxis;if(d&&(f||g)){d=s(l.toPixels(a.threshold||0,!0));a={x:0,y:0,width:k,height:d};k={x:0,y:d,width:k,height:k};if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j},k={x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e});l.reversed? +(b=k,e=a):(b=a,e=k);h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};n(["group","markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)J(c,"resize",a),J(b,"destroy",function(){aa(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a], +g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){return{translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis?this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this.chart,b,c=this.options,d=c.animation&&!!this.animate&&a.renderer.isSVG,e=this.visible?"visible":"hidden",f=c.zIndex,g=this.hasRendered,h=a.seriesGroup;b=this.plotGroup("group", +"series",e,f,h);this.markerGroup=this.plotGroup("markerGroup","markers",e,f,h);d&&this.animate(!0);this.getAttribs();b.inverted=this.isCartesian?a.inverted:!1;this.drawGraph&&(this.drawGraph(),this.clipNeg());this.drawDataLabels();this.drawPoints();this.options.enableMouseTracking!==!1&&this.drawTracker();a.inverted&&this.invertGroups();c.clip!==!1&&!this.sharedClipKey&&!g&&b.clip(a.clipRect);d?this.animate():g||this.afterAnimate();this.isDirty=this.isDirtyData=!1;this.hasRendered=!0},redraw:function(){var a= +this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:p(d&&d.left,a.plotLeft),translateY:p(e&&e.top,a.plotTop)}));this.translate();this.setTooltipPoints(!0);this.render();b&&C(this,"updatedData")},setState:function(a){var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&& +(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===v?!h:a)?"show":"hide";n(["group","dataLabelsGroup","markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&n(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});n(c.linkedSeries,function(b){b.setVisible(a, +!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();C(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===v?!this.selected:a;if(this.checkbox)this.checkbox.checked=a;C(this,a?"select":"unselect")},drawTracker:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,k=k&&{cursor:k},l=a.singlePoints,m,o=function(){if(f.hoverSeries!== +a)a.onMouseOver()};if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m=0;d--)da&&i>e?(i=u(a,e),k=2*e-i):ig&&k>e?(k=u(g,e),i=2*e-k):kf?l-f:e-(d.translate(b.y,0,1,0,1)<=e?f:0)));b.barX=m;b.pointWidth=g;b.shapeType="rect";b.shapeArgs=b=a.renderer.Element.prototype.crisp.call(0,c,m,o,h,k);c%2&&(b.y-=1,b.height+=1)})},getSymbol:xa,drawLegendSymbol:L.prototype.drawLegendSymbol,drawGraph:xa,drawPoints:function(){var a=this,b=a.options,c=a.chart.renderer, +d;n(a.points,function(e){var f=e.plotY,g=e.graphic;if(f!==v&&!isNaN(f)&&e.y!==null)d=e.shapeArgs,g?(Wa(g),g.animate(x(d))):e.graphic=c[e.shapeType](d).attr(e.pointAttr[e.selected?"select":""]).add(a.group).shadow(b.shadow,null,b.stacking&&!b.borderRadius);else if(g)e.graphic=g.destroy()})},drawTracker:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){var d=c.target,e;if(b.hoverSeries!==a)a.onMouseOver();for(;d&&!e;)e=d.point,d=d.parentNode;if(e!==v&&e!== +b.hoverPoint)e.onMouseOver(c)};n(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});a._hasTracking?a._hasTracking=!0:n(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){c.onTrackerMouseOut(a)}).css(e),hb))a[b].on("touchstart",f)})},alignDataLabel:function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>p(this.translatedThreshold,f.plotSizeY), +j=p(c.inside,!!this.options.stacking);if(h&&(d=x(h),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=p(c.align,!g||j?"center":i?"right":"left");c.verticalAlign=p(c.verticalAlign,g||j?"middle":i?"top":"bottom");Q.prototype.alignDataLabel.call(this,a,b,c,d,e)},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(Y)a?(e.scaleY=0.001,a=I(b.pos+b.len,u(b.pos, +b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&n(b.series,function(b){if(b.type===a.type)b.isDirty=!0});Q.prototype.remove.apply(a,arguments)}});$.column=K;X.bar=x(X.column);la=ga(K,{type:"bar",inverted:!0});$.bar=la;X.scatter=x(W,{lineWidth:0,tooltip:{headerFormat:'{series.name}
    ', +pointFormat:"x: {point.x}
    y: {point.y}
    ",followPointer:!0},stickyTracking:!1});la=ga(Q,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],drawTracker:K.prototype.drawTracker,setTooltipPoints:xa});$.scatter=la;X.pie=x(W,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name}},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null, +showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});W={type:"pie",isCartesian:!1,pointClass:ga(Pa,{init:function(){Pa.prototype.init.apply(this,arguments);var a=this,b;if(a.y<0)a.y=null;r(a,{visible:a.visible!==!1,name:p(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};J(a,"select",b);J(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series,d=c.chart,e;b.visible=b.options.visible=a=a===v?!b.visible:a;c.options.data[na(b, +c.data)]=b.options;e=a?"show":"hide";n(["graphic","dataLabel","connector","shadowGroup"],function(a){if(b[a])b[a][e]()});b.legendItem&&d.legend.colorizeItem(b,a);if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()},slice:function(a,b,c){var d=this.series;Ka(c,d.chart);p(b,!0);this.sliced=this.options.sliced=a=t(a)?a:!this.sliced;d.options.data[na(this,d.data)]=this.options;a=a?this.slicedTranslation:{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)}}), +requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:xa,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)n(c,function(a){var c=a.graphic,a=a.shapeArgs;c&&(c.attr({r:b.center[3]/2,start:d,end:d}),c.animate({r:a.r,start:a.start,end:a.end},b.options.animation))}),b.animate=null},setData:function(a,b){Q.prototype.setData.call(this,a,!1);this.processData();this.generatePoints(); +p(b,!0)&&this.chart.redraw()},generatePoints:function(){var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;Q.prototype.generatePoints.call(this);c=this.points;d=c.length;for(a=0;a0.75*k&&(h-=2*Ma);n.slicedTranslation={translateX:s(V(h)*d),translateY:s(ba(h)*d)};f=V(h)*a[2]/2;g=ba(h)*a[2]/2;n.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];n.half=h0,r,w,v,x,A=[[],[]],z,y,G,H,B,C=[0,0,0,0],I=function(a,b){return b.y-a.y},M=function(a,b){a.sort(function(a,c){return a.angle!==void 0&&(c.angle-a.angle)*b})};if(a.visible&&(e.enabled||a._hasPointLabels)){Q.prototype.drawDataLabels.apply(a);n(b,function(a){a.dataLabel&& +A[a.half].push(a)});for(H=0;!x&&b[H];)x=b[H]&&b[H].dataLabel&&(b[H].dataLabel.getBBox().height||21),H++;for(H=2;H--;){var b=[],L=[],J=A[H],K=J.length,E;M(J,H-0.5);if(l>0){for(B=q-o-l;B<=q+o+l;B+=x)b.push(B);w=b.length;if(K>w){c=[].concat(J);c.sort(I);for(B=K;B--;)c[B].rank=B;for(B=K;B--;)J[B].rank>=w&&J.splice(B,1);K=J.length}for(B=0;B0){if(w=L.pop(),E=w.i,y=w.y,c>y&&b[E+1]!==null||ch-f&&(C[1]=u(s(z+w-h+f),C[1])),y- +x/2<0?C[0]=u(s(-y+x/2),C[0]):y+x/2>d&&(C[2]=u(s(y+x/2-d),C[2]))}}if(ta(C)===0||this.verifyDataLabelOverflow(C))this.placeDataLabels(),t&&g&&n(this.points,function(b){i=b.connector;v=b.labelPos;if((r=b.dataLabel)&&r._pos)G=r._attr.visibility,z=r.connX,y=r.connY,j=k?["M",z+(v[6]==="left"?5:-5),y,"C",z,y,2*v[2]-v[4],2*v[3]-v[5],v[2],v[3],"L",v[4],v[5]]:["M",z+(v[6]==="left"?5:-5),y,"L",v[2],v[3],"L",v[4],v[5]],i?(i.animate({d:j}),i.attr("visibility",G)):b.connector=i=a.chart.renderer.path(j).attr({"stroke-width":g, +stroke:e.connectorColor||b.color||"#606060",visibility:G}).add(a.group);else if(i)b.connector=i.destroy()})}},verifyDataLabelOverflow:function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[0]!==null?e=u(b[2]-u(a[1],a[3]),c):(e=u(b[2]-a[1]-a[3],c),b[0]+=(a[3]-a[1])/2);d[1]!==null?e=u(I(e,b[2]-u(a[0],a[2])),c):(e=u(I(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);e").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,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=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.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 d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,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"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.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?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.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(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.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]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),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]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.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&&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!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},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=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=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&&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=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null: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=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=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(t){s=function(a,b){var c=0,d=b||[];if(g.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)&&(o.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:[]}},o.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&&(o.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")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(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;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},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 V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(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 f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(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(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(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=f.clean(arguments);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,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),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","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||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(c||!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 cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.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):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/js/jquery.atmosphere.js b/js/jquery.atmosphere.js new file mode 100644 index 00000000..905a8230 --- /dev/null +++ b/js/jquery.atmosphere.js @@ -0,0 +1,1756 @@ +/** + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Part of this code has been taked from + * + * jQuery Stream @VERSION + * Comet Streaming JavaScript Library + * http://code.google.com/p/jquery-stream/ + * + * Copyright 2011, Donghwan Kim + * Licensed under the Apache License, Version 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Compatible with jQuery 1.5+ + */ +jQuery.atmosphere = function() { + jQuery(window).unload(function() { + jQuery.atmosphere.unsubscribe(); + }); + + var parseHeaders = function(headerString) { + var match, rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, headers = {}; + while (match = rheaders.exec(headerString)) { + headers[match[1]] = match[2]; + } + return headers; + }; + + return { + version : 0.9, + requests : [], + callbacks : [], + + onError : function(response) {}, + onClose : function(response) {}, + onOpen : function(response) {}, + onMessage : function(response) {}, + onReconnect : function(request, response) {}, + onMessagePublished : function(response) {}, + + AtmosphereRequest : function(options) { + + /** + * {Object} Request parameters. + * @private + */ + var _request = { + timeout: 300000, + method: 'GET', + headers: {}, + contentType : '', + cache: true, + async: true, + ifModified: false, + callback: null, + dataType: '', + url : '', + data : '', + suspend : true, + maxRequest : 60, + maxStreamingLength : 10000000, + lastIndex : 0, + logLevel : 'info', + requestCount : 0, + fallbackMethod: 'GET', + fallbackTransport : 'streaming', + transport : 'long-polling', + webSocketImpl: null, + webSocketUrl: null, + webSocketPathDelimiter: "@@", + enableXDR : false, + rewriteURL : false, + attachHeadersAsQueryString : true, + executeCallbackBeforeReconnect : false, + readyState : 0, + lastTimestamp : 0, + withCredentials : false, + trackMessageLength : false , + messageDelimiter : '|', + connectTimeout : -1, + onError : function(response) {}, + onClose : function(response) {}, + onOpen : function(response) {}, + onMessage : function(response) {}, + onReconnect : function(request, response) {}, + onMessagePublished : function(response) {} + }; + + /** + * {Object} Request's last response. + * @private + */ + var _response = { + status: 200, + responseBody : '', + expectedBodySize : -1, + headers : [], + state : "messageReceived", + transport : "polling", + error: null, + id : 0 + }; + + /** + * {number} Request id. + * + * @private + */ + var _uuid = 0; + + /** + * {websocket} Opened web socket. + * + * @private + */ + var _websocket = null; + + /** + * {XMLHttpRequest, ActiveXObject} Opened ajax request (in case of + * http-streaming or long-polling) + * + * @private + */ + var _activeRequest = null; + + /** + * {Object} Object use for streaming with IE. + * + * @private + */ + var _ieStream = null; + + /** + * {Object} Object use for jsonp transport. + * + * @private + */ + var _jqxhr = null; + + /** + * {boolean} If request has been subscribed or not. + * + * @private + */ + var _subscribed = true; + + /** + * {number} Number of test reconnection. + * + * @private + */ + var _requestCount = 0; + + /** + * {boolean} If request is currently aborded. + * + * @private + */ + var _abordingConnection = false; + + // Automatic call to subscribe + _subscribe(options); + + /** + * Initialize atmosphere request object. + * + * @private + */ + function _init() { + _uuid = 0; + _subscribed = true; + _abordingConnection = false; + _requestCount = 0; + + _websocket = null; + _activeRequest = null; + _ieStream = null; + } + + /** + * Re-initialize atmosphere object. + * @private + */ + function _reinit() { + _close(); + _init(); + } + + /** + * Subscribe request using request transport.
    + * If request is currently opened, this one will be closed. + * + * @param {Object} + * Request parameters. + * @private + */ + function _subscribe(options) { + _reinit(); + + _request = jQuery.extend(_request, options); + _uuid = jQuery.atmosphere.guid(); + + _execute(); + } + + /** + * Check if web socket is supported (check for custom implementation + * provided by request object or browser implementation). + * + * @returns {boolean} True if web socket is supported, false + * otherwise. + * @private + */ + function _supportWebsocket() { + return _request.webSocketImpl != null || window.WebSocket || window.MozWebSocket; + } + + /** + * Open request using request transport.
    + * If request transport is 'websocket' but websocket can't be + * opened, request will automatically reconnect using fallback + * transport. + * + * @private + */ + function _execute() { + if (_request.transport != 'websocket') { + _open('opening',_request.transport); + _executeRequest(); + + } else if (_request.transport == 'websocket') { + if (!_supportWebsocket()) { + jQuery.atmosphere.log(_request.logLevel, ["Websocket is not supported, using request.fallbackTransport (" + _request.fallbackTransport + ")"]); + _open('opening', _request.fallbackTransport); + _reconnectWithFallbackTransport(); + } else { + _executeWebSocket(false); + } + } + } + + /** + * @private + */ + function _open(state, transport) { + var prevState = _response.state; + _response.state = state; + _response.status = 200; + var prevTransport = _response.transport; + _response.transport = transport; + _response.responseBody = ""; + _invokeCallback(); + _response.state = prevState; + _response.transport = prevTransport; + } + + /** + * Execute request using jsonp transport. + * + * @param request + * {Object} request Request parameters, if + * undefined _request object will be used. + * @private + */ + function _jsonp(request) { + var rq = _request; + if ((request != null) && (typeof(request) != 'undefined')) { + rq = request; + } + + var url = rq.url; + var data = rq.data; + if (rq.attachHeadersAsQueryString) { + url = _attachHeaders(rq); + if (data != '') { + url += "&X-Atmosphere-Post-Body=" + data; + } + data = ''; + } + + _jqxhr = jQuery.ajax({ + url : url, + type : rq.method, + dataType: "jsonp", + error : function(jqXHR, textStatus, errorThrown) { + if (jqXHR.status < 300) { + _reconnect(_jqxhr, rq); + } else { + _prepareCallback(textStatus, "error", jqXHR.status, rq.transport); + } + }, + jsonp : "jsonpTransport", + success: function(json) { + if (rq.executeCallbackBeforeReconnect) { + _reconnect(_jqxhr, rq); + } + + var msg = json.message; + if (msg != null && typeof msg != 'string') { + try { + msg = jQuery.stringifyJSON(msg); + } catch (err) { + // The message was partial + } + } + + _prepareCallback(msg, "messageReceived", 200, rq.transport); + + if (!rq.executeCallbackBeforeReconnect) { + _reconnect(_jqxhr, rq); + } + }, + data : rq.data, + beforeSend : function(jqXHR) { + _doRequest(jqXHR, rq, false); + } + }); + } + + /** + * Build websocket object. + * + * @param location + * {string} Web socket url. + * @returns {websocket} Web socket object. + * @private + */ + function _getWebSocket(location) { + if (_request.webSocketImpl != null) { + return _request.webSocketImpl; + } else { + if (window.WebSocket) { + return new WebSocket(location); + } else { + return new MozWebSocket(location); + } + } + } + + /** + * Build web socket url from request url. + * + * @return {string} Web socket url (start with "ws" or "wss" for + * secure web socket). + * @private + */ + function _buildWebSocketUrl() { + var url = _request.url; + url = _attachHeaders(); + if (url.indexOf("http") == -1 && url.indexOf("ws") == -1) { + url = jQuery.atmosphere.parseUri(document.location, url); + } + return url.replace('http:', 'ws:').replace('https:', 'wss:'); + } + + /** + * Open web socket.
    + * Automatically use fallback transport if web socket can't be + * opened. + * + * @private + */ + function _executeWebSocket(webSocketOpened) { + + _response.transport = "websocket"; + + var location = _buildWebSocketUrl(_request.url); + + jQuery.atmosphere.log(_request.logLevel, ["Invoking executeWebSocket"]); + if (_request.logLevel == 'debug') { + jQuery.atmosphere.debug("Using URL: " + location); + } + + _websocket = _getWebSocket(location); + + if (_request.connectTimeout > 0) { + _request.id = setTimeout(function() { + if (!webSocketOpened) { + var _message = { + code : 1002, + reason : "", + wasClean : false + }; + _websocket.onclose(_message); + } + }, _request.connectTimeout); + } + + _websocket.onopen = function(message) { + if (_request.logLevel == 'debug') { + jQuery.atmosphere.debug("Websocket successfully opened"); + } + + _subscribed = true; + _open(webSocketOpened ? 're-opening' : 'opening', "websocket"); + + webSocketOpened = true; + + if (_request.method == 'POST') { + _response.state = "messageReceived"; + _websocket.send(_request.data); + } + }; + + _websocket.onmessage = function(message) { + if (message.data.indexOf("parent.callback") != -1) { + jQuery.atmosphere.log(_request.logLevel, ["parent.callback no longer supported with 0.8 version and up. Please upgrade"]); + } + + _response.state = 'messageReceived'; + _response.status = 200; + + var message = message.data; + var skipCallbackInvocation = _trackMessageSize(message, _request, _response); + + if (!skipCallbackInvocation) { + _invokeCallback(); + _response.responseBody = ''; + } + }; + + _websocket.onerror = function(message) { + jQuery.atmosphere.warn("Websocket error, reason: " + message.reason); + + _response.state = 'error'; + _response.responseBody = ""; + _response.status = 500; + _invokeCallback(); + }; + + _websocket.onclose = function(message) { + var reason = message.reason; + if (reason === "") { + switch (message.code) { + case 1000: + reason = "Normal closure; the connection successfully completed whatever purpose for which " + + "it was created."; + break; + case 1001: + reason = "The endpoint is going away, either because of a server failure or because the " + + "browser is navigating away from the page that opened the connection."; + break; + case 1002: + reason = "The endpoint is terminating the connection due to a protocol error."; + break; + case 1003: + reason = "The connection is being terminated because the endpoint received data of a type it " + + "cannot accept (for example, a text-only endpoint received binary data)."; + break; + case 1004: + reason = "The endpoint is terminating the connection because a data frame was received that " + + "is too large."; + break; + case 1005: + reason = "Unknown: no status code was provided even though one was expected."; + break; + case 1006: + reason = "Connection was closed abnormally (that is, with no close frame being sent)."; + break; + } + } + + jQuery.atmosphere.warn("Websocket closed, reason: " + reason); + jQuery.atmosphere.warn("Websocket closed, wasClean: " + message.wasClean); + + _response.state = 'closed'; + _response.responseBody = ""; + _response.status = 200; + _invokeCallback(); + + if (_abordingConnection) { + _abordingConnection = false; + jQuery.atmosphere.log(_request.logLevel, ["Websocket closed normally"]); + + } else if (!webSocketOpened) { + jQuery.atmosphere.log(_request.logLevel, ["Websocket failed. Downgrading to Comet and resending"]); + _open('opening', _request.fallbackTransport); + _reconnectWithFallbackTransport(); + + } else if ((_subscribed) && (_response.transport == 'websocket')) { + if (_requestCount++ < _request.maxRequest) { + _request.requestCount = _requestCount; + _response.responseBody = ""; + _executeWebSocket(true); + } else { + jQuery.atmosphere.log(_request.logLevel, ["Websocket reconnect maximum try reached " + _request.requestCount]); + } + } + }; + } + + /** + * Track received message and make sure callbacks/functions are only invoked when the complete message + * has been received. + * + * @param message + * @param request + * @param response + */ + function _trackMessageSize(message, request, response) { + if (request.trackMessageLength) { + // The message length is the included within the message + var messageStart = message.indexOf(request.messageDelimiter); + + var length = response.expectedBodySize; + if (messageStart != -1) { + length = message.substring(0, messageStart); + message = message.substring(messageStart + 1); + response.expectedBodySize = length; + } + + if (messageStart != -1) { + response.responseBody = message; + } else { + response.responseBody += message; + } + + if (response.responseBody.length != length) { + return true; + } + } else { + response.responseBody = message; + } + return false; + } + + /** + * Reconnect request with fallback transport.
    + * Used in case websocket can't be opened. + * + * @private + */ + function _reconnectWithFallbackTransport() { + _request.transport = _request.fallbackTransport; + _request.method = _request.fallbackMethod; + _response.transport = _request.fallbackTransport; + _executeRequest(); + } + + /** + * Get url from request and attach headers to it. + * + * @param request + * {Object} request Request parameters, if + * undefined _request object will be used. + * + * @returns {Object} Request object, if undefined, + * _request object will be used. + * @private + */ + function _attachHeaders(request) { + var rq = _request; + if ((request != null) && (typeof(request) != 'undefined')) { + rq = request; + } + + var url = rq.url; + + // If not enabled + if (!rq.attachHeadersAsQueryString) return url; + + // If already added + if (url.indexOf("X-Atmosphere-Framework") != -1) { + return url; + } + + url += (url.indexOf('?') != -1) ? '&' : '?'; + url += "X-Atmosphere-tracking-id=" + _uuid; + url += "&X-Atmosphere-Framework=" + jQuery.atmosphere.version; + url += "&X-Atmosphere-Transport=" + rq.transport; + + if (rq.trackMessageLength) { + url += "&X-Atmosphere-TrackMessageSize=" + "true"; + } + + if (rq.lastTimestamp != undefined) { + url += "&X-Cache-Date=" + rq.lastTimestamp; + } else { + url += "&X-Cache-Date=" + 0; + } + + if (rq.contentType != '') { + url += "&Content-Type=" + rq.contentType; + } + + jQuery.each(rq.headers, function(name, value) { + var h = jQuery.isFunction(value) ? value.call(this, ajaxRequest, request, create) : value; + if (h) { + url += "&" + encodeURIComponent(name) + "=" + encodeURIComponent(h); + } + }); + + return url; + } + + /** + * Build ajax request.
    + * Ajax Request is an XMLHttpRequest object, except for IE6 where + * ajax request is an ActiveXObject. + * + * @return {XMLHttpRequest, ActiveXObject} Ajax request. + * @private + */ + function _buildAjaxRequest() { + var ajaxRequest; + if (jQuery.browser.msie) { + var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; + for (var i = 0; i < activexmodes.length; i++) { + try { + ajaxRequest = new ActiveXObject(activexmodes[i]); + } catch(e) { } + } + + } else if (window.XMLHttpRequest) { + ajaxRequest = new XMLHttpRequest(); + } + return ajaxRequest; + } + + /** + * Execute ajax request.
    + * + * @param request + * {Object} request Request parameters, if + * undefined _request object will be used. + * @private + */ + function _executeRequest(request) { + var rq = _request; + if ((request != null) || (typeof(request) != 'undefined')) { + rq = request; + } + + // CORS fake using JSONP + if ((rq.transport == 'jsonp') || ((rq.enableXDR) && (jQuery.atmosphere.checkCORSSupport()))) { + _jsonp(rq); + return; + } + + if ((rq.transport == 'streaming') && (jQuery.browser.msie)) { + rq.enableXDR && window.XDomainRequest ? _ieXDR(rq) : _ieStreaming(rq); + return; + } + + if ((rq.enableXDR) && (window.XDomainRequest)) { + _ieXDR(rq); + return; + } + + if (rq.requestCount++ < rq.maxRequest) { + var ajaxRequest = _buildAjaxRequest(); + _doRequest(ajaxRequest, rq, true); + + if (rq.suspend) { + _activeRequest = ajaxRequest; + } + + if (rq.transport != 'polling') { + _response.transport = rq.transport; + } + + var error = false; + if (!jQuery.browser.msie) { + ajaxRequest.onerror = function() { + error = true; + try { + _response.status = XMLHttpRequest.status; + } catch(e) { + _response.status = 404; + } + + _response.state = "error"; + _invokeCallback(); + ajaxRequest.abort(); + _activeRequest = null; + }; + } + + ajaxRequest.onreadystatechange = function() { + if (_abordingConnection) { + return; + } + + var skipCallbackInvocation = false; + var update = false; + + // Remote server disconnected us, reconnect. + if (rq.transport == 'streaming' + && (rq.readyState > 2 + && ajaxRequest.readyState == 4)) { + + rq.readyState = 0; + rq.lastIndex = 0; + + _reconnect(ajaxRequest, rq, true); + return; + } + + rq.readyState = ajaxRequest.readyState; + + if (ajaxRequest.readyState == 4) { + if (jQuery.browser.msie) { + update = true; + } else if (rq.transport == 'streaming') { + update = true; + } else if (rq.transport == 'long-polling') { + update = true; + clearTimeout(rq.id); + } + + } else if (!jQuery.browser.msie && ajaxRequest.readyState == 3 && ajaxRequest.status == 200 && rq.transport != 'long-polling') { + update = true; + } else { + clearTimeout(rq.id); + } + + if (update) { + + var tempDate = ajaxRequest.getResponseHeader('X-Cache-Date'); + if (tempDate != null || tempDate != undefined) { + _request.lastTimestamp = tempDate.split(" ").pop(); + } + + var responseText = ajaxRequest.responseText; + this.previousLastIndex = rq.lastIndex; + if (rq.transport == 'streaming') { + var text = responseText.substring(rq.lastIndex, responseText.length); + _response.isJunkEnded = true; + + if (rq.lastIndex == 0 && text.indexOf(""; + var endOfJunkLenght = endOfJunk.length; + var junkEnd = text.indexOf(endOfJunk) + endOfJunkLenght; + + if (junkEnd > endOfJunkLenght && junkEnd != text.length) { + _response.responseBody = text.substring(junkEnd); + } else { + skipCallbackInvocation = true; + } + } else { + var message = responseText.substring(rq.lastIndex, responseText.length); + skipCallbackInvocation = _trackMessageSize(message, rq, _response); + } + rq.lastIndex = responseText.length; + + if (jQuery.browser.opera) { + jQuery.atmosphere.iterate(function() { + if (ajaxRequest.responseText.length > rq.lastIndex) { + try { + _response.status = ajaxRequest.status; + _response.headers = parseHeaders(ajaxRequest.getAllResponseHeaders()); + + // HOTFIX for firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=608735 + if (_request.headers) { + jQuery.each(_request.headers, function(name) { + var v = ajaxRequest.getResponseHeader(name); + if (v) { + _response.headers[name] = v; + } + }); + } + } + catch(e) { + _response.status = 404; + } + _response.state = "messageReceived"; + _response.responseBody = ajaxRequest.responseText.substring(rq.lastIndex); + rq.lastIndex = ajaxRequest.responseText.length; + + _invokeCallback(); + if ((rq.transport == 'streaming') && (ajaxRequest.responseText.length > rq.maxStreamingLength)) { + // Close and reopen connection on large data received + ajaxRequest.abort(); + _doRequest(ajaxRequest, rq, true); + } + } + }, 0); + } + + if (skipCallbackInvocation) { + return; + } + } else { + skipCallbackInvocation = _trackMessageSize(responseText, rq, _response); + rq.lastIndex = responseText.length; + } + + try { + _response.status = ajaxRequest.status; + _response.headers = parseHeaders(ajaxRequest.getAllResponseHeaders()); + } catch(e) { + _response.status = 404; + } + + if (rq.suspend) { + _response.state = _response.status == 0 ? "closed" : "messageReceived"; + } else { + _response.state = "messagePublished"; + } + + if (!rq.executeCallbackBeforeReconnect) { + _reconnect(ajaxRequest, rq, false); + } + + // For backward compatibility with Atmosphere < 0.8 + if (_response.responseBody.indexOf("parent.callback") != -1) { + jQuery.atmosphere.log(rq.logLevel, ["parent.callback no longer supported with 0.8 version and up. Please upgrade"]); + } + _invokeCallback(); + + if (rq.executeCallbackBeforeReconnect) { + _reconnect(ajaxRequest, rq, false); + } + + if ((rq.transport == 'streaming') && (responseText.length > rq.maxStreamingLength)) { + // Close and reopen connection on large data received + ajaxRequest.abort(); + _doRequest(ajaxRequest, rq, true); + } else { + _open('re-opening', rq.transport); + } + } + }; + ajaxRequest.send(rq.data); + + if (rq.suspend) { + rq.id = setTimeout(function() { + if (_subscribed) { + ajaxRequest.abort(); + _subscribe(rq); + } + }, rq.timeout); + } + _subscribed = true; + + } else { + jQuery.atmosphere.log(rq.logLevel, ["Max re-connection reached."]); + } + } + + /** + * Do ajax request. + * @param ajaxRequest Ajax request. + * @param request Request parameters. + * @param create If ajax request has to be open. + */ + function _doRequest(ajaxRequest, request, create) { + // Prevent Android to cache request + var url = jQuery.atmosphere.prepareURL(request.url); + + if (create) { + ajaxRequest.open(request.method, url, true); + if (request.connectTimeout > -1) { + request.id = setTimeout(function() { + if (request.requestCount == 0) { + ajaxRequest.abort(); + _prepareCallback("Connect timeout", "closed", 200, request.transport); + } + }, request.connectTimeout); + } + } + + if (_request.withCredentials) { + if ("withCredentials" in ajaxRequest) { + ajaxRequest.withCredentials = true; + } + } + + ajaxRequest.setRequestHeader("X-Atmosphere-Framework", jQuery.atmosphere.version); + ajaxRequest.setRequestHeader("X-Atmosphere-Transport", request.transport); + if (request.lastTimestamp != undefined) { + ajaxRequest.setRequestHeader("X-Cache-Date", request.lastTimestamp); + } else { + ajaxRequest.setRequestHeader("X-Cache-Date", 0); + } + + if (request.trackMessageLength) { + ajaxRequest.setRequestHeader("X-Atmosphere-TrackMessageSize", "true") + } + + if (request.contentType != '') { + ajaxRequest.setRequestHeader("Content-Type", request.contentType); + } + ajaxRequest.setRequestHeader("X-Atmosphere-tracking-id", _uuid); + + jQuery.each(request.headers, function(name, value) { + var h = jQuery.isFunction(value) ? value.call(this, ajaxRequest, request, create, _response) : value; + if (h) { + ajaxRequest.setRequestHeader(name, h); + } + }); + } + + function _reconnect(ajaxRequest, request, force) { + if (force || (request.suspend && ajaxRequest.status == 200 && request.transport != 'streaming' && _subscribed)) { + _executeRequest(); + } + } + + // From jquery-stream, which is APL2 licensed as well. + function _ieXDR(request) { + _ieStream = _configureXDR(request); + _ieStream.open(); + } + + // From jquery-stream + function _configureXDR(request) { + var rq = _request; + if ((request != null) && (typeof(request) != 'undefined')) { + rq = request; + } + + var lastMessage = ""; + var transport = rq.transport; + var lastIndex = 0; + + var xdrCallback = function (xdr) { + var responseBody = xdr.responseText; + var isJunkEnded = false; + + if (responseBody.indexOf(""; + var endOfJunkLenght = endOfJunk.length; + var junkEnd = responseBody.indexOf(endOfJunk) + endOfJunkLenght; + + responseBody = responseBody.substring(junkEnd + lastIndex); + lastIndex += responseBody.length; + } + + _prepareCallback(responseBody, "messageReceived", 200, transport); + }; + + var xdr = new window.XDomainRequest(); + var rewriteURL = rq.rewriteURL || function(url) { + // Maintaining session by rewriting URL + // http://stackoverflow.com/questions/6453779/maintaining-session-by-rewriting-url + var rewriters = { + JSESSIONID: function(sid) { + return url.replace(/;jsessionid=[^\?]*|(\?)|$/, ";jsessionid=" + sid + "$1"); + }, + PHPSESSID: function(sid) { + return url.replace(/\?PHPSESSID=[^&]*&?|\?|$/, "?PHPSESSID=" + sid + "&").replace(/&$/, ""); + } + }; + + for (var name in rewriters) { + // Finds session id from cookie + var matcher = new RegExp("(?:^|;\\s*)" + encodeURIComponent(name) + "=([^;]*)").exec(document.cookie); + if (matcher) { + return rewriters[name](matcher[1]); + } + } + + return url; + }; + + // Handles open and message event + xdr.onprogress = function() { + xdrCallback(xdr); + }; + // Handles error event + xdr.onerror = function() { + _prepareCallback(xdr.responseText, "error", 500, transport); + }; + // Handles close event + xdr.onload = function() { + if (lastMessage != xdr.responseText) { + xdrCallback(xdr); + } + if (rq.transport == "long-polling") { + _executeRequest(); + } + }; + + return { + open: function() { + if (rq.method == 'POST') { + rq.attachHeadersAsQueryString = true; + } + var url = _attachHeaders(rq); + if (rq.method == 'POST') { + url += "&X-Atmosphere-Post-Body=" + rq.data; + } + xdr.open(rq.method, rewriteURL(url)); + xdr.send(); + if (rq.connectTimeout > -1) { + rq.id = setTimeout(function() { + if (rq.requestCount == 0) { + xdr.abort(); + _prepareCallback("Connect timeout", "closed", 200, rq.transport); + } + }, rq.connectTimeout); + } + }, + close: function() { + xdr.abort(); + _prepareCallback(xdr.responseText, "closed", 200, transport); + } + }; + } + + // From jquery-stream, which is APL2 licensed as well. + function _ieStreaming(request) { + _ieStream = _configureIE(request); + _ieStream.open(); + } + + function _configureIE(request) { + var rq = _request; + if ((request != null) && (typeof(request) != 'undefined')) { + rq = request; + } + + var stop; + var doc = new window.ActiveXObject("htmlfile"); + + doc.open(); + doc.close(); + + var url = rq.url; + + if (rq.transport != 'polling') { + _response.transport = rq.transport; + } + + return { + open: function() { + var iframe = doc.createElement("iframe"); + + url = _attachHeaders(rq); + if (rq.data != '') { + url += "&X-Atmosphere-Post-Body=" + rq.data; + } + + // Finally attach a timestamp to prevent Android and IE caching. + url = jQuery.atmosphere.prepareURL(url); + + iframe.src = url; + doc.body.appendChild(iframe); + + // For the server to respond in a consistent format regardless of user agent, we polls response text + var cdoc = iframe.contentDocument || iframe.contentWindow.document; + + stop = jQuery.atmosphere.iterate(function() { + if (!cdoc.firstChild) { + return; + } + + // Detects connection failure + if (cdoc.readyState === "complete") { + try { + jQuery.noop(cdoc.fileSize); + } catch(e) { + _prepareCallback("Connection Failure", "error", 500, rq.transport); + return false; + } + } + + var res = cdoc.body ? cdoc.body.lastChild : cdoc; + var readResponse = function() { + // Clones the element not to disturb the original one + var clone = res.cloneNode(true); + + // If the last character is a carriage return or a line feed, IE ignores it in the innerText property + // therefore, we add another non-newline character to preserve it + clone.appendChild(cdoc.createTextNode(".")); + + var text = clone.innerText; + var isJunkEnded = true; + + if (text.indexOf(""; + var endOfJunkLenght = endOfJunk.length; + var junkEnd = text.indexOf(endOfJunk) + endOfJunkLenght; + + text = text.substring(junkEnd); + } + return text.substring(0, text.length - 1); + }; + + //To support text/html content type + if (!jQuery.nodeName(res, "pre")) { + // Injects a plaintext element which renders text without interpreting the HTML and cannot be stopped + // it is deprecated in HTML5, but still works + var head = cdoc.head || cdoc.getElementsByTagName("head")[0] || cdoc.documentElement || cdoc; + var script = cdoc.createElement("script"); + + script.text = "document.write('')"; + + head.insertBefore(script, head.firstChild); + head.removeChild(script); + + // The plaintext element will be the response container + res = cdoc.body.lastChild; + } + + // Handles open event + _prepareCallback(readResponse(), "opening", 200, rq.transport); + + // Handles message and close event + stop = jQuery.atmosphere.iterate(function() { + var text = readResponse(); + if (text.length > rq.lastIndex) { + _response.status = 200; + _prepareCallback(text, "messageReceived", 200, rq.transport); + + // Empties response every time that it is handled + res.innerText = ""; + rq.lastIndex = 0; + } + + if (cdoc.readyState === "complete") { + _prepareCallback("", "re-opening", 200, rq.transport); + _ieStreaming(rq); + return false; + } + }, null); + + return false; + }); + }, + + close: function() { + if (stop) { + stop(); + } + + doc.execCommand("Stop"); + _prepareCallback("", "closed", 200, rq.transport); + } + }; + } + + /** + * Send message. <br> + * Will be automatically dispatch to other connected. + * + * @param {Object, + * string} Message to send. + * @private + */ + function _push(message) { + if (_activeRequest != null) { + _pushAjaxMessage(message); + } else if (_ieStream != null) { + _pushIE(message); + } else if (_jqxhr != null) { + _pushJsonp(message); + } else if (_websocket != null) { + _pushWebSocket(message); + } + } + + /** + * Send a message using currently opened ajax request (using + * http-streaming or long-polling). <br> + * + * @param {string, Object} Message to send. This is an object, string + * message is saved in data member. + * @private + */ + function _pushAjaxMessage(message) { + var rq = _getPushRequest(message); + _executeRequest(rq); + } + + /** + * Send a message using currently opened ie streaming (using + * http-streaming or long-polling). <br> + * + * @param {string, Object} Message to send. This is an object, string + * message is saved in data member. + * @private + */ + function _pushIE(message) { + _pushAjaxMessage(message); + } + + /** + * Send a message using jsonp transport. <br> + * + * @param {string, Object} Message to send. This is an object, string + * message is saved in data member. + * @private + */ + function _pushJsonp(message) { + _pushAjaxMessage(message); + } + + function _getStringMessage(message) { + var msg = message; + if (typeof(msg) == 'object') { + msg = message.data; + } + return msg; + } + + /** + * Build request use to push message using method 'POST' <br>. + * Transport is defined as 'polling' and 'suspend' is set to false. + * + * @return {Object} Request object use to push message. + * @private + */ + function _getPushRequest(message) { + var msg = _getStringMessage(message); + + var rq = { + connected: false, + timeout: 60000, + method: 'POST', + url: _request.url, + contentType : _request.contentType, + headers: {}, + cache: true, + async: true, + ifModified: false, + callback: null, + dataType: '', + data : msg, + suspend : false, + maxRequest : 60, + logLevel : 'info', + requestCount : 0, + transport: 'polling' + }; + + if (typeof(message) == 'object') { + rq = $.extend(rq, message); + } + + return rq; + } + + /** + * Send a message using currently opened websocket. <br> + * + * @param {string, Object} + * Message to send. This is an object, string message is + * saved in data member. + */ + function _pushWebSocket(message) { + var msg = _getStringMessage(message); + var data; + try { + if (_request.webSocketUrl != null) { + data = _request.webSocketPathDelimiter + + _request.webSocketUrl + + _request.webSocketPathDelimiter + + msg; + } else { + data = msg; + } + + _websocket.send(data); + + } catch (e) { + jQuery.atmosphere.log(_request.logLevel, ["Websocket failed. Downgrading to Comet and resending " + data]); + + _websocket.onclose = function(message) { + }; + _websocket.close(); + + _reconnectWithFallbackTransport(); + _pushAjaxMessage(message); + } + } + + function _prepareCallback(messageBody, state, errorCode, transport) { + + if (state == "messageReceived") { + if (_trackMessageSize(messageBody, _request, _response)) return; + } + + _response.transport = transport; + _response.status = errorCode; + + // If not -1, we have buffered the message. + if (_response.expectedBodySize == -1) { + _response.responseBody = messageBody; + } + _response.state = state; + + _invokeCallback(); + } + + function _invokeFunction(response) { + _f(response, _request); + // Global + _f(response, jQuery.atmosphere); + } + + function _f(response, f) { + switch (response.state) { + case "messageReceived" : + if (typeof(f.onMessage) != 'undefined') f.onMessage(response); + break; + case "error" : + if (typeof(f.onError) != 'undefined') f.onError(response); + break; + case "opening" : + if (typeof(f.onOpen) != 'undefined') f.onOpen(response); + break; + case "messagePublished" : + if (typeof(f.onMessagePublished) != 'undefined') f.onMessagePublished(response); + break; + case "re-opening" : + if (typeof(f.onReconnect) != 'undefined') f.onReconnect(_request, response); + break; + case "closed" : + if (typeof(f.onClose) != 'undefined') f.onClose(response); + break; + } + } + + /** + * Invoke request callbacks. + * + * @private + */ + function _invokeCallback() { + var call = function (index, func) { + func(_response); + }; + + _invokeFunction(_response); + + // Invoke global callbacks + if (jQuery.atmosphere.callbacks.length > 0) { + jQuery.atmosphere.debug("Invoking " + jQuery.atmosphere.callbacks.length + " global callbacks: " + _response.state); + try { + jQuery.each(jQuery.atmosphere.callbacks, call); + } catch (e) { + jQuery.atmosphere.log(_request.logLevel, ["Callback exception" + e]); + } + } + + // Invoke request callback + if (typeof(_request.callback) == 'function') { + if (_request.logLevel == 'debug') { + jQuery.atmosphere.debug("Invoking request callbacks"); + } + try { + _request.callback(_response); + } catch (e) { + jQuery.atmosphere.log(_request.logLevel, ["Callback exception" + e]); + } + } + } + + /** + * Close request. + * + * @private + */ + function _close() { + _subscribed = false; + _abordingConnection = true; + _response.state = 'unsubscribe'; + _response.responseBody = ""; + _response.status = 408; + _invokeCallback(); + + if (_ieStream != null) { + _ieStream.close(); + _ieStream = null; + _abordingConnection = false; + } + if (_jqxhr != null) { + _jqxhr.abort(); + _jqxhr = null; + _abordingConnection = false; + } + if (_activeRequest != null) { + _activeRequest.abort(); + _activeRequest = null; + _abordingConnection = false; + } + if (_websocket != null) { + _closingWebSocket = true; + _websocket.close(); + _websocket = null; + } + } + + this.subscribe = function(options) { + _subscribe(options); + }; + + this.execute = function() { + _execute(); + }; + + this.invokeCallback = function() { + _invokeCallback(); + }; + + this.close = function() { + _close(); + }; + + this.getUrl = function() { + return _request.url; + }; + + this.push = function(message) { + _push(message); + } + + this.response = _response; + }, + + subscribe: function(url, callback, request) { + if (typeof(callback) == 'function') { + jQuery.atmosphere.addCallback(callback); + } + + if (typeof(url) != "string") { + request = url; + } else { + request.url = url; + } + + var rq = new jQuery.atmosphere.AtmosphereRequest(request); + jQuery.atmosphere.requests[jQuery.atmosphere.requests.length] = rq; + return rq; + }, + + addCallback: function(func) { + if (jQuery.inArray(func, jQuery.atmosphere.callbacks) == -1) { + jQuery.atmosphere.callbacks.push(func); + } + }, + + removeCallback: function(func) { + var index = jQuery.inArray(func, jQuery.atmosphere.callbacks); + if (index != -1) { + jQuery.atmosphere.callbacks.splice(index, 1); + } + }, + + unsubscribe : function() { + if (jQuery.atmosphere.requests.length > 0) { + for (var i = 0; i < jQuery.atmosphere.requests.length; i++) { + jQuery.atmosphere.requests[i].close(); + clearTimeout(jQuery.atmosphere.requests[i].id); + } + } + jQuery.atmosphere.requests = []; + jQuery.atmosphere.callbacks = []; + }, + + unsubscribeUrl: function(url) { + var idx = -1; + if (jQuery.atmosphere.requests.length > 0) { + for (var i = 0; i < jQuery.atmosphere.requests.length; i++) { + var rq = jQuery.atmosphere.requests[i]; + + // Suppose you can subscribe once to an url + if (rq.getUrl() == url) { + rq.close(); + clearTimeout(rq.id); + idx = i; + break; + } + } + } + if (idx >= 0) { + jQuery.atmosphere.requests.splice(idx, 1); + } + }, + + publish: function(request) { + if (typeof(request.callback) == 'function') { + jQuery.atmosphere.addCallback(callback); + } + request.transport = "polling"; + + var rq = new jQuery.atmosphere.AtmosphereRequest(request); + jQuery.atmosphere.requests[jQuery.atmosphere.requests.length] = rq; + return rq; + }, + + checkCORSSupport : function() { + if (jQuery.browser.msie && !window.XDomainRequest) { + return true; + } else if (jQuery.browser.opera) { + return true; + } + + // Force Android to use CORS as some version like 2.2.3 fail otherwise + var ua = navigator.userAgent.toLowerCase(); + var isAndroid = ua.indexOf("android") > -1; + if (isAndroid) { + return true; + } + return false; + }, + + S4 : function() { + return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); + }, + + guid : function() { + return (jQuery.atmosphere.S4() + jQuery.atmosphere.S4() + "-" + jQuery.atmosphere.S4() + "-" + jQuery.atmosphere.S4() + "-" + jQuery.atmosphere.S4() + "-" + jQuery.atmosphere.S4() + jQuery.atmosphere.S4() + jQuery.atmosphere.S4()); + }, + + // From jQuery-Stream + prepareURL: function(url) { + // Attaches a time stamp to prevent caching + var ts = jQuery.now(); + var ret = url.replace(/([?&])_=[^&]*/, "$1_=" + ts); + + return ret + (ret === url ? (/\?/.test(url) ? "&" : "?") + "_=" + ts : ""); + }, + + // From jQuery-Stream + param : function(data) { + return jQuery.param(data, jQuery.ajaxSettings.traditional); + }, + + iterate : function (fn, interval) { + var timeoutId; + + // Though the interval is 0 for real-time application, there is a delay between setTimeout calls + // For detail, see https://developer.mozilla.org/en/window.setTimeout#Minimum_delay_and_timeout_nesting + interval = interval || 0; + + (function loop() { + timeoutId = setTimeout(function() { + if (fn() === false) { + return; + } + + loop(); + }, interval); + })(); + + return function() { + clearTimeout(timeoutId); + }; + }, + + parseUri : function(baseUrl, uri) { + var protocol = window.location.protocol; + var host = window.location.host; + var path = window.location.pathname; + var parameters = {}; + var anchor = ''; + var pos; + + if ((pos = uri.search(/\:/)) >= 0) { + protocol = uri.substring(0, pos + 1); + uri = uri.substring(pos + 1); + } + + if ((pos = uri.search(/\#/)) >= 0) { + anchor = uri.substring(pos + 1); + uri = uri.substring(0, pos); + } + + if ((pos = uri.search(/\?/)) >= 0) { + var paramsStr = uri.substring(pos + 1) + '&;'; + uri = uri.substring(0, pos); + while ((pos = paramsStr.search(/\&/)) >= 0) { + var paramStr = paramsStr.substring(0, pos); + paramsStr = paramsStr.substring(pos + 1); + + if (paramStr.length) { + var equPos = paramStr.search(/\=/); + if (equPos < 0) { + parameters[paramStr] = ''; + } else { + parameters[paramStr.substring(0, equPos)] = + decodeURIComponent(paramStr.substring(equPos + 1)); + } + } + } + } + + if (uri.search(/\/\//) == 0) { + uri = uri.substring(2); + if ((pos = uri.search(/\//)) >= 0) { + host = uri.substring(0, pos); + path = uri.substring(pos); + } else { + host = uri; + path = '/'; + } + } else if (uri.search(/\//) == 0) { + path = uri; + } + + else // relative to directory + { + var p = path.lastIndexOf('/'); + if (p < 0) { + path = '/'; + } else if (p < path.length - 1) { + path = path.substring(0, p + 1); + } + + while (uri.search(/\.\.\//) == 0) { + p = path.lastIndexOf('/', path.lastIndexOf('/') - 1); + if (p >= 0) { + path = path.substring(0, p + 1); + } + uri = uri.substring(3); + } + path = path + uri; + } + + var formattedUri = protocol + '//' + host + path; + var div = '?'; + for (var key in parameters) { + formattedUri += div + key + '=' + encodeURIComponent(parameters[key]); + div = '&'; + } + return formattedUri; + }, + + log: function (level, args) { + if (window.console) { + var logger = window.console[level]; + if (typeof logger == 'function') { + logger.apply(window.console, args); + } + } + }, + + warn: function() { + jQuery.atmosphere.log('warn', arguments); + }, + + info :function() { + jQuery.atmosphere.log('info', arguments); + }, + + debug: function() { + jQuery.atmosphere.log('debug', arguments); + } + }; +}(); + +/* + * jQuery stringifyJSON + * http://github.com/flowersinthesand/jquery-stringifyJSON + * + * Copyright 2011, Donghwan Kim + * Licensed under the Apache License, Version 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + */ +// This plugin is heavily based on Douglas Crockford's reference implementation +(function($) { + + var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, meta = { + '\b' : '\\b', + '\t' : '\\t', + '\n' : '\\n', + '\f' : '\\f', + '\r' : '\\r', + '"' : '\\"', + '\\' : '\\\\' + }; + + function quote(string) { + return '"' + string.replace(escapable, function(a) { + var c = meta[a]; + return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"'; + } + + function f(n) { + return n < 10 ? "0" + n : n; + } + + function str(key, holder) { + var i, v, len, partial, value = holder[key], type = typeof value; + + if (value && typeof value === "object" && typeof value.toJSON === "function") { + value = value.toJSON(key); + type = typeof value; + } + + switch (type) { + case "string": + return quote(value); + case "number": + return isFinite(value) ? String(value) : "null"; + case "boolean": + return String(value); + case "object": + if (!value) { + return "null"; + } + + switch (Object.prototype.toString.call(value)) { + case "[object Date]": + return isFinite(value.valueOf()) ? '"' + value.getUTCFullYear() + "-" + f(value.getUTCMonth() + 1) + "-" + f(value.getUTCDate()) + "T" + + f(value.getUTCHours()) + ":" + f(value.getUTCMinutes()) + ":" + f(value.getUTCSeconds()) + "Z" + '"' : "null"; + case "[object Array]": + len = value.length; + partial = []; + for (i = 0; i < len; i++) { + partial.push(str(i, value) || "null"); + } + + return "[" + partial.join(",") + "]"; + default: + partial = []; + for (i in value) { + if (Object.prototype.hasOwnProperty.call(value, i)) { + v = str(i, value); + if (v) { + partial.push(quote(i) + ":" + v); + } + } + } + + return "{" + partial.join(",") + "}"; + } + } + } + + $.stringifyJSON = function(value) { + if (window.JSON && window.JSON.stringify) { + return window.JSON.stringify(value); + } + + return str("", {"": value}); + }; + +}(jQuery)); \ No newline at end of file diff --git a/js/jquery.min.js b/js/jquery.min.js new file mode 100644 index 00000000..16ad06c5 --- /dev/null +++ b/js/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.2 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,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=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.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 d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,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"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},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)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.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?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.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]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),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]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.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&&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!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},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 b<c[3]-0},gt:function(a,b,c){return b>c[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=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&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=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null: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=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=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(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.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:[]}},o.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&&(o.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 href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},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 V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(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(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(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=f +.clean(arguments);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,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||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(c||!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 ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.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,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.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):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/openhab/owserver.xml b/openhab/owserver.xml new file mode 100644 index 00000000..aacdfdb3 --- /dev/null +++ b/openhab/owserver.xml @@ -0,0 +1,188 @@ +<binding> + <binding.config> + <setting> + <name>cache</name> + <label>Cache Timeout</label> + <description>Sets the cache timeout in milliseconds.</description> + <optional>true</optional> + <default>5000</default> + <minimum>250</minimum> + <maximum>20000</maximum> + <values></values> + </setting> + <setting> + <name>timeout</name> + <label>Timeout</label> + <description>Sets the number of milliseconds that the binding will wait for a response.</description> + <optional>true</optional> + <default>5000</default> + <minimum>500</minimum> + <maximum>10000</maximum> + <values></values> + </setting> + <setting> + <name>granularity</name> + <label>Granularity</label> + <description>Set the time between each of the OWServer item update checks (in milliseconds).</description> + <optional>true</optional> + <default>1000</default> + <minimum>100</minimum> + <maximum>10000</maximum> + <values></values> + </setting> + <setting> + <name>.host</name> + <label>IP Address</label> + <description>Set the IP address of the OW Server.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </setting> + <setting> + <name>.port</name> + <label>IP Port</label> + <description>Set the IP Port number of the OW Server.</description> + <optional>true</optional> + <default>80</default> + <minimum>1</minimum> + <maximum>65535</maximum> + <values></values> + </setting> + </binding.config> + + <binding.items> + <binding.io> + <type>Input (GET)</type> + <description></description> + <parameters> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the GET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP GET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Polling period</name> + <description>Sets polling period (in milliseconds between each request.</description> + <optional>false</optional> + <default>5000</default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + <binding.io> + <type>Input (TRAP)</type> + <description></description> + <parameters> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the GET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP GET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + <binding.io> + <type>Output (SET)</type> + <description></description> + <parameters> + <parameter> + <name>Command String</name> + <description>Sets the command string that will appear in the openHAB GUI.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the SET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP SET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Value</name> + <description>Sets the command value for the SNMP SET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + </binding.items> +</binding> + + + + + diff --git a/openhab/snmp.xml b/openhab/snmp.xml new file mode 100644 index 00000000..bfbc63a8 --- /dev/null +++ b/openhab/snmp.xml @@ -0,0 +1,182 @@ +<binding> + <binding.config> + <setting> + <name>port</name> + <label>IP Port</label> + <description>Sets the IP port number on which the binding will listen.</description> + <optional>true</optional> + <default>162</default> + <minimum>1</minimum> + <maximum>65535</maximum> + <values></values> + </setting> + <setting> + <name>community</name> + <label>SNMP Community</label> + <description>Sets the SNMP community to listen to for TRAPs.</description> + <optional>true</optional> + <default>public</default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </setting> + <setting> + <name>timeout</name> + <label>Request timeout</label> + <description>Sets the maximum timeout (in milliseconds) that the binding will wait for a response before + sending a retry (if retries are enabled). + </description> + <optional>true</optional> + <default>1500</default> + <minimum>100</minimum> + <maximum>5000</maximum> + <values></values> + </setting> + <setting> + <name>retries</name> + <label>Request Retries</label> + <description>Sets the maximum number of retries the binding will send before aborting the request. Set to 0 + to disable retries. + </description> + <optional>true</optional> + <default>0</default> + <minimum>0</minimum> + <maximum>5</maximum> + <values></values> + </setting> + </binding.config> + + <binding.items> + <binding.io> + <type>Input (GET)</type> + <description></description> + <parameters> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the GET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP GET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Polling period</name> + <description>Sets polling period (in milliseconds between each request.</description> + <optional>false</optional> + <default>5000</default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + <binding.io> + <type>Input (TRAP)</type> + <description></description> + <parameters> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the GET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP GET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + <binding.io> + <type>Output (SET)</type> + <description></description> + <parameters> + <parameter> + <name>Command String</name> + <description>Sets the command string that will appear in the openHAB GUI.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Address</name> + <description>Sets the IP address of the SNMP device.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Community</name> + <description>Sets the SNMP community for the SET request.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>OID</name> + <description>Sets the Object ID for the SNMP SET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + <parameter> + <name>Value</name> + <description>Sets the command value for the SNMP SET.</description> + <optional>false</optional> + <default></default> + <minimum></minimum> + <maximum></maximum> + <values></values> + </parameter> + </parameters> + </binding.io> + </binding.items> +</binding> + + + + + diff --git a/resources/css/ext-all-debug.css b/resources/css/ext-all-debug.css new file mode 100644 index 00000000..3934d5eb --- /dev/null +++ b/resources/css/ext-all-debug.css @@ -0,0 +1 @@ +@import '../ext-theme-classic/ext-theme-classic-all-debug.css'; \ No newline at end of file diff --git a/resources/css/ext-all.css b/resources/css/ext-all.css new file mode 100644 index 00000000..bc043617 --- /dev/null +++ b/resources/css/ext-all.css @@ -0,0 +1 @@ +@import '../ext-theme-classic/ext-theme-classic-all.css'; \ No newline at end of file diff --git a/resources/ext-theme-classic/Readme.md b/resources/ext-theme-classic/Readme.md new file mode 100644 index 00000000..f856e48b --- /dev/null +++ b/resources/ext-theme-classic/Readme.md @@ -0,0 +1,3 @@ +# ext-theme-classic/resources + +This folder contains static resources (typically an `"images"` folder as well). diff --git a/resources/ext-theme-classic/ext-theme-classic-all-debug.css b/resources/ext-theme-classic/ext-theme-classic-all-debug.css new file mode 100644 index 00000000..c21fd5df --- /dev/null +++ b/resources/ext-theme-classic/ext-theme-classic-all-debug.css @@ -0,0 +1,19527 @@ +/* including package ext-theme-base */ +/** + * Creates a background gradient. + * + * Example usage: + * .foo { + * @include background-gradient(#808080, matte, left); + * } + * + * @param {Color} $bg-color The background color of the gradient + * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either + * be a String which is a predefined gradient name, or it can can be a list of color stops. + * If null is passed, this mixin will still set the `background-color` to $bg-color. + * The available predefined gradient names are: + * + * * bevel + * * glossy + * * recessed + * * matte + * * matte-reverse + * * panel-header + * * tabbar + * * tab + * * tab-active + * * tab-over + * * tab-disabled + * * grid-header + * * grid-header-over + * * grid-row-over + * * grid-cell-special + * * glossy-button + * * glossy-button-over + * * glossy-button-pressed + * + * Each of these gradient names corresponds to a function named linear-gradient[name]. + * Themes can override these functions to customize the color stops that they return. + * For example, to override the glossy-button gradient function add a function named + * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss" + * in your theme. The function should return the result of calling the Compass linear-gradient + * function with the desired direction and color-stop information for the gradient. For example: + * + * @function linear-gradient-glossy-button($direction, $bg-color) { + * @return linear-gradient($direction, color_stops( + * mix(#fff, $bg-color, 10%), + * $bg-color 50%, + * mix(#000, $bg-color, 5%) 51%, + * $bg-color + * )); + * } + * + * @param {String} [$direction=top] The direction of the gradient. Can either be + * `top` or `left`. + * + * @member Global_CSS + */ +/* + * Method which inserts a full background-image property for a theme image. + * It checks if the file exists and if it doesn't, it'll throw an error. + * By default it will not include the background-image property if it is not found, + * but this can be changed by changing the default value of $include-missing-images to + * be true. + */ +/* including package ext-theme-neutral */ +/* including package ext-theme-classic */ +/* including package ext-theme-classic */ +/* including package ext-theme-neutral */ +/** + * @class Global_CSS + */ +/** + * @var {color} $color + * The default text color to be used throughout the theme. + */ +/** + * @var {string} $font-family + * The default font-family to be used throughout the theme. + */ +/** + * @var {string} $font-size + * The default font-family to be used throughout the theme. + */ +/** + * @var {string} $base-gradient + * The base gradient to be used throughout the theme. + */ +/** + * @var {color} $base-color + * The base color to be used throughout the theme. + */ +/** + * @var {color} $neutral-color + * The neutral color to be used throughout the theme. + */ +/** + * @var {color} $body-background-color + * Background color to apply to the body element + */ +/** + * @class Ext.FocusManager + */ +/** + * @var {color} + * The border-color of the focusFrame. See {@link #method-enable}. + */ +/** + * @var {color} + * The border-style of the focusFrame. See {@link #method-enable}. + */ +/** + * @var {color} + * The border-width of the focusFrame. See {@link #method-enable}. + */ +/** + * @class Ext.LoadMask + */ +/** + * @var {number} + * Opacity of the LoadMask + */ +/** + * @var {color} + * The background-color of the LoadMask + */ +/** + * @var {string} + * The type of cursor to dislay when the cursor is over the LoadMask + */ +/** + * @var {number/list} + * The padding to apply to the LoadMask's message element + */ +/** + * @var {string} + * The border-style of the LoadMask's message element + */ +/** + * @var {color} + * The border-color of the LoadMask's message element + */ +/** + * @var {number} + * The border-width of the LoadMask's message element + */ +/** + * @var {color} + * The background-color of the LoadMask's message element + */ +/** + * @var {string/list} + * The background-gradient of the LoadMask's message element. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The padding of the message inner element + */ +/** + * @var {string} + * The icon to display in the message inner element + */ +/** + * @var {list} + * The background-position of the icon + */ +/** + * @var {string} + * The border-style of the message inner element + */ +/** + * @var {color} + * The border-color of the message inner element + */ +/** + * @var {number} + * The border-width of the message inner element + */ +/** + * @var {color} + * The background-color of the message inner element + */ +/** + * @var {color} + * The text color of the message inner element + */ +/** + * @var {number} + * The font-size of the message inner element + */ +/** + * @var {string} + * The font-weight of the message inner element + */ +/** + * @var {string} + * The font-family of the message inner element + */ +/** + * @var {number/list} + * The padding of the message element + */ +/** + * @var {number} + * The border-radius of the message element + */ +/** + * @class Ext.ProgressBar + */ +/** + * @var {number} + * The height of the ProgressBar + */ +/** + * @var {color} + * The border-color of the ProgressBar + */ +/** + * @var {number} + * The border-width of the ProgressBar + */ +/** + * @var {number} + * The border-radius of the ProgressBar + */ +/** + * @var {color} + * The background-color of the ProgressBar + */ +/** + * @var {color} + * The background-color of the ProgressBar's moving element + */ +/** + * @var {string/list} + * The background-gradient of the ProgressBar's moving element. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The color of the ProgressBar's text when in front of the ProgressBar's moving element + */ +/** + * @var {color} + * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it + */ +/** + * @var {string} + * The text-align of the ProgressBar's text + */ +/** + * @var {number} + * The font-size of the ProgressBar's text + */ +/** + * @var {string} + * The font-weight of the ProgressBar's text + */ +/** + * @var {boolean} + * True to include the "default" ProgressBar UI + */ +/** + * @class Ext.button.Button + */ +/** + * @var {number} + * The default width for a button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height for a button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width for a {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height for a {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default space between a button's icon and text + */ +/** + * @var {number} + * The default border-radius for a small {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a small {@link #scale} button + */ +/** + * @var {number} + * The default padding for a small {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a small {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a small {@link #scale} button + */ +/** + * @var {number} + * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default border-radius for a medium {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a medium {@link #scale} button + */ +/** + * @var {number} + * The default padding for a medium {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a medium {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a medium {@link #scale} button + */ +/** + * @var {number} + * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default border-radius for a large {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a large {@link #scale} button + */ +/** + * @var {number} + * The default padding for a large {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a large {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a large {@link #scale} button + */ +/** + * @var {number} + * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {color} + * The base color for the `default` button UI + */ +/** + * @var {color} + * The base color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The border-color for the `default` button UI + */ +/** + * @var {color} + * The border-color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The background-color for the `default` button UI + */ +/** + * @var {color} + * The background-color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is disabled + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the cursor is over the button. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is focused. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is pressed. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is disabled. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color for the `default` button UI + */ +/** + * @var {color} + * The text color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The color of the {@link #glyph} icon for the `default` button UI + */ +/** + * @var {color} + * The opacity of the {@link #glyph} icon for the `default` button UI + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the cursor is over the + * button. Can be either the name of a predefined gradient or a list of color stops. Used + * as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is focused. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is pressed. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is disabled. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {color} + * The color of the {@link #glyph} icon for the `default-toolbar` button UI + */ +/** + * @var {color} + * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI + */ +/** + * @var {boolean} $button-include-ui-menu-arrows + * True to use a different image url for the menu button arrows for each button UI + */ +/** + * @var {boolean} $button-include-ui-split-arrows + * True to use a different image url for the split button arrows for each button UI + */ +/** + * @var {boolean} $button-include-split-over-arrows + * True to include different split arrows for buttons' hover state. + */ +/** + * @var {boolean} $button-toolbar-include-split-noline-arrows + * True to include "noline" split arrows for toolbar buttons in their default state. + */ +/** + * @var {number} $button-opacity-disabled + * opacity to apply to the button's main element when the buton is disabled + */ +/** + * @var {number} $button-inner-opacity-disabled + * opacity to apply to the button's inner elements (icon and text) when the buton is disabled + */ +/** + * @var {number} $button-toolbar-opacity-disabled + * opacity to apply to the toolbar button's main element when the buton is disabled + */ +/** + * @var {number} $button-toolbar-inner-opacity-disabled + * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled + */ +/** + * @var {boolean} + * True to include the "default" button UI + */ +/** + * @var {boolean} + * True to include the "default" button UI for "small" scale buttons + */ +/** + * @var {boolean} + * True to include the "default" button UI for "medium" scale buttons + */ +/** + * @var {boolean} + * True to include the "default" button UI for "large" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "small" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "medium" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "large" scale buttons + */ +/** + * @class Ext.toolbar.Toolbar + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {color} + * The background-color of the Toolbar + */ +/** + * @var {string/list} + * The background-gradient of the Toolbar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {number} + * The horizontal spacing of Toolbar items + */ +/** + * @var {number} + * The vertical spacing of Toolbar items + */ +/** + * @var {number} + * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items + */ +/** + * @var {number} + * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items + */ +/** + * @var {color} + * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {number} + * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {number/list} + * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {color} + * The border-color of Toolbars + */ +/** + * @var {number} + * The border-width of Toolbars + */ +/** + * @var {string} + * The border-style of Toolbars + */ +/** + * @var {number} + * The width of Toolbar {@link Ext.toolbar.Spacer Spacers} + */ +/** + * @var {color} + * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators} + */ +/** + * @var {color} + * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators} + */ +/** + * @var {number/list} + * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number} + * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {string} + * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number} + * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number/list} + * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {string} + * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {number} + * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {string} + * The default font-family of Toolbar text + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {number/list} + * The margin of Toolbar text + */ +/** + * @var {color} + * The text-color of Toolbar text + */ +/** + * @var {number/list} + * The padding of Toolbar text + */ +/** + * @var {number} + * The line-height of Toolbar text + */ +/** + * @var {number} + * The width of Toolbar scrollers + */ +/** + * @var {number} + * The height of Toolbar scrollers + */ +/** + * @var {color} + * The border-color of Toolbar scrollers + */ +/** + * @var {number} + * The border-width of Toolbar scrollers + */ +/** + * @var {string} + * The cursor of Toolbar scrollers + */ +/** + * @var {string} + * The cursor of disabled Toolbar scrollers + */ +/** + * @var {number} + * The opacity of disabled Toolbar scrollers + */ +/** + * @var {string} + * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar + */ +/** + * @var {boolean} + * True to include the "default" toolbar UI + */ +/** + * @class Ext.panel.Panel + */ +/** + * @var {number} + * The default border-width of Panels + */ +/** + * @var {color} + * The base color of Panels + */ +/** + * @var {color} + * The default border-color of Panels + */ +/** + * @var {$border-width-threshold} + * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions. + * + * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area + * within the border as they always have been. + * + * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel. + */ +/** + * @var {string} + * The default border-style of Panels + */ +/** + * @var {color} + * The default body background-color of Panels + */ +/** + * @var {color} + * The default color of text inside a Panel's body + */ +/** + * @var {color} + * The default border-color of the Panel body + */ +/** + * @var {number} + * The default border-width of the Panel body + */ +/** + * @var {number} + * The default font-size of the Panel body + */ +/** + * @var {string} + * The default font-weight of the Panel body + */ +/** + * @var {number} + * The space between the Panel {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The background sprite to use for Panel {@link Ext.panel.Tool Tools} + */ +/** + * @var {number} + * The border-width of Panel Headers + */ +/** + * @var {string} + * The border-style of Panel Headers + */ +/** + * @var {number/list} + * The padding of Panel Headers + */ +/** + * @var {number} + * The font-size of Panel Headers + */ +/** + * @var {number} + * The line-height of Panel Headers + */ +/** + * @var {string} + * The font-weight of Panel Headers + */ +/** + * @var {string} + * The font-family of Panel Headers + */ +/** + * @var {string} + * The text-transform of Panel Headers + */ +/** + * @var {number/list} + * The padding of the Panel Header's text element + */ +/** + * @var {string/list} + * The background-gradient of the Panel Header. Can be either the name of a predefined + * gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of the Panel Header + */ +/** + * @var {color} + * The inner border-color of the Panel Header + */ +/** + * @var {number} + * The inner border-width of the Panel Header + */ +/** + * @var {color} + * The text color of the Panel Header + */ +/** + * @var {color} + * The background-color of the Panel Header + */ +/** + * @var {number} + * The width of the Panel Header icon + */ +/** + * @var {number} + * The height of the Panel Header icon + */ +/** + * @var {number} + * The space between the Panel Header icon and text + */ +/** + * @var {list} + * The background-position of the Panel Header icon + */ +/** + * @var {color} + * The color of the Panel Header glyph icon + */ +/** + * @var {number} + * The opacity of the Panel Header glyph icon + */ +/** + * @var {color} + * The base color of the framed Panels + */ +/** + * @var {number} + * The border-radius of framed Panels + */ +/** + * @var {number} + * The border-width of framed Panels + */ +/** + * @var {string} + * The border-style of framed Panels + */ +/** + * @var {number} + * The padding of framed Panels + */ +/** + * @var {color} + * The background-color of framed Panels + */ +/** + * @var {color} + * The border-color of framed Panels + */ +/** + * @var {number} + * The border-width of the body element of framed Panels + */ +/** + * @var {number} + * The border-width of framed Panel Headers + */ +/** + * @var {color} + * The inner border-color of framed Panel Headers + */ +/** + * @var {number} + * The inner border-width of framed Panel Headers + */ +/** + * @var {number/list} + * The padding of framed Panel Headers + */ +/** + * @var {number} + * The opacity of ghost Panels while dragging + */ +/** + * @var {string} + * The direction to strech the background-gradient of top docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of bottom docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of right docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of left docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {boolean} + * True to include neptune style border management rules. + */ +/** + * @var {color} + * The color to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is + * `true`. + */ +/** + * @var {number} + * The width to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is + * `true`. + */ +/** + * @var {boolean} + * True to include the "default" panel UI + */ +/** + * @var {boolean} + * True to include the "default-framed" panel UI + */ +/** + * @class Ext.tip.Tip + */ +/** + * @var {color} + * The background-color of the Tip + */ +/** + * @var {string/list} + * The background-gradient of the Tip. Can be either the name of a predefined gradient or a + * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color of the Tip body + */ +/** + * @var {number} + * The font-size of the Tip body + */ +/** + * @var {string} + * The font-weight of the Tip body + */ +/** + * @var {number/list} + * The padding of the Tip body + */ +/** + * @var {color} + * The text color of any anchor tags inside the Tip body + */ +/** + * @var {color} + * The text color of the Tip header + */ +/** + * @var {number} + * The font-size of the Tip header + */ +/** + * @var {string} + * The font-weight of the Tip header + */ +/** + * @var {number/list} + * The padding of the Tip header's body element + */ +/** + * @var {color} + * The border-color of the Tip + */ +/** + * @var {number} + * The border-width of the Tip + */ +/** + * @var {number} + * The border-radius of the Tip + */ +/** + * @var {color} + * The inner border-color of the form field error Tip + */ +/** + * @var {number} + * The inner border-width of the form field error Tip + */ +/** + * @var {color} + * The border-color of the form field error Tip + */ +/** + * @var {number} + * The border-radius of the form field error Tip + */ +/** + * @var {number} + * The border-width of the form field error Tip + */ +/** + * @var {color} + * The background-color of the form field error Tip + */ +/** + * @var {number/list} + * The padding of the form field error Tip's body element + */ +/** + * @var {color} + * The text color of the form field error Tip's body element + */ +/** + * @var {number} + * The font-size of the form field error Tip's body element + */ +/** + * @var {string} + * The font-weight of the form field error Tip's body element + */ +/** + * @var {color} + * The color of anchor tags in the form field error Tip's body element + */ +/** + * @var {number} + * The space between {@link Ext.panel.Tool Tools} in the header + */ +/** + * @var {string} + * The sprite to use for the header {@link Ext.panel.Tool Tools} + */ +/** + * @var {boolean} + * True to include the "default" tip UI + */ +/** + * @var {boolean} + * True to include the "form-invalid" tip UI + */ +/** + * @class Ext.container.ButtonGroup + */ +/** + * @var {color} + * The background-color of the ButtonGroup + */ +/** + * @var {color} + * The border-color of the ButtonGroup + */ +/** + * @var {number} + * The border-radius of the ButtonGroup + */ +/** + * @var {number} + * The border-radius of framed ButtonGroups + */ +/** + * @var {number} + * The border-width of the ButtonGroup + */ +/** + * @var {number/list} + * The body padding of the ButtonGroup + */ +/** + * @var {number/list} + * The inner border-width of the ButtonGroup + */ +/** + * @var {color} + * The inner border-color of the ButtonGroup + */ +/** + * @var {number/list} + * The margin of the header element. Used to add space around the header. + */ +/** + * @var {number} + * The font-size of the header + */ +/** + * @var {number} + * The font-weight of the header + */ +/** + * @var {number} + * The font-family of the header + */ +/** + * @var {number} + * The line-height of the header + */ +/** + * @var {number} + * The text color of the header + */ +/** + * @var {number} + * The padding of the header + */ +/** + * @var {number} + * The background-color of the header + */ +/** + * @var {number} + * The border-spacing to use on the table layout element + */ +/** + * @var {number} + * The background-color of framed ButtonGroups + */ +/** + * @var {number} + * The border-width of framed ButtonGroups + */ +/** + * @var {string} + * Sprite image to use for header {@link Ext.panel.Tool Tools} + */ +/** + * @var {boolean} + * True to include the "default" button group UI + */ +/** + * @var {boolean} + * True to include the "default-framed" button group UI + */ +/** + * @class Ext.window.Window + */ +/** + * @var {color} + * The base color of Windows + */ +/** + * @var {number} + * The padding of Windows + */ +/** + * @var {number} + * The border-radius of Windows + */ +/** + * @var {number} + * The border-width of Windows + */ +/** + * @var {color} + * The border-color of Windows + */ +/** + * @var {color} + * The inner border-color of Windows + */ +/** + * @var {number} + * The inner border-width of Windows + */ +/** + * @var {color} + * The background-color of Windows + */ +/** + * @var {number} + * The body border-width of Windows + */ +/** + * @var {string} + * The body border-style of Windows + */ +/** + * @var {color} + * The body border-color of Windows + */ +/** + * @var {color} + * The body background-color of Windows + */ +/** + * @var {color} + * The body text color of Windows + */ +/** + * @var {number/list} + * The padding of Window Headers + */ +/** + * @var {number} + * The font-size of Window Headers + */ +/** + * @var {number} + * The line-height of Window Headers + */ +/** + * @var {color} + * The text color of Window Headers + */ +/** + * @var {color} + * The background-color of Window Headers + */ +/** + * @var {string} + * The font-weight of Window Headers + */ +/** + * @var {number} + * The space between the Window {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The background sprite to use for Window {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The font-family of Window Headers + */ +/** + * @var {number/list} + * The padding of the Window Header's text element + */ +/** + * @var {string} + * The text-transform of Window Headers + */ +/** + * @var {number} + * The width of the Window Header icon + */ +/** + * @var {number} + * The height of the Window Header icon + */ +/** + * @var {number} + * The space between the Window Header icon and text + */ +/** + * @var {list} + * The background-position of the Window Header icon + */ +/** + * @var {color} + * The color of the Window Header glyph icon + */ +/** + * @var {number} + * The opacity of the Window Header glyph icon + */ +/** + * @var {number} + * The border-width of Window Headers + */ +/** + * @var {color} + * The inner border-color of Window Headers + */ +/** + * @var {number} + * The inner border-width of Window Headers + */ +/** + * @var {boolean} $ui-force-header-border + * True to force the window header to have a border on the side facing the window body. + * Overrides dock layout's border management border removal rules. + */ +/** + * @var {number} + * The opacity of ghost Windows while dragging + */ +/** + * @var {boolean} + * True to include neptune style border management rules. + */ +/** + * @var {color} + * The color to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$window-include-border-management-rules` is `true`. + */ +/** + * @var {number} + * The width to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$window-include-border-management-rules` is `true`. + */ +/** + * @var {boolean} + * True to include the "default" window UI + */ +/** + * @class Ext.form.Labelable + */ +/** + * @var {color} + * The text color of form field labels + */ +/** + * @var {string} + * The font-weight of form field labels + */ +/** + * @var {number} + * The font-size of form field labels + */ +/** + * @var {string} + * The font-family of form field labels + */ +/** + * @var {number} + * The line-height of form field labels + */ +/** + * @var {color} + * The text color of toolbar field labels + */ +/** + * @var {string} + * The font-weight of toolbar field labels + */ +/** + * @var {number} + * The font-size of toolbar field labels + */ +/** + * @var {string} + * The font-family of toolbar field labels + */ +/** + * @var {number} + * The line-height of toolbar field labels + */ +/** + * @var {number} + * Width for form error icons. + */ +/** + * @var {number} + * Height for form error icons. + */ +/** + * @var {number/list} + * Margin for error icons that are aligned to the side of the field + */ +/** + * @var {number} + * The space between the icon and the message for errors that display under the field + */ +/** + * @var {number/list} + * The padding on errors that display under the form field + */ +/** + * @var {color} + * The text color of form error messages + */ +/** + * @var {string} + * The font-weight of form error messages + */ +/** + * @var {number} + * The font-size of form error messages + */ +/** + * @var {string} + * The font-family of form error messages + */ +/** + * @var {number} + * The line-height of form error messages + */ +/** + * @var {measurement} $form-item-margin-bottom + * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout + */ +/** + * @class Ext.form.field.Base + */ +/** + * @var {number} $form-field-height + * Height for form fields. + */ +/** + * @var {number} $form-toolbar-field-height + * Height for form fields in toolbar. + */ +/** + * @var {number} $form-field-padding + * Padding around form fields. + */ +/** + * @var {number} $form-field-font-size + * Font size for form fields. + */ +/** + * @var {string} $form-field-font-family + * Font family for form fields. + */ +/** + * @var {string} $form-field-font-weight + * Font weight for form fields. + */ +/** + * @var {font} $form-field-font + * Font for form fields. + */ +/** + * @var {number} $form-toolbar-field-font-size + * Font size for toolbar form fields. + */ +/** + * @var {string} $form-toolbar-field-font-family + * Font family for toolbar form fields. + */ +/** + * @var {string} $form-toolbar-field-font-weight + * Font weight for toolbar form fields. + */ +/** + * @var {font} $form-toolbar-field-font + * Font for toolbar form fields. + */ +/** + * @var {color} $form-field-color + * Text color for form fields. + */ +/** + * @var {color} $form-field-empty-color + * Text color for empty form fields. + */ +/** + * @var {color} $form-field-border-color + * Border color for form fields. + */ +/** + * @var {number} $form-field-border-width + * Border width for form fields. + */ +/** + * @var {string} $form-field-border-style + * Border style for form fields. + */ +/** + * @var {color} $form-field-focus-border-color + * Border color for focused form fields. + */ +/** + * @var {color} $form-field-invalid-border-color + * Border color for invalid form fields. + */ +/** + * @var {color} $form-field-background-color + * Background color for form fields. + */ +/** + * @var {string} $form-field-background-image + * Background image for form fields. + */ +/** + * @var {color} $form-field-invalid-background-color + * Background color for invalid form fields. + */ +/** + * @var {string} $form-field-invalid-background-image + * Background image for invalid form fields. + */ +/** + * @var {string} $form-field-invalid-background-repeat + * Background repeat for invalid form fields. + */ +/** + * @var {string/list} $form-field-invalid-background-position + * Background position for invalid form fields. + */ +/** + * @var {number} $form-field-disabled-opacity + */ +/** + * @class Ext.form.field.TextArea + */ +/** + * @var {number/string} + * The line-height to use for the TextArea's text + */ +/** + * @class Ext.form.field.Display + */ +/** + * @var {color} + * The text color of display fields + */ +/** + * @var {string} + * The font-weight of display fields + */ +/** + * @var {number} + * The font-size of display fields + */ +/** + * @var {string} + * The font-family of display fields + */ +/** + * @var {number} + * The line-height of display fields + */ +/** + * @var {string} + * The font-weight of toolbar display fields + */ +/** + * @var {number} + * The font-size of toolbar display fields + */ +/** + * @var {string} + * The font-family of toolbar display fields + */ +/** + * @var {number} + * The line-height of toolbar display fields + */ +/** + * @class Ext.window.MessageBox + */ +/** + * @var {color} + * The background-color of the MessageBox body + */ +/** + * @var {number} + * The border-width of the MessageBox body + */ +/** + * @var {color} + * The border-color of the MessageBox body + */ +/** + * @var {string} + * The border-style of the MessageBox body + */ +/** + * @var {list} + * The background-position of the MessageBox icon + */ +/** + * @class Ext.form.field.Checkbox + */ +/** + * @var {number} + * The size of the checkbox + */ +/** + * @var {number} + * The space between the boxLabel and the checkbox. + */ +/** + * @class Ext.form.CheckboxGroup + */ +/** + * @var {number/list} + * The padding of the CheckboxGroup body element + */ +/** + * @var {color} + * The text color of the CheckboxGroup label + */ +/** + * @var {number} + * The padding of the CheckboxGroup label + */ +/** + * @var {number} + * The margin of the CheckboxGroup label + */ +/** + * @var {number} + * The border-width of the CheckboxGroup label + */ +/** + * @var {number} + * The border-style of the CheckboxGroup label + */ +/** + * @var {number} + * The border-color of the CheckboxGroup label + */ +/** + * @class Ext.form.FieldSet + */ +/** + * @var {number} + * The font-size of the FieldSet header + */ +/** + * @var {string} + * The font-weight of the FieldSet header + */ +/** + * @var {string} + * The font-family of the FieldSet header + */ +/** + * @var {number/string} + * The line-height of the FieldSet header + */ +/** + * @var {color} + * The text color of the FieldSet header + */ +/** + * @var {number} + * The border-width of the FieldSet + */ +/** + * @var {string} + * The border-style of the FieldSet + */ +/** + * @var {color} + * The border-color of the FieldSet + */ +/** + * @var {number/list} + * The FieldSet's padding + */ +/** + * @var {number/list} + * The FieldSet's margin + */ +/** + * @var {number/list} + * The padding to apply to the FieldSet's header + */ +/** + * @var {number/list} + * The margin to apply to the FieldSet's collapse tool + */ +/** + * @var {number/list} + * The padding to apply to the FieldSet's collapse tool + */ +/** + * @var {number/list} + * The margin to apply to the FieldSet's checkbox (for FieldSets that use + * {@link #checkboxToggle}) + */ +/** + * @var {number} + * The size of the FieldSet's collapse tool + */ +/** + * @var {string} $fieldset-collapse-tool-background-image + * The background-image to use for the collapse tool. If null the default tool + * sprite will be used. Defaults to null. + */ +/** + * @class Ext.form.field.Radio + */ +/** + * @var {number} + * The size of the radio button + */ +/** + * @class Ext.form.field.Trigger + */ +/** + * @var {number} + * The width of the Trigger field's trigger element + */ +/** + * @var {number/list} + * The width of the trigger's border + */ +/** + * @var {color} + * The color of the trigger's border + */ +/** + * @var {string} + * The style of the trigger's border + */ +/** + * @var {color} + * The color of the trigger's border when hovered + */ +/** + * @var {color} + * The color of the trigger's border when the field is focused + */ +/** + * @var {color} + * The color of the trigger's border when the field is focused and the trigger is hovered + */ +/** + * @class Ext.form.field.Spinner + */ +/** + * @var {number} + * The height of the Spinner trigger buttons + */ +/** + * @var {number} + * The height of the Spinner trigger buttons when the Spinner is used on a + * {@link Ext.toolbar.Toolbar Toolbar} + */ +/** + * @class Ext.toolbar.Paging + */ +/** + * @var {boolean} + * True to include different icons when the paging toolbar buttons are disabled. + */ +/** + * @class Ext.view.BoundList + */ +/** + * @var {color} + * The background-color of the BoundList + */ +/** + * @var {color} + * The border-color of the BoundList + */ +/** + * @var {number} + * The border-width of the BoundList + */ +/** + * @var {string} + * The border-style of the BoundList + */ +/** + * @var {number} + * The height of BoundList items + */ +/** + * @var {number/list} + * The padding of BoundList items + */ +/** + * @var {number} + * The border-width of BoundList items + */ +/** + * @var {string} + * The border-style of BoundList items + */ +/** + * @var {color} + * The border-color of BoundList items + */ +/** + * @var {color} + * The border-color of hovered BoundList items + */ +/** + * @var {color} + * The border-color of selected BoundList items + */ +/** + * @var {color} + * The background-color of hovered BoundList items + */ +/** + * @var {color} + * The background-color of selected BoundList items + */ +/** + * @class Ext.picker.Date + */ +/** + * @var {number} + * The border-width of the DatePicker + */ +/** + * @var {string} + * The border-style of the DatePicker + */ +/** + * @var {color} + * The background-color of the DatePicker + */ +/** + * @var {string} + * The background-image of the DatePicker next arrow + */ +/** + * @var {string} + * The background-image of the DatePicker previous arrow + */ +/** + * @var {number} + * The width of DatePicker arrows + */ +/** + * @var {number} + * The height of DatePicker arrows + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a DatePicker arrow + */ +/** + * @var {number} + * The opacity of the DatePicker arrows + */ +/** + * @var {number} + * The opacity of the DatePicker arrows when hovered + */ +/** + * @var {string/list} + * The Date Picker header background gradient. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The padding of the Date Picker header + */ +/** + * @var {color} + * The color of the Date Picker month button + */ +/** + * @var {number} + * The width of the arrow on the Date Picker month button + */ +/** + * @var {string} + * The background-image of the arrow on the Date Picker month button + */ +/** + * @var {boolean} + * True to render the month button as transparent + */ +/** + * @var {string} + * The text-align of the Date Picker header + */ +/** + * @var {number} + * The height of Date Picker items + */ +/** + * @var {number} + * The width of Date Picker items + */ +/** + * @var {number/list} + * The padding of Date Picker items + */ +/** + * @var {string} + * The font-family of Date Picker items + */ +/** + * @var {number} + * The font-size of Date Picker items + */ +/** + * @var {string} + * The font-weight of Date Picker items + */ +/** + * @var {string} + * The text-align of Date Picker items + */ +/** + * @var {color} + * The text color of Date Picker items + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Date Picker item + */ +/** + * @var {string} + * The font-family of Date Picker column headers + */ +/** + * @var {number} + * The font-size of Date Picker column headers + */ +/** + * @var {string} + * The font-weight of Date Picker column headers + */ +/** + * @var {string/list} + * The background-gradient of Date Picker column headers. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string} + * The border-style of Date Picker column headers + */ +/** + * @var {number} + * The border-width of Date Picker column headers + */ +/** + * @var {string} + * The text-align of Date Picker column headers + */ +/** + * @var {number} + * The height of Date Picker column headers + */ +/** + * @var {number/list} + * The padding of Date Picker column headers + */ +/** + * @var {number} + * The border-width of Date Picker items + */ +/** + * @var {string} + * The border-style of Date Picker items + */ +/** + * @var {color} + * The border-color of Date Picker items + */ +/** + * @var {string} + * The border-style of today's date on the Date Picker + */ +/** + * @var {string} + * The border-style of the selected item + */ +/** + * @var {string} + * The font-weight of the selected item + */ +/** + * @var {color} + * The text color of the items in the previous and next months + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a disabled item + */ +/** + * @var {color} + * The text color of disabled Date Picker items + */ +/** + * @var {color} + * The background-color of disabled Date Picker items + */ +/** + * @var {color} + * The background-color of the Date Picker footer + */ +/** + * @var {string/list} + * The background-gradient of the Date Picker footer. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The border-width of the Date Picker footer + */ +/** + * @var {string} + * The border-style of the Date Picker footer + */ +/** + * @var {string} + * The text-align of the Date Picker footer + */ +/** + * @var {number/list} + * The padding of the Date Picker footer + */ +/** + * @var {number} + * The space between the footer buttons + */ +/** + * @var {color} + * The border-color of the Month Picker + */ +/** + * @var {number} + * The border-width of the Month Picker + */ +/** + * @var {string} + * The border-style of the Month Picker + */ +/** + * @var {color} + * The text color of Month Picker items + */ +/** + * @var {color} + * The text color of Month Picker items + */ +/** + * @var {color} + * The border-color of Month Picker items + */ +/** + * @var {string} + * The border-style of Month Picker items + */ +/** + * @var {string} + * The font-family of Month Picker items + */ +/** + * @var {number} + * The font-size of Month Picker items + */ +/** + * @var {string} + * The font-weight of Month Picker items + */ +/** + * @var {number/list} + * The margin of Month Picker items + */ +/** + * @var {string} + * The text-align of Month Picker items + */ +/** + * @var {number} + * The height of Month Picker items + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Month Picker item + */ +/** + * @var {color} + * The background-color of hovered Month Picker items + */ +/** + * @var {color} + * The background-color of selected Month Picker items + */ +/** + * @var {string} + * The border-style of selected Month Picker items + */ +/** + * @var {color} + * The border-color of selected Month Picker items + */ +/** + * @var {number} + * The height of the Month Picker year navigation buttons + */ +/** + * @var {number} + * The width of the Month Picker year navigation buttons + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Month Picker year navigation button + */ +/** + * @var {number} + * The opacity of the Month Picker year navigation buttons + */ +/** + * @var {number} + * The opacity of hovered Month Picker year navigation buttons + */ +/** + * @var {string} + * The background-image of the Month Picker next year navigation button + */ +/** + * @var {string} + * The background-image of the Month Picker previous year navigation button + */ +/** + * @var {list} + * The background-poisition of the Month Picker next year navigation button + */ +/** + * @var {list} + * The background-poisition of the hovered Month Picker next year navigation button + */ +/** + * @var {list} + * The background-poisition of the Month Picker previous year navigation button + */ +/** + * @var {list} + * The background-poisition of the hovered Month Picker previous year navigation button + */ +/** + * @var {string} + * The border-style of the Month Picker separator + */ +/** + * @var {number} + * The border-width of the Month Picker separator + */ +/** + * @var {color} + * The border-color of the Month Picker separator + */ +/** + * @var {number/list} + * The margin of Month Picker items when the datepicker does not have footer buttons + */ +/** + * @var {number} + * The height of Month Picker items when the datepicker does not have footer buttons + */ +/** + * @class Ext.picker.Color + */ +/** + * @var {color} + * The background-color of Color Pickers + */ +/** + * @var {color} + * The border-color of Color Pickers + */ +/** + * @var {number} + * The border-width of Color Pickers + */ +/** + * @var {string} + * The border-style of Color Pickers + */ +/** + * @var {number} + * The number of columns to display in the Color Picker + */ +/** + * @var {number} + * The number of rows to display in the Color Picker + */ +/** + * @var {number} + * The height of each Color Picker item + */ +/** + * @var {number} + * The width of each Color Picker item + */ +/** + * @var {number} + * The padding of each Color Picker item + */ +/** + * @var {string} + * The cursor to display when the mouse is over a Color Picker item + */ +/** + * @var {color} + * The border-color of Color Picker items + */ +/** + * @var {number} + * The border-width of Color Picker items + */ +/** + * @var {string} + * The border-style of Color Picker items + */ +/** + * @var {color} + * The border-color of hovered Color Picker items + */ +/** + * @var {color} + * The background-color of Color Picker items + */ +/** + * @var {color} + * The background-color of hovered Color Picker items + */ +/** + * @var {color} + * The border-color of the selected Color Picker item + */ +/** + * @var {color} + * The background-color of the selected Color Picker item + */ +/** + * @var {color} + * The inner border-color of Color Picker items + */ +/** + * @var {number} + * The inner border-width of Color Picker items + */ +/** + * @var {string} + * The inner border-style of Color Picker items + */ +/** + * @class Ext.form.field.HtmlEditor + */ +/** + * @var {number} + * The border-width of the HtmlEditor + */ +/** + * @var {color} + * The border-color of the HtmlEditor + */ +/** + * @var {color} + * The background-color of the HtmlEditor + */ +/** + * @var {number} + * The size of the HtmlEditor toolbar icons + */ +/** + * @var {number} + * The font-size of the HtmlEditor's font selection control + */ +/** + * @var {number} + * The font-family of the HtmlEditor's font selection control + */ +/** + * @class Ext.panel.Table + */ +/** + * @var {color} + * The color of the text in the grid cells + */ +/** + * @var {number} + * The font size of the text in the grid cells + */ +/** + * var {number} $grid-row-cell-line-height + * The line-height of the text inside the grid cells. + */ +/** + * @var {string} + * The font-weight of the text in the grid cells + */ +/** + * @var {string} + * The font-family of the text in the grid cells + */ +/** + * @var {color} + * The background-color of the grid cells + */ +/** + * @var {color} + * The border-color of row/column borders. Can be specified as a single color, or as a list + * of colors containing the row border color followed by the column border color. + */ +/** + * @var {string} + * The border-style of the row/column borders. + */ +/** + * @var {number} + * The border-width of the row and column borders. + */ +/** + * @var {color} + * The background-color of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {string} + * The background-gradient to use for "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {number} + * The border-width of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border width is determined by + * {#$grid-row-cell-border-width}. + */ +/** + * @var {color} + * The border-color of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border color is determined by + * {#$grid-row-cell-border-color}. + */ +/** + * @var {string} + * The border-style of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border style is determined by + * {#$grid-row-cell-border-style}. + */ +/** + * @var {color} + * The border-color of "special" cells when the row is selected using a {@link + * Ext.selection.RowModel Row Selection Model}. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the selected row border color is determined by + * {#$grid-row-cell-selected-border-color}. + */ +/** + * @var {color} + * The background-color of "special" cells when the row is hovered. Special cells are + * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel + * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {color} + * The background-color color of odd-numbered rows when the table view is configured with + * `{@link Ext.view.Table#stripeRows stripeRows}: true`. + */ +/** + * @var {string} + * The border-style of the hovered row + */ +/** + * @var {color} + * The text color of the hovered row + */ +/** + * @var {color} + * The background-color of the hovered row + */ +/** + * @var {color} + * The border-color of the hovered row + */ +/** + * @var {string} + * The border-style of the selected row + */ +/** + * @var {color} + * The text color of the selected row + */ +/** + * @var {color} + * The background-color of the selected row + */ +/** + * @var {color} + * The border-color of the selected row + */ +/** + * @var {color} + * The border-color of the focused row + */ +/** + * @var {string} + * The border-style of the focused row + */ +/** + * @var {color} + * The text color of the focused row + */ +/** + * @var {color} + * The background-color of the focused row + */ +/** + * @var {boolean} + * True to show the focus border when a row is focused even if the grid has no + * {@link Ext.panel.Table#rowLines rowLines}. + */ +/** + * @var {color} + * The text color of a selected cell when using a {@link Ext.selection.CellModel + * Cell Selection Model}. + */ +/** + * @var {color} + * The background-color of a selected cell when using a {@link Ext.selection.CellModel + * Cell Selection Model}. + */ +/** + * @var {number} + * The amount of padding to apply to the grid cell's inner div element + */ +/** + * @var {string} + * The type of text-overflow to use on the grid cell's inner div element + */ +/** + * @var {color} + * The border-color of the grid body + */ +/** + * @var {number} + * The border-width of the grid body border + */ +/** + * @var {string} + * The border-style of the grid body border + */ +/** + * @var {color} + * The background-color of the grid body + */ +/** + * @var {number} + * The amount of padding to apply to the grid body when the grid contains no data. + */ +/** + * @var {color} + * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {color} + * The background color of the grid body when the grid contains no data. + */ +/** + * @var {number} + * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {number} + * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {number} + * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {color} + * The color of the resize markers that display when dragging a column border to resize + * the column + */ +/** + * @class Ext.grid.header.DropZone + */ +/** + * @var {number} + * The size of the column move icon + */ +/** + * @class Ext.grid.header.Container + */ +/** + * @var {color} + * The background-color of grid headers + */ +/** + * @var {string/list} + * The background-gradient of grid headers. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of grid headers + */ +/** + * @var {number} + * The border-width of grid headers + */ +/** + * @var {string} + * The border-style of grid headers + */ +/** + * @var {color} + * The background-color of grid headers when the cursor is over the header + */ +/** + * @var {string/list} + * The background-gradient of grid headers when the cursor is over the header. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The background-color of a grid header when its menu is open + */ +/** + * @var {number/list} + * The padding to apply to grid headers + */ +/** + * @var {number} + * The height of grid header triggers + */ +/** + * @var {number} + * The width of grid header triggers + */ +/** + * @var {number} + * The width of the grid header sort icon + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a grid header trigger + */ +/** + * @var {number} + * The amount of space between the header trigger and text + */ +/** + * @var {list} + * The background-position of the header trigger + */ +/** + * @var {color} + * The background-color of the header trigger + */ +/** + * @var {color} + * The background-color of the header trigger when the menu is open + */ +/** + * @var {number} + * The space between the grid header sort icon and the grid header text + */ +/** + * @class Ext.grid.column.Column + */ +/** + * @var {string} + * The font-family of grid column headers + */ +/** + * @var {number} + * The font-size of grid column headers + */ +/** + * @var {string} + * The font-weight of grid column headers + */ +/** + * @var {number} + * The line-height of grid column headers + */ +/** + * @var {color} + * The text color of grid column headers + */ +/** + * @var {number} + * The border-width of grid column headers + */ +/** + * @var {string} + * The border-style of grid column headers + */ +/** + * @class Ext.grid.column.Action + */ +/** + * @var {number} + * The height of action column icons + */ +/** + * @var {number} + * The width of action column icons + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over an action column icon + */ +/** + * @var {number} + * The opacity of disabled action column icons + */ +/** + * @var {number} + * The amount of padding to add to the left and right of the action column cell + */ +/** + * @class Ext.grid.column.CheckColumn + */ +/** + * @var {number} + * Opacity of disabled CheckColumns + */ +/** + * @class Ext.grid.column.RowNumberer + */ +/** + * @var {number} + * The horizontal space before the number in the RowNumberer cell + */ +/** + * @var {number} + * The horizontal space after the number in the RowNumberer cell + */ +/** + * @class Ext.grid.feature.Grouping + */ +/** + * @var {color} + * The background color of group headers + */ +/** + * @var {number/list} + * The border-width of group headers + */ +/** + * @var {string} + * The border-style of group headers + */ +/** + * @var {color} + * The border-color of group headers + */ +/** + * @var {number/list} + * The padding of group headers + */ +/** + * @var {string} + * The cursor of group headers + */ +/** + * @var {color} + * The text color of group header titles + */ +/** + * @var {string} + * The font-family of group header titles + */ +/** + * @var {number} + * The font-size of group header titles + */ +/** + * @var {string} + * The font-weight of group header titles + */ +/** + * @var {number} + * The line-height of group header titles + */ +/** + * @var {number/list} + * The amount of padding to add to the group title element. This is typically used + * to reserve space for an icon by setting the amountof space to be reserved for the icon + * as the left value and setting the remaining sides to 0. + */ +/** + * @class Ext.grid.feature.RowBody + */ +/** + * @var {number} + * The font-size of the RowBody + */ +/** + * @var {number} + * The line-height of the RowBody + */ +/** + * @var {string} + * The font-family of the RowBody + */ +/** + * @var {number} + * The font-weight of the RowBody + */ +/** + * @var {number/list} + * The padding of the RowBody + */ +/** + * @class Ext.grid.feature.RowWrap + */ +/** + * @var {color} + * The border-color of wrapped rows + */ +/** + * @var {string} + * The border-style of wrapped rows + */ +/** + * @class Ext.grid.locking.Lockable + */ +/** + * @var {number} + * The width of the border between the locked views + */ +/** + * @var {string} + * The border-style of the border between the locked views + */ +/** + * @class Ext.grid.plugin.Editing + */ +/** + * The height of grid editor text fields. Defaults to $form-field-height. If grid row + * height is smaller than $form-field-height, defaults to the grid row height. Grid row + * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of + * $grid-cell-inner-padding. + */ +/** + * The padding of grid editor text fields. + */ +/** + * @var {number} + * The font size of the grid editor text + */ +/** + * @var {string} + * The font-weight of the grid editor text + */ +/** + * @var {string} + * The font-family of the grid editor text + */ +/** + * @class Ext.grid.plugin.RowEditing + */ +/** + * @var {color} + * The background-color of the RowEditor + */ +/** + * @var {color} + * The border-color of the RowEditor + */ +/** + * @var {number} + * The border-width of the RowEditor + */ +/** + * @var {number/list} + * The padding of the RowEditor + */ +/** + * @var {number} + * The amount of space in between the editor fields + */ +/** + * @var {number} + * The space between the RowEditor buttons + */ +/** + * @var {number} + * The border-radius of the RowEditor button container + */ +/** + * @var {number/list} + * The padding of the RowEditor button container + */ +/** + * @var {number/list} + * Padding to apply to the body element of the error tooltip + */ +/** + * @var {string} + * The list-style of the error tooltip's list items + */ +/** + * @var {number} + * Space to add before each list item on the error tooltip + */ +/** + * @class Ext.grid.plugin.RowExpander + */ +/** + * @var {number} + * The height of the RowExpander icon + */ +/** + * @var {number} + * The width of the RowExpander icon + */ +/** + * @var {number} + * The horizontal space before the RowExpander icon + */ +/** + * @var {number} + * The horizontal space after the RowExpander icon + */ +/** + * @var {string} + * The cursor for the RowExpander icon + */ +/** + * @class Ext.grid.property.Grid + */ +/** + * @var {string} + * The background-image of property grid cells + */ +/** + * @var {string} + * The background-position of property grid cells + */ +/** + * @var {number/string} + * The padding to add before the text of property grid cells to make room for the + * background-image. Only applies if $grid-property-cell-background-image is not null + */ +/** + * @class Ext.layout.container.Accordion + */ +/** + * @var {color} + * The text color of Accordion headers + */ +/** + * @var {color} + * The background-color of Accordion headers + */ +/** + * @var {number} + * The size of {@link Ext.panel.Tool Tools} in Accordion headers + */ +/** + * @var {number/list} + * The border-width of Accordion headers + */ +/** + * @var {number/list} + * The padding of Accordion headers + */ +/** + * @var {string} + * The font-weight of Accordion headers + */ +/** + * @var {string} + * The font-family of Accordion headers + */ +/** + * @var {string} + * The text-transform property of Accordion headers + */ +/** + * @var {string} + * The text-transform property of Accordion headers + */ +/** + * @var {color} + * The background-color of the Accordion layout element + */ +/** + * @var {color} + * The background-color of the Accordion layout element + */ +/** + * @var {number/list} + * The padding of the Accordion layout element + */ +/** + * @var {string} + * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers + */ +/** + * @class Ext.resizer.Splitter + */ +/** + * @var {number} + * The size of the Splitter + */ +/** + * @var {color} + * The background-color of the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {number} + * The opacity of the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {number} + * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {string} + * The the type of cursor to display when the cursor is over the collapse tool + */ +/** + * @var {number} + * The size of the collapse tool. This becomes the width of the collapse tool for + * horizontal splitters, and the height for vertical splitters. + */ +/** + * @class Ext.layout.container.Border + */ +/** + * @var {color} + * The background-color of the Border layout element + */ +/** + * @class Ext.menu.Menu + */ +/** + * @var {color} + * The background-color of the Menu + */ +/** + * @var {color} + * The border-color of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {color} + * The background-color of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {number} + * The size of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {color} + * The border-color of the Menu + */ +/** + * @var {string} + * The border-style of the Menu + */ +/** + * @var {number} + * The border-width of the Menu + */ +/** + * @var {number} + * The font-size of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The margin of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The height of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The border-width of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {string} + * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item} + */ +/** + * @var {color} + * The background-color of the active {@link Ext.menu.Item Menu Item} + */ +/** + * @var {color} + * The border-color of the active {@link Ext.menu.Item Menu Item} + */ +/** + * @var {string/list} + * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number} + * The border-radius of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The size of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {list} + * The background-position of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} text + */ +/** + * @var {number/list} + * The margin of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {number} + * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room + * for the checkbox + */ +/** + * @var {number} + * The height of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The width of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The opacity of disabled {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The height of Menu crollers + */ +/** + * @var {number} + * The opacity of Menu crollers + */ +/** + * @var {number} + * The opacity of Menu crollers when hovered + */ +/** + * @var {number} + * The opacity of Menu crollers when pressed + */ +/** + * @var {number/list} + * The padding to apply to the Menu body element + */ +/** + * @var {color} + * The color of Menu Item text + */ +/** + * @var {number/list} + * The margin non-MenuItems placed in a Menu + */ +/** + * @var {color} $menu-glyph-color + * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph} + */ +/** + * @var {number} $menu-glyph-opacity + * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph} + */ +/** + * @class Ext.panel.Tool + */ +/** + * @var {number} + * The size of Tools + */ +/** + * @var {boolean} + * True to change the background-position of the Tool on hover. Allows for a separate + * hover state icon in the sprite. + */ +/** + * @var {string} + * The cursor to display when the mouse cursor is over a Tool + */ +/** + * @var {number} + * The opacity of Tools + */ +/** + * @var {number} + * The opacity of hovered Tools + */ +/** + * @var {number} + * The opacity of pressed Tools + */ +/** + * @var {string} + * The sprite to use as the background-image for Tools + */ +/** + * @class Ext.slider.Multi + */ +/** + * @var {number} + * The horizontal slider thumb width + */ +/** + * @var {number} + * The horizontal slider thumb height + */ +/** + * @var {number} + * The width of the horizontal slider end caps + */ +/** + * @var {number} + * The vertical slider thumb width + */ +/** + * @var {number} + * The vertical slider thumb height + */ +/** + * @var {number} + * The height of the vertical slider end caps + */ +/** + * @class Ext.tab.Tab + */ +/** + * @var {color} + * The base color of Tabs + */ +/** + * @var {color} + * The base color of hovered Tabs + */ +/** + * @var {color} + * The base color of the active Tabs + */ +/** + * @var {color} + * The base color of disabled Tabs + */ +/** + * @var {color} + * The text color of Tabs + */ +/** + * @var {color} + * The text color of hovered Tabs + */ +/** + * @var {color} + * The text color of the active Tab + */ +/** + * @var {color} + * The text color of disabled Tabs + */ +/** + * @var {number} + * The font-size of Tabs + */ +/** + * @var {number} + * The font-size of hovered Tabs + */ +/** + * @var {number} + * The font-size of the active Tab + */ +/** + * @var {number} + * The font-size of disabled Tabs + */ +/** + * @var {string} + * The font-family of Tabs + */ +/** + * @var {string} + * The font-family of hovered Tabs + */ +/** + * @var {string} + * The font-family of the active Tab + */ +/** + * @var {string} + * The font-family of disabled Tabs + */ +/** + * @var {string} + * The font-weight of Tabs + */ +/** + * @var {string} + * The font-weight of hovered Tabs + */ +/** + * @var {string} + * The font-weight of the active Tab + */ +/** + * @var {string} + * The font-weight of disabled Tabs + */ +/** + * @var {string} + * The Tab cursor + */ +/** + * @var {string} + * The cursor of disabled Tabs + */ +/** + * @var {string/list} + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {list} + * The border-radius of Tabs + */ +/** + * @var {number} + * The border-width of Tabs + */ +/** + * @var {number/list} + * The inner border-width of Tabs + */ +/** + * @var {color} + * The inner border-color of Tabs + */ +/** + * @var {color} + * The border-color of Tabs + */ +/** + * @var {color} + * The border-color of hovered Tabs + */ +/** + * @var {color} + * The border-color of the active Tab + */ +/** + * @var {color} + * The border-color of disabled Tabs + */ +/** + * @var {number/list} + * The padding of Tabs + */ +/** + * @var {number/list} + * The padding of the Tab's text element + */ +/** + * @var {number} + * The line-height of Tabs + */ +/** + * @var {number/list} + * The margin of Tabs. Typically used to add horizontal space between the tabs. + */ +/** + * @var {number} + * The width of the Tab close icon + */ +/** + * @var {number} + * The height of the Tab close icon + */ +/** + * @var {number} + * The distance to offset the Tab close icon from the top of the tab + */ +/** + * @var {number} + * The distance to offset the Tab close icon from the right of the tab + */ +/** + * @var {number} + * the space in between the text and the close button + */ +/** + * @var {number} + * The opacity of the Tab close icon + */ +/** + * @var {number} + * The opacity of the Tab close icon when hovered + */ +/** + * @var {number} + * The opacity of the Tab close icon when the Tab is disabled + */ +/** + * @var {boolean} + * True to change the x background-postition of the close icon background image on hover + * to allow for a horizontally aligned background image sprite + */ +/** + * @var {boolean} + * True to change the x background-postition of the close icon background image on click + * to allow for a horizontally aligned background image sprite + */ +/** + * @var {number} + * The width of Tab icons + */ +/** + * @var {number} + * The height of Tab icons + */ +/** + * @var {number} + * The space between the Tab icon and the Tab text + */ +/** + * @var {number} + * The background-position of Tab icons + */ +/** + * @var {color} + * The color of Tab glyph icons + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is hovered + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is active + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is disabled + */ +/** + * @var {number} + * The opacity of a Tab glyph icon + */ +/** + * @var {number} + * The opacity of a Tab glyph icon when the Tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's main element when the tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's text element when the tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's icon element when the tab is disabled + */ +/** + * @var {string} + * Experimental - Has issues with IE + * The direction to rotate the contents of a left-aligned tab. `right` to rotate + * clockwise or `left` to rotate counterclockwise. Defaults to `left`. + */ +/** + * @var {string} + * Experimental - Has issues with IE + * The direction to rotate the contents of a right-aligned tab. `right` to rotate + * clockwise or `left` to rotate counterclockwise. Defaults to `right`. + */ +/** + * @var {boolean} + * True to include the "default" tab UI + */ +/** + * @class Ext.tab.Bar + */ +/** + * @var {number/list} + * The padding of the Tab Bar + */ +/** + * @var {number/list} + * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar + */ +/** + * @var {color} + * The base color of the Tab Bar + */ +/** + * @var {string/list} + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of the Tab Bar + */ +/** + * @var {number/list} + * The border-width of the Tab Bar + */ +/** + * @var {number/list} + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar + */ +/** + * @var {number} + * The height of the Tab Bar strip + */ +/** + * @var {color} + * The border-color of the Tab Bar strip + */ +/** + * @var {color} + * The background-color of the Tab Bar strip + */ +/** + * @var {number/list} + * The border-width of the Tab Bar strip + */ +/** + * @var {number/list} + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + */ +/** + * @var {number} + * The width of the Tab Bar scrollers + */ +/** + * @var {string} + * The cursor of the Tab Bar scrollers + */ +/** + * @var {string} + * The cursor of disabled Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of hovered Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of pressed Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of disabled Tab Bar scrollers + */ +/** + * @var {boolean} + * true to change the x postition of the background image on hover to allow for a + * horizonatlly alined background image sprite + */ +/** + * @var {boolean} + * true to include separate scroller icons for "plain" tabbars + */ +/** + * @var {boolean} + * if true, the tabbar will use symmetrical scroller icons. Top and bottom tabbars + * will share icons, and Left and right will share icons. + */ +/** + * @var {boolean} + * True to include the "default" tabbar UI + */ +/** + * @class Ext.selection.CheckboxModel + */ +/** + * @var {number} + * The horizontal space before the checkbox + */ +/** + * @var {number} + * The horizontal space after the checkbox + */ +/** + * @class Ext.tree.Panel + */ +/** + * @var {number} $tree-elbow-width + * The width of the tree elbow/arrow icons + */ +/** + * @var {number} $tree-icon-width + * The width of the tree folder/leaf icons + */ +/** + * @var {number} $tree-elbow-spacing + * The amount of spacing between the tree elbows or arrows, and the checkbox or icon. + */ +/** + * @var {number} $tree-checkbox-spacing + * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon + */ +/** + * @var {number} $tree-icon-spacing + * The amount of space (in pixels) between the folder/leaf icons and the text + */ +/** + * @var {string} $tree-expander-cursor + * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon) + */ +/** + * @var {number/list} + * The amount of padding to apply to the tree cell's inner div element + */ +/* including package ext-theme-base */ +/** + * @class Global_CSS + */ +/** + * @var {string} $prefix + * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your + * JavaScript application. + */ +/** + * @var {boolean/string} $relative-image-path-for-uis + * True to use a relative image path for all new UIs. If true, the path will be "../images/". + * It can also be a string of the path value. + * It defaults to false, which means it will look for the images in the ExtJS SDK folder. + */ +/** + * @var {boolean} $include-not-found-images + * True to include files which are not found when compiling your SASS + */ +/** + * @var {boolean} $include-ie + * True to include Internet Explorer specific rules + */ +/** + * @var {boolean} $include-content-box + * True to include rules for browsers that do not support the border-box model + * (IE6 strict and IE7 strict) + */ +/** + * @var {boolean} $include-ff + * True to include Firefox specific rules + */ +/** + * @var {boolean} $include-chrome + * True to include Chrome specific rules + */ +/** + * @var {boolean} $include-safari + * True to include Safari specific rules + */ +/** + * @var {boolean} $include-opera + * True to include Opera specific rules + */ +/** + * @var {boolean} $include-webkit + * True to include Webkit specific rules + */ +/** + * @var {measurement} $css-shadow-border-radius + * The border radius for CSS shadows + */ +/** + * @var {color} $include-shadow-images + * True to include all shadow images. + */ +/** + * @var {string} $image-extension + * default file extension to use for images (defaults to 'png'). + */ +/** + * @var {string} $slicer-image-extension + * default file extension to use for slicer images (defaults to 'gif'). + */ +/** + * Default search path for images + */ +/** + * @var {boolean} + * True to include the default UI for each component. + */ +/** + * @var {string} + * The base path relative to the CSS output directory to use for theme resources. For example + * if the theme's images live one directory up from the generated CSS output in a directory + * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image + * paths in the CSS output to be generated correctly. By default this is the same as the + * CSS output directory. + */ +/* including package ext-theme-base */ +/* line 1, ../../../ext-theme-base/sass/src/Component.scss */ +.x-body { + margin: 0; +} + +/* line 5, ../../../ext-theme-base/sass/src/Component.scss */ +img { + border: 0; +} + +/* line 10, ../../../ext-theme-base/sass/src/Component.scss */ +.x-border-box, +.x-border-box * { + box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +/* line 17, ../../../ext-theme-base/sass/src/Component.scss */ +.x-rtl { + direction: rtl; +} + +/* line 21, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ltr { + direction: ltr; +} + +/* line 25, ../../../ext-theme-base/sass/src/Component.scss */ +.x-clear { + overflow: hidden; + clear: both; + font-size: 0; + line-height: 0; + display: table; +} + +/* line 33, ../../../ext-theme-base/sass/src/Component.scss */ +.x-strict .x-ie7 .x-clear { + height: 0; + width: 0; +} + +/* line 41, ../../../ext-theme-base/sass/src/Component.scss */ +.x-layer { + position: absolute !important; + overflow: hidden; + zoom: 1; +} + +/* line 49, ../../../ext-theme-base/sass/src/Component.scss */ +.x-fixed-layer { + position: fixed !important; + overflow: hidden; + zoom: 1; +} + +/* line 55, ../../../ext-theme-base/sass/src/Component.scss */ +.x-shim { + position: absolute; + left: 0; + top: 0; + overflow: hidden; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 63, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-display { + display: none !important; +} + +/* line 67, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-visibility { + visibility: hidden !important; +} + +/* line 72, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ie6 .x-item-disabled { + filter: none; +} + +/* line 78, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hidden, +.x-hide-offsets { + display: block !important; + visibility: hidden !important; + position: absolute !important; + top: -10000px !important; +} + +/* line 88, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-nosize { + height: 0 !important; + width: 0 !important; +} + +/* line 94, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-clip { + position: absolute!important; + clip: rect(0, 0, 0, 0); + clip: rect(0 0 0 0); +} + +/* line 102, ../../../ext-theme-base/sass/src/Component.scss */ +.x-masked-relative { + position: relative; +} + +/* line 108, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ie-shadow { + background-color: #777; + display: none; + position: absolute; + overflow: hidden; + zoom: 1; +} + +/* line 117, ../../../ext-theme-base/sass/src/Component.scss */ +.x-unselectable { + user-select: none; + -o-user-select: none; + -ms-user-select: none; + -moz-user-select: -moz-none; + -webkit-user-select: none; + cursor: default; +} + +/* line 121, ../../../ext-theme-base/sass/src/Component.scss */ +.x-selectable { + cursor: auto; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; + user-select: text; + -o-user-select: text; +} + +/* line 136, ../../../ext-theme-base/sass/src/Component.scss */ +.x-list-plain { + list-style-type: none; + margin: 0; + padding: 0; +} + +/* line 143, ../../../ext-theme-base/sass/src/Component.scss */ +.x-table-plain { + border-collapse: collapse; + border-spacing: 0; + font-size: 1em; +} + +/* line 156, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-tl, +.x-frame-tr, +.x-frame-tc, +.x-frame-bl, +.x-frame-br, +.x-frame-bc { + overflow: hidden; + background-repeat: no-repeat; +} + +/* line 162, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-tc, +.x-frame-bc { + background-repeat: repeat-x; +} + +/* line 166, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-mc { + background-repeat: repeat-x; + overflow: hidden; +} + +/* line 171, ../../../ext-theme-base/sass/src/Component.scss */ +.x-proxy-el { + position: absolute; + background: #b4b4b4; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + opacity: 0.8; +} + +/* line 178, ../../../ext-theme-base/sass/src/Component.scss */ +.x-css-shadow { + position: absolute; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +/* line 184, ../../../ext-theme-base/sass/src/Component.scss */ +.x-item-disabled, +.x-item-disabled * { + cursor: default; +} + +/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */ +.x-box-item { + position: absolute !important; + left: 0; + top: 0; +} + +/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */ +div.x-editor { + overflow: visible; +} + +/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask { + z-index: 100; + position: absolute; + width: 100%; + height: 100%; + zoom: 1; +} + +/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask-shim { + z-index: 100; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask-msg { + z-index: 20001; + position: absolute; +} + +/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress { + position: relative; + border-style: solid; + overflow: hidden; +} + +/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress-bar { + overflow: hidden; + position: absolute; + width: 0; + height: 100%; +} + +/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress-text { + overflow: hidden; + position: absolute; +} + +/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn { + display: inline-block; + position: relative; + zoom: 1; + *display: inline; + outline: 0; + cursor: pointer; + white-space: nowrap; + vertical-align: middle; + text-decoration: none; +} + +/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-wrap { + position: relative; + display: block; +} + +/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-button { + position: relative; + display: block; + text-decoration: none; + overflow: hidden; + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner { + display: block; + white-space: nowrap; + overflow: hidden; + zoom: 1; +} + +/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-icon-el { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; + background-repeat: no-repeat; + text-align: center; +} + +/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-center { + text-align: center; +} + +/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-left { + text-align: left; +} + +/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-right { + text-align: right; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-layout-ct { + overflow: hidden; + zoom: 1; +} + +/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-target { + position: absolute; + width: 20000px; + top: 0; + left: 0; + height: 1px; +} + +/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-inner { + overflow: hidden; + zoom: 1; + position: relative; + left: 0; + top: 0; +} + +/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-horizontal-box-overflow-body { + float: left; +} + +/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller { + position: relative; + background-repeat: no-repeat; +} + +/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller-left, +.x-box-scroller-right { + float: left; + height: 100%; + z-index: 5; +} + +/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller-top .x-box-scroller, +.x-box-scroller-bottom .x-box-scroller { + line-height: 0; + font-size: 0; + background-position: center 0; +} + +/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-menu-after { + float: right; +} + +/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-text { + white-space: nowrap; +} + +/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-separator { + display: block; + font-size: 1px; + overflow: hidden; + cursor: default; + border: 0; + width: 0; + height: 0; + line-height: 0px; +} + +/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal { + width: 2px; +} + +/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroller { + padding-left: 0; +} + +/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-plain { + border: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked { + position: absolute !important; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-vertical { + position: static; +} + +/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-top { + border-bottom-width: 0 !important; +} + +/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-bottom { + border-top-width: 0 !important; +} + +/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-left { + border-right-width: 0 !important; +} + +/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-right { + border-left-width: 0 !important; +} + +/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-top { + border-top-width: 0 !important; +} + +/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-right { + border-right-width: 0 !important; +} + +/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-bottom { + border-bottom-width: 0 !important; +} + +/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-left { + border-left-width: 0 !important; +} + +/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-l { + border-left-width: 0 !important; +} + +/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-b { + border-bottom-width: 0 !important; +} + +/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-bl { + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-r { + border-right-width: 0 !important; +} + +/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rl { + border-right-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rb { + border-right-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rbl { + border-right-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-t { + border-top-width: 0 !important; +} + +/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tl { + border-top-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tb { + border-top-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tbl { + border-top-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tr { + border-top-width: 0 !important; + border-right-width: 0 !important; +} + +/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trl { + border-top-width: 0 !important; + border-right-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trb { + border-top-width: 0 !important; + border-right-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trbl { + border-width: 0 !important; +} + +/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */ +.x-header-icon { + background-repeat: no-repeat; + background-position: 0 0; + vertical-align: middle; + text-align: center; +} + +/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */ +.x-header-text-container { + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */ +.x-dd-drag-proxy, +.x-dd-drag-current { + z-index: 1000000!important; + pointer-events: none; +} + +/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-repair .x-dd-drag-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); + opacity: 0.6; +} +/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-repair .x-dd-drop-icon { + display: none; +} + +/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); + opacity: 0.85; + padding: 5px; + padding-left: 20px; + white-space: nowrap; + color: #000; + font: normal 11px tahoma, arial, verdana, sans-serif; + border: 1px solid; + border-color: #ddd #bbb #bbb #ddd; + background-color: #fff; +} + +/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.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; +} + +/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-ok .x-dd-drop-icon { + background-image: url(images/dd/drop-yes.gif); +} + +/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-ok-add .x-dd-drop-icon { + background-image: url(images/dd/drop-add.gif); +} + +/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-nodrop div.x-dd-drop-icon { + background-image: url(images/dd/drop-no.gif); +} + +/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel, +.x-plain { + overflow: hidden; + position: relative; +} + +/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel { + outline: none; +} + +/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-ie .x-panel-header, +.x-ie .x-panel-header-tl, +.x-ie .x-panel-header-tc, +.x-ie .x-panel-header-tr, +.x-ie .x-panel-header-ml, +.x-ie .x-panel-header-mc, +.x-ie .x-panel-header-mr, +.x-ie .x-panel-header-bl, +.x-ie .x-panel-header-bc, +.x-ie .x-panel-header-br { + zoom: 1; +} + +/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-ie8 td.x-frame-mc { + vertical-align: top; +} + +/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel-body { + overflow: hidden; + position: relative; +} + +/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-vertical .x-frame-mc { + background-repeat: repeat-y; +} + +/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel-header-plain, +.x-panel-body-plain { + border: 0; + padding: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip { + position: absolute; + overflow: visible; + /*pointer needs to be able to stick out*/ +} + +/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip-body { + overflow: hidden; + position: relative; +} + +/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip-anchor { + position: absolute; + overflow: hidden; + border-style: solid; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */ +.x-table-layout { + font-size: 1em; +} + +/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group { + position: relative; + overflow: hidden; +} + +/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body { + position: relative; + zoom: 1; +} +/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body .x-table-layout-cell { + vertical-align: top; +} + +/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */ +.x-viewport, .x-viewport body { + margin: 0; + padding: 0; + border: 0 none; + overflow: hidden; + height: 100%; + position: static; +} + +/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window { + outline: none; + overflow: hidden; +} +/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window .x-window-wrap { + position: relative; +} + +/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window-body { + position: relative; + overflow: hidden; +} + +/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window-body-plain { + background: transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label { + display: block; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label-right { + text-align: right; +} + +/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label-top { + display: block; + zoom: 1; +} + +/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-invalid-icon { + overflow: hidden; +} +/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-invalid-icon ul { + display: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */ +.x-form-textarea { + overflow: auto; + resize: none; +} +/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */ +.x-safari.x-mac .x-form-textarea { + margin-bottom: -2px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */ +.x-form-display-field-body { + vertical-align: top; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb-wrap { + vertical-align: top; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb { + vertical-align: top; + overflow: hidden; + padding: 0; + border: 0; +} +/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb::-moz-focus-inner { + padding: 0; + border: 0; +} + +/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label { + display: inline-block; + zoom: 1; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset { + display: block; + /* preserve margins in IE */ + position: relative; +} + +/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header { + overflow: hidden; +} +/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-item, +.x-fieldset-header .x-tool { + float: left; +} +/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb-wrap { + font-size: 0; + line-height: 0; +} +/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb { + margin: 0; +} + +/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text { + float: left; +} + +/*misc*/ +/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-webkit *:focus { + outline: none !important; +} + +/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-item { + vertical-align: top; + table-layout: fixed; +} + +/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-item-body { + position: relative; +} + +/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-form-item td { + border-top: 1px solid transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-form-trigger { + cursor: pointer; + overflow: hidden; + background-repeat: no-repeat; +} +/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-item-disabled .x-form-trigger { + cursor: default; +} + +/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-trigger-noedit { + cursor: default; +} + +/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap { + vertical-align: top; + border-collapse: separate; +} + +/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */ +.x-form-spinner-up, +.x-form-spinner-down { + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker { + position: relative; +} + +/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-inner { + table-layout: fixed; + width: 100%; + border-collapse: separate; +} + +/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-cell { + padding: 0; +} + +/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-header { + position: relative; + zoom: 1; +} + +/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-arrow { + position: absolute; + outline: none; + font-size: 0; +} + +/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-column-header { + padding: 0; +} + +/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-date { + display: block; + zoom: 1; + text-decoration: none; +} + +/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker { + position: absolute; + left: 0; + top: 0; +} + +/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-body { + height: 100%; +} + +/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-months, +.x-monthpicker-years { + float: left; + height: 100%; +} + +/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-item { + float: left; +} + +/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-item-inner { + display: block; + text-decoration: none; +} + +/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button-ct { + float: left; + text-align: center; +} + +/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button { + display: inline-block; + outline: none; + font-size: 0; +} + +/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-buttons { + position: absolute; + bottom: 0; + width: 100%; +} +/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-strict .x-ie6 .x-monthpicker-buttons { + bottom: -1px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */ +.x-form-file-btn { + overflow: hidden; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */ +.x-form-file-input { + border: 0; + position: absolute; + cursor: pointer; + top: -2px; + right: -2px; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; + /* Yes, there's actually a good reason for this... + * If the configured buttonText is set to something longer than the default, + * then it will quickly exceed the width of the hidden file input's "Browse..." + * button, so part of the custom button's clickable area will be covered by + * the hidden file input's text box instead. This results in a text-selection + * mouse cursor over that part of the button, at least in Firefox, which is + * confusing to a user. Giving the hidden file input a huge font-size makes + * the native button part very large so it will cover the whole clickable area. + */ + font-size: 1000px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */ +.x-form-item-hidden { + margin: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */ +.x-color-picker-item { + float: left; + text-decoration: none; +} + +/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */ +.x-color-picker-item-inner { + display: block; + font-size: 1px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-toolbar { + position: static !important; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */ +.x-htmleditor-iframe { + display: block; + overflow: auto; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */ +.x-fit-item { + position: relative; +} + +/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-row, +.x-grid-data-row { + outline: none; +} + +/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-view { + overflow: hidden; + position: relative; +} + +/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-table { + table-layout: fixed; + border-collapse: separate; +} + +/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-td { + overflow: hidden; + border-width: 0; + vertical-align: top; +} + +/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-cell-inner { + overflow: hidden; + white-space: nowrap; + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-resize-marker { + position: absolute; + z-index: 5; + top: 0; +} + +/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */ +.col-move-top, +.col-move-bottom { + position: absolute; + top: 0; + line-height: 0; + font-size: 0; + overflow: hidden; + z-index: 20000; + background: no-repeat center top transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */ +.x-grid-header-ct { + cursor: default; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header { + position: absolute; + overflow: hidden; + background-repeat: repeat-x; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-inner { + zoom: 1; + white-space: nowrap; + position: relative; + overflow: hidden; +} + +/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-text { + white-space: nowrap; + background-repeat: no-repeat; + zoom: 1; + display: inline-block; +} + +/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + display: none; + height: 100%; + background-repeat: no-repeat; + position: absolute; + right: 0; + top: 0; + z-index: 2; +} + +/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger { + display: block; +} + +/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-right { + text-align: right; +} + +/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-left { + text-align: left; +} + +/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-center { + text-align: center; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */ +.x-grid-cell-inner-action-col { + line-height: 0; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */ +.x-grid-cell-inner-checkcolumn { + line-height: 0; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */ +.x-row-numberer .x-column-header-inner { + text-overflow: clip; +} + +/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-group, +.x-grid-group-body, +.x-grid-group-hd { + zoom: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd { + white-space: nowrap; +} + +/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-row-body-hidden, .x-grid-group-collapsed { + display: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */ +.x-grid-rowbody { + zoom: 1; +} + +/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */ +.x-grid-row-body-hidden { + display: none; +} + +/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */ +td.x-grid-rowwrap .x-grid-table { + border: 0; +} +/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */ +td.x-grid-rowwrap .x-grid-cell { + border-bottom: 0; + background-color: transparent; +} + +/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb-wrap { + text-align: center; +} + +/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field { + margin: 0; + white-space: nowrap; + overflow: hidden; +} +/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor div.x-form-action-col-field { + line-height: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor { + position: absolute; + overflow: visible; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons { + position: absolute; + white-space: nowrap; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-expander { + font-size: 0; + line-height: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */ +.x-abs-layout-ct { + position: relative; +} + +/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */ +.x-abs-layout-item { + position: absolute !important; +} + +/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter { + font-size: 1px; +} + +/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-horizontal { + cursor: e-resize; + cursor: row-resize; +} + +/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-vertical { + cursor: e-resize; + cursor: col-resize; +} + +/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed, +.x-splitter-horizontal-noresize, +.x-splitter-vertical-noresize { + cursor: default; +} + +/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-active { + z-index: 4; +} + +/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-collapse-el { + position: absolute; + background-repeat: no-repeat; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + overflow: hidden; + zoom: 1; +} + +/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + position: relative; +} + +/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-region-slide-in { + z-index: 5; +} + +/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-region-collapsed-placeholder { + z-index: 4; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-column { + float: left; +} + +/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-ie6 .x-column { + display: inline; + /*prevent IE6 double-margin bug*/ +} + +/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item { + position: relative; +} + +/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */ +.x-form-layout-table { + border-collapse: separate; + border-spacing: 0 2px; +} + +/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */ +.x-ie6 .x-form-layout-table { + border-collapse: collapse; + border-spacing: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu { + outline: none; +} + +/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item { + white-space: nowrap; + overflow: hidden; +} + +/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-cmp .x-field-label-cell { + vertical-align: middle; +} + +/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-icon-separator { + position: absolute; + top: 0px; + z-index: 0; + height: 100%; + overflow: hidden; +} +/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-plain .x-menu-icon-separator { + display: none; +} + +/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-link { + text-decoration: none; + outline: 0; + zoom: 1; +} + +/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-text { + zoom: 1; +} + +/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-icon, +.x-menu-item-icon-right, +.x-menu-item-arrow { + position: absolute; + text-align: center; +} + +/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */ +.x-resizable-overlay { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: none; + z-index: 200000; + background-color: #fff; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider { + outline: none; + zoom: 1; + position: relative; +} + +/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-inner { + position: relative; + left: 0; + top: 0; + overflow: visible; + zoom: 1; +} +/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-inner { + background: repeat-y 0 0; +} + +/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-end { + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-thumb { + position: absolute; + background: no-repeat 0 0; +} +/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb { + left: 0; +} +/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb { + bottom: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */ +a.x-tab { + text-decoration: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */ +.x-tab-bar { + position: relative; +} + +/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox .x-column-header-text { + display: block; + background-repeat: no-repeat; + font-size: 0; +} + +/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */ +.x-grid-cell-row-checker { + vertical-align: middle; + background-repeat: no-repeat; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab { + display: block; + white-space: nowrap; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-active { + z-index: 3; +} + +/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-wrap { + display: block; + position: relative; +} + +/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-button { + zoom: 1; + display: block; + outline: none; +} + +/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-inner { + display: block; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + overflow: hidden; + zoom: 1; +} + +/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-btn-icon-el { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; + background-repeat: no-repeat; + text-align: center; +} + +/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar { + z-index: 1; +} + +/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-body { + z-index: 2; + position: relative; +} + +/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip { + position: absolute; + line-height: 0; + font-size: 0; + z-index: 1; +} + +/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-horizontal .x-tab-bar-strip { + width: 100%; + left: 0; +} + +/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-vertical .x-tab-bar-strip { + height: 100%; + top: 0; +} + +/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-top { + bottom: 0; +} + +/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-bottom { + top: 0; +} + +/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-left { + right: 0; +} + +/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-right { + left: 0; +} + +/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-plain { + background: transparent !important; +} + +/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-icon-el { + position: absolute; + background-repeat: no-repeat; + top: 0; + left: 0; + right: auto; + bottom: 0; +} + +/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-close-btn { + display: block; + position: absolute; + font-size: 0; + line-height: 0; + background: no-repeat; +} + +/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-mc { + overflow: visible; +} + +/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-autowidth-table .x-grid-table { + table-layout: auto; + width: auto !important; +} + +/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-view { + overflow: hidden; +} + +/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-elbow-img, +.x-tree-icon { + background-repeat: no-repeat; + background-position: 0 center; + vertical-align: top; +} + +/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-checkbox { + border: 0; + padding: 0; + vertical-align: top; + position: relative; + background-color: transparent; +} + +/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-animator-wrap { + overflow: hidden; +} + +/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-node-text { + zoom: 1; +} + +/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-surface { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + overflow: hidden; +} + +/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.rvml { + behavior: url(#default#VML); +} + +/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-surface tspan { + user-select: none; + -o-user-select: none; + -ms-user-select: none; + -moz-user-select: -moz-none; + -webkit-user-select: none; + cursor: default; +} + +/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-sprite { + position: absolute; + left: 0; + top: 0; + width: 1px; + height: 1px; +} + +/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-group { + position: absolute; + left: 0; + top: 0; + width: 1000px; + height: 1000px; +} + +/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-measure-span { + position: absolute; + left: -9999em; + top: -9999em; + padding: 0; + margin: 0; + display: inline; +} + +/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-base { + position: relative; + top: 0; + left: 0; + overflow: hidden; + display: inline-block; +} + +/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-base { + position: relative; + top: 0; + left: 0; + overflow: hidden; + display: inline-block; +} + +/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */ +svg, vml { + overflow: hidden; +} + +/* including package ext-theme-neutral */ +/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */ +.x-body { + color: black; + font-size: 12px; + font-family: tahoma, arial, verdana, sans-serif; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */ +.x-animating-size, +.x-collapsed { + overflow: hidden!important; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */ +.x-editor .x-form-item-body { + padding-bottom: 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-element { + position: absolute; + top: -10px; + left: -10px; + width: 0px; + height: 0px; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame { + position: absolute; + left: 0px; + top: 0px; + z-index: 100000000; + width: 0px; + height: 0px; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-top, +.x-focus-frame-bottom, +.x-focus-frame-left, +.x-focus-frame-right { + position: absolute; + top: 0px; + left: 0px; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-top, +.x-focus-frame-bottom { + border-top: solid 2px #15428b; + height: 2px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-left, +.x-focus-frame-right { + border-left: solid 2px #15428b; + width: 2px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + background: #cccccc; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg { + padding: 2px; + border-style: solid; + border-width: 1px; + border-color: #99bce8; + background-image: none; + background-color: #dfe9f6; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg-inner { + padding: 0 5px; + border-style: solid; + border-width: 1px; + border-color: #a3bad9; + background-color: #eeeeee; + color: #222222; + font: normal 11px tahoma, arial, verdana, sans-serif; +} + +/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg-text { + padding: 5px 5px 5px 20px; + background-image: url(images/grid/loading.gif); + background-repeat: no-repeat; + background-position: 0 center; +} + +/** + * Creates a visual theme for an Ext.ProgressBar + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$progress-border-color] + * The border-color of the ProgressBar + * + * @param {color} [$ui-background-color=$progress-background-color] + * The background-color of the ProgressBar + * + * @param {color} [$ui-bar-background-color=$progress-bar-background-color] + * The background-color of the ProgressBar's moving element + * + * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient] + * The background-gradient of the ProgressBar's moving element. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {color} [$ui-color-front=$progress-text-color-front] + * The color of the ProgressBar's text when in front of the ProgressBar's moving element + * + * @param {color} [$ui-color-back=$progress-text-color-back] + * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it + * + * @param {number} [$ui-height=$progress-height] + * The height of the ProgressBar + * + * @param {number} [$ui-border-width=$progress-border-width] + * The border-width of the ProgressBar + * + * @param {number} [$ui-border-radius=$progress-border-radius] + * The border-radius of the ProgressBar + * + * @param {string} [$ui-text-text-align=$progress-text-text-align] + * The text-align of the ProgressBar's text + * + * @param {number} [$ui-text-font-size=$progress-text-font-size] + * The font-size of the ProgressBar's text + * + * @param {string} [$ui-text-font-weight=$progress-text-font-weight] + * The font-weight of the ProgressBar's text + * + * @member Ext.ProgressBar + */ +/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default { + background-color: #e0e8f3; + border-width: 1px; + height: 20px; + border-color: #6594cf; + /*<if slicer>*/ + /*</if slicer>*/ + /* */ +} +/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-content-box .x-progress-default { + height: 18px; +} +/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-bar-default { + background-image: none; + background-color: #73a3e0; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db)); + background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); +} +/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-nlg .x-progress-default .x-progress-bar-default { + background: repeat-x; + background-image: url(images/progress/progress-default-bg.gif); +} +/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-text { + color: white; + font-weight: bold; + font-size: 11px; + text-align: center; + line-height: 18px; +} +/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-text-back { + color: #396295; + line-height: 18px; +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-progress-default .x-progress-bar-default:after { + display: none; + content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)"; +} + +/** + * Creates a visual theme for a Button + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$border-radius=0px] + * The border-radius of the button + * + * @param {number} [$border-width=0px] + * The border-width of the button + * + * @param {color} $border-color + * The border-color of the button + * + * @param {color} $border-color-over + * The border-color of the button when the cursor is over the button + * + * @param {color} $border-color-focus + * The border-color of the button when focused + * + * @param {color} $border-color-pressed + * The border-color of the button when pressed + * + * @param {color} $border-color-disabled + * The border-color of the button when disabled + * + * @param {number} $padding + * The amount of padding inside the border of the button on all sides + * + * @param {number} $text-padding + * The amount of horizontal space to add to the left and right of the button text + * + * @param {color} $background-color + * The background-color of the button + * + * @param {color} $background-color-over + * The background-color of the button when the cursor is over the button + * + * @param {color} $background-color-focus + * The background-color of the button when focused + * + * @param {color} $background-color-pressed + * The background-color of the button when pressed + * + * @param {color} $background-color-disabled + * The background-color of the button when disabled + * + * @param {string/list} $background-gradient + * The background-gradient for the button. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-over + * The background-gradient to use when the cursor is over the button. Can be either the + * name of a predefined gradient or a list of color stops. Used as the `$type` parameter + * for {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-focus + * The background-gradient to use when the the button is focused. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-pressed + * The background-gradient to use when the the button is pressed. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-disabled + * The background-gradient to use when the the button is disabled. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {color} $color + * The text color of the button + * + * @param {color} $color-over + * The text color of the button when the cursor is over the button + * + * @param {color} $color-focus + * The text color of the button when the button is focused + * + * @param {color} $color-pressed + * The text color of the button when the button is pressed + * + * @param {color} $color-disabled + * The text color of the button when the button is disabled + * + * @param {number} $font-size + * The font-size of the button + * + * @param {number} $font-size-over + * The font-size of the button when the cursor is over the button + * + * @param {number} $font-size-focus + * The font-size of the button when the button is focused + * + * @param {number} $font-size-pressed + * The font-size of the button when the button is pressed + * + * @param {number} $font-size-disabled + * The font-size of the button when the button is disabled + * + * @param {string} $font-weight + * The font-weight of the button + * + * @param {string} $font-weight-over + * The font-weight of the button when the cursor is over the button + * + * @param {string} $font-weight-focus + * The font-weight of the button when the button is focused + * + * @param {string} $font-weight-pressed + * The font-weight of the button when the button is pressed + * + * @param {string} $font-weight-disabled + * The font-weight of the button when the button is disabled + * + * @param {string} $font-family + * The font-family of the button + * + * @param {string} $font-family-over + * The font-family of the button when the cursor is over the button + * + * @param {string} $font-family-focus + * The font-family of the button when the button is focused + * + * @param {string} $font-family-pressed + * The font-family of the button when the button is pressed + * + * @param {string} $font-family-disabled + * The font-family of the button when the button is disabled + * + * @param {number} $icon-size + * The size of the button icon + * + * @param {color} $glyph-color + * The color of the button's {@link #glyph} icon + * + * @param {number} [$glyph-opacity=1] + * The opacity of the button's {@link #glyph} icon + * + * @param {number} $arrow-width + * The width of the button's {@link #cfg-menu} arrow + * + * @param {number} $arrow-height + * The height of the button's {@link #cfg-menu} arrow + * + * @param {number} $split-width + * The width of a {@link Ext.button.Split Split Button}'s arrow + * + * @param {number} $split-height + * The height of a {@link Ext.button.Split Split Button}'s arrow + * + * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows] + * True to include the UI name in the file name of the {@link #cfg-menu} + * arrow icon. Set this to false to share the same arrow bewteen multiple UIs. + * + * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows] + * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s + * arrow icon. Set this to false to share the same arrow bewteen multiple UIs. + * + * @param {boolean} [$include-split-noline-arrows=false] + * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s + * arrow icon. Used for hiding the split line when toolbar buttons are in their default + * state. + * + * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows] + * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor + * is over the button. The over icon file name will have a "-o" suffix + * + * @param {number} [$opacity-disabled=1] + * The opacity of the button when it is disabled + * + * @param {number} [$inner-opacity-disabled=1] + * The opacity of the button's text and icon elements when when the button is disabled + * + * @member Ext.button.Button + */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mc { + background-image: url(images/btn/btn-default-small-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-small { + background-image: url(images/btn/btn-default-small-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-small { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-small-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tr, +.x-btn-default-small-br, +.x-btn-default-small-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl, +.x-btn-default-small-bl, +.x-btn-default-small-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl, +.x-btn-default-small-bl, +.x-btn-default-small-tr, +.x-btn-default-small-br, +.x-btn-default-small-tc, +.x-btn-default-small-bc, +.x-btn-default-small-ml, +.x-btn-default-small-mr { + zoom: 1; + background-image: url(images/btn/btn-default-small-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-ml, +.x-btn-default-small-mr { + zoom: 1; + background-image: url(images/btn/btn-default-small-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-small-tl, +.x-strict .x-ie7 .x-btn-default-small-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 4px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-glyph { + font-size: 16px; + line-height: 16px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-small .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-button, +.x-btn-default-small-noicon .x-btn-button { + height: 16px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-inner, +.x-btn-default-small-noicon .x-btn-inner { + line-height: 16px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-inner { + width: 16px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-icon-el { + width: 16px; + height: 16px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-button { + height: 16px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-inner { + line-height: 16px; + padding-left: 20px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-icon-el { + width: 16px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el { + height: 16px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-button { + height: 16px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-inner { + line-height: 16px; + padding-right: 20px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-icon-el { + width: 16px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el { + height: 16px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-top .x-btn-inner { + padding-top: 20px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-top .x-btn-icon-el { + height: 16px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-bottom .x-btn-inner { + padding-bottom: 20px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-bottom .x-btn-icon-el { + height: 16px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active, +.x-btn-default-small-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-tl, +.x-btn-default-small-over .x-frame-bl, +.x-btn-default-small-over .x-frame-tr, +.x-btn-default-small-over .x-frame-br, +.x-btn-default-small-over .x-frame-tc, +.x-btn-default-small-over .x-frame-bc { + background-image: url(images/btn/btn-default-small-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-ml, +.x-btn-default-small-over .x-frame-mr { + background-image: url(images/btn/btn-default-small-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-small-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-tl, +.x-btn-default-small-focus .x-frame-bl, +.x-btn-default-small-focus .x-frame-tr, +.x-btn-default-small-focus .x-frame-br, +.x-btn-default-small-focus .x-frame-tc, +.x-btn-default-small-focus .x-frame-bc { + background-image: url(images/btn/btn-default-small-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-ml, +.x-btn-default-small-focus .x-frame-mr { + background-image: url(images/btn/btn-default-small-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-small-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-tl, +.x-btn-default-small-menu-active .x-frame-bl, +.x-btn-default-small-menu-active .x-frame-tr, +.x-btn-default-small-menu-active .x-frame-br, +.x-btn-default-small-menu-active .x-frame-tc, +.x-btn-default-small-menu-active .x-frame-bc, +.x-btn-default-small-pressed .x-frame-tl, +.x-btn-default-small-pressed .x-frame-bl, +.x-btn-default-small-pressed .x-frame-tr, +.x-btn-default-small-pressed .x-frame-br, +.x-btn-default-small-pressed .x-frame-tc, +.x-btn-default-small-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-small-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-ml, +.x-btn-default-small-menu-active .x-frame-mr, +.x-btn-default-small-pressed .x-frame-ml, +.x-btn-default-small-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-small-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-mc, +.x-btn-default-small-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-small-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-tl, +.x-btn-default-small-disabled .x-frame-bl, +.x-btn-default-small-disabled .x-frame-tr, +.x-btn-default-small-disabled .x-frame-br, +.x-btn-default-small-disabled .x-frame-tc, +.x-btn-default-small-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-small-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-ml, +.x-btn-default-small-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-small-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-small-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-over { + background-image: url(images/btn/btn-default-small-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-focus { + background-image: url(images/btn/btn-default-small-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-menu-active, +.x-nlg .x-btn-default-small-pressed { + background-image: url(images/btn/btn-default-small-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-disabled { + background-image: url(images/btn/btn-default-small-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-small { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-btn-inner, +.x-btn-default-small-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mc { + background-image: url(images/btn/btn-default-medium-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-medium { + background-image: url(images/btn/btn-default-medium-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-medium { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-medium-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tr, +.x-btn-default-medium-br, +.x-btn-default-medium-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl, +.x-btn-default-medium-bl, +.x-btn-default-medium-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl, +.x-btn-default-medium-bl, +.x-btn-default-medium-tr, +.x-btn-default-medium-br, +.x-btn-default-medium-tc, +.x-btn-default-medium-bc, +.x-btn-default-medium-ml, +.x-btn-default-medium-mr { + zoom: 1; + background-image: url(images/btn/btn-default-medium-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-ml, +.x-btn-default-medium-mr { + zoom: 1; + background-image: url(images/btn/btn-default-medium-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-medium-tl, +.x-strict .x-ie7 .x-btn-default-medium-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-glyph { + font-size: 24px; + line-height: 24px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-medium .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-button, +.x-btn-default-medium-noicon .x-btn-button { + height: 24px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-inner, +.x-btn-default-medium-noicon .x-btn-inner { + line-height: 24px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-inner { + width: 24px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-icon-el { + width: 24px; + height: 24px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-button { + height: 24px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-inner { + line-height: 24px; + padding-left: 28px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-icon-el { + width: 24px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el { + height: 24px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-button { + height: 24px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-inner { + line-height: 24px; + padding-right: 28px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-icon-el { + width: 24px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el { + height: 24px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-top .x-btn-inner { + padding-top: 28px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-top .x-btn-icon-el { + height: 24px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-bottom .x-btn-inner { + padding-bottom: 28px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-bottom .x-btn-icon-el { + height: 24px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active, +.x-btn-default-medium-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-tl, +.x-btn-default-medium-over .x-frame-bl, +.x-btn-default-medium-over .x-frame-tr, +.x-btn-default-medium-over .x-frame-br, +.x-btn-default-medium-over .x-frame-tc, +.x-btn-default-medium-over .x-frame-bc { + background-image: url(images/btn/btn-default-medium-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-ml, +.x-btn-default-medium-over .x-frame-mr { + background-image: url(images/btn/btn-default-medium-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-medium-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-tl, +.x-btn-default-medium-focus .x-frame-bl, +.x-btn-default-medium-focus .x-frame-tr, +.x-btn-default-medium-focus .x-frame-br, +.x-btn-default-medium-focus .x-frame-tc, +.x-btn-default-medium-focus .x-frame-bc { + background-image: url(images/btn/btn-default-medium-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-ml, +.x-btn-default-medium-focus .x-frame-mr { + background-image: url(images/btn/btn-default-medium-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-medium-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-tl, +.x-btn-default-medium-menu-active .x-frame-bl, +.x-btn-default-medium-menu-active .x-frame-tr, +.x-btn-default-medium-menu-active .x-frame-br, +.x-btn-default-medium-menu-active .x-frame-tc, +.x-btn-default-medium-menu-active .x-frame-bc, +.x-btn-default-medium-pressed .x-frame-tl, +.x-btn-default-medium-pressed .x-frame-bl, +.x-btn-default-medium-pressed .x-frame-tr, +.x-btn-default-medium-pressed .x-frame-br, +.x-btn-default-medium-pressed .x-frame-tc, +.x-btn-default-medium-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-medium-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-ml, +.x-btn-default-medium-menu-active .x-frame-mr, +.x-btn-default-medium-pressed .x-frame-ml, +.x-btn-default-medium-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-medium-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-mc, +.x-btn-default-medium-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-medium-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-tl, +.x-btn-default-medium-disabled .x-frame-bl, +.x-btn-default-medium-disabled .x-frame-tr, +.x-btn-default-medium-disabled .x-frame-br, +.x-btn-default-medium-disabled .x-frame-tc, +.x-btn-default-medium-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-medium-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-ml, +.x-btn-default-medium-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-medium-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-medium-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-over { + background-image: url(images/btn/btn-default-medium-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-focus { + background-image: url(images/btn/btn-default-medium-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-menu-active, +.x-nlg .x-btn-default-medium-pressed { + background-image: url(images/btn/btn-default-medium-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-disabled { + background-image: url(images/btn/btn-default-medium-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-medium { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-btn-inner, +.x-btn-default-medium-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mc { + background-image: url(images/btn/btn-default-large-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-large { + background-image: url(images/btn/btn-default-large-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-large { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-large-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tr, +.x-btn-default-large-br, +.x-btn-default-large-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl, +.x-btn-default-large-bl, +.x-btn-default-large-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl, +.x-btn-default-large-bl, +.x-btn-default-large-tr, +.x-btn-default-large-br, +.x-btn-default-large-tc, +.x-btn-default-large-bc, +.x-btn-default-large-ml, +.x-btn-default-large-mr { + zoom: 1; + background-image: url(images/btn/btn-default-large-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-ml, +.x-btn-default-large-mr { + zoom: 1; + background-image: url(images/btn/btn-default-large-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-large-tl, +.x-strict .x-ie7 .x-btn-default-large-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-glyph { + font-size: 32px; + line-height: 32px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-large .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-button, +.x-btn-default-large-noicon .x-btn-button { + height: 32px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-inner, +.x-btn-default-large-noicon .x-btn-inner { + line-height: 32px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-inner { + width: 32px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-icon-el { + width: 32px; + height: 32px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-button { + height: 32px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-inner { + line-height: 32px; + padding-left: 36px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-icon-el { + width: 32px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el { + height: 32px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-button { + height: 32px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-inner { + line-height: 32px; + padding-right: 36px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-icon-el { + width: 32px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el { + height: 32px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-top .x-btn-inner { + padding-top: 36px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-top .x-btn-icon-el { + height: 32px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-bottom .x-btn-inner { + padding-bottom: 36px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-bottom .x-btn-icon-el { + height: 32px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active, +.x-btn-default-large-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-tl, +.x-btn-default-large-over .x-frame-bl, +.x-btn-default-large-over .x-frame-tr, +.x-btn-default-large-over .x-frame-br, +.x-btn-default-large-over .x-frame-tc, +.x-btn-default-large-over .x-frame-bc { + background-image: url(images/btn/btn-default-large-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-ml, +.x-btn-default-large-over .x-frame-mr { + background-image: url(images/btn/btn-default-large-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-large-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-tl, +.x-btn-default-large-focus .x-frame-bl, +.x-btn-default-large-focus .x-frame-tr, +.x-btn-default-large-focus .x-frame-br, +.x-btn-default-large-focus .x-frame-tc, +.x-btn-default-large-focus .x-frame-bc { + background-image: url(images/btn/btn-default-large-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-ml, +.x-btn-default-large-focus .x-frame-mr { + background-image: url(images/btn/btn-default-large-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-large-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-tl, +.x-btn-default-large-menu-active .x-frame-bl, +.x-btn-default-large-menu-active .x-frame-tr, +.x-btn-default-large-menu-active .x-frame-br, +.x-btn-default-large-menu-active .x-frame-tc, +.x-btn-default-large-menu-active .x-frame-bc, +.x-btn-default-large-pressed .x-frame-tl, +.x-btn-default-large-pressed .x-frame-bl, +.x-btn-default-large-pressed .x-frame-tr, +.x-btn-default-large-pressed .x-frame-br, +.x-btn-default-large-pressed .x-frame-tc, +.x-btn-default-large-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-large-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-ml, +.x-btn-default-large-menu-active .x-frame-mr, +.x-btn-default-large-pressed .x-frame-ml, +.x-btn-default-large-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-large-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-mc, +.x-btn-default-large-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-large-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-tl, +.x-btn-default-large-disabled .x-frame-bl, +.x-btn-default-large-disabled .x-frame-tr, +.x-btn-default-large-disabled .x-frame-br, +.x-btn-default-large-disabled .x-frame-tc, +.x-btn-default-large-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-large-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-ml, +.x-btn-default-large-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-large-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-large-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-over { + background-image: url(images/btn/btn-default-large-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-focus { + background-image: url(images/btn/btn-default-large-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-menu-active, +.x-nlg .x-btn-default-large-pressed { + background-image: url(images/btn/btn-default-large-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-disabled { + background-image: url(images/btn/btn-default-large-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-large { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-btn-inner, +.x-btn-default-large-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-small { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-small-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tr, +.x-btn-default-toolbar-small-br, +.x-btn-default-toolbar-small-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl, +.x-btn-default-toolbar-small-bl, +.x-btn-default-toolbar-small-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl, +.x-btn-default-toolbar-small-bl, +.x-btn-default-toolbar-small-tr, +.x-btn-default-toolbar-small-br, +.x-btn-default-toolbar-small-tc, +.x-btn-default-toolbar-small-bc, +.x-btn-default-toolbar-small-ml, +.x-btn-default-toolbar-small-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-ml, +.x-btn-default-toolbar-small-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-small-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-small-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 4px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-glyph { + font-size: 16px; + line-height: 16px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-button, +.x-btn-default-toolbar-small-noicon .x-btn-button { + height: 16px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-inner, +.x-btn-default-toolbar-small-noicon .x-btn-inner { + line-height: 16px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-inner { + width: 16px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-icon-el { + width: 16px; + height: 16px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-button { + height: 16px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-inner { + line-height: 16px; + padding-left: 20px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el { + width: 16px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el { + height: 16px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-button { + height: 16px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-inner { + line-height: 16px; + padding-right: 20px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el { + width: 16px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el { + height: 16px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-top .x-btn-inner { + padding-top: 20px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el { + height: 16px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner { + padding-bottom: 20px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el { + height: 16px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active, +.x-btn-default-toolbar-small-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-tl, +.x-btn-default-toolbar-small-over .x-frame-bl, +.x-btn-default-toolbar-small-over .x-frame-tr, +.x-btn-default-toolbar-small-over .x-frame-br, +.x-btn-default-toolbar-small-over .x-frame-tc, +.x-btn-default-toolbar-small-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-ml, +.x-btn-default-toolbar-small-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-tl, +.x-btn-default-toolbar-small-focus .x-frame-bl, +.x-btn-default-toolbar-small-focus .x-frame-tr, +.x-btn-default-toolbar-small-focus .x-frame-br, +.x-btn-default-toolbar-small-focus .x-frame-tc, +.x-btn-default-toolbar-small-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-ml, +.x-btn-default-toolbar-small-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-tl, +.x-btn-default-toolbar-small-menu-active .x-frame-bl, +.x-btn-default-toolbar-small-menu-active .x-frame-tr, +.x-btn-default-toolbar-small-menu-active .x-frame-br, +.x-btn-default-toolbar-small-menu-active .x-frame-tc, +.x-btn-default-toolbar-small-menu-active .x-frame-bc, +.x-btn-default-toolbar-small-pressed .x-frame-tl, +.x-btn-default-toolbar-small-pressed .x-frame-bl, +.x-btn-default-toolbar-small-pressed .x-frame-tr, +.x-btn-default-toolbar-small-pressed .x-frame-br, +.x-btn-default-toolbar-small-pressed .x-frame-tc, +.x-btn-default-toolbar-small-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-ml, +.x-btn-default-toolbar-small-menu-active .x-frame-mr, +.x-btn-default-toolbar-small-pressed .x-frame-ml, +.x-btn-default-toolbar-small-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-mc, +.x-btn-default-toolbar-small-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-tl, +.x-btn-default-toolbar-small-disabled .x-frame-bl, +.x-btn-default-toolbar-small-disabled .x-frame-tr, +.x-btn-default-toolbar-small-disabled .x-frame-br, +.x-btn-default-toolbar-small-disabled .x-frame-tc, +.x-btn-default-toolbar-small-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-ml, +.x-btn-default-toolbar-small-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-over { + background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-focus { + background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-menu-active, +.x-nlg .x-btn-default-toolbar-small-pressed { + background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-small { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-medium { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-medium-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tr, +.x-btn-default-toolbar-medium-br, +.x-btn-default-toolbar-medium-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl, +.x-btn-default-toolbar-medium-bl, +.x-btn-default-toolbar-medium-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl, +.x-btn-default-toolbar-medium-bl, +.x-btn-default-toolbar-medium-tr, +.x-btn-default-toolbar-medium-br, +.x-btn-default-toolbar-medium-tc, +.x-btn-default-toolbar-medium-bc, +.x-btn-default-toolbar-medium-ml, +.x-btn-default-toolbar-medium-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-ml, +.x-btn-default-toolbar-medium-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-glyph { + font-size: 24px; + line-height: 24px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-button, +.x-btn-default-toolbar-medium-noicon .x-btn-button { + height: 24px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-inner, +.x-btn-default-toolbar-medium-noicon .x-btn-inner { + line-height: 24px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-inner { + width: 24px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-icon-el { + width: 24px; + height: 24px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-button { + height: 24px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner { + line-height: 24px; + padding-left: 28px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el { + width: 24px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el { + height: 24px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-button { + height: 24px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner { + line-height: 24px; + padding-right: 28px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el { + width: 24px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el { + height: 24px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner { + padding-top: 28px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el { + height: 24px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner { + padding-bottom: 28px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el { + height: 24px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active, +.x-btn-default-toolbar-medium-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-tl, +.x-btn-default-toolbar-medium-over .x-frame-bl, +.x-btn-default-toolbar-medium-over .x-frame-tr, +.x-btn-default-toolbar-medium-over .x-frame-br, +.x-btn-default-toolbar-medium-over .x-frame-tc, +.x-btn-default-toolbar-medium-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-ml, +.x-btn-default-toolbar-medium-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-tl, +.x-btn-default-toolbar-medium-focus .x-frame-bl, +.x-btn-default-toolbar-medium-focus .x-frame-tr, +.x-btn-default-toolbar-medium-focus .x-frame-br, +.x-btn-default-toolbar-medium-focus .x-frame-tc, +.x-btn-default-toolbar-medium-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-ml, +.x-btn-default-toolbar-medium-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-tl, +.x-btn-default-toolbar-medium-menu-active .x-frame-bl, +.x-btn-default-toolbar-medium-menu-active .x-frame-tr, +.x-btn-default-toolbar-medium-menu-active .x-frame-br, +.x-btn-default-toolbar-medium-menu-active .x-frame-tc, +.x-btn-default-toolbar-medium-menu-active .x-frame-bc, +.x-btn-default-toolbar-medium-pressed .x-frame-tl, +.x-btn-default-toolbar-medium-pressed .x-frame-bl, +.x-btn-default-toolbar-medium-pressed .x-frame-tr, +.x-btn-default-toolbar-medium-pressed .x-frame-br, +.x-btn-default-toolbar-medium-pressed .x-frame-tc, +.x-btn-default-toolbar-medium-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-ml, +.x-btn-default-toolbar-medium-menu-active .x-frame-mr, +.x-btn-default-toolbar-medium-pressed .x-frame-ml, +.x-btn-default-toolbar-medium-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-mc, +.x-btn-default-toolbar-medium-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-tl, +.x-btn-default-toolbar-medium-disabled .x-frame-bl, +.x-btn-default-toolbar-medium-disabled .x-frame-tr, +.x-btn-default-toolbar-medium-disabled .x-frame-br, +.x-btn-default-toolbar-medium-disabled .x-frame-tc, +.x-btn-default-toolbar-medium-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-ml, +.x-btn-default-toolbar-medium-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-over { + background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-focus { + background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-menu-active, +.x-nlg .x-btn-default-toolbar-medium-pressed { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-medium { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-large { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-large-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tr, +.x-btn-default-toolbar-large-br, +.x-btn-default-toolbar-large-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl, +.x-btn-default-toolbar-large-bl, +.x-btn-default-toolbar-large-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl, +.x-btn-default-toolbar-large-bl, +.x-btn-default-toolbar-large-tr, +.x-btn-default-toolbar-large-br, +.x-btn-default-toolbar-large-tc, +.x-btn-default-toolbar-large-bc, +.x-btn-default-toolbar-large-ml, +.x-btn-default-toolbar-large-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-ml, +.x-btn-default-toolbar-large-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-large-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-large-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow-right { + padding-right: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-glyph { + font-size: 32px; + line-height: 32px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-button, +.x-btn-default-toolbar-large-noicon .x-btn-button { + height: 32px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-inner, +.x-btn-default-toolbar-large-noicon .x-btn-inner { + line-height: 32px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-inner { + width: 32px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-icon-el { + width: 32px; + height: 32px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-button { + height: 32px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-inner { + line-height: 32px; + padding-left: 36px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el { + width: 32px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el { + height: 32px; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-button { + height: 32px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-inner { + line-height: 32px; + padding-right: 36px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el { + width: 32px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el { + height: 32px; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-top .x-btn-inner { + padding-top: 36px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el { + height: 32px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner { + padding-bottom: 36px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el { + height: 32px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active, +.x-btn-default-toolbar-large-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-tl, +.x-btn-default-toolbar-large-over .x-frame-bl, +.x-btn-default-toolbar-large-over .x-frame-tr, +.x-btn-default-toolbar-large-over .x-frame-br, +.x-btn-default-toolbar-large-over .x-frame-tc, +.x-btn-default-toolbar-large-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-ml, +.x-btn-default-toolbar-large-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-tl, +.x-btn-default-toolbar-large-focus .x-frame-bl, +.x-btn-default-toolbar-large-focus .x-frame-tr, +.x-btn-default-toolbar-large-focus .x-frame-br, +.x-btn-default-toolbar-large-focus .x-frame-tc, +.x-btn-default-toolbar-large-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-ml, +.x-btn-default-toolbar-large-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-tl, +.x-btn-default-toolbar-large-menu-active .x-frame-bl, +.x-btn-default-toolbar-large-menu-active .x-frame-tr, +.x-btn-default-toolbar-large-menu-active .x-frame-br, +.x-btn-default-toolbar-large-menu-active .x-frame-tc, +.x-btn-default-toolbar-large-menu-active .x-frame-bc, +.x-btn-default-toolbar-large-pressed .x-frame-tl, +.x-btn-default-toolbar-large-pressed .x-frame-bl, +.x-btn-default-toolbar-large-pressed .x-frame-tr, +.x-btn-default-toolbar-large-pressed .x-frame-br, +.x-btn-default-toolbar-large-pressed .x-frame-tc, +.x-btn-default-toolbar-large-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-ml, +.x-btn-default-toolbar-large-menu-active .x-frame-mr, +.x-btn-default-toolbar-large-pressed .x-frame-ml, +.x-btn-default-toolbar-large-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-mc, +.x-btn-default-toolbar-large-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-tl, +.x-btn-default-toolbar-large-disabled .x-frame-bl, +.x-btn-default-toolbar-large-disabled .x-frame-tr, +.x-btn-default-toolbar-large-disabled .x-frame-br, +.x-btn-default-toolbar-large-disabled .x-frame-tc, +.x-btn-default-toolbar-large-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-ml, +.x-btn-default-toolbar-large-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-over { + background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-focus { + background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-menu-active, +.x-nlg .x-btn-default-toolbar-large-pressed { + background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-large { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-left .x-btn-icon-el { + background-position: left center; +} + +/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-right .x-btn-icon-el { + background-position: right center; +} + +/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-top .x-btn-icon-el { + background-position: center top; +} + +/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-bottom .x-btn-icon-el { + background-position: center bottom; +} + +/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow-right { + background-position: right center; +} + +/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow-bottom { + background-position: center bottom; +} + +/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow { + background-repeat: no-repeat; +} + +/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split { + display: block; + background-repeat: no-repeat; +} + +/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split-right { + background-position: right center; +} + +/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split-bottom { + background-position: center bottom; +} + +/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-cycle-fixed-width .x-btn-inner { + text-align: inherit; +} + +/** + * Creates a visual theme for a Toolbar. + * @param {String} $ui + * The name of the UI + * + * @param {color} [$background-color=$toolbar-background-color] + * The background color of the toolbar + * + * @param {string/list} [$background-gradient=$toolbar-background-gradient] + * The background gradient of the toolbar + * + * @param {color} [$border-color=$toolbar-border-color] + * The border color of the toolbar + * + * @param {number} [$border-width=$toolbar-border-width] + * The border-width of the toolbar + * + * @param {string} [$scroller-cursor=$toolbar-scroller-cursor] + * The cursor of Toolbar scrollers + * + * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled] + * The cursor of disabled Toolbar scrollers + * + * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled] + * The opacity of disabled Toolbar scrollers + * + * @param {string} [$tool-background-image=$toolbar-tool-background-image] + * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar + * + * @member Ext.toolbar.Toolbar + */ +/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar { + font-size: 11px; + border-style: solid; + padding: 2px 0 2px 2px; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-item { + margin: 0 2px 0 0; +} + +/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-text { + margin: 0 6px 0 4px; + color: #4c4c4c; + line-height: 16px; + font-family: tahoma, arial, verdana, sans-serif; + font-size: 11px; + font-weight: normal; +} + +/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-separator-horizontal { + margin: 0 2px 0 0; + height: 14px; + border-style: solid; + border-width: 0 1px; + border-left-color: #98c8ff; + border-right-color: white; +} + +/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-footer { + background: transparent; + border: 0; + margin: 3px 0 0; + padding: 2px 0 2px 6px; +} +/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-footer .x-toolbar-item { + margin: 0 6px 0 0; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-spacer { + width: 2px; +} + +/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-more-icon { + background-image: url(images/toolbar/more.gif) !important; + background-position: center center !important; + background-repeat: no-repeat; +} + +/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default { + border-color: #99bce8; + border-width: 1px; + background-image: none; + background-color: #d3e1f1; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1)); + background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: linear-gradient(top, #dfe9f5, #d3e1f1); +} +/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default .x-box-scroller { + cursor: pointer; +} +/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default .x-box-scroller-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + cursor: default; +} + +/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-nlg .x-toolbar-default { + background-image: url(images/toolbar/toolbar-default-bg.gif) !important; + background-repeat: repeat-x; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-toolbar-default:after { + display: none; + content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-left { + background-image: url(images/toolbar/scroll-left.gif); + background-position: -14px 0; + width: 14px; + height: 22px; + border-style: solid; + border-color: #8db2e3; + border-width: 0 0 1px; + margin-top: 0; +} + +/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-left-hover { + background-position: 0 0; +} + +/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-right { + background-image: url(images/toolbar/scroll-right.gif); + width: 14px; + height: 22px; + border-style: solid; + border-color: #8db2e3; + border-width: 0 0 1px; + margin-top: 0; +} + +/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-right-hover { + background-position: -14px 0; +} + +/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar .x-box-menu-after { + margin: 0 2px 0 2px; +} + +/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical { + padding: 2px 2px 0 2px; +} +/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-item { + margin: 0 0 2px 0; +} +/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-text { + margin: 4px 0 6px 0; +} +/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-separator-vertical { + margin: 0 5px 2px; + border-style: solid none; + border-width: 1px 0; + border-top-color: #98c8ff; + border-bottom-color: white; +} +/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-box-menu-after, +.x-toolbar-vertical .x-rtl.x-box-menu-after { + margin: 2px 0 2px 0; + display: block; + float: none; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */ +.x-header-draggable .x-header-body, +.x-header-ghost { + cursor: move; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */ +.x-header-text { + white-space: nowrap; +} + +/** + * Creates a visual theme for a Panel + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$panel-border-color] + * The border-color of the Panel + * + * @param {number} [$ui-border-radius=$panel-border-radius] + * The border-radius of the Panel + * + * @param {number} [$ui-border-width=$panel-border-width] + * The border-width of the Panel + * + * @param {number} [$ui-padding=$panel-padding] + * The padding of the Panel + * + * @param {color} [$ui-header-color=$panel-header-color] + * The text color of the Header + * + * @param {string} [$ui-header-font-family=$panel-header-font-family] + * The font-family of the Header + * + * @param {number} [$ui-header-font-size=$panel-header-font-size] + * The font-size of the Header + * + * @param {string} [$ui-header-font-weight=$panel-header-font-weight] + * The font-weight of the Header + * + * @param {number} [$ui-header-line-height=$panel-header-line-height] + * The line-height of the Header + * + * @param {color} [$ui-header-border-color=$panel-header-border-color] + * The border-color of the Header + * + * @param {number} [$ui-header-border-width=$panel-header-border-width] + * The border-width of the Header + * + * @param {string} [$ui-header-border-style=$panel-header-border-style] + * The border-style of the Header + * + * @param {color} [$ui-header-background-color=$panel-header-background-color] + * The background-color of the Header + * + * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient] + * The background-gradient of the Header. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color] + * The inner border-color of the Header + * + * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width] + * The inner border-width of the Header + * + * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding] + * The padding of the Header's text element + * + * @param {string} [$ui-header-text-transform=$panel-header-text-transform] + * The text-transform of the Header + * + * @param {number/list} [$ui-header-padding=$panel-header-padding] + * The padding of the Header + * + * @param {number} [$ui-header-icon-width=$panel-header-icon-width] + * The width of the Header icon + * + * @param {number} [$ui-header-icon-height=$panel-header-icon-height] + * The height of the Header icon + * + * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing] + * The space between the Header icon and text + * + * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position] + * The background-position of the Header icon + * + * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color] + * The color of the Header glyph icon + * + * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity] + * The opacity of the Header glyph icon + * + * @param {number} [$ui-tool-spacing=$panel-tool-spacing] + * The space between the Panel {@link Ext.panel.Tool Tools} + * + * @param {string} [$ui-tool-background-image=$panel-tool-background-image] + * The background sprite to use for Panel {@link Ext.panel.Tool Tools} + * + * @param {color} [$ui-body-color=$panel-body-color] + * The color of text inside the Panel body + * + * @param {color} [$ui-body-border-color=$panel-body-border-color] + * The border-color of the Panel body + * + * @param {number} [$ui-body-border-width=$panel-body-border-width] + * The border-width of the Panel body + * + * @param {string} [$ui-body-border-style=$panel-body-border-style] + * The border-style of the Panel body + * + * @param {color} [$ui-body-background-color=$panel-body-background-color] + * The background-color of the Panel body + * + * @param {number} [$ui-body-font-size=$panel-body-font-size] + * The font-size of the Panel body + * + * @param {string} [$ui-body-font-weight=$panel-body-font-weight] + * The font-weight of the Panel body + * + * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top] + * The direction to strech the background-gradient of top docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom] + * The direction to strech the background-gradient of bottom docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right] + * The direction to strech the background-gradient of right docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left] + * The direction to strech the background-gradient of left docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules] + * True to include neptune style border management rules. + * + * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color] + * The color to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is + * `true`. + * + * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width] + * The width to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is + * `true`. + * + * @member Ext.panel.Panel + */ +/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65); + opacity: 0.65; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default { + border-color: #99bce8; + padding: 0; +} + +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default { + font-size: 11px; + border: 1px solid #99bce8; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal { + padding: 4px 5px 4px 5px; +} + +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal-noborder { + padding: 5px 6px 4px 6px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical-noborder { + padding: 6px 5px 6px 4px; +} + +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-text-container-default { + color: #04408c; + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + line-height: 15px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-body-default { + background: white; + border-color: #99bce8; + color: black; + font-size: 12px; + font-size: normal; + border-width: 1px; + border-style: solid; +} + +/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-top { + background: url(images/panel-header/panel-header-default-top-bg.gif); +} +/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-bottom { + background: url(images/panel-header/panel-header-default-bottom-bg.gif); +} +/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-left { + background: url(images/panel-header/panel-header-default-left-bg.gif) top right; +} +/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-right { + background: url(images/panel-header/panel-header-default-right-bg.gif) top right; +} + +/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-top { + border-bottom-width: 1px !important; +} +/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-right { + border-left-width: 1px !important; +} +/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-bottom { + border-top-width: 1px !important; +} +/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-left { + border-right-width: 1px !important; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-top:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-bottom:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-left:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-right:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-top { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset; +} + +/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-right { + -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset; + box-shadow: #f3f7fb -1px 0 0px 0 inset; +} + +/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-bottom { + -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset; + box-shadow: #f3f7fb 0 -1px 0px 0 inset; +} + +/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-left { + -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 1px 0 0px 0 inset; +} + +/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default .x-panel-header-icon { + width: 16px; + height: 16px; + background-position: center center; +} +/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default .x-panel-header-glyph { + color: #04408c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-ie8m .x-panel-header-default .x-panel-header-glyph { + color: #678ebf; +} + +/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-panel-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-panel-header-icon-after-title { + margin: 0 0 0 2px; +} + +/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} + +/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-resizable .x-panel-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-framed { + border-color: #99bce8; + padding: 4px; +} + +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed { + font-size: 11px; + border: 1px solid #99bce8; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal { + padding: 4px 5px 4px 5px; +} + +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal-noborder { + padding: 5px 6px 4px 6px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical-noborder { + padding: 6px 5px 6px 4px; +} + +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-text-container-default-framed { + color: #04408c; + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + line-height: 15px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-body-default-framed { + background: #dfe9f6; + border-color: #99bce8; + color: black; + font-size: 12px; + font-size: normal; + border-width: 0; + border-style: solid; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: #dfe9f6; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mc { + background-color: #dfe9f6; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-default-framed { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-default-framed-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tr, +.x-panel-default-framed-br, +.x-panel-default-framed-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl, +.x-panel-default-framed-bl, +.x-panel-default-framed-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl, +.x-panel-default-framed-bl, +.x-panel-default-framed-tr, +.x-panel-default-framed-br, +.x-panel-default-framed-tc, +.x-panel-default-framed-bc, +.x-panel-default-framed-ml, +.x-panel-default-framed-mr { + zoom: 1; + background-image: url(images/panel/panel-default-framed-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-ml, +.x-panel-default-framed-mr { + zoom: 1; + background-image: url(images/panel/panel-default-framed-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-default-framed-tl, +.x-strict .x-ie7 .x-panel-default-framed-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-default-framed:after { + display: none; + content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 5px 4px 5px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mc { + background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif); + background-position: 0 top; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-top { + background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-top-frameInfo { + font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tr, +.x-panel-header-default-framed-top-br, +.x-panel-header-default-framed-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl, +.x-panel-header-default-framed-top-bl, +.x-panel-header-default-framed-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl, +.x-panel-header-default-framed-top-bl, +.x-panel-header-default-framed-top-tr, +.x-panel-header-default-framed-top-br, +.x-panel-header-default-framed-top-tc, +.x-panel-header-default-framed-top-bc, +.x-panel-header-default-framed-top-ml, +.x-panel-header-default-framed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-ml, +.x-panel-header-default-framed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mc { + padding: 1px 2px 4px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-top-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 5px 4px 5px 4px; + border-width: 1px 1px 1px 0; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif); + background-position: right 0; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-right { + background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif); + background-position: right 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-right-frameInfo { + font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc { + background-position: right 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bc { + background-position: right -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tr, +.x-panel-header-default-framed-right-br, +.x-panel-header-default-framed-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl, +.x-panel-header-default-framed-right-bl, +.x-panel-header-default-framed-right-ml { + padding-left: 0; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl, +.x-panel-header-default-framed-right-bl, +.x-panel-header-default-framed-right-tr, +.x-panel-header-default-framed-right-br, +.x-panel-header-default-framed-right-tc, +.x-panel-header-default-framed-right-bc, +.x-panel-header-default-framed-right-ml, +.x-panel-header-default-framed-right-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc, +.x-panel-header-default-framed-right-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif); + background-repeat: repeat-x; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mc { + padding: 2px 1px 2px 4px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-right-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-right:after { + display: none; + content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mc { + background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif); + background-position: 0 bottom; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-bottom { + background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif); + background-position: 0 bottom; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-bottom-frameInfo { + font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-ml { + background-position: 0 bottom; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mr { + background-position: right bottom; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tr, +.x-panel-header-default-framed-bottom-br, +.x-panel-header-default-framed-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl, +.x-panel-header-default-framed-bottom-bl, +.x-panel-header-default-framed-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl, +.x-panel-header-default-framed-bottom-bl, +.x-panel-header-default-framed-bottom-tr, +.x-panel-header-default-framed-bottom-br, +.x-panel-header-default-framed-bottom-tc, +.x-panel-header-default-framed-bottom-bc, +.x-panel-header-default-framed-bottom-ml, +.x-panel-header-default-framed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-ml, +.x-panel-header-default-framed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mc { + padding: 4px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-bottom:after { + display: none; + content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px 0 1px 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif); + background-position: left 0; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-left { + background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif); + background-position: left 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-left-frameInfo { + font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc { + background-position: left 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bc { + background-position: left -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tr, +.x-panel-header-default-framed-left-br, +.x-panel-header-default-framed-left-mr { + padding-right: 0; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl, +.x-panel-header-default-framed-left-bl, +.x-panel-header-default-framed-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl, +.x-panel-header-default-framed-left-bl, +.x-panel-header-default-framed-left-tr, +.x-panel-header-default-framed-left-br, +.x-panel-header-default-framed-left-tc, +.x-panel-header-default-framed-left-bc, +.x-panel-header-default-framed-left-ml, +.x-panel-header-default-framed-left-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc, +.x-panel-header-default-framed-left-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif); + background-repeat: repeat-x; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mc { + padding: 2px 4px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-left-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-left:after { + display: none; + content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif); + background-position: 0 top; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-top { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tr, +.x-panel-header-default-framed-collapsed-top-br, +.x-panel-header-default-framed-collapsed-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl, +.x-panel-header-default-framed-collapsed-top-bl, +.x-panel-header-default-framed-collapsed-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl, +.x-panel-header-default-framed-collapsed-top-bl, +.x-panel-header-default-framed-collapsed-top-tr, +.x-panel-header-default-framed-collapsed-top-br, +.x-panel-header-default-framed-collapsed-top-tc, +.x-panel-header-default-framed-collapsed-top-bc, +.x-panel-header-default-framed-collapsed-top-ml, +.x-panel-header-default-framed-collapsed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-ml, +.x-panel-header-default-framed-collapsed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mc { + padding: 1px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif); + background-position: right 0; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-right { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif); + background-position: right 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo { + font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc { + background-position: right 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bc { + background-position: right -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tr, +.x-panel-header-default-framed-collapsed-right-br, +.x-panel-header-default-framed-collapsed-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl, +.x-panel-header-default-framed-collapsed-right-bl, +.x-panel-header-default-framed-collapsed-right-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl, +.x-panel-header-default-framed-collapsed-right-bl, +.x-panel-header-default-framed-collapsed-right-tr, +.x-panel-header-default-framed-collapsed-right-br, +.x-panel-header-default-framed-collapsed-right-tc, +.x-panel-header-default-framed-collapsed-right-bc, +.x-panel-header-default-framed-collapsed-right-ml, +.x-panel-header-default-framed-collapsed-right-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc, +.x-panel-header-default-framed-collapsed-right-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif); + background-repeat: repeat-x; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mc { + padding: 2px 1px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-right:after { + display: none; + content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif); + background-position: 0 bottom; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-bottom { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif); + background-position: 0 bottom; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-ml { + background-position: 0 bottom; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mr { + background-position: right bottom; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tr, +.x-panel-header-default-framed-collapsed-bottom-br, +.x-panel-header-default-framed-collapsed-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl, +.x-panel-header-default-framed-collapsed-bottom-bl, +.x-panel-header-default-framed-collapsed-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl, +.x-panel-header-default-framed-collapsed-bottom-bl, +.x-panel-header-default-framed-collapsed-bottom-tr, +.x-panel-header-default-framed-collapsed-bottom-br, +.x-panel-header-default-framed-collapsed-bottom-tc, +.x-panel-header-default-framed-collapsed-bottom-bc, +.x-panel-header-default-framed-collapsed-bottom-ml, +.x-panel-header-default-framed-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-ml, +.x-panel-header-default-framed-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mc { + padding: 1px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-bottom:after { + display: none; + content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif); + background-position: left 0; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-left { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif); + background-position: left 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo { + font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc { + background-position: left 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bc { + background-position: left -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tr, +.x-panel-header-default-framed-collapsed-left-br, +.x-panel-header-default-framed-collapsed-left-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl, +.x-panel-header-default-framed-collapsed-left-bl, +.x-panel-header-default-framed-collapsed-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl, +.x-panel-header-default-framed-collapsed-left-bl, +.x-panel-header-default-framed-collapsed-left-tr, +.x-panel-header-default-framed-collapsed-left-br, +.x-panel-header-default-framed-collapsed-left-tc, +.x-panel-header-default-framed-collapsed-left-bc, +.x-panel-header-default-framed-collapsed-left-ml, +.x-panel-header-default-framed-collapsed-left-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc, +.x-panel-header-default-framed-collapsed-left-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif); + background-repeat: repeat-x; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mc { + padding: 2px 1px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-left:after { + display: none; + content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-top { + border-bottom-width: 1px !important; +} +/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-right { + border-left-width: 1px !important; +} +/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-bottom { + border-top-width: 1px !important; +} +/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-left { + border-right-width: 1px !important; +} + +/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-top { + border-bottom-width: 0 !important; +} +/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-right { + border-left-width: 0 !important; +} +/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-bottom { + border-top-width: 0 !important; +} +/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-left { + border-right-width: 0 !important; +} + +/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-top { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-right { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; +} + +/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-bottom { + -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-left { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed .x-panel-header-icon { + width: 16px; + height: 16px; + background-position: center center; +} +/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed .x-panel-header-glyph { + color: #04408c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph { + color: #678ebf; +} + +/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title { + margin: 0 0 0 2px; +} + +/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} + +/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-framed-resizable .x-panel-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/** + * Creates a visual theme for a Ext.tip.Tip + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$tip-border-color] + * The border-color of the Tip + * + * @param {number} [$ui-border-width=$tip-border-width] + * The border-width of the Tip + * + * @param {number} [$ui-border-radius=$tip-border-radius] + * The border-radius of the Tip + * + * @param {color} [$ui-background-color=$tip-background-color] + * The background-color of the Tip + * + * @param {string/list} [$ui-background-gradient=$tip-background-gradient] + * The background-gradient of the Tip. Can be either the name of a predefined gradient or a + * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-tool-spacing=$tip-tool-spacing] + * The space between {@link Ext.panel.Tool Tools} in the header + * + * @param {string} [$ui-tool-background-image=$tip-tool-background-image] + * The sprite to use for the header {@link Ext.panel.Tool Tools} + * + * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding] + * The padding of the Tip header's body element + * + * @param {color} [$ui-header-color=$tip-header-color] + * The text color of the Tip header + * + * @param {number} [$ui-header-font-size=$tip-header-font-size] + * The font-size of the Tip header + * + * @param {string} [$ui-header-font-weight=$tip-header-font-weight] + * The font-weight of the Tip header + * + * @param {number/list} [$ui-body-padding=$tip-body-padding] + * The padding of the Tip body + * + * @param {color} [$ui-body-color=$tip-body-color] + * The text color of the Tip body + * + * @param {number} [$ui-body-font-size=$tip-body-font-size] + * The font-size of the Tip body + * + * @param {string} [$ui-body-font-weight=$tip-body-font-weight] + * The font-weight of the Tip body + * + * @param {color} [$ui-body-link-color=$tip-body-link-color] + * The text color of any anchor tags inside the Tip body + * + * @param {number} [$ui-inner-border-width=0] + * The inner border-width of the Tip + * + * @param {color} [$ui-inner-border-color=#fff] + * The inner border-color of the Tip + * + * @member Ext.tip.Tip + */ +/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor { + position: absolute; + overflow: hidden; + height: 10px; + width: 10px; + border-style: solid; + border-width: 5px; + border-color: #8eaace; + zoom: 1; +} +/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-content-box .x-tip-anchor { + height: 0; + width: 0; +} + +/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-top { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + _border-top-color: pink; + _border-left-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-bottom { + border-bottom-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + _border-bottom-color: pink; + _border-left-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-left { + border-top-color: transparent; + border-bottom-color: transparent; + border-left-color: transparent; + _border-top-color: pink; + _border-bottom-color: pink; + _border-left-color: pink; + _filter: chroma(color=pink); +} + +/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-right { + border-top-color: transparent; + border-bottom-color: transparent; + border-right-color: transparent; + _border-top-color: pink; + _border-bottom-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-color: #e9f2ff; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mc { + background-color: #e9f2ff; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tip-default { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tip-default-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tr, +.x-tip-default-br, +.x-tip-default-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl, +.x-tip-default-bl, +.x-tip-default-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl, +.x-tip-default-bl, +.x-tip-default-tr, +.x-tip-default-br, +.x-tip-default-tc, +.x-tip-default-bc, +.x-tip-default-ml, +.x-tip-default-mr { + zoom: 1; + background-image: url(images/tip/tip-default-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-ml, +.x-tip-default-mr { + zoom: 1; + background-image: url(images/tip/tip-default-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tip-default-tl, +.x-strict .x-ie7 .x-tip-default-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tip-default:after { + display: none; + content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-default { + border-color: #8eaace; +} +/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-default .x-tool-img { + background-color: #e9f2ff; +} + +/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-tool-after-title { + margin: 0 0 0 6px; +} +/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-tool-before-title { + margin: 0 6px 0 0; +} + +/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-body-default { + padding: 3px 3px 0 3px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-text-container-default { + color: #444444; + font-size: 11px; + font-weight: bold; +} + +/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-default { + padding: 3px; + color: #444444; + font-size: 11px; + font-weight: normal; +} +/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-default a { + color: #2a2a2a; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: white; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mc { + background-color: white; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tip-form-invalid { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tip-form-invalid-frameInfo { + font-family: th-5-5-5-5-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tr, +.x-tip-form-invalid-br, +.x-tip-form-invalid-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl, +.x-tip-form-invalid-bl, +.x-tip-form-invalid-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl, +.x-tip-form-invalid-bl, +.x-tip-form-invalid-tr, +.x-tip-form-invalid-br, +.x-tip-form-invalid-tc, +.x-tip-form-invalid-bc, +.x-tip-form-invalid-ml, +.x-tip-form-invalid-mr { + zoom: 1; + background-image: url(images/tip/tip-form-invalid-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-ml, +.x-tip-form-invalid-mr { + zoom: 1; + background-image: url(images/tip/tip-form-invalid-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tip-form-invalid-tl, +.x-strict .x-ie7 .x-tip-form-invalid-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tip-form-invalid:after { + display: none; + content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-form-invalid { + border-color: #a1311f; + -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; + -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; + box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; +} +/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-form-invalid .x-tool-img { + background-color: white; +} + +/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-tool-after-title { + margin: 0 0 0 6px; +} +/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-tool-before-title { + margin: 0 6px 0 0; +} + +/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-body-form-invalid { + padding: 3px 3px 0 3px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-text-container-form-invalid { + color: #444444; + font-size: 11px; + font-weight: bold; +} + +/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid { + padding: 3px 3px 3px 22px; + color: #444444; + font-size: 11px; + font-weight: normal; +} +/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid a { + color: #2a2a2a; +} + +/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid { + background: 1px 1px no-repeat; + background-image: url(images/form/exclamation.gif); +} +/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid li { + margin-bottom: 4px; +} +/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid li.last { + margin-bottom: 0; +} + +/** + * Creates a visual theme for a ButtonGroup. + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-background-color=$btn-group-background-color] + * The background-color of the button group + * + * @param {color} [$ui-border-color=$btn-group-border-color] + * The border-color of the button group + * + * @param {number} [$ui-border-width=$btn-group-border-width] + * The border-width of the button group + * + * @param {number} [$ui-border-radius=$btn-group-border-radius] + * The border-radius of the button group + * + * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color] + * The inner border-color of the button group + * + * @param {color} [$ui-header-background-color=$btn-group-header-background-color] + * The background-color of the header + * + * @param {string} [$ui-header-font=$btn-group-header-font] + * The font of the header + * + * @param {color} [$ui-header-color=$btn-group-header-color] + * The text color of the header + * + * @param {number} [$ui-header-line-height=$btn-group-header-line-height] + * The line-height of the header + * + * @param {number} [$ui-header-padding=$btn-group-header-padding] + * The padding of the header + * + * @param {number} [$ui-body-padding=$btn-group-padding] + * The padding of the body element + * + * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image] + * Sprite image to use for header {@link Ext.panel.Tool Tools} + * + * @member Ext.container.ButtonGroup + */ +/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-default { + border-color: #b7c8d7; + -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default { + margin: 2px 2px 0 2px; + padding: 1px 0; + line-height: 15px; + background: #c2d8f0; + -moz-border-radius-topleft: 0px; + -webkit-border-top-left-radius: 0px; + border-top-left-radius: 0px; + -moz-border-radius-topright: 0px; + -webkit-border-top-right-radius: 0px; + border-top-right-radius: 0px; +} +/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default .x-tool-img { + background-color: #c2d8f0; +} + +/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-text-container-default { + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 15px; + color: #3e6aaa; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default { + padding: 0 1px; +} +/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default .x-table-layout { + border-spacing: 0; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 1px 1px 1px 1px; + border-width: 1px; + border-style: solid; + background-color: #d0def0; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mc { + background-color: #d0def0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-group-default-framed { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-group-default-framed-frameInfo { + font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl { + background-position: 0 -4px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tr { + background-position: right -6px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bl { + background-position: 0 -8px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-br { + background-position: right -10px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bc { + background-position: 0 -2px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tr, +.x-btn-group-default-framed-br, +.x-btn-group-default-framed-mr { + padding-right: 2px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl, +.x-btn-group-default-framed-bl, +.x-btn-group-default-framed-ml { + padding-left: 2px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tc { + height: 2px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bc { + height: 2px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl, +.x-btn-group-default-framed-bl, +.x-btn-group-default-framed-tr, +.x-btn-group-default-framed-br, +.x-btn-group-default-framed-tc, +.x-btn-group-default-framed-bc, +.x-btn-group-default-framed-ml, +.x-btn-group-default-framed-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-ml, +.x-btn-group-default-framed-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-group-default-framed-tl, +.x-strict .x-ie7 .x-btn-group-default-framed-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-group-default-framed:after { + display: none; + content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 1px 1px 1px 1px; + border-width: 1px; + border-style: solid; + background-color: #d0def0; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mc { + background-color: #d0def0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-group-default-framed-notitle { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-group-default-framed-notitle-frameInfo { + font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl { + background-position: 0 -4px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tr { + background-position: right -6px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bl { + background-position: 0 -8px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-br { + background-position: right -10px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bc { + background-position: 0 -2px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tr, +.x-btn-group-default-framed-notitle-br, +.x-btn-group-default-framed-notitle-mr { + padding-right: 2px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl, +.x-btn-group-default-framed-notitle-bl, +.x-btn-group-default-framed-notitle-ml { + padding-left: 2px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tc { + height: 2px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bc { + height: 2px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl, +.x-btn-group-default-framed-notitle-bl, +.x-btn-group-default-framed-notitle-tr, +.x-btn-group-default-framed-notitle-br, +.x-btn-group-default-framed-notitle-tc, +.x-btn-group-default-framed-notitle-bc, +.x-btn-group-default-framed-notitle-ml, +.x-btn-group-default-framed-notitle-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-ml, +.x-btn-group-default-framed-notitle-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl, +.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-group-default-framed-notitle:after { + display: none; + content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-default-framed { + border-color: #b7c8d7; + -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default-framed { + margin: 2px 2px 0 2px; + padding: 1px 0; + line-height: 15px; + background: #c2d8f0; + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; +} +/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default-framed .x-tool-img { + background-color: #c2d8f0; +} + +/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-text-container-default-framed { + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 15px; + color: #3e6aaa; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default-framed { + padding: 0 1px 0 1px; +} +/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default-framed .x-table-layout { + border-spacing: 0; +} + +/** + * Creates a visual theme for a Window + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$ui-padding=$window-padding] + * The padding of the Window + * + * @param {number} [$ui-border-radius=$window-border-radius] + * The border-radius of the Window + * + * @param {color} [$ui-border-color=$window-border-color] + * The border-color of the Window + * + * @param {number} [$ui-border-width=$window-border-width] + * The border-width of the Window + * + * @param {color} [$ui-inner-border-color=$window-inner-border-color] + * The inner border-color of the Window + * + * @param {number} [$ui-inner-border-width=$window-inner-border-width] + * The inner border-width of the Window + * + * @param {color} [$ui-header-color=$window-header-color] + * The text color of the Header + * + * @param {color} [$ui-header-background-color=$window-header-background-color] + * The background-color of the Header + * + * @param {number/list} [$ui-header-padding=$window-header-padding] + * The padding of the Header + * + * @param {string} [$ui-header-font-family=$window-header-font-family] + * The font-family of the Header + * + * @param {number} [$ui-header-font-size=$window-header-font-size] + * The font-size of the Header + * + * @param {string} [$ui-header-font-weight=$window-header-font-weight] + * The font-weight of the Header + * + * @param {number} [$ui-header-line-height=$window-header-line-height] + * The line-height of the Header + * + * @param {number/list} [$ui-header-text-padding=$window-header-text-padding] + * The padding of the Header's text element + * + * @param {string} [$ui-header-text-transform=$window-header-text-transform] + * The text-transform of the Header + * + * @param {color} [$ui-header-border-color=$ui-border-color] + * The border-color of the Header + * + * @param {number} [$ui-header-border-width=$window-header-border-width] + * The border-width of the Header + * + * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color] + * The inner border-color of the Header + * + * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width] + * The inner border-width of the Header + * + * @param {number} [$ui-header-icon-width=$window-header-icon-width] + * The width of the Header icon + * + * @param {number} [$ui-header-icon-height=$window-header-icon-height] + * The height of the Header icon + * + * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing] + * The space between the Header icon and text + * + * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position] + * The background-position of the Header icon + * + * @param {color} [$ui-header-glyph-color=$window-header-glyph-color] + * The color of the Header glyph icon + * + * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity] + * The opacity of the Header glyph icon + * + * @param {number} [$ui-tool-spacing=$window-tool-spacing] + * The space between the {@link Ext.panel.Tool Tools} + * + * @param {string} [$ui-tool-background-image=$window-tool-background-image] + * The background sprite to use for {@link Ext.panel.Tool Tools} + * + * @param {color} [$ui-body-border-color=$window-body-border-color] + * The border-color of the Window body + * + * @param {color} [$ui-body-background-color=$window-body-background-color] + * The background-color of the Window body + * + * @param {number} [$ui-body-border-width=$window-body-border-width] + * The border-width of the Window body + * + * @param {string} [$ui-body-border-style=$window-body-border-style] + * The border-style of the Window body + * + * @param {color} [$ui-body-color=$window-body-color] + * The color of text inside the Window body + * + * @param {color} [$ui-background-color=$window-background-color] + * The background-color of the Window + * + * @param {boolean} [$ui-force-header-border=$window-force-header-border] + * True to force the window header to have a border on the side facing + * the window body. Overrides dock layout's border management border + * removal rules. + * + * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules] + * True to include neptune style border management rules. + * + * @param {color} [$ui-wrap-border-color=$window-wrap-border-color] + * The color to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$ui-include-border-management-rules` is `true`. + * + * @param {color} [$ui-wrap-border-width=$window-wrap-border-width] + * The width to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$ui-include-border-management-rules` is `true`. + * + * @member Ext.window.Window + */ +/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65); + opacity: 0.65; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-default { + border-color: #a2b1c5; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-default { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-default-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tr, +.x-window-default-br, +.x-window-default-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl, +.x-window-default-bl, +.x-window-default-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl, +.x-window-default-bl, +.x-window-default-tr, +.x-window-default-br, +.x-window-default-tc, +.x-window-default-bc, +.x-window-default-ml, +.x-window-default-mr { + zoom: 1; + background-image: url(images/window/window-default-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-ml, +.x-window-default-mr { + zoom: 1; + background-image: url(images/window/window-default-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-default-tl, +.x-strict .x-ie7 .x-window-default-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-default:after { + display: none; + content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-body-default { + border-color: #99bbe8; + border-width: 1px; + border-style: solid; + background: #dfe8f6; + color: black; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default { + font-size: 11px; + border-color: #a2b1c5; + zoom: 1; + background-color: #ced9e7; +} +/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-tool-img { + background-color: #ced9e7; +} + +/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-window-header-default-vertical .x-window-header-text-container { + background-color: #ced9e7; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7); +} + +/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-text-container-default { + color: #04468c; + font-weight: bold; + line-height: 15px; + font-family: tahoma, arial, verdana, sans-serif; + font-size: 11px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 5px 0 5px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-top-frameInfo { + font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tr, +.x-window-header-default-top-br, +.x-window-header-default-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl, +.x-window-header-default-top-bl, +.x-window-header-default-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl, +.x-window-header-default-top-bl, +.x-window-header-default-top-tr, +.x-window-header-default-top-br, +.x-window-header-default-top-tc, +.x-window-header-default-top-bc, +.x-window-header-default-top-ml, +.x-window-header-default-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-ml, +.x-window-header-default-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mc { + padding: 0px 1px 0 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-top-tl, +.x-strict .x-ie7 .x-window-header-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-top:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 5px 4px 5px 0; + border-width: 1px 1px 1px 0; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-right-frameInfo { + font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tr, +.x-window-header-default-right-br, +.x-window-header-default-right-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl, +.x-window-header-default-right-bl, +.x-window-header-default-right-ml { + padding-left: 0; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl, +.x-window-header-default-right-bl, +.x-window-header-default-right-tr, +.x-window-header-default-right-br, +.x-window-header-default-right-tc, +.x-window-header-default-right-bc, +.x-window-header-default-right-ml, +.x-window-header-default-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-right-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-ml, +.x-window-header-default-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-right-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mc { + padding: 1px 0px 1px 0; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-right-tl, +.x-strict .x-ie7 .x-window-header-default-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-right:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 0 5px 4px 5px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-bottom-frameInfo { + font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tr, +.x-window-header-default-bottom-br, +.x-window-header-default-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl, +.x-window-header-default-bottom-bl, +.x-window-header-default-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl, +.x-window-header-default-bottom-bl, +.x-window-header-default-bottom-tr, +.x-window-header-default-bottom-br, +.x-window-header-default-bottom-tc, +.x-window-header-default-bottom-bc, +.x-window-header-default-bottom-ml, +.x-window-header-default-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-ml, +.x-window-header-default-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mc { + padding: 0 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-bottom-tl, +.x-strict .x-ie7 .x-window-header-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-bottom:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 5px 0 5px 4px; + border-width: 1px 0 1px 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-left-frameInfo { + font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tr, +.x-window-header-default-left-br, +.x-window-header-default-left-mr { + padding-right: 0; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl, +.x-window-header-default-left-bl, +.x-window-header-default-left-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl, +.x-window-header-default-left-bl, +.x-window-header-default-left-tr, +.x-window-header-default-left-br, +.x-window-header-default-left-tc, +.x-window-header-default-left-bc, +.x-window-header-default-left-ml, +.x-window-header-default-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-left-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-ml, +.x-window-header-default-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-left-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mc { + padding: 1px 0 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-left-tl, +.x-strict .x-ie7 .x-window-header-default-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-left:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-top-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tr, +.x-window-header-default-collapsed-top-br, +.x-window-header-default-collapsed-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl, +.x-window-header-default-collapsed-top-bl, +.x-window-header-default-collapsed-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl, +.x-window-header-default-collapsed-top-bl, +.x-window-header-default-collapsed-top-tr, +.x-window-header-default-collapsed-top-br, +.x-window-header-default-collapsed-top-tc, +.x-window-header-default-collapsed-top-bc, +.x-window-header-default-collapsed-top-ml, +.x-window-header-default-collapsed-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-ml, +.x-window-header-default-collapsed-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mc { + padding: 0px 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-top:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-right-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tr, +.x-window-header-default-collapsed-right-br, +.x-window-header-default-collapsed-right-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl, +.x-window-header-default-collapsed-right-bl, +.x-window-header-default-collapsed-right-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl, +.x-window-header-default-collapsed-right-bl, +.x-window-header-default-collapsed-right-tr, +.x-window-header-default-collapsed-right-br, +.x-window-header-default-collapsed-right-tc, +.x-window-header-default-collapsed-right-bc, +.x-window-header-default-collapsed-right-ml, +.x-window-header-default-collapsed-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-ml, +.x-window-header-default-collapsed-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mc { + padding: 1px 0px 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-right:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tr, +.x-window-header-default-collapsed-bottom-br, +.x-window-header-default-collapsed-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl, +.x-window-header-default-collapsed-bottom-bl, +.x-window-header-default-collapsed-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl, +.x-window-header-default-collapsed-bottom-bl, +.x-window-header-default-collapsed-bottom-tr, +.x-window-header-default-collapsed-bottom-br, +.x-window-header-default-collapsed-bottom-tc, +.x-window-header-default-collapsed-bottom-bc, +.x-window-header-default-collapsed-bottom-ml, +.x-window-header-default-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-ml, +.x-window-header-default-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mc { + padding: 0px 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-bottom:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-left-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tr, +.x-window-header-default-collapsed-left-br, +.x-window-header-default-collapsed-left-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl, +.x-window-header-default-collapsed-left-bl, +.x-window-header-default-collapsed-left-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl, +.x-window-header-default-collapsed-left-bl, +.x-window-header-default-collapsed-left-tr, +.x-window-header-default-collapsed-left-br, +.x-window-header-default-collapsed-left-tc, +.x-window-header-default-collapsed-left-bc, +.x-window-header-default-collapsed-left-ml, +.x-window-header-default-collapsed-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-ml, +.x-window-header-default-collapsed-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mc { + padding: 1px 0px 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-left:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-top { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-right { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; +} + +/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-bottom { + -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-left { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-window-header-icon { + width: 16px; + height: 16px; + color: #04468c; + font-size: 16px; + line-height: 16px; + background-position: center center; +} +/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-window-header-glyph { + color: #04468c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-ie8m .x-window-header-default .x-window-header-glyph { + color: #698fb9; +} + +/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-window-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-window-header-icon-after-title { + margin: 0 0 0 2px; +} + +/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} + +/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-default-collapsed .x-window-header { + border-width: 1px !important; +} + +/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-nbr .x-window-default-collapsed .x-window-header { + border-width: 0 !important; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-invalid-under { + padding: 2px 2px 2px 20px; + color: #c0272b; + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 16px; + background: no-repeat 0 2px; + background-image: url(images/form/exclamation.gif); +} + +/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +div.x-lbl-top-err-icon { + margin-bottom: 3px; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-invalid-icon { + width: 16px; + height: 16px; + margin: 0 1px; + background-image: url(images/form/exclamation.gif); + background-repeat: no-repeat; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-item-label { + color: black; + font: normal 12px/14px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} +/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-toolbar-item .x-form-item-label { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} + +/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-autocontainer-form-item, +.x-anchor-form-item, +.x-vbox-form-item, +.x-table-form-item { + margin-bottom: 5px; +} + +/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-ie6 .x-form-form-item td { + border-top-width: 0; +} +/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-ie6 td.x-form-item-pad { + height: 5px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-field { + color: black; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-item, +.x-form-field { + font: normal 12px tahoma, arial, verdana, sans-serif; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field, +.x-form-type-password textarea.x-form-invalid-field, +.x-form-type-password input.x-form-invalid-field, +.x-form-type-number textarea.x-form-invalid-field, +.x-form-type-number input.x-form-invalid-field, +.x-form-type-email textarea.x-form-invalid-field, +.x-form-type-email input.x-form-invalid-field, +.x-form-type-search textarea.x-form-invalid-field, +.x-form-type-search input.x-form-invalid-field, +.x-form-type-tel textarea.x-form-invalid-field, +.x-form-type-tel input.x-form-invalid-field { + background-color: white; + background-image: url(images/grid/invalid_line.gif); + background-repeat: repeat-x; + background-position: bottom; + border-color: #cc3300; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-item-disabled .x-form-item-label, +.x-item-disabled .x-form-field, +.x-item-disabled .x-form-display-field, +.x-item-disabled .x-form-cb-label, +.x-item-disabled .x-form-trigger { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-text { + color: black; + padding: 1px 3px 2px 3px; + background: white repeat-x 0 0; + border-width: 1px; + border-style: solid; + border-color: #b5b8c8; + background-image: url(images/form/text-bg.gif); + height: 22px; + line-height: 17px; +} +/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-field-toolbar .x-form-text { + height: 20px; + line-height: 15px; +} +/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-content-box .x-form-text { + height: 17px; +} +/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-content-box .x-field-toolbar .x-form-text { + height: 15px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-focus { + border-color: #7eadd9; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-empty-field, +textarea.x-form-empty-field { + color: gray; +} + +/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-quirks .x-ie .x-form-text, +.x-ie7m .x-form-text { + margin-top: -1px; + margin-bottom: -1px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */ +.x-form-textarea { + line-height: normal; + height: auto; + background-image: url(images/form/text-bg.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-form-display-field-body { + height: 22px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-toolbar-item .x-form-display-field-body { + height: 20px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-form-display-field { + font: normal 12px/14px tahoma, arial, verdana, sans-serif; + color: black; + margin-top: 4px; +} +/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-toolbar-item .x-form-display-field { + margin-top: 4px; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box .x-window-body { + background-color: #ced9e7; + border-width: 0; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-info, +.x-message-box-warning, +.x-message-box-question, +.x-message-box-error { + background-position: top left; + background-repeat: no-repeat; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-info { + background-image: url(images/shared/icon-info.gif); +} + +/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-warning { + background-image: url(images/shared/icon-warning.gif); +} + +/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-question { + background-image: url(images/shared/icon-question.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-error { + background-image: url(images/shared/icon-error.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-wrap { + height: 22px; +} +/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb-wrap { + height: 20px; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb { + margin-top: 5px; +} +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb { + margin-top: 4px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-checkbox { + width: 13px; + height: 13px; + background: url(images/form/checkbox.gif) no-repeat; +} + +/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-checked .x-form-checkbox { + background-position: 0 -13px; +} + +/* Focused */ +/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-checkbox-focus { + background-position: -13px 0; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-checked .x-form-checkbox-focus { + background-position: -13px -13px; +} + +/* boxLabel */ +/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label { + margin-top: 4px; + font: normal 12px/14px tahoma, arial, verdana, sans-serif; +} +/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb-label { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} + +/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label-before { + margin-right: 4px; +} + +/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label-after { + margin-left: 4px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-checkboxgroup-body { + padding: 0 4px; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-invalid .x-form-checkboxgroup-body { + border: 1px solid #cc3300; + background-image: url(images/grid/invalid_line.gif); + background-repeat: repeat-x; + background-position: bottom; +} + +/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-check-group-alt { + background: #d1ddef; + border-top: 1px dotted #b5b8c8; + border-bottom: 1px dotted #b5b8c8; +} + +/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-check-group-label { + color: black; + padding: 2px; + margin: 0 30px 5px 0; + border-width: 0 0 1px 0; + border-style: solid; + border-color: black; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset { + border: 1px solid #b5b8c8; + padding: 0 10px; + margin: 0 0 10px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie8m .x-fieldset, +.x-quirks .x-ie .x-fieldset { + padding-top: 0; +} +/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie8m .x-fieldset .x-fieldset-body, +.x-quirks .x-ie .x-fieldset .x-fieldset-body { + padding-top: 0; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-checkbox { + line-height: 14px; + margin: 1px 3px 0 0; +} + +/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header { + padding: 0 3px 1px; +} +/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-tool { + margin-top: 1px; + padding: 0; +} +/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb-wrap { + padding: 1px 0; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text { + font: 11px/14px bold tahoma, arial, verdana, sans-serif; + color: #15428b; + padding: 1px 0; +} + +/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text-collapsible { + cursor: pointer; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-with-title .x-fieldset-header-checkbox, +.x-fieldset-with-title .x-tool { + margin: 1px 3px 0 0; +} + +/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-webkit .x-fieldset-header { + -webkit-padding-start: 3px; + -webkit-padding-end: 3px; +} + +/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-opera .x-fieldset-with-legend { + margin-top: -1px; +} +/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-opera.x-mac .x-fieldset-header-text { + padding: 2px 0 0; +} + +/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-strict .x-ie8 .x-fieldset-header { + margin-bottom: -1px; +} +/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-strict .x-ie8 .x-fieldset-header .x-tool, +.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text, +.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox { + position: relative; + top: -1px; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-quirks .x-ie .x-fieldset-header, +.x-ie8m .x-fieldset-header { + padding-left: 1px; + padding-right: 1px; +} + +/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-fieldset-body { + display: none; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed { + padding-bottom: 0 !important; + border-width: 1px 1px 0 1px !important; + border-left-color: transparent !important; + border-right-color: transparent !important; +} + +/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie6 .x-fieldset-collapsed { + border-width: 1px 0 0 0 !important; + padding-bottom: 0 !important; + margin-left: 1px; + margin-right: 1px; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-bwrap { + zoom: 1; +} + +/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset .x-tool-toggle { + background-position: 0 -60px; +} +/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset .x-tool-over .x-tool-toggle { + background-position: -15px -60px; +} + +/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-tool-toggle { + background-position: 0 -75px; +} +/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-tool-over .x-tool-toggle { + background-position: -15px -75px; +} + +/* IE legend positioning bug */ +/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-noborder legend { + position: relative; + margin-bottom: 23px; +} + +/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-noborder legend span { + position: absolute; + left: 16px; +} + +/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset { + overflow: hidden; +} + +/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-bwrap { + overflow: hidden; + zoom: 1; +} + +/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-body { + overflow: hidden; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-radio { + width: 13px; + height: 13px; + background: url(images/form/radio.gif) no-repeat; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-cb-checked .x-form-radio { + background-position: 0 -13px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-radio-focus { + background-position: -13px 0; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-cb-checked .x-form-radio-focus { + background-position: -13px -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger { + background: url(images/form/trigger.gif); + width: 17px; + border-width: 0 0 1px; + border-color: #b5b8c8; + border-style: solid; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-trigger-cell { + background-color: white; + width: 17px; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-over { + background-position: -17px 0; + border-color: #7eadd9; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap-focus .x-form-trigger { + background-position: -51px 0; + border-color: #7eadd9; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap-focus .x-form-trigger-over { + background-position: -68px 0; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-click, +.x-form-trigger-wrap-focus .x-form-trigger-click { + background-position: -34px 0; +} + +/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-clear-trigger { + background-image: url(images/form/clear-trigger.gif); +} + +/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-search-trigger { + background-image: url(images/form/search-trigger.gif); +} + +/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-quirks .prefixie6 .x-form-trigger-input-cell { + height: 22px; +} +/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell { + height: 20px; +} + +/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +div.x-form-spinner-up, +div.x-form-spinner-down { + background-image: url(images/form/spinner.gif); + background-color: white; + width: 17px; + height: 11px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-spinner-down { + background-position: 0 -11px; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap-focus .x-form-spinner-down { + background-position: -51px -11px; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap .x-form-spinner-down-over { + background-position: -17px -11px; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap-focus .x-form-spinner-down-over { + background-position: -68px -11px; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap .x-form-spinner-down-click { + background-position: -34px -11px; +} + +/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item div.x-form-spinner-up, +.x-toolbar-item div.x-form-spinner-down { + background-image: url(images/form/spinner-small.gif); + height: 10px; +} +/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-spinner-down { + background-position: 0 -10px; +} +/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down { + background-position: -51px -10px; +} +/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over { + background-position: -17px -10px; +} +/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over { + background-position: -68px -10px; +} +/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click { + background-position: -34px -10px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-number { + width: 30px; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-first { + background-image: url(images/grid/page-first.gif); +} + +/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-prev { + background-image: url(images/grid/page-prev.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-next { + background-image: url(images/grid/page-next.gif); +} + +/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-last { + background-image: url(images/grid/page-last.gif); +} + +/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-loading { + background-image: url(images/grid/refresh.gif); +} + +/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-first { + background-image: url(images/grid/page-first-disabled.gif); +} +/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-prev { + background-image: url(images/grid/page-prev-disabled.gif); +} +/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-next { + background-image: url(images/grid/page-next-disabled.gif); +} +/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-last { + background-image: url(images/grid/page-last-disabled.gif); +} +/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-loading { + background-image: url(images/grid/refresh-disabled.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist { + border-width: 1px; + border-style: solid; + border-color: #98c0f4; + background: white; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-strict .x-ie7m .x-boundlist-list-ct { + position: relative; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-item { + padding: 0 3px; + line-height: 20px; + cursor: pointer; + cursor: hand; + position: relative; + /*allow hover in IE on empty items*/ + zoom: 1; + border-width: 1px; + border-style: dotted; + border-color: white; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-selected { + background: #cbdaf0; + border-color: #8eabe4; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-item-over { + background: #dfe8f6; + border-color: #a3bae9; +} + +/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-floating { + border-top-width: 0; +} + +/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-above { + border-top-width: 1px; + border-bottom-width: 1px; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker { + border-width: 1px; + border-style: solid; + border-color: #1b376c; + background-color: white; + width: 177px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-header { + padding: 3px 6px; + text-align: center; + background-image: none; + background-color: #23427c; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c)); + background-image: -webkit-linear-gradient(top, #264888, #1f3a6c); + background-image: -moz-linear-gradient(top, #264888, #1f3a6c); + background-image: -o-linear-gradient(top, #264888, #1f3a6c); + background-image: linear-gradient(top, #264888, #1f3a6c); +} + +/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-arrow { + width: 15px; + height: 15px; + top: 6px; + cursor: pointer; + background-color: #23427c; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); + opacity: 0.7; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-datepicker-arrow:hover { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-next { + right: 6px; + background-image: url(images/shared/right-btn.gif); +} + +/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-prev { + left: 6px; + background-image: url(images/shared/left-btn.gif); +} + +/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn, +.x-datepicker-month .x-btn .x-btn-tc, +.x-datepicker-month .x-btn .x-btn-tl, +.x-datepicker-month .x-btn .x-btn-tr, +.x-datepicker-month .x-btn .x-btn-mc, +.x-datepicker-month .x-btn .x-btn-ml, +.x-datepicker-month .x-btn .x-btn-mr, +.x-datepicker-month .x-btn .x-btn-bc, +.x-datepicker-month .x-btn .x-btn-bl, +.x-datepicker-month .x-btn .x-btn-br { + background: transparent; + border-width: 0 !important; +} +/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn-inner { + color: white; +} +/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn-split-right { + background-image: url(images/button/s-arrow-light.gif); + padding-right: 12px; +} + +/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-column-header { + width: 25px; + color: #233d6d; + font: normal 10px tahoma, arial, verdana, sans-serif; + text-align: right; + border-width: 0 0 1px; + border-style: solid; + border-color: #b2d1f5; + background-image: none; + background-color: #dfecfb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9)); + background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9); + background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9); + background-image: -o-linear-gradient(top, #edf4fd, #cde1f9); + background-image: linear-gradient(top, #edf4fd, #cde1f9); +} + +/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-column-header-inner { + line-height: 19px; + padding: 0 7px 0 0; +} + +/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-cell { + text-align: right; + border-width: 1px; + border-style: solid; + border-color: white; +} + +/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-date { + padding: 0 4px 0 0; + font: normal 11px tahoma, arial, verdana, sans-serif; + color: black; + cursor: pointer; + line-height: 18px; +} + +/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-datepicker-date:hover { + color: black; + background-color: #ddecfe; +} + +/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-selected { + border-style: solid; + border-color: #8db2e3; +} +/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-selected .x-datepicker-date { + background-color: #dae5f3; + font-weight: bold; +} + +/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-today { + border-color: darkred; + border-style: solid; +} + +/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-prevday .x-datepicker-date, +.x-datepicker-nextday .x-datepicker-date { + color: #aaaaaa; +} + +/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-disabled a.x-datepicker-date { + background-color: #eeeeee; + cursor: default; + color: #bbbbbb; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-disabled a.x-datepicker-date:hover { + background-color: #eeeeee; +} + +/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-footer, +.x-monthpicker-buttons { + padding: 4px 0; + border-width: 1px 0 0; + border-style: solid; + border-color: #b2d1f5; + background-image: none; + background-color: #dfecfb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee)); + background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + text-align: center; +} +/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-footer .x-btn, +.x-monthpicker-buttons .x-btn { + margin: 0 2px 0 2px; +} + +/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker { + width: 177px; + border-width: 1px; + border-style: solid; + border-color: #1b376c; + background-color: white; +} + +/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-months { + border-width: 0 1px 0 0; + border-color: #1b376c; + border-style: solid; + width: 87px; +} +/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-months .x-monthpicker-item { + width: 43px; +} + +/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-years { + width: 88px; +} +/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-years .x-monthpicker-item { + width: 44px; +} + +/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-item { + margin: 5px 0 4px; + font: normal 11px tahoma, arial, verdana, sans-serif; + text-align: center; +} + +/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-item-inner { + margin: 0 5px 0 5px; + color: #15428b; + border-width: 1px; + border-style: solid; + border-color: white; + line-height: 16px; + cursor: pointer; +} + +/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-monthpicker-item-inner:hover { + background-color: #ddecfe; +} + +/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-selected { + background-color: #dae5f3; + border-style: solid; + border-color: #8db2e3; +} + +/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav { + height: 27px; +} + +/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button-ct { + width: 44px; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button { + height: 15px; + width: 15px; + cursor: pointer; + margin-top: 6px; + background-color: white; +} + +/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-next { + background-image: url(images/tools/tool-sprites.gif); + background-position: 0 -120px; +} + +/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-next-over { + background-position: -15px -120px; +} + +/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-prev { + background-image: url(images/tools/tool-sprites.gif); + background-position: 0 -105px; +} + +/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-prev-over { + background-position: -15px -105px; +} + +/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-item { + margin: 2px 0 2px; +} +/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-item-inner { + margin: 0 5px 0 5px; +} +/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-yearnav { + height: 22px; +} +/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-yearnav-button { + margin-top: 3px; +} + +/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-nlg .x-datepicker-header { + background-image: url(images/datepicker/datepicker-header-bg.gif); + background-repeat: repeat-x; + background-position: top left; +} +/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-nlg .x-datepicker-footer, +.x-nlg .x-monthpicker-buttons { + background-image: url(images/datepicker/datepicker-footer-bg.gif); + background-repeat: repeat-x; + background-position: top left; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-datepicker-header:after { + display: none; + content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-datepicker-footer:after { + display: none; + content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */ +.x-form-date-trigger { + background-image: url(images/form/date-trigger.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */ +.x-form-file-wrap .x-form-text { + color: gray; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker { + width: 144px; + height: 90px; + background-color: white; + border-color: white; + border-width: 0; + border-style: solid; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-item { + width: 18px; + height: 18px; + border-width: 1px; + border-color: white; + border-style: solid; + background-color: white; + cursor: pointer; + padding: 2px; +} +/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-content-box .x-color-picker-item { + width: 12px; + height: 12px; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +a.x-color-picker-item:hover { + border-color: #8bb8f3; + background-color: #deecfd; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-selected { + border-color: #8bb8f3; + background-color: #deecfd; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-item-inner { + line-height: 10px; + border-color: #aca899; + border-width: 1px; + border-style: solid; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-btn-text { + background: transparent no-repeat; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-bold, +.x-menu-item div.x-edit-bold { + background-position: 0 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-italic, +.x-menu-item div.x-edit-italic { + background-position: -16px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-underline, +.x-menu-item div.x-edit-underline { + background-position: -32px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-forecolor, +.x-menu-item div.x-edit-forecolor { + background-position: -160px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-backcolor, +.x-menu-item div.x-edit-backcolor { + background-position: -176px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifyleft, +.x-menu-item div.x-edit-justifyleft { + background-position: -112px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifycenter, +.x-menu-item div.x-edit-justifycenter { + background-position: -128px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifyright, +.x-menu-item div.x-edit-justifyright { + background-position: -144px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-insertorderedlist, +.x-menu-item div.x-edit-insertorderedlist { + background-position: -80px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-insertunorderedlist, +.x-menu-item div.x-edit-insertunorderedlist { + background-position: -96px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-increasefontsize, +.x-menu-item div.x-edit-increasefontsize { + background-position: -48px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-decreasefontsize, +.x-menu-item div.x-edit-decreasefontsize { + background-position: -64px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-sourceedit, +.x-menu-item div.x-edit-sourceedit { + background-position: -192px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-createlink, +.x-menu-item div.x-edit-createlink { + background-position: -208px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { + padding: 5px; + padding-bottom: 1px; +} + +/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-font-select { + font-size: 11px; + font-family: inherit; +} + +/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-wrap textarea { + font: normal 12px tahoma, arial, verdana, sans-serif; + background-color: white; + resize: none; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-body { + background: white; + border-width: 1px; + border-style: solid; + border-color: #99bce8; +} + +/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-empty { + padding: 10px; + color: gray; + background-color: white; + font: normal 11px tahoma, arial, verdana, sans-serif; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell { + color: null; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + background-color: white; + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-alt .x-grid-td { + background-color: #fafafa; +} +/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-over .x-grid-td { + border-bottom-style: solid; + border-bottom-color: #dddddd; +} +/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-over .x-grid-td { + border-bottom-style: solid; + border-bottom-color: #dddddd; +} +/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-selected .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #a3bae9; +} +/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #a3bae9; +} +/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-focused .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #464646; + border-bottom-width: 1px; +} +/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-td { + background-color: #efefef; +} +/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-over .x-grid-td { + background-color: #efefef; +} +/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-td { + background-color: #dfe8f6; +} +/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #464646; + border-bottom-width: 1px; +} +/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-table .x-grid-row-focused-first .x-grid-td { + border-top: 1px dotted #464646; +} +/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-row-summary .x-grid-td { + border-bottom-color: #dfe8f6; + border-top-width: 0; +} +/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-row-summary .x-grid-td { + border-bottom-color: #efefef; + border-top-width: 0; +} + +/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-td { + border-bottom-width: 1px; +} +/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table { + border-top: 1px solid white; +} +/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table-over-first { + border-top-style: solid; + border-top-color: #dddddd; +} +/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table-selected-first { + border-top-style: dotted; + border-top-color: #a3bae9; +} + +/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-body .x-grid-table-focused-first { + border-top: 1px dotted #464646; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell-inner { + text-overflow: ellipsis; + padding: 3px 6px 4px 6px; +} + +/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner { + padding-top: 2px; + padding-bottom: 3px; +} + +/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell-special { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; + border-right-width: 1px; + background-image: none; + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: linear-gradient(top, #f6f6f6, #e9e9e9); + /*<if slicer>*/ + /*</if slicer>*/ + /* */ + /*<if slicer>*/ + /*</if slicer>*/ + /* */ +} +/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-cell-special { + border-right-color: #ededed #aaccf6; + background-image: none; + background-color: #dfe8f6; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0)); + background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: linear-gradient(left, #dfe8f6, #cbdaf0); +} +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-nlg .x-grid-cell-special { + background-repeat: repeat-y; + background-image: url(images/grid/cell-special-bg.gif); +} +/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-nlg .x-grid-row-selected .x-grid-cell-special { + background-image: url(images/grid/cell-special-selected-bg.gif); +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-cell-special .x-grid-cell-special:after { + display: none; + content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)"; +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-cell-special .x-grid-cell-special-selected:after { + display: none; + content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"; +} + +/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-dirty-cell { + background: url(images/grid/dirty.gif) no-repeat 0 0; +} + +/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row .x-grid-cell-selected { + color: null; + background-color: #b8cfee; +} + +/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-col-lines .x-grid-cell { + border-right-width: 1px; +} + +/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-resize-marker { + width: 1px; + background-color: #0f0f0f; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator { + position: absolute; + height: 1px; + line-height: 0px; + background-color: #77BC71; + overflow: visible; + pointer-events: none; +} +/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator .x-grid-drop-indicator-left { + position: absolute; + top: -8px; + left: -12px; + background-image: url(images/grid/dd-insert-arrow-right.png); + height: 16px; + width: 16px; +} +/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator .x-grid-drop-indicator-right { + position: absolute; + top: -8px; + right: -11px; + background-image: url(images/grid/dd-insert-arrow-left.png); + height: 16px; + width: 16px; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-ie6 .x-grid-drop-indicator-left { + background-image: url(images/grid/dd-insert-arrow-right.gif); +} +/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-ie6 .x-grid-drop-indicator-right { + background-image: url(images/grid/dd-insert-arrow-left.gif); +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-top, +.col-move-bottom { + width: 9px; + height: 9px; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-top { + background-image: url(images/grid/col-move-top.gif); +} + +/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-bottom { + background-image: url(images/grid/col-move-bottom.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-grid-header-ct { + border: 1px solid #99bce8; + border-bottom-color: #c5c5c5; + background-color: #c5c5c5; + background-image: none; + background-color: #c5c5c5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: linear-gradient(top, #f9f9f9, #e3e4e6); +} + +/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-accordion-item .x-grid-header-ct { + border-width: 0 0 1px !important; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-accordion-item .x-grid-header-ct-hidden { + border: 0 !important; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-grid-body { + border-top-color: #c5c5c5; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-hmenu-sort-asc .x-menu-item-icon { + background-image: url(images/grid/hmenu-asc.gif); +} + +/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-hmenu-sort-desc .x-menu-item-icon { + background-image: url(images/grid/hmenu-desc.gif); +} + +/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-cols-icon .x-menu-item-icon { + background-image: url(images/grid/columns.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header { + border-right: 1px solid #c5c5c5; + color: black; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + background-image: none; + background-color: #c5c5c5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: linear-gradient(top, #f9f9f9, #e3e4e6); +} + +/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-group-sub-header { + background: transparent; + border-top: 1px solid #c5c5c5; +} +/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-group-sub-header .x-column-header-inner { + padding: 3px 6px 5px 6px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-inner { + padding: 4px 6px 5px 6px; + text-overflow: ellipsis; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-over, +.x-column-header-sort-ASC, +.x-column-header-sort-DESC { + background-image: none; + background-color: #aaccf6; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb)); + background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); +} + +/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-nlg .x-grid-header-ct, +.x-nlg .x-column-header { + background-image: url(images/grid/column-header-bg.gif); +} + +/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-nlg .x-column-header-over, +.x-nlg .x-column-header-sort-ASC, +.x-nlg .x-column-header-sort-DESC { + background-image: url(images/grid/column-header-over-bg.gif); +} + +/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-open { + background-color: transparent; +} +/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-open .x-column-header-trigger { + background-color: transparent; +} + +/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + width: 14px; + cursor: pointer; + background-color: transparent; + background-position: 0 center; +} + +/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-align-right .x-column-header-text { + margin-right: 9px; +} + +/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-ASC .x-column-header-text, +.x-column-header-sort-DESC .x-column-header-text { + padding-right: 12px; + background-position: right center; +} + +/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-ASC .x-column-header-text { + background-image: url(images/grid/sort_asc.gif); +} + +/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-DESC .x-column-header-text { + background-image: url(images/grid/sort_desc.gif); +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-column-header:after { + display: none; + content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-column-header-over:after { + display: none; + content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-grid-cell-inner-action-col { + padding: 2px 2px 2px 2px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col { + padding-top: 1px; + padding-bottom: 1px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-action-col-cell .x-item-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-action-col-icon { + height: 16px; + width: 16px; + cursor: pointer; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-cell-inner-checkcolumn { + padding: 4px 6px 3px 6px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn { + padding-top: 3px; + padding-bottom: 2px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-checkcolumn { + width: 13px; + height: 13px; + background: url(images/form/checkbox.gif) 0 0 no-repeat; +} +/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-item-disabled .x-grid-checkcolumn { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-checkcolumn-checked { + background-position: 0 -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */ +.x-grid-cell-inner-row-numberer { + padding: 3px 5px 4px 3px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd { + border-width: 0 0 2px 0; + border-style: solid; + border-color: #99bbe8; + padding: 10px 4px 4px 4px; + background: white; + cursor: pointer; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-not-collapsible { + cursor: default; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-collapsible .x-grid-group-title { + background-repeat: no-repeat; + background-position: left center; + background-image: url(images/grid/group-collapse.gif); + padding: 0 0 0 14px; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-title { + color: #3764a0; + font: bold 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-collapsed .x-grid-group-title { + background-image: url(images/grid/group-expand.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-collapsed .x-grid-group-title { + background-image: url(images/grid/group-expand.gif); +} + +/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-group-by-icon { + background-image: url(images/grid/group-by.gif); +} + +/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-show-groups-icon { + background-image: url(images/grid/group-by.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */ +.x-grid-rowbody { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + padding: 5px 6px 5px 6px; +} +/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody { + padding-top: 6px; + padding-bottom: 4px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */ +.x-grid-rowwrap { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-summary-bottom { + border-bottom-color: #c5c5c5; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-docked-summary { + border-width: 1px; + border-color: #99bce8; + border-style: solid; +} +/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-docked-summary .x-grid-table { + width: 100%; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-grid-row-summary .x-grid-cell, +.x-grid-row-summary .x-grid-rowwrap, +.x-grid-row-summary .x-grid-cell-rowbody { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + background-color: transparent !important; + border-top-width: 0; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-grid-with-row-lines .x-grid-table-summary { + border: 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-locked .x-grid-inner-locked { + border-width: 0 1px 0 0; + border-style: solid; +} + +/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-inner-locked .x-column-header-last, +.x-grid-inner-locked .x-grid-cell-last { + border-right-width: 0!important; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-hmenu-lock .x-menu-item-icon { + background-image: url(images/grid/hmenu-lock.gif); +} + +/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-hmenu-unlock .x-menu-item-icon { + background-image: url(images/grid/hmenu-unlock.gif); +} + +/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-text { + font: normal 11px/15px tahoma, arial, verdana, sans-serif; + padding: 1px 5px 2px 5px; + height: 20px; +} +/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-text { + height: 15px; +} +/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-gecko .x-grid-editor .x-form-text { + padding-left: 4px; + padding-right: 4px; +} +/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-trigger { + height: 20px; +} +/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down { + height: 10px; +} +/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb { + margin-top: 4px; +} +/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb-wrap { + height: 20px; +} +/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field-body { + height: 20px; +} +/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field { + font: normal 11px/15px tahoma, arial, verdana, sans-serif; + padding: 2px 6px 3px 6px; + text-overflow: ellipsis; +} +/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-action-col-field { + padding: 2px 2px 2px 2px; +} + +/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */ +.x-tree-cell-editor .x-form-text { + padding-left: 2px; + padding-right: 2px; +} +/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */ +.x-gecko .x-tree-cell-editor .x-form-text { + padding-left: 1px; + padding-right: 1px; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-field { + margin: 0 1px 0 1px; +} +/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-display-field { + padding: 2px 5px 3px 5px; +} +/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-action-col-field { + padding: 2px 1px 2px 1px; +} +/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-text { + padding: 1px 4px 2px 4px; +} +/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-gecko .x-grid-row-editor .x-form-text { + padding-left: 3px; + padding-right: 3px; +} +/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-panel-body { + border-top: 1px solid #99bce8 !important; + border-bottom: 1px solid #99bce8 !important; + padding: 4px 0 4px 0; + background-color: #eaf1fb; +} +/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-with-col-lines .x-grid-row-editor .x-form-cb { + margin-right: 1px; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-color: #eaf1fb; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mc { + background-color: #eaf1fb; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-grid-row-editor-buttons-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo { + font-family: th-0-0-5-5-0-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tr, +.x-grid-row-editor-buttons-default-bottom-br, +.x-grid-row-editor-buttons-default-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl, +.x-grid-row-editor-buttons-default-bottom-bl, +.x-grid-row-editor-buttons-default-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl, +.x-grid-row-editor-buttons-default-bottom-bl, +.x-grid-row-editor-buttons-default-bottom-tr, +.x-grid-row-editor-buttons-default-bottom-br, +.x-grid-row-editor-buttons-default-bottom-tc, +.x-grid-row-editor-buttons-default-bottom-bc, +.x-grid-row-editor-buttons-default-bottom-ml, +.x-grid-row-editor-buttons-default-bottom-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-ml, +.x-grid-row-editor-buttons-default-bottom-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mc { + padding: 4px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl, +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-row-editor-buttons-default-bottom:after { + display: none; + content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 4px 4px 4px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-color: #eaf1fb; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mc { + background-color: #eaf1fb; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-grid-row-editor-buttons-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo { + font-family: th-5-5-0-0-1-1-0-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tr, +.x-grid-row-editor-buttons-default-top-br, +.x-grid-row-editor-buttons-default-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl, +.x-grid-row-editor-buttons-default-top-bl, +.x-grid-row-editor-buttons-default-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl, +.x-grid-row-editor-buttons-default-top-bl, +.x-grid-row-editor-buttons-default-top-tr, +.x-grid-row-editor-buttons-default-top-br, +.x-grid-row-editor-buttons-default-top-tc, +.x-grid-row-editor-buttons-default-top-bc, +.x-grid-row-editor-buttons-default-top-ml, +.x-grid-row-editor-buttons-default-top-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-ml, +.x-grid-row-editor-buttons-default-top-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mc { + padding: 0px 0px 4px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl, +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-row-editor-buttons-default-top:after { + display: none; + content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons-default-bottom { + top: 29px; +} + +/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons-default-top { + bottom: 29px; +} + +/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons { + border-color: #99bce8; +} + +/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-row-editor-update-button { + margin-right: 2px; +} + +/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-row-editor-cancel-button { + margin-left: 2px; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-errors .x-tip-body { + padding: 5px; +} + +/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-errors-item { + list-style: disc; + margin-left: 15px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-cell-inner-row-expander { + padding: 6px 7px 5px 7px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander { + padding-top: 5px; + padding-bottom: 4px; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-expander { + width: 9px; + height: 9px; + cursor: pointer; + background-image: url(images/grid/group-collapse.gif); +} +/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-collapsed .x-grid-row-expander { + background-image: url(images/grid/group-expand.gif); +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */ +.x-grid-cell-inner-property-name { + background-image: url(images/grid/property-cell-bg.gif); + background-repeat: no-repeat; + background-position: -16px 2px; + padding-left: 12px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-layout-ct { + background-color: white; + padding: 0; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-panel-header-text-container { + color: black; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + text-transform: none; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item { + margin: 0; +} +/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd { + background: #d9e7f8; + border-top-color: #f3f7fb; + padding: 4px 5px 5px 5px; +} +/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd-sibling-expanded { + border-top-color: #99bce8; +} +/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd-last-collapsed { + border-bottom-color: #d9e7f8; +} +/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-body { + border-width: 0; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-collapse-top, +.x-accordion-hd .x-tool-collapse-bottom { + background-position: 0 -255px; +} +/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-expand-top, +.x-accordion-hd .x-tool-expand-bottom { + background-position: 0 -240px; +} +/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-over .x-tool-collapse-top, +.x-accordion-hd .x-tool-over .x-tool-collapse-bottom { + background-position: -15px -255px; +} +/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-over .x-tool-expand-top, +.x-accordion-hd .x-tool-over .x-tool-expand-bottom { + background-position: -15px -240px; +} +/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-img { + background-color: #d9e7f8; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-collapse-el { + cursor: pointer; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-left, +.x-layout-split-right { + top: 50%; + margin-top: -18px; + width: 5px; + height: 35px; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-top, +.x-layout-split-bottom { + left: 50%; + width: 35px; + height: 5px; + margin-left: -18px; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-left { + background-image: url(images/util/splitter/mini-left.gif); +} + +/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-right { + background-image: url(images/util/splitter/mini-right.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-top { + background-image: url(images/util/splitter/mini-top.gif); +} + +/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-bottom { + background-image: url(images/util/splitter/mini-bottom.gif); +} + +/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-left { + background-image: url(images/util/splitter/mini-right.gif); +} +/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-right { + background-image: url(images/util/splitter/mini-left.gif); +} +/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-top { + background-image: url(images/util/splitter/mini-bottom.gif); +} +/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-bottom { + background-image: url(images/util/splitter/mini-top.gif); +} + +/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-active { + background-color: #b4b4b4; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + opacity: 0.8; +} +/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-active .x-collapse-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + background-color: #dfe8f6; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-body { + background: #f0f0f0; + padding: 2px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-icon-separator { + left: 24px; + border-left: solid 1px #e0e0e0; + background-color: white; + width: 2px; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item { + padding: 1px; + cursor: pointer; +} + +/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-indent { + margin-left: 30px; +} + +/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-active { + background-image: none; + background-color: #d9e8fb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9)); + background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: linear-gradient(top, #e7f0fc, #c7ddf9); + border-color: #a9cbf5; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; + padding: 0; +} +/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-nlg .x-menu-item-active { + background: #d9e8fb repeat-x left top; + background-image: url(images/menu/menu-item-active-bg.gif); +} + +/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-link { + line-height: 22px; + padding: 0 0 0 30px; + display: inline-block; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-right-check-item-text { + padding-right: 22px; +} + +/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-icon { + width: 16px; + height: 16px; + top: 4px; + left: 3px; + background-position: center center; +} + +/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-glyph { + font-size: 16px; + line-height: 16px; + color: #222222; + opacity: 0.5; +} +/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie8m .x-menu-item-glyph { + color: #898989; +} + +/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-menu-item-icon, +.x-quirks .x-menu-item-active .x-menu-item-icon, +.x-ie9m .x-menu-item-active .x-menu-item-icon { + top: 3px; + left: 2px; +} + +/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-icon-right { + width: 16px; + height: 16px; + top: 3px; + right: 3px; + background-position: center center; +} + +/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-text { + font-size: 11px; + color: #222222; + cursor: pointer; + margin-right: 16px; +} + +/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right { + background-image: url(images/menu/checked.gif); +} +/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-checked .x-menu-group-icon { + background-image: url(images/menu/group-checked.gif); +} + +/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right { + background-image: url(images/menu/unchecked.gif); +} +/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-unchecked .x-menu-group-icon { + background-image: none; +} + +/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-separator { + height: 2px; + border-top: solid 1px #e0e0e0; + background-color: white; + margin: 2px 0; + padding: 0; +} + +/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-arrow { + width: 12px; + height: 9px; + top: 7px; + right: 0; + background-image: url(images/menu/menu-parent.gif); +} + +/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-menu-item-arrow, +.x-quirks .x-menu-item-active .x-menu-item-arrow, +.x-ie9m .x-menu-item-active .x-menu-item-arrow { + top: 6px; + right: -1px; +} + +/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-content-box .x-menu-icon-separator { + width: 1px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-content-box .x-menu-item-separator { + height: 1px; +} + +/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie .x-menu-item-disabled .x-menu-item-icon { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} +/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie .x-menu-item-disabled .x-menu-item-text { + background-color: transparent; +} + +/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-date-item { + border-color: #99BBE8; +} + +/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item .x-form-item-label { + font-size: 11px; + color: #222222; +} + +/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-top { + height: 8px; + background-image: url(images/menu/scroll-top.gif); +} + +/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-bottom { + height: 8px; + background-image: url(images/menu/scroll-bottom.gif); +} + +/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-top, .x-menu-scroll-bottom { + background-color: #f0f0f0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-menu-item-link:after { + display: none; + content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool { + cursor: pointer; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-img { + overflow: hidden; + width: 15px; + height: 15px; + background-image: url(images/tools/tool-sprites.gif); + margin: 0; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-placeholder { + visibility: hidden; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-close { + background-position: 0 0; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-minimize { + background-position: 0 -15px; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-maximize { + background-position: 0 -30px; +} + +/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-restore { + background-position: 0 -45px; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-toggle { + background-position: 0 -60px; +} +/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-panel-collapsed .x-tool-toggle { + background-position: 0 -75px; +} + +/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-gear { + background-position: 0 -90px; +} + +/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-prev { + background-position: 0 -105px; +} + +/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-next { + background-position: 0 -120px; +} + +/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-pin { + background-position: 0 -135px; +} + +/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-unpin { + background-position: 0 -150px; +} + +/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-right { + background-position: 0 -165px; +} + +/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-left { + background-position: 0 -180px; +} + +/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-down { + background-position: 0 -195px; +} + +/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-up { + background-position: 0 -210px; +} + +/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-refresh { + background-position: 0 -225px; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-plus { + background-position: 0 -240px; +} + +/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-minus { + background-position: 0 -255px; +} + +/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-search { + background-position: 0 -270px; +} + +/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-save { + background-position: 0 -285px; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-help { + background-position: 0 -300px; +} + +/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-print { + background-position: 0 -315px; +} + +/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand { + background-position: 0 -330px; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-collapse { + background-position: 0 -345px; +} + +/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-resize { + background-position: 0 -360px; +} + +/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-move { + background-position: 0 -375px; +} + +/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-bottom, +.x-tool-collapse-bottom { + background-position: 0 -195px; +} + +/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-top, +.x-tool-collapse-top { + background-position: 0 -210px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-left, +.x-tool-collapse-left { + background-position: 0 -180px; +} + +/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-right, +.x-tool-collapse-right { + background-position: 0 -165px; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-close { + background-position: -15px 0; +} +/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-minimize { + background-position: -15px -15px; +} +/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-maximize { + background-position: -15px -30px; +} +/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-restore { + background-position: -15px -45px; +} +/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-toggle { + background-position: -15px -60px; +} +/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-panel-collapsed .x-tool-over .x-tool-toggle { + background-position: -15px -75px; +} +/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-gear { + background-position: -15px -90px; +} +/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-prev { + background-position: -15px -105px; +} +/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-next { + background-position: -15px -120px; +} +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-pin { + background-position: -15px -135px; +} +/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-unpin { + background-position: -15px -150px; +} +/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-right { + background-position: -15px -165px; +} +/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-left { + background-position: -15px -180px; +} +/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-down { + background-position: -15px -195px; +} +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-up { + background-position: -15px -210px; +} +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-refresh { + background-position: -15px -225px; +} +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-plus { + background-position: -15px -240px; +} +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-minus { + background-position: -15px -255px; +} +/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-search { + background-position: -15px -270px; +} +/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-save { + background-position: -15px -285px; +} +/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-help { + background-position: -15px -300px; +} +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-print { + background-position: -15px -315px; +} +/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand { + background-position: -15px -330px; +} +/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-collapse { + background-position: -15px -345px; +} +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-resize { + background-position: -15px -360px; +} +/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-move { + background-position: -15px -375px; +} +/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-bottom, +.x-tool-over .x-tool-collapse-bottom { + background-position: -15px -195px; +} +/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-top, +.x-tool-over .x-tool-collapse-top { + background-position: -15px -210px; +} +/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-left, +.x-tool-over .x-tool-collapse-left { + background-position: -15px -180px; +} +/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-right, +.x-tool-over .x-tool-collapse-right { + background-position: -15px -165px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle { + position: absolute; + z-index: 100; + font-size: 1px; + line-height: 6px; + overflow: hidden; + zoom: 1; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; + background-color: #fff; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-collapsed .x-resizable-handle { + display: none; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-north { + cursor: n-resize; +} +/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south { + cursor: s-resize; +} +/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east { + cursor: e-resize; +} +/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-west { + cursor: w-resize; +} +/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast { + cursor: se-resize; +} +/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest { + cursor: nw-resize; +} +/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast { + cursor: ne-resize; +} +/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest { + cursor: sw-resize; +} + +/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-east { + width: 6px; + height: 100%; + right: 0; + top: 0; +} + +/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-south { + width: 100%; + height: 6px; + left: 0; + bottom: 0; +} + +/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-west { + width: 6px; + height: 100%; + left: 0; + top: 0; +} + +/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-north { + width: 100%; + height: 6px; + left: 0; + top: 0; +} + +/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-southeast { + width: 6px; + height: 6px; + right: 0; + bottom: 0; + z-index: 101; +} + +/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-northwest { + width: 6px; + height: 6px; + left: 0; + top: 0; + z-index: 101; +} + +/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-northeast { + width: 6px; + height: 6px; + right: 0; + top: 0; + z-index: 101; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-southwest { + width: 6px; + height: 6px; + left: 0; + bottom: 0; + z-index: 101; +} + +/*IE rounding error*/ +/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-ie .x-resizable-handle-east { + margin-right: -1px; + /*IE rounding error*/ +} +/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-ie .x-resizable-handle-south { + margin-bottom: -1px; +} + +/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-pinned .x-resizable-handle, +.x-resizable-over .x-resizable-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-window .x-window-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-window-collapsed .x-window-handle { + display: none; +} + +/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-proxy { + border: 1px dashed #3b5a82; + position: absolute; + overflow: hidden; + z-index: 50000; +} + +/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, +.x-resizable-pinned .x-resizable-handle-east, +.x-resizable-pinned .x-resizable-handle-west { + background-image: url(images/sizer/e-handle.gif); +} +/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, +.x-resizable-pinned .x-resizable-handle-south, +.x-resizable-pinned .x-resizable-handle-north { + background-image: url(images/sizer/s-handle.gif); +} +/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast, +.x-resizable-pinned .x-resizable-handle-southeast { + background-position: top left; + background-image: url(images/sizer/se-handle.gif); +} +/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest, +.x-resizable-pinned .x-resizable-handle-northwest { + background-position: bottom right; + background-image: url(images/sizer/nw-handle.gif); +} +/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast, +.x-resizable-pinned .x-resizable-handle-northeast { + background-position: bottom left; + background-image: url(images/sizer/ne-handle.gif); +} +/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest, +.x-resizable-pinned .x-resizable-handle-southwest { + background-position: top right; + background-image: url(images/sizer/sw-handle.gif); +} + +/* Horizontal styles */ +/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz { + padding-left: 7px; + background: no-repeat 0 -15px; +} +/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-end { + padding-right: 7px; + background: no-repeat right -30px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-inner { + height: 15px; +} + +/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-ie6 .x-form-item .x-slider-horz, +.x-ie7 .x-form-item .x-slider-horz, +.x-quirks .x-ie .x-form-item .x-slider-horz { + margin-top: 4px; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb { + width: 14px; + height: 15px; + margin-left: -7px; + background-image: url(images/slider/slider-thumb.png); +} + +/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb-over { + background-position: -14px -15px; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb-drag { + background-position: -28px -30px; +} + +/* Vertical styles */ +/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert { + padding-top: 7px; + background: no-repeat -30px 0; +} + +/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-end { + padding-bottom: 7px; + background: no-repeat -15px bottom; + width: 15px; +} + +/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-inner { + width: 15px; +} + +/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb { + width: 15px; + height: 14px; + margin-bottom: -7px; + background-image: url(images/slider/slider-v-thumb.png); +} + +/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb-over { + background-position: -15px -14px; +} + +/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb-drag { + background-position: -30px -28px; +} + +/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz, +.x-slider-horz .x-slider-end, +.x-slider-horz .x-slider-inner { + background-image: url(images/slider/slider-bg.png); +} + +/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert, +.x-slider-vert .x-slider-end, +.x-slider-vert .x-slider-inner { + background-image: url(images/slider/slider-v-bg.png); +} + +/** + * Creates a visual theme for a Tab + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-background-color=$tab-base-color] + * The background-color of Tabs + * + * @param {color} [$ui-background-color-over=$tab-base-color-over] + * The background-color of hovered Tabs + * + * @param {color} [$ui-background-color-active=$tab-base-color-active] + * The background-color of the active Tab + * + * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled] + * The background-color of disabled Tabs + * + * @param {list} [$ui-border-radius=$tab-border-radius] + * The border-radius of Tabs + * + * @param {number} [$ui-border-width=$tab-border-width] + * The border-width of Tabs + * + * @param {number/list} [$ui-margin=$tab-margin] + * The border-width of Tabs + * + * @param {number/list} [$ui-padding=$tab-padding] + * The padding of Tabs + * + * @param {number/list} [$ui-text-padding=$tab-text-padding] + * The padding of the Tab's text element + * + * @param {color} [$ui-border-color=$tab-border-color] + * The border-color of Tabs + * + * @param {color} [$ui-border-color-over=$tab-border-color-over] + * The border-color of hovered Tabs + * + * @param {color} [$ui-border-color-active=$tab-border-color-active] + * The border-color of the active Tab + * + * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled] + * The border-color of disabled Tabs + * + * @param {string} [$ui-cursor=$tab-cursor] + * The Tab cursor + * + * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled] + * The cursor of disabled Tabs + * + * @param {number} [$ui-font-size=$tab-font-size] + * The font-size of Tabs + * + * @param {number} [$ui-font-size-over=$tab-font-size-over] + * The font-size of hovered Tabs + * + * @param {number} [$ui-font-size-active=$tab-font-size-active] + * The font-size of the active Tab + * + * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled] + * The font-size of disabled Tabs + * + * @param {string} [$ui-font-weight=$tab-font-weight] + * The font-weight of Tabs + * + * @param {string} [$ui-font-weight-over=$tab-font-weight-over] + * The font-weight of hovered Tabs + * + * @param {string} [$ui-font-weight-active=$tab-font-weight-active] + * The font-weight of the active Tab + * + * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled] + * The font-weight of disabled Tabs + * + * @param {string} [$ui-font-family=$tab-font-family] + * The font-family of Tabs + * + * @param {string} [$ui-font-family-over=$tab-font-family-over] + * The font-family of hovered Tabs + * + * @param {string} [$ui-font-family-active=$tab-font-family-active] + * The font-family of the active Tab + * + * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled] + * The font-family of disabled Tabs + * + * @param {number} [$ui-line-height=$tab-line-height] + * The line-height of Tabs + * + * @param {color} [$ui-color=$tab-color] + * The text color of Tabs + * + * @param {color} [$ui-color-over=$tab-color-over] + * The text color of hovered Tabs + * + * @param {color} [$ui-color-active=$tab-color-active] + * The text color of the active Tab + * + * @param {color} [$ui-color-disabled=$tab-color-disabled] + * The text color of disabled Tabs + * + * @param {string/list} [$ui-background-gradient=$tab-background-gradient] + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over] + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active] + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled] + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-inner-border-width=$tab-inner-border-width] + * The inner border-width of Tabs + * + * @param {color} [$ui-inner-border-color=$tab-inner-border-color] + * The inner border-color of Tabs + * + * @param {number} [$ui-icon-width=$tab-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-icon-height=$tab-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-icon-spacing=$tab-icon-spacing] + * the space in between the text and the close button + * + * @param {list} [$ui-icon-background-position=$tab-icon-background-position] + * The background-position of Tab icons + * + * @param {color} [$ui-glyph-color=$tab-glyph-color] + * The color of Tab glyph icons + * + * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over] + * The color of a Tab glyph icon when the Tab is hovered + * + * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active] + * The color of a Tab glyph icon when the Tab is active + * + * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled] + * The color of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity] + * The opacity of a Tab glyph icon + * + * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled] + * The opacity of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled] + * opacity to apply to the tab's main element when the tab is disabled + * + * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled] + * opacity to apply to the tab's text element when the tab is disabled + * + * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled] + * opacity to apply to the tab's icon element when the tab is disabled + * + * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top] + * The distance to offset the Tab close icon from the top of the tab + * + * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right] + * The distance to offset the Tab close icon from the right of the tab + * + * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing] + * The space in between the text and the close button + * + * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color] + * The bottom border color of inactive tabs. + * + * @member Ext.tab.Tab + */ +/** + * Creates a visual theme for a Tab Bar + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$ui-strip-height=$tabbar-strip-height] + * The height of the Tab Bar strip + * + * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width] + * The border-width of the Tab Bar strip + * + * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width] + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + * + * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color] + * The border-color of the Tab Bar strip + * + * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color] + * The background-color of the Tab Bar strip + * + * @param {number/list} [$ui-border-width=$tabbar-border-width] + * The border-width of the Tab Bar + * + * @param {color} [$ui-border-color=$tabbar-border-color] + * The border-color of the Tab Bar + * + * @param {number/list} [$ui-padding=$tabbar-padding] + * The padding of the Tab Bar + * + * @param {color} [$ui-background-color=$tabbar-background-color] + * The background color of the Tab Bar + * + * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient] + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-scroller-width=$tabbar-scroller-width] + * The width of the Tab Bar scrollers + * + * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor] + * The cursor of the Tab Bar scrollers + * + * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled] + * The cursor of disabled Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity] + * The opacity of Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over] + * The opacity of hovered Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed] + * The opacity of pressed Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled] + * The opacity of disabled Tab Bar scrollers + * + * @param {number} [$ui-tab-height] + * The height of tabs that will be used in this tabbar UI. The tabbar body is given + * a fixed height to leave room for the tabs, and so that the tabbar does not collapse + * when it does not contain any tabs. + * + * @member Ext.tab.Bar + */ +/** + * Creates a visual theme for a Tab Panel + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-tab-background-color=$tab-base-color] + * The background-color of Tabs + * + * @param {color} [$ui-tab-background-color-over=$tab-base-color-over] + * The background-color of hovered Tabs + * + * @param {color} [$ui-tab-background-color-active=$tab-base-color-active] + * The background-color of the active Tab + * + * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled] + * The background-color of disabled Tabs + * + * @param {list} [$ui-tab-border-radius=$tab-border-radius] + * The border-radius of Tabs + * + * @param {number} [$ui-tab-border-width=$tab-border-width] + * The border-width of Tabs + * + * @param {number/list} [$ui-tab-margin=$tab-margin] + * The border-width of Tabs + * + * @param {number/list} [$ui-tab-padding=$tab-padding] + * The padding of Tabs + * + * @param {number/list} [$ui-tab-text-padding=$tab-text-padding] + * The padding of the Tab's text element + * + * @param {color} [$ui-tab-border-color=$tab-border-color] + * The border-color of Tabs + * + * @param {color} [$ui-tab-border-color-over=$tab-border-color-over] + * The border-color of hovered Tabs + * + * @param {color} [$ui-tab-border-color-active=$tab-border-color-active] + * The border-color of the active Tab + * + * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled] + * The border-color of disabled Tabs + * + * @param {string} [$ui-tab-cursor=$tab-cursor] + * The Tab cursor + * + * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled] + * The cursor of disabled Tabs + * + * @param {number} [$ui-tab-font-size=$tab-font-size] + * The font-size of Tabs + * + * @param {number} [$ui-tab-font-size-over=$tab-font-size-over] + * The font-size of hovered Tabs + * + * @param {number} [$ui-tab-font-size-active=$tab-font-size-active] + * The font-size of the active Tab + * + * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled] + * The font-size of disabled Tabs + * + * @param {string} [$ui-tab-font-weight=$tab-font-weight] + * The font-weight of Tabs + * + * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over] + * The font-weight of hovered Tabs + * + * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active] + * The font-weight of the active Tab + * + * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled] + * The font-weight of disabled Tabs + * + * @param {string} [$ui-tab-font-family=$tab-font-family] + * The font-family of Tabs + * + * @param {string} [$ui-tab-font-family-over=$tab-font-family-over] + * The font-family of hovered Tabs + * + * @param {string} [$ui-tab-font-family-active=$tab-font-family-active] + * The font-family of the active Tab + * + * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled] + * The font-family of disabled Tabs + * + * @param {number} [$ui-tab-line-height=$tab-line-height] + * The line-height of Tabs + * + * @param {color} [$ui-tab-color=$tab-color] + * The text color of Tabs + * + * @param {color} [$ui-tab-color-over=$tab-color-over] + * The text color of hovered Tabs + * + * @param {color} [$ui-tab-color-active=$tab-color-active] + * The text color of the active Tab + * + * @param {color} [$ui-tab-color-disabled=$tab-color-disabled] + * The text color of disabled Tabs + * + * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient] + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over] + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active] + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled] + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width] + * The inner border-width of Tabs + * + * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color] + * The inner border-color of Tabs + * + * @param {number} [$ui-tab-icon-width=$tab-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-tab-icon-height=$tab-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing] + * the space in between the text and the close button + * + * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position] + * The background-position of Tab icons + * + * @param {color} [$ui-tab-glyph-color=$tab-glyph-color] + * The color of Tab glyph icons + * + * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over] + * The color of a Tab glyph icon when the Tab is hovered + * + * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active] + * The color of a Tab glyph icon when the Tab is active + * + * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled] + * The color of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity] + * The opacity of a Tab glyph icon + * + * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled] + * The opacity of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled] + * opacity to apply to the tab's main element when the tab is disabled + * + * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled] + * opacity to apply to the tab's text element when the tab is disabled + * + * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled] + * opacity to apply to the tab's icon element when the tab is disabled + * + * @param {number} [$ui-strip-height=$tabbar-strip-height] + * The height of the Tab Bar strip + * + * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width] + * The border-width of the Tab Bar strip + * + * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width] + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + * + * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color] + * The border-color of the Tab Bar strip + * + * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color] + * The background-color of the Tab Bar strip + * + * @param {number/list} [$ui-bar-border-width=$tabbar-border-width] + * The border-width of the Tab Bar + * + * @param {color} [$ui-bar-border-color=$tabbar-border-color] + * The border-color of the Tab Bar + * + * @param {number/list} [$ui-bar-padding=$tabbar-padding] + * The padding of the Tab Bar + * + * @param {color} [$ui-bar-background-color=$tabbar-background-color] + * The background color of the Tab Bar + * + * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient] + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width] + * The width of the Tab Bar scrollers + * + * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor] + * The cursor of the Tab Bar scrollers + * + * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled] + * The cursor of disabled Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity] + * The opacity of Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over] + * The opacity of hovered Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed] + * The opacity of pressed Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled] + * The opacity of disabled Tab Bar scrollers + * + * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top] + * The distance to offset the Tab close icon from the top of the tab + * + * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right] + * The distance to offset the Tab close icon from the right of the tab + * + * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing] + * the space in between the text and the close button + * + * @member Ext.tab.Panel + */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-top { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-top-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tr, +.x-tab-default-top-br, +.x-tab-default-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl, +.x-tab-default-top-bl, +.x-tab-default-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl, +.x-tab-default-top-bl, +.x-tab-default-top-tr, +.x-tab-default-top-br, +.x-tab-default-top-tc, +.x-tab-default-top-bc, +.x-tab-default-top-ml, +.x-tab-default-top-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-ml, +.x-tab-default-top-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-top-tl, +.x-strict .x-ie7 .x-tab-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 3px 9px 3px 9px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mc { + background-image: url(images/tab/tab-default-bottom-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-bottom { + background-image: url(images/tab/tab-default-bottom-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-bottom-frameInfo { + font-family: th-0-0-4-4-0-1-1-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tr, +.x-tab-default-bottom-br, +.x-tab-default-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl, +.x-tab-default-bottom-bl, +.x-tab-default-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl, +.x-tab-default-bottom-bl, +.x-tab-default-bottom-tr, +.x-tab-default-bottom-br, +.x-tab-default-bottom-tc, +.x-tab-default-bottom-bc, +.x-tab-default-bottom-ml, +.x-tab-default-bottom-mr { + zoom: 1; + background-image: url(images/tab/tab-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-ml, +.x-tab-default-bottom-mr { + zoom: 1; + background-image: url(images/tab/tab-default-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mc { + padding: 3px 6px 0px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-bottom-tl, +.x-strict .x-ie7 .x-tab-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-left { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-left-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tr, +.x-tab-default-left-br, +.x-tab-default-left-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl, +.x-tab-default-left-bl, +.x-tab-default-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl, +.x-tab-default-left-bl, +.x-tab-default-left-tr, +.x-tab-default-left-br, +.x-tab-default-left-tc, +.x-tab-default-left-bc, +.x-tab-default-left-ml, +.x-tab-default-left-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-ml, +.x-tab-default-left-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-left-tl, +.x-strict .x-ie7 .x-tab-default-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-left:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-right { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-right-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tr, +.x-tab-default-right-br, +.x-tab-default-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl, +.x-tab-default-right-bl, +.x-tab-default-right-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl, +.x-tab-default-right-bl, +.x-tab-default-right-tr, +.x-tab-default-right-br, +.x-tab-default-right-tc, +.x-tab-default-right-bc, +.x-tab-default-right-ml, +.x-tab-default-right-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-ml, +.x-tab-default-right-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-right-tl, +.x-strict .x-ie7 .x-tab-default-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-right:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default { + border-color: #8db3e3; + margin: 0 0 0 2px; + cursor: pointer; +} +/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-inner { + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + color: #416da3; + line-height: 13px; +} +/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-icon-el { + width: 16px; + height: 16px; + line-height: 16px; + background-position: center center; +} +/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-glyph { + font-size: 16px; + color: #416da3; + opacity: 0.5; +} +/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default .x-tab-glyph { + color: #8facd0; +} +/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default { + padding-left: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button { + padding-left: 9px; +} +/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el { + left: 9px; +} + +/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-icon .x-tab-inner { + width: 16px; +} + +/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-left { + margin: 0 2px 0 0; +} + +/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top, +.x-tab-default-left, +.x-tab-default-right { + border-bottom: 1px solid #99bce8; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; +} +/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top, .x-nlg +.x-tab-default-left, .x-nlg +.x-tab-default-right { + background-image: url(images/tab/tab-default-top-bg.gif); +} + +/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom { + border-top: 1px solid #99bce8; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; +} +/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom { + background-image: url(images/tab/tab-default-bottom-bg.gif); +} + +/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-left { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-tab-default-left { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-right { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-tab-default-right { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-icon-text-left .x-tab-inner { + padding-left: 20px; +} + +/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-over { + background-color: #e8f2ff; +} +/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-over .x-tab-glyph { + color: #416da3; +} +/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-over .x-tab-glyph { + color: #94afd1; +} + +/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over, +.x-tab-default-left-over, +.x-tab-default-right-over { + background-image: none; + background-color: #e8f2ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff)); + background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); +} +/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-over, .x-nlg +.x-tab-default-left-over, .x-nlg +.x-tab-default-right-over { + background-image: url(images/tab/tab-default-top-over-bg.gif); +} + +/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over { + background-image: none; + background-color: #e8f2ff; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff)); + background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); +} +/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-over { + background-image: url(images/tab/tab-default-bottom-over-bg.gif); +} + +/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active { + background-color: #deecfd; +} +/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active .x-tab-inner { + color: #15498b; +} +/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active .x-tab-glyph { + color: #15498b; +} +/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-active .x-tab-glyph { + color: #799ac4; +} + +/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active, +.x-tab-default-left-active, +.x-tab-default-right-active { + border-bottom: 1px solid #deecfd; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); +} +/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-active, .x-nlg +.x-tab-default-left-active, .x-nlg +.x-tab-default-right-active { + background-image: url(images/tab/tab-default-top-active-bg.gif); +} + +/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active { + border-top: 1px solid #deecfd; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); +} +/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-active { + background-image: url(images/tab/tab-default-bottom-active-bg.gif); +} + +/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled { + border-color: #bbd2ef; + cursor: default; +} +/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-inner { + color: #c3b3b3; +} +/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} +/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-glyph { + color: #c3b3b3; + opacity: 0.3; + filter: none; +} +/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-disabled .x-tab-glyph { + color: #d8dae4; +} + +/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled, +.x-tab-default-left-disabled, +.x-tab-default-right-disabled { + border-color: #bbd2ef #bbd2ef #99bce8; +} + +/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled { + border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef; +} + +/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled, +.x-tab-default-left-disabled, +.x-tab-default-right-disabled { + background-image: none; + background-color: #e1ecfa; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe)); + background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: linear-gradient(top, #e1ecfa, #ecf4fe); +} +/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-disabled, .x-nlg +.x-tab-default-left-disabled, .x-nlg +.x-tab-default-right-disabled { + background-image: url(images/tab/tab-default-top-disabled-bg.gif); +} + +/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled { + background-image: none; + background-color: #e1ecfa; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe)); + background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); +} +/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-disabled { + background-image: url(images/tab/tab-default-bottom-disabled-bg.gif); +} + +/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default { + background-image: none; +} + +/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-tl, +.x-tab-default-top-over .x-frame-bl, +.x-tab-default-top-over .x-frame-tr, +.x-tab-default-top-over .x-frame-br, +.x-tab-default-top-over .x-frame-tc, +.x-tab-default-top-over .x-frame-bc, +.x-tab-default-left-over .x-frame-tl, +.x-tab-default-left-over .x-frame-bl, +.x-tab-default-left-over .x-frame-tr, +.x-tab-default-left-over .x-frame-br, +.x-tab-default-left-over .x-frame-tc, +.x-tab-default-left-over .x-frame-bc, +.x-tab-default-right-over .x-frame-tl, +.x-tab-default-right-over .x-frame-bl, +.x-tab-default-right-over .x-frame-tr, +.x-tab-default-right-over .x-frame-br, +.x-tab-default-right-over .x-frame-tc, +.x-tab-default-right-over .x-frame-bc { + background-image: url(images/tab/tab-default-top-over-corners.gif); +} +/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-ml, +.x-tab-default-top-over .x-frame-mr, +.x-tab-default-left-over .x-frame-ml, +.x-tab-default-left-over .x-frame-mr, +.x-tab-default-right-over .x-frame-ml, +.x-tab-default-right-over .x-frame-mr { + background-image: url(images/tab/tab-default-top-over-sides.gif); +} +/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-mc, +.x-tab-default-left-over .x-frame-mc, +.x-tab-default-right-over .x-frame-mc { + background-color: #e8f2ff; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-over-fbg.gif); +} + +/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-tl, +.x-tab-default-bottom-over .x-frame-bl, +.x-tab-default-bottom-over .x-frame-tr, +.x-tab-default-bottom-over .x-frame-br, +.x-tab-default-bottom-over .x-frame-tc, +.x-tab-default-bottom-over .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-over-corners.gif); +} +/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-ml, +.x-tab-default-bottom-over .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-over-sides.gif); +} +/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-mc { + background-color: #e8f2ff; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-over-fbg.gif); +} + +/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-tl, +.x-tab-default-top-active .x-frame-bl, +.x-tab-default-top-active .x-frame-tr, +.x-tab-default-top-active .x-frame-br, +.x-tab-default-top-active .x-frame-tc, +.x-tab-default-top-active .x-frame-bc, +.x-tab-default-left-active .x-frame-tl, +.x-tab-default-left-active .x-frame-bl, +.x-tab-default-left-active .x-frame-tr, +.x-tab-default-left-active .x-frame-br, +.x-tab-default-left-active .x-frame-tc, +.x-tab-default-left-active .x-frame-bc, +.x-tab-default-right-active .x-frame-tl, +.x-tab-default-right-active .x-frame-bl, +.x-tab-default-right-active .x-frame-tr, +.x-tab-default-right-active .x-frame-br, +.x-tab-default-right-active .x-frame-tc, +.x-tab-default-right-active .x-frame-bc { + background-image: url(images/tab/tab-default-top-active-corners.gif); +} +/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-ml, +.x-tab-default-top-active .x-frame-mr, +.x-tab-default-left-active .x-frame-ml, +.x-tab-default-left-active .x-frame-mr, +.x-tab-default-right-active .x-frame-ml, +.x-tab-default-right-active .x-frame-mr { + background-image: url(images/tab/tab-default-top-active-sides.gif); +} +/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-mc, +.x-tab-default-left-active .x-frame-mc, +.x-tab-default-right-active .x-frame-mc { + background-color: #deecfd; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-active-fbg.gif); +} + +/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-tl, +.x-tab-default-bottom-active .x-frame-bl, +.x-tab-default-bottom-active .x-frame-tr, +.x-tab-default-bottom-active .x-frame-br, +.x-tab-default-bottom-active .x-frame-tc, +.x-tab-default-bottom-active .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-active-corners.gif); +} +/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-ml, +.x-tab-default-bottom-active .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-active-sides.gif); +} +/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-mc { + background-color: #deecfd; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-active-fbg.gif); +} + +/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-tl, +.x-tab-default-top-disabled .x-frame-bl, +.x-tab-default-top-disabled .x-frame-tr, +.x-tab-default-top-disabled .x-frame-br, +.x-tab-default-top-disabled .x-frame-tc, +.x-tab-default-top-disabled .x-frame-bc, +.x-tab-default-left-disabled .x-frame-tl, +.x-tab-default-left-disabled .x-frame-bl, +.x-tab-default-left-disabled .x-frame-tr, +.x-tab-default-left-disabled .x-frame-br, +.x-tab-default-left-disabled .x-frame-tc, +.x-tab-default-left-disabled .x-frame-bc, +.x-tab-default-right-disabled .x-frame-tl, +.x-tab-default-right-disabled .x-frame-bl, +.x-tab-default-right-disabled .x-frame-tr, +.x-tab-default-right-disabled .x-frame-br, +.x-tab-default-right-disabled .x-frame-tc, +.x-tab-default-right-disabled .x-frame-bc { + background-image: url(images/tab/tab-default-top-disabled-corners.gif); +} +/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-ml, +.x-tab-default-top-disabled .x-frame-mr, +.x-tab-default-left-disabled .x-frame-ml, +.x-tab-default-left-disabled .x-frame-mr, +.x-tab-default-right-disabled .x-frame-ml, +.x-tab-default-right-disabled .x-frame-mr { + background-image: url(images/tab/tab-default-top-disabled-sides.gif); +} +/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-mc, +.x-tab-default-left-disabled .x-frame-mc, +.x-tab-default-right-disabled .x-frame-mc { + background-color: #e1ecfa; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-disabled-fbg.gif); +} + +/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-tl, +.x-tab-default-bottom-disabled .x-frame-bl, +.x-tab-default-bottom-disabled .x-frame-tr, +.x-tab-default-bottom-disabled .x-frame-br, +.x-tab-default-bottom-disabled .x-frame-tc, +.x-tab-default-bottom-disabled .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-disabled-corners.gif); +} +/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-ml, +.x-tab-default-bottom-disabled .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-disabled-sides.gif); +} +/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-mc { + background-color: #e1ecfa; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif); +} + +/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default-top, +.x-nbr .x-tab-default-left, +.x-nbr .x-tab-default-right { + border-bottom-width: 1px !important; +} +/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default-bottom { + border-top-width: 1px !important; +} + +/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn { + width: 11px; + height: 11px; + background-image: url(images/tab/tab-default-close.gif); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); + opacity: 0.6; +} +/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn-over { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn { + top: 2px; + right: 2px; +} + +/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-close-btn { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-closable .x-tab-wrap { + padding-right: 14px; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-over:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-over:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-active:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-active:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-disabled:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-disabled:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default { + border-style: solid; + border-color: #99bce8; +} + +/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top { + padding: 1px 0 0; + border-width: 1px 1px 0; +} + +/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom { + padding: 0 0 1px 0; + border-width: 0 1px 1px 1px; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left { + padding: 0 0 0 1px; + border-width: 1px 0 1px 1px; +} + +/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right { + padding: 0 1px 0 0; + border-width: 1px 1px 1px 0; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-horizontal { + height: 25px; +} +/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-default-horizontal { + height: 23px; +} + +/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-vertical { + width: 25px; +} +/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-default-vertical { + width: 23px; +} + +/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-top { + padding-bottom: 2px; +} + +/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-bottom { + padding-top: 2px; +} + +/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-left { + padding-right: 2px; +} + +/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-right { + padding-left: 2px; +} + +/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default { + border-style: solid; + border-color: #99bce8; + background-color: #deecfd; +} + +/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-strip-default-horizontal { + height: 2px; +} + +/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-strip-default-vertical { + width: 2px; +} + +/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-top { + border-width: 1px 0 0 0; + height: 3px; +} +/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-top { + border-width: 1px 1px 0; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-bottom { + border-width: 0 0 1px 0; + height: 3px; +} +/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-bottom { + border-width: 0 1px 1px 1px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-left { + border-width: 0 0 0 1px; + width: 3px; +} +/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-left { + border-width: 1px 0 1px 1px; +} + +/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-right { + border-width: 0 1px 0 0; + width: 3px; +} +/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-right { + border-width: 1px 1px 1px 0; +} + +/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default { + background-color: #cbdbef; +} + +/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(top, #dde8f5, #cbdbef); + background-image: linear-gradient(top, #dde8f5, #cbdbef); +} +/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-top { + background: url(images/tab-bar/tab-bar-default-top-bg.gif); +} + +/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: linear-gradient(bottom, #dde8f5, #cbdbef); +} +/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-bottom { + background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0; +} + +/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(left, #dde8f5, #cbdbef); + background-image: linear-gradient(left, #dde8f5, #cbdbef); +} +/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-left { + background: url(images/tab-bar/tab-bar-default-left-bg.gif); +} + +/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(right, #dde8f5, #cbdbef); + background-image: linear-gradient(right, #dde8f5, #cbdbef); +} +/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-right { + background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right; +} + +/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-box-scroller { + cursor: pointer; +} +/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-left, +.x-tab-bar-default .x-tabbar-scroll-right { + height: 20px; + width: 18px; +} +/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-top, +.x-tab-bar-default .x-tabbar-scroll-bottom { + width: 20px; + height: 18px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-box-scroller { + margin-top: 1px; +} +/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-box-scroller { + margin-left: 1px; +} + +/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-left-top.gif); +} +/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-right-top.gif); +} + +/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-left-bottom.gif); +} +/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-right-bottom.gif); +} + +/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-left.gif); +} +/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-left.gif); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-right.gif); +} +/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-right.gif); +} + +/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-left-hover, +.x-tab-bar-default .x-tabbar-scroll-right-hover { + background-position: -18px 0; +} +/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-top-hover, +.x-tab-bar-default .x-tabbar-scroll-bottom-hover { + background-position: 0 -18px; +} +/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-box-scroller-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + cursor: default; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-top:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-bottom:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-left:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-right:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain { + border-width: 0; + padding: 0; + height: 23px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox { + border-color: #c5c5c5; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-row-checker, +.x-column-header-checkbox .x-column-header-text { + height: 13px; + width: 13px; + background-image: url(images/form/checkbox.gif); + line-height: 13px; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox .x-column-header-inner { + padding: 5px 5px 4px 5px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-cell-row-checker .x-grid-cell-inner { + padding: 4px 5px 3px 5px; +} +/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner { + padding-top: 3px; + padding-bottom: 2px; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-hd-checker-on .x-column-header-text, +.x-grid-row-selected .x-grid-row-checker, +.x-grid-row-checked .x-grid-row-checker { + background-position: 0 -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-expander { + cursor: pointer; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-tree-expander { + background-image: url(images/tree/arrows.gif); +} +/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-tree-expander-over .x-tree-expander { + background-position: -32px center; +} +/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander { + background-position: -16px center; +} +/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander { + background-position: -48px center; +} + +/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow { + background-image: url(images/tree/elbow.gif); +} +/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-end { + background-image: url(images/tree/elbow-end.gif); +} +/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-plus { + background-image: url(images/tree/elbow-plus.gif); +} +/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-plus.gif); +} +/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus { + background-image: url(images/tree/elbow-minus.gif); +} +/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-minus.gif); +} +/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-line { + background-image: url(images/tree/elbow-line.gif); +} + +/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-tree-expander { + background-image: url(images/tree/elbow-plus-nl.gif); +} +/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander { + background-image: url(images/tree/elbow-minus-nl.gif); +} + +/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon { + width: 16px; + height: 20px; +} + +/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-elbow-img { + width: 16px; + height: 20px; + margin-right: 0; +} + +/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon, +.x-tree-elbow-img, +.x-tree-checkbox { + margin-top: -3px; + margin-bottom: -4px; +} + +/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon-leaf { + background-image: url(images/tree/leaf.gif); +} + +/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon-parent { + background-image: url(images/tree/folder.gif); +} + +/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-node-expanded .x-tree-icon-parent { + background-image: url(images/tree/folder-open.gif); +} + +/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-checkbox { + margin-right: 3px; + top: 4px; + width: 13px; + height: 13px; + background-image: url(images/form/checkbox.gif); +} + +/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-checkbox-checked { + background-position: 0 -13px; +} + +/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-loading .x-tree-icon { + background-image: url(images/tree/loading.gif); +} + +/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-cell-inner-treecolumn { + font-size: 1px; + line-height: 0; +} + +/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-node-text { + font-size: 11px; + line-height: 13px; + padding-left: 3px; +} + +/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-cell-inner-treecolumn { + padding: 3px 6px 4px 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-append .x-dd-drop-icon { + background-image: url(images/tree/drop-append.gif); +} + +/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-above .x-dd-drop-icon { + background-image: url(images/tree/drop-above.gif); +} + +/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-below .x-dd-drop-icon { + background-image: url(images/tree/drop-below.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-between .x-dd-drop-icon { + background-image: url(images/tree/drop-between.gif); +} + +/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-ddindicator { + height: 1px; + border-width: 1px 0px 0px; + border-style: dotted; + border-color: green; +} + +/* including package ext-theme-classic */ +/* line 2, ../../sass/src/dom/Element.scss */ +.x-box-tl { + background: transparent no-repeat 0 0; + zoom: 1; +} + +/* line 7, ../../sass/src/dom/Element.scss */ +.x-box-tc { + height: 8px; + background: transparent repeat-x 0 0; + overflow: hidden; +} + +/* line 13, ../../sass/src/dom/Element.scss */ +.x-box-tr { + background: transparent no-repeat right -8px; +} + +/* line 17, ../../sass/src/dom/Element.scss */ +.x-box-ml { + background: transparent repeat-y 0; + padding-left: 4px; + overflow: hidden; + zoom: 1; +} + +/* line 24, ../../sass/src/dom/Element.scss */ +.x-box-mc { + background: repeat-x 0 -16px; + padding: 4px 10px; +} + +/* line 29, ../../sass/src/dom/Element.scss */ +.x-box-mc h3 { + margin: 0 0 4px 0; + zoom: 1; +} + +/* line 34, ../../sass/src/dom/Element.scss */ +.x-box-mr { + background: transparent repeat-y right; + padding-right: 4px; + overflow: hidden; +} + +/* line 40, ../../sass/src/dom/Element.scss */ +.x-box-bl { + background: transparent no-repeat 0 -16px; + zoom: 1; +} + +/* line 45, ../../sass/src/dom/Element.scss */ +.x-box-bc { + background: transparent repeat-x 0 -8px; + height: 8px; + overflow: hidden; +} + +/* line 51, ../../sass/src/dom/Element.scss */ +.x-box-br { + background: transparent no-repeat right -24px; +} + +/* line 55, ../../sass/src/dom/Element.scss */ +.x-box-tl, .x-box-bl { + padding-left: 8px; + overflow: hidden; +} + +/* line 60, ../../sass/src/dom/Element.scss */ +.x-box-tr, .x-box-br { + padding-right: 8px; + overflow: hidden; +} + +/* line 65, ../../sass/src/dom/Element.scss */ +.x-box-tl { + background-image: url(images/box/corners.gif); +} + +/* line 69, ../../sass/src/dom/Element.scss */ +.x-box-tc { + background-image: url(images/box/tb.gif); +} + +/* line 73, ../../sass/src/dom/Element.scss */ +.x-box-tr { + background-image: url(images/box/corners.gif); +} + +/* line 77, ../../sass/src/dom/Element.scss */ +.x-box-ml { + background-image: url(images/box/l.gif); +} + +/* line 81, ../../sass/src/dom/Element.scss */ +.x-box-mc { + background-color: #eee; + background-image: url(images/box/tb.gif); + font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; + color: #393939; + font-size: 15px; +} + +/* line 89, ../../sass/src/dom/Element.scss */ +.x-box-mc h3 { + font-size: 18px; + font-weight: bold; +} + +/* line 94, ../../sass/src/dom/Element.scss */ +.x-box-mr { + background-image: url(images/box/r.gif); +} + +/* line 98, ../../sass/src/dom/Element.scss */ +.x-box-bl { + background-image: url(images/box/corners.gif); +} + +/* line 102, ../../sass/src/dom/Element.scss */ +.x-box-bc { + background-image: url(images/box/tb.gif); +} + +/* line 106, ../../sass/src/dom/Element.scss */ +.x-box-br { + background-image: url(images/box/corners.gif); +} + +/* line 110, ../../sass/src/dom/Element.scss */ +.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/box/corners-blue.gif); +} + +/* line 114, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { + background-image: url(images/box/tb-blue.gif); +} + +/* line 118, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mc { + background-color: #c3daf9; +} + +/* line 122, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mc h3 { + color: #17385b; +} + +/* line 126, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-ml { + background-image: url(images/box/l-blue.gif); +} + +/* line 130, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mr { + background-image: url(images/box/r-blue.gif); +} + +/* line 2, ../../sass/src/window/MessageBox.scss */ +.x-message-box .x-msg-box-wait { + background-image: url(images/shared/blue-loading.gif); +} + +/* line 1, ../../sass/src/form/field/Trigger.scss */ +.x-form-trigger { + height: 22px; +} +/* line 5, ../../sass/src/form/field/Trigger.scss */ +.x-content-box .x-form-trigger { + height: 21px; +} + +/* line 12, ../../sass/src/form/field/Trigger.scss */ +.x-field-toolbar .x-form-trigger { + height: 20px; +} +/* line 16, ../../sass/src/form/field/Trigger.scss */ +.x-content-box .x-field-toolbar .x-form-trigger { + height: 19px; +} + +/* line 4, ../../sass/src/form/field/Spinner.scss */ +.x-content-box div.x-form-spinner-up, +.x-content-box div.x-form-spinner-down { + height: 10px; +} +/* line 10, ../../sass/src/form/field/Spinner.scss */ +.x-content-box .x-toolbar-item div.x-form-spinner-up, +.x-content-box .x-toolbar-item div.x-form-spinner-down { + height: 9px; +} + +/* line 2, ../../sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-wrap .x-toolbar { + border-left-color: #b5b8c8; + border-top-color: #b5b8c8; + border-right-color: #b5b8c8; +} + +/* line 9, ../../sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-input { + border: 1px solid #b5b8c8; + border-top-width: 0; +} + +/* line 1, ../../sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + background-color: #c5c5c5; + background-image: url(images/grid/grid3-hd-btn.gif); +} + +/* line 6, ../../sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-trigger { + height: 19px; +} +/* line 13, ../../sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down { + background-image: url(images/form/spinner-small.gif); +} +/* line 16, ../../sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down { + height: 9px; +} + +/* line 1, ../../sass/src/layout/container/Accordion.scss */ +.x-accordion-hd { + border-width: 1px 0 !important; + -webkit-box-shadow: inset 0 0 0 0 #d9e7f8; + -moz-box-shadow: inset 0 0 0 0 #d9e7f8; + box-shadow: inset 0 0 0 0 #d9e7f8; +} + +/* line 6, ../../sass/src/layout/container/Accordion.scss */ +.x-accordion-hd-sibling-expanded { + -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb; + -moz-box-shadow: inset 0 1px 0 0 #f3f7fb; + box-shadow: inset 0 1px 0 0 #f3f7fb; +} + +/* line 5, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, +.x-resizable-pinned .x-resizable-handle-east, +.x-resizable-pinned .x-resizable-handle-west { + background-position: left; +} +/* line 10, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, +.x-resizable-pinned .x-resizable-handle-south, +.x-resizable-pinned .x-resizable-handle-north { + background-position: top; +} +/* line 14, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast, +.x-resizable-pinned .x-resizable-handle-southeast { + background-position: top left; +} +/* line 18, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest, +.x-resizable-pinned .x-resizable-handle-northwest { + background-position: bottom right; +} +/* line 22, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast, +.x-resizable-pinned .x-resizable-handle-northeast { + background-position: bottom left; +} +/* line 26, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest, +.x-resizable-pinned .x-resizable-handle-southwest { + background-position: top right; +} + +/* line 6, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-horz, +.x-ie6 .x-slider-horz .x-slider-end, +.x-ie6 .x-slider-horz .x-slider-inner { + background-image: url(images/slider/slider-bg.gif); +} +/* line 10, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-horz .x-slider-thumb { + background-image: url(images/slider/slider-thumb.gif); +} +/* line 16, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-vert, +.x-ie6 .x-slider-vert .x-slider-end, +.x-ie6 .x-slider-vert .x-slider-inner { + background-image: url(images/slider/slider-v-bg.gif); +} +/* line 20, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-vert .x-slider-thumb { + background-image: url(images/slider/slider-v-thumb.gif); +} + +/* line 1, ../../sass/src/tab/Panel.scss */ +.x-tab-icon-el { + top: -1px; +} + +/* line 6, ../../sass/src/tab/Panel.scss */ +.x-tab-noicon .x-tab-icon { + display: none; +} diff --git a/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css b/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css new file mode 100644 index 00000000..68fc9c08 --- /dev/null +++ b/resources/ext-theme-classic/ext-theme-classic-all-rtl-debug.css @@ -0,0 +1,20927 @@ +/* including package ext-theme-base */ +/** + * Creates a background gradient. + * + * Example usage: + * .foo { + * @include background-gradient(#808080, matte, left); + * } + * + * @param {Color} $bg-color The background color of the gradient + * @param {String/List} [$type=$base-gradient] The type of gradient to be used. Can either + * be a String which is a predefined gradient name, or it can can be a list of color stops. + * If null is passed, this mixin will still set the `background-color` to $bg-color. + * The available predefined gradient names are: + * + * * bevel + * * glossy + * * recessed + * * matte + * * matte-reverse + * * panel-header + * * tabbar + * * tab + * * tab-active + * * tab-over + * * tab-disabled + * * grid-header + * * grid-header-over + * * grid-row-over + * * grid-cell-special + * * glossy-button + * * glossy-button-over + * * glossy-button-pressed + * + * Each of these gradient names corresponds to a function named linear-gradient[name]. + * Themes can override these functions to customize the color stops that they return. + * For example, to override the glossy-button gradient function add a function named + * "linear-gradient-glossy-button" to a file named "sass/etc/mixins/background-gradient.scss" + * in your theme. The function should return the result of calling the Compass linear-gradient + * function with the desired direction and color-stop information for the gradient. For example: + * + * @function linear-gradient-glossy-button($direction, $bg-color) { + * @return linear-gradient($direction, color_stops( + * mix(#fff, $bg-color, 10%), + * $bg-color 50%, + * mix(#000, $bg-color, 5%) 51%, + * $bg-color + * )); + * } + * + * @param {String} [$direction=top] The direction of the gradient. Can either be + * `top` or `left`. + * + * @member Global_CSS + */ +/* + * Method which inserts a full background-image property for a theme image. + * It checks if the file exists and if it doesn't, it'll throw an error. + * By default it will not include the background-image property if it is not found, + * but this can be changed by changing the default value of $include-missing-images to + * be true. + */ +/* including package ext-theme-neutral */ +/* including package ext-theme-classic */ +/* including package ext-theme-classic */ +/* including package ext-theme-neutral */ +/** + * @class Global_CSS + */ +/** + * @var {color} $color + * The default text color to be used throughout the theme. + */ +/** + * @var {string} $font-family + * The default font-family to be used throughout the theme. + */ +/** + * @var {string} $font-size + * The default font-family to be used throughout the theme. + */ +/** + * @var {string} $base-gradient + * The base gradient to be used throughout the theme. + */ +/** + * @var {color} $base-color + * The base color to be used throughout the theme. + */ +/** + * @var {color} $neutral-color + * The neutral color to be used throughout the theme. + */ +/** + * @var {color} $body-background-color + * Background color to apply to the body element + */ +/** + * @class Ext.FocusManager + */ +/** + * @var {color} + * The border-color of the focusFrame. See {@link #method-enable}. + */ +/** + * @var {color} + * The border-style of the focusFrame. See {@link #method-enable}. + */ +/** + * @var {color} + * The border-width of the focusFrame. See {@link #method-enable}. + */ +/** + * @class Ext.LoadMask + */ +/** + * @var {number} + * Opacity of the LoadMask + */ +/** + * @var {color} + * The background-color of the LoadMask + */ +/** + * @var {string} + * The type of cursor to dislay when the cursor is over the LoadMask + */ +/** + * @var {number/list} + * The padding to apply to the LoadMask's message element + */ +/** + * @var {string} + * The border-style of the LoadMask's message element + */ +/** + * @var {color} + * The border-color of the LoadMask's message element + */ +/** + * @var {number} + * The border-width of the LoadMask's message element + */ +/** + * @var {color} + * The background-color of the LoadMask's message element + */ +/** + * @var {string/list} + * The background-gradient of the LoadMask's message element. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The padding of the message inner element + */ +/** + * @var {string} + * The icon to display in the message inner element + */ +/** + * @var {list} + * The background-position of the icon + */ +/** + * @var {string} + * The border-style of the message inner element + */ +/** + * @var {color} + * The border-color of the message inner element + */ +/** + * @var {number} + * The border-width of the message inner element + */ +/** + * @var {color} + * The background-color of the message inner element + */ +/** + * @var {color} + * The text color of the message inner element + */ +/** + * @var {number} + * The font-size of the message inner element + */ +/** + * @var {string} + * The font-weight of the message inner element + */ +/** + * @var {string} + * The font-family of the message inner element + */ +/** + * @var {number/list} + * The padding of the message element + */ +/** + * @var {number} + * The border-radius of the message element + */ +/** + * @class Ext.ProgressBar + */ +/** + * @var {number} + * The height of the ProgressBar + */ +/** + * @var {color} + * The border-color of the ProgressBar + */ +/** + * @var {number} + * The border-width of the ProgressBar + */ +/** + * @var {number} + * The border-radius of the ProgressBar + */ +/** + * @var {color} + * The background-color of the ProgressBar + */ +/** + * @var {color} + * The background-color of the ProgressBar's moving element + */ +/** + * @var {string/list} + * The background-gradient of the ProgressBar's moving element. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The color of the ProgressBar's text when in front of the ProgressBar's moving element + */ +/** + * @var {color} + * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it + */ +/** + * @var {string} + * The text-align of the ProgressBar's text + */ +/** + * @var {number} + * The font-size of the ProgressBar's text + */ +/** + * @var {string} + * The font-weight of the ProgressBar's text + */ +/** + * @var {boolean} + * True to include the "default" ProgressBar UI + */ +/** + * @class Ext.button.Button + */ +/** + * @var {number} + * The default width for a button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height for a button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width for a {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height for a {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default space between a button's icon and text + */ +/** + * @var {number} + * The default border-radius for a small {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a small {@link #scale} button + */ +/** + * @var {number} + * The default padding for a small {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a small {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a small {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a small {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a small {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a small {@link #scale} button + */ +/** + * @var {number} + * The default width of a small {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a small {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a small {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default border-radius for a medium {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a medium {@link #scale} button + */ +/** + * @var {number} + * The default padding for a medium {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a medium {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a medium {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a medium {@link #scale} button + */ +/** + * @var {number} + * The default width of a medium {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a medium {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a medium {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default border-radius for a large {@link #scale} button + */ +/** + * @var {number} + * The default border-width for a large {@link #scale} button + */ +/** + * @var {number} + * The default padding for a large {@link #scale} button + */ +/** + * @var {number} + * The default horizontal padding to add to the left and right of the text element for + * a large {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is focused + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is pressed + */ +/** + * @var {number} + * The default font-size for a large {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-weight for a large {@link #scale} button when the button is disabled + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the cursor is over the button + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is focused + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is pressed + */ +/** + * @var {string} + * The default font-family for a large {@link #scale} button when the button is disabled + */ +/** + * @var {number} + * The default icon size for a large {@link #scale} button + */ +/** + * @var {number} + * The default width of a large {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default height of a large {@link #scale} button's {@link #cfg-menu} arrow + */ +/** + * @var {number} + * The default width of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {number} + * The default height of a large {@link #scale} {@link Ext.button.Split Split Button}'s arrow + */ +/** + * @var {color} + * The base color for the `default` button UI + */ +/** + * @var {color} + * The base color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The base color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The border-color for the `default` button UI + */ +/** + * @var {color} + * The border-color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The border-color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The background-color for the `default` button UI + */ +/** + * @var {color} + * The background-color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The background-color for the `default` button UI when the button is disabled + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the cursor is over the button. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is focused. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is pressed. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default` button UI when the button is disabled. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color for the `default` button UI + */ +/** + * @var {color} + * The text color for the `default` button UI when the cursor is over the button + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is focused + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is pressed + */ +/** + * @var {color} + * The text color for the `default` button UI when the button is disabled + */ +/** + * @var {color} + * The color of the {@link #glyph} icon for the `default` button UI + */ +/** + * @var {color} + * The opacity of the {@link #glyph} icon for the `default` button UI + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The border-color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The background-color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the cursor is over the + * button. Can be either the name of a predefined gradient or a list of color stops. Used + * as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is focused. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is pressed. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the `default-toolbar` button UI when the button is disabled. + * Can be either the name of a predefined gradient or a list of color stops. Used as the + * `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the cursor is over the button + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is focused + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is pressed + */ +/** + * @var {color} + * The text color for the `default-toolbar` button UI when the button is disabled + */ +/** + * @var {color} + * The color of the {@link #glyph} icon for the `default-toolbar` button UI + */ +/** + * @var {color} + * The opacity of the {@link #glyph} icon for the `default-toolbar` button UI + */ +/** + * @var {boolean} $button-include-ui-menu-arrows + * True to use a different image url for the menu button arrows for each button UI + */ +/** + * @var {boolean} $button-include-ui-split-arrows + * True to use a different image url for the split button arrows for each button UI + */ +/** + * @var {boolean} $button-include-split-over-arrows + * True to include different split arrows for buttons' hover state. + */ +/** + * @var {boolean} $button-toolbar-include-split-noline-arrows + * True to include "noline" split arrows for toolbar buttons in their default state. + */ +/** + * @var {number} $button-opacity-disabled + * opacity to apply to the button's main element when the buton is disabled + */ +/** + * @var {number} $button-inner-opacity-disabled + * opacity to apply to the button's inner elements (icon and text) when the buton is disabled + */ +/** + * @var {number} $button-toolbar-opacity-disabled + * opacity to apply to the toolbar button's main element when the buton is disabled + */ +/** + * @var {number} $button-toolbar-inner-opacity-disabled + * opacity to apply to the toolbar button's inner elements (icon and text) when the buton is disabled + */ +/** + * @var {boolean} + * True to include the "default" button UI + */ +/** + * @var {boolean} + * True to include the "default" button UI for "small" scale buttons + */ +/** + * @var {boolean} + * True to include the "default" button UI for "medium" scale buttons + */ +/** + * @var {boolean} + * True to include the "default" button UI for "large" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "small" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "medium" scale buttons + */ +/** + * @var {boolean} + * True to include the "default-toolbar" button UI for "large" scale buttons + */ +/** + * @class Ext.toolbar.Toolbar + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {color} + * The background-color of the Toolbar + */ +/** + * @var {string/list} + * The background-gradient of the Toolbar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {number} + * The horizontal spacing of Toolbar items + */ +/** + * @var {number} + * The vertical spacing of Toolbar items + */ +/** + * @var {number} + * The horizontal spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items + */ +/** + * @var {number} + * The vertical spacing of {@link Ext.panel.Panel#fbar footer} Toolbar items + */ +/** + * @var {color} + * The background-color of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {number} + * The border-width of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {number/list} + * The margin of {@link Ext.panel.Panel#fbar footer} Toolbars + */ +/** + * @var {color} + * The border-color of Toolbars + */ +/** + * @var {number} + * The border-width of Toolbars + */ +/** + * @var {string} + * The border-style of Toolbars + */ +/** + * @var {number} + * The width of Toolbar {@link Ext.toolbar.Spacer Spacers} + */ +/** + * @var {color} + * The main border-color of Toolbar {@link Ext.toolbar.Separator Separators} + */ +/** + * @var {color} + * The highlight border-color of Toolbar {@link Ext.toolbar.Separator Separators} + */ +/** + * @var {number/list} + * The margin of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number} + * The height of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {string} + * The border-style of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number} + * The border-width of {@link Ext.toolbar.Separator Separators} on a horizontally oriented Toolbar + */ +/** + * @var {number/list} + * The margin of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {string} + * The border-style of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {number} + * The border-width of {@link Ext.toolbar.Separator Separators} on a vertically oriented Toolbar + */ +/** + * @var {string} + * The default font-family of Toolbar text + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {number} + * The default font-size of Toolbar text + */ +/** + * @var {number/list} + * The margin of Toolbar text + */ +/** + * @var {color} + * The text-color of Toolbar text + */ +/** + * @var {number/list} + * The padding of Toolbar text + */ +/** + * @var {number} + * The line-height of Toolbar text + */ +/** + * @var {number} + * The width of Toolbar scrollers + */ +/** + * @var {number} + * The height of Toolbar scrollers + */ +/** + * @var {color} + * The border-color of Toolbar scrollers + */ +/** + * @var {number} + * The border-width of Toolbar scrollers + */ +/** + * @var {string} + * The cursor of Toolbar scrollers + */ +/** + * @var {string} + * The cursor of disabled Toolbar scrollers + */ +/** + * @var {number} + * The opacity of disabled Toolbar scrollers + */ +/** + * @var {string} + * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar + */ +/** + * @var {boolean} + * True to include the "default" toolbar UI + */ +/** + * @class Ext.panel.Panel + */ +/** + * @var {number} + * The default border-width of Panels + */ +/** + * @var {color} + * The base color of Panels + */ +/** + * @var {color} + * The default border-color of Panels + */ +/** + * @var {$border-width-threshold} + * The maximum width a Panel's border can be before resizer handles are embedded into the borders using negative absolute positions. + * + * This defaults to 2, so that in the classic theme which uses 1 pixel borders, resize handles are in the content area + * within the border as they always have been. + * + * In the Neptune theme, the handles are embedded into the 5 pixel wide borders of any framed panel. + */ +/** + * @var {string} + * The default border-style of Panels + */ +/** + * @var {color} + * The default body background-color of Panels + */ +/** + * @var {color} + * The default color of text inside a Panel's body + */ +/** + * @var {color} + * The default border-color of the Panel body + */ +/** + * @var {number} + * The default border-width of the Panel body + */ +/** + * @var {number} + * The default font-size of the Panel body + */ +/** + * @var {string} + * The default font-weight of the Panel body + */ +/** + * @var {number} + * The space between the Panel {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The background sprite to use for Panel {@link Ext.panel.Tool Tools} + */ +/** + * @var {number} + * The border-width of Panel Headers + */ +/** + * @var {string} + * The border-style of Panel Headers + */ +/** + * @var {number/list} + * The padding of Panel Headers + */ +/** + * @var {number} + * The font-size of Panel Headers + */ +/** + * @var {number} + * The line-height of Panel Headers + */ +/** + * @var {string} + * The font-weight of Panel Headers + */ +/** + * @var {string} + * The font-family of Panel Headers + */ +/** + * @var {string} + * The text-transform of Panel Headers + */ +/** + * @var {number/list} + * The padding of the Panel Header's text element + */ +/** + * @var {string/list} + * The background-gradient of the Panel Header. Can be either the name of a predefined + * gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of the Panel Header + */ +/** + * @var {color} + * The inner border-color of the Panel Header + */ +/** + * @var {number} + * The inner border-width of the Panel Header + */ +/** + * @var {color} + * The text color of the Panel Header + */ +/** + * @var {color} + * The background-color of the Panel Header + */ +/** + * @var {number} + * The width of the Panel Header icon + */ +/** + * @var {number} + * The height of the Panel Header icon + */ +/** + * @var {number} + * The space between the Panel Header icon and text + */ +/** + * @var {list} + * The background-position of the Panel Header icon + */ +/** + * @var {color} + * The color of the Panel Header glyph icon + */ +/** + * @var {number} + * The opacity of the Panel Header glyph icon + */ +/** + * @var {color} + * The base color of the framed Panels + */ +/** + * @var {number} + * The border-radius of framed Panels + */ +/** + * @var {number} + * The border-width of framed Panels + */ +/** + * @var {string} + * The border-style of framed Panels + */ +/** + * @var {number} + * The padding of framed Panels + */ +/** + * @var {color} + * The background-color of framed Panels + */ +/** + * @var {color} + * The border-color of framed Panels + */ +/** + * @var {number} + * The border-width of the body element of framed Panels + */ +/** + * @var {number} + * The border-width of framed Panel Headers + */ +/** + * @var {color} + * The inner border-color of framed Panel Headers + */ +/** + * @var {number} + * The inner border-width of framed Panel Headers + */ +/** + * @var {number/list} + * The padding of framed Panel Headers + */ +/** + * @var {number} + * The opacity of ghost Panels while dragging + */ +/** + * @var {string} + * The direction to strech the background-gradient of top docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of bottom docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of right docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {string} + * The direction to strech the background-gradient of left docked Headers when slicing images + * for IE using Sencha Cmd + */ +/** + * @var {boolean} + * True to include neptune style border management rules. + */ +/** + * @var {color} + * The color to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is + * `true`. + */ +/** + * @var {number} + * The width to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$panel-include-border-management-rules` is + * `true`. + */ +/** + * @var {boolean} + * True to include the "default" panel UI + */ +/** + * @var {boolean} + * True to include the "default-framed" panel UI + */ +/** + * @class Ext.tip.Tip + */ +/** + * @var {color} + * The background-color of the Tip + */ +/** + * @var {string/list} + * The background-gradient of the Tip. Can be either the name of a predefined gradient or a + * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The text color of the Tip body + */ +/** + * @var {number} + * The font-size of the Tip body + */ +/** + * @var {string} + * The font-weight of the Tip body + */ +/** + * @var {number/list} + * The padding of the Tip body + */ +/** + * @var {color} + * The text color of any anchor tags inside the Tip body + */ +/** + * @var {color} + * The text color of the Tip header + */ +/** + * @var {number} + * The font-size of the Tip header + */ +/** + * @var {string} + * The font-weight of the Tip header + */ +/** + * @var {number/list} + * The padding of the Tip header's body element + */ +/** + * @var {color} + * The border-color of the Tip + */ +/** + * @var {number} + * The border-width of the Tip + */ +/** + * @var {number} + * The border-radius of the Tip + */ +/** + * @var {color} + * The inner border-color of the form field error Tip + */ +/** + * @var {number} + * The inner border-width of the form field error Tip + */ +/** + * @var {color} + * The border-color of the form field error Tip + */ +/** + * @var {number} + * The border-radius of the form field error Tip + */ +/** + * @var {number} + * The border-width of the form field error Tip + */ +/** + * @var {color} + * The background-color of the form field error Tip + */ +/** + * @var {number/list} + * The padding of the form field error Tip's body element + */ +/** + * @var {color} + * The text color of the form field error Tip's body element + */ +/** + * @var {number} + * The font-size of the form field error Tip's body element + */ +/** + * @var {string} + * The font-weight of the form field error Tip's body element + */ +/** + * @var {color} + * The color of anchor tags in the form field error Tip's body element + */ +/** + * @var {number} + * The space between {@link Ext.panel.Tool Tools} in the header + */ +/** + * @var {string} + * The sprite to use for the header {@link Ext.panel.Tool Tools} + */ +/** + * @var {boolean} + * True to include the "default" tip UI + */ +/** + * @var {boolean} + * True to include the "form-invalid" tip UI + */ +/** + * @class Ext.container.ButtonGroup + */ +/** + * @var {color} + * The background-color of the ButtonGroup + */ +/** + * @var {color} + * The border-color of the ButtonGroup + */ +/** + * @var {number} + * The border-radius of the ButtonGroup + */ +/** + * @var {number} + * The border-radius of framed ButtonGroups + */ +/** + * @var {number} + * The border-width of the ButtonGroup + */ +/** + * @var {number/list} + * The body padding of the ButtonGroup + */ +/** + * @var {number/list} + * The inner border-width of the ButtonGroup + */ +/** + * @var {color} + * The inner border-color of the ButtonGroup + */ +/** + * @var {number/list} + * The margin of the header element. Used to add space around the header. + */ +/** + * @var {number} + * The font-size of the header + */ +/** + * @var {number} + * The font-weight of the header + */ +/** + * @var {number} + * The font-family of the header + */ +/** + * @var {number} + * The line-height of the header + */ +/** + * @var {number} + * The text color of the header + */ +/** + * @var {number} + * The padding of the header + */ +/** + * @var {number} + * The background-color of the header + */ +/** + * @var {number} + * The border-spacing to use on the table layout element + */ +/** + * @var {number} + * The background-color of framed ButtonGroups + */ +/** + * @var {number} + * The border-width of framed ButtonGroups + */ +/** + * @var {string} + * Sprite image to use for header {@link Ext.panel.Tool Tools} + */ +/** + * @var {boolean} + * True to include the "default" button group UI + */ +/** + * @var {boolean} + * True to include the "default-framed" button group UI + */ +/** + * @class Ext.window.Window + */ +/** + * @var {color} + * The base color of Windows + */ +/** + * @var {number} + * The padding of Windows + */ +/** + * @var {number} + * The border-radius of Windows + */ +/** + * @var {number} + * The border-width of Windows + */ +/** + * @var {color} + * The border-color of Windows + */ +/** + * @var {color} + * The inner border-color of Windows + */ +/** + * @var {number} + * The inner border-width of Windows + */ +/** + * @var {color} + * The background-color of Windows + */ +/** + * @var {number} + * The body border-width of Windows + */ +/** + * @var {string} + * The body border-style of Windows + */ +/** + * @var {color} + * The body border-color of Windows + */ +/** + * @var {color} + * The body background-color of Windows + */ +/** + * @var {color} + * The body text color of Windows + */ +/** + * @var {number/list} + * The padding of Window Headers + */ +/** + * @var {number} + * The font-size of Window Headers + */ +/** + * @var {number} + * The line-height of Window Headers + */ +/** + * @var {color} + * The text color of Window Headers + */ +/** + * @var {color} + * The background-color of Window Headers + */ +/** + * @var {string} + * The font-weight of Window Headers + */ +/** + * @var {number} + * The space between the Window {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The background sprite to use for Window {@link Ext.panel.Tool Tools} + */ +/** + * @var {string} + * The font-family of Window Headers + */ +/** + * @var {number/list} + * The padding of the Window Header's text element + */ +/** + * @var {string} + * The text-transform of Window Headers + */ +/** + * @var {number} + * The width of the Window Header icon + */ +/** + * @var {number} + * The height of the Window Header icon + */ +/** + * @var {number} + * The space between the Window Header icon and text + */ +/** + * @var {list} + * The background-position of the Window Header icon + */ +/** + * @var {color} + * The color of the Window Header glyph icon + */ +/** + * @var {number} + * The opacity of the Window Header glyph icon + */ +/** + * @var {number} + * The border-width of Window Headers + */ +/** + * @var {color} + * The inner border-color of Window Headers + */ +/** + * @var {number} + * The inner border-width of Window Headers + */ +/** + * @var {boolean} $ui-force-header-border + * True to force the window header to have a border on the side facing the window body. + * Overrides dock layout's border management border removal rules. + */ +/** + * @var {number} + * The opacity of ghost Windows while dragging + */ +/** + * @var {boolean} + * True to include neptune style border management rules. + */ +/** + * @var {color} + * The color to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$window-include-border-management-rules` is `true`. + */ +/** + * @var {number} + * The width to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$window-include-border-management-rules` is `true`. + */ +/** + * @var {boolean} + * True to include the "default" window UI + */ +/** + * @class Ext.form.Labelable + */ +/** + * @var {color} + * The text color of form field labels + */ +/** + * @var {string} + * The font-weight of form field labels + */ +/** + * @var {number} + * The font-size of form field labels + */ +/** + * @var {string} + * The font-family of form field labels + */ +/** + * @var {number} + * The line-height of form field labels + */ +/** + * @var {color} + * The text color of toolbar field labels + */ +/** + * @var {string} + * The font-weight of toolbar field labels + */ +/** + * @var {number} + * The font-size of toolbar field labels + */ +/** + * @var {string} + * The font-family of toolbar field labels + */ +/** + * @var {number} + * The line-height of toolbar field labels + */ +/** + * @var {number} + * Width for form error icons. + */ +/** + * @var {number} + * Height for form error icons. + */ +/** + * @var {number/list} + * Margin for error icons that are aligned to the side of the field + */ +/** + * @var {number} + * The space between the icon and the message for errors that display under the field + */ +/** + * @var {number/list} + * The padding on errors that display under the form field + */ +/** + * @var {color} + * The text color of form error messages + */ +/** + * @var {string} + * The font-weight of form error messages + */ +/** + * @var {number} + * The font-size of form error messages + */ +/** + * @var {string} + * The font-family of form error messages + */ +/** + * @var {number} + * The line-height of form error messages + */ +/** + * @var {measurement} $form-item-margin-bottom + * The bottom margin to apply to form items when in auto, anchor, vbox, or table layout + */ +/** + * @class Ext.form.field.Base + */ +/** + * @var {number} $form-field-height + * Height for form fields. + */ +/** + * @var {number} $form-toolbar-field-height + * Height for form fields in toolbar. + */ +/** + * @var {number} $form-field-padding + * Padding around form fields. + */ +/** + * @var {number} $form-field-font-size + * Font size for form fields. + */ +/** + * @var {string} $form-field-font-family + * Font family for form fields. + */ +/** + * @var {string} $form-field-font-weight + * Font weight for form fields. + */ +/** + * @var {font} $form-field-font + * Font for form fields. + */ +/** + * @var {number} $form-toolbar-field-font-size + * Font size for toolbar form fields. + */ +/** + * @var {string} $form-toolbar-field-font-family + * Font family for toolbar form fields. + */ +/** + * @var {string} $form-toolbar-field-font-weight + * Font weight for toolbar form fields. + */ +/** + * @var {font} $form-toolbar-field-font + * Font for toolbar form fields. + */ +/** + * @var {color} $form-field-color + * Text color for form fields. + */ +/** + * @var {color} $form-field-empty-color + * Text color for empty form fields. + */ +/** + * @var {color} $form-field-border-color + * Border color for form fields. + */ +/** + * @var {number} $form-field-border-width + * Border width for form fields. + */ +/** + * @var {string} $form-field-border-style + * Border style for form fields. + */ +/** + * @var {color} $form-field-focus-border-color + * Border color for focused form fields. + */ +/** + * @var {color} $form-field-invalid-border-color + * Border color for invalid form fields. + */ +/** + * @var {color} $form-field-background-color + * Background color for form fields. + */ +/** + * @var {string} $form-field-background-image + * Background image for form fields. + */ +/** + * @var {color} $form-field-invalid-background-color + * Background color for invalid form fields. + */ +/** + * @var {string} $form-field-invalid-background-image + * Background image for invalid form fields. + */ +/** + * @var {string} $form-field-invalid-background-repeat + * Background repeat for invalid form fields. + */ +/** + * @var {string/list} $form-field-invalid-background-position + * Background position for invalid form fields. + */ +/** + * @var {number} $form-field-disabled-opacity + */ +/** + * @class Ext.form.field.TextArea + */ +/** + * @var {number/string} + * The line-height to use for the TextArea's text + */ +/** + * @class Ext.form.field.Display + */ +/** + * @var {color} + * The text color of display fields + */ +/** + * @var {string} + * The font-weight of display fields + */ +/** + * @var {number} + * The font-size of display fields + */ +/** + * @var {string} + * The font-family of display fields + */ +/** + * @var {number} + * The line-height of display fields + */ +/** + * @var {string} + * The font-weight of toolbar display fields + */ +/** + * @var {number} + * The font-size of toolbar display fields + */ +/** + * @var {string} + * The font-family of toolbar display fields + */ +/** + * @var {number} + * The line-height of toolbar display fields + */ +/** + * @class Ext.window.MessageBox + */ +/** + * @var {color} + * The background-color of the MessageBox body + */ +/** + * @var {number} + * The border-width of the MessageBox body + */ +/** + * @var {color} + * The border-color of the MessageBox body + */ +/** + * @var {string} + * The border-style of the MessageBox body + */ +/** + * @var {list} + * The background-position of the MessageBox icon + */ +/** + * @class Ext.form.field.Checkbox + */ +/** + * @var {number} + * The size of the checkbox + */ +/** + * @var {number} + * The space between the boxLabel and the checkbox. + */ +/** + * @class Ext.form.CheckboxGroup + */ +/** + * @var {number/list} + * The padding of the CheckboxGroup body element + */ +/** + * @var {color} + * The text color of the CheckboxGroup label + */ +/** + * @var {number} + * The padding of the CheckboxGroup label + */ +/** + * @var {number} + * The margin of the CheckboxGroup label + */ +/** + * @var {number} + * The border-width of the CheckboxGroup label + */ +/** + * @var {number} + * The border-style of the CheckboxGroup label + */ +/** + * @var {number} + * The border-color of the CheckboxGroup label + */ +/** + * @class Ext.form.FieldSet + */ +/** + * @var {number} + * The font-size of the FieldSet header + */ +/** + * @var {string} + * The font-weight of the FieldSet header + */ +/** + * @var {string} + * The font-family of the FieldSet header + */ +/** + * @var {number/string} + * The line-height of the FieldSet header + */ +/** + * @var {color} + * The text color of the FieldSet header + */ +/** + * @var {number} + * The border-width of the FieldSet + */ +/** + * @var {string} + * The border-style of the FieldSet + */ +/** + * @var {color} + * The border-color of the FieldSet + */ +/** + * @var {number/list} + * The FieldSet's padding + */ +/** + * @var {number/list} + * The FieldSet's margin + */ +/** + * @var {number/list} + * The padding to apply to the FieldSet's header + */ +/** + * @var {number/list} + * The margin to apply to the FieldSet's collapse tool + */ +/** + * @var {number/list} + * The padding to apply to the FieldSet's collapse tool + */ +/** + * @var {number/list} + * The margin to apply to the FieldSet's checkbox (for FieldSets that use + * {@link #checkboxToggle}) + */ +/** + * @var {number} + * The size of the FieldSet's collapse tool + */ +/** + * @var {string} $fieldset-collapse-tool-background-image + * The background-image to use for the collapse tool. If null the default tool + * sprite will be used. Defaults to null. + */ +/** + * @class Ext.form.field.Radio + */ +/** + * @var {number} + * The size of the radio button + */ +/** + * @class Ext.form.field.Trigger + */ +/** + * @var {number} + * The width of the Trigger field's trigger element + */ +/** + * @var {number/list} + * The width of the trigger's border + */ +/** + * @var {color} + * The color of the trigger's border + */ +/** + * @var {string} + * The style of the trigger's border + */ +/** + * @var {color} + * The color of the trigger's border when hovered + */ +/** + * @var {color} + * The color of the trigger's border when the field is focused + */ +/** + * @var {color} + * The color of the trigger's border when the field is focused and the trigger is hovered + */ +/** + * @class Ext.form.field.Spinner + */ +/** + * @var {number} + * The height of the Spinner trigger buttons + */ +/** + * @var {number} + * The height of the Spinner trigger buttons when the Spinner is used on a + * {@link Ext.toolbar.Toolbar Toolbar} + */ +/** + * @class Ext.toolbar.Paging + */ +/** + * @var {boolean} + * True to include different icons when the paging toolbar buttons are disabled. + */ +/** + * @class Ext.view.BoundList + */ +/** + * @var {color} + * The background-color of the BoundList + */ +/** + * @var {color} + * The border-color of the BoundList + */ +/** + * @var {number} + * The border-width of the BoundList + */ +/** + * @var {string} + * The border-style of the BoundList + */ +/** + * @var {number} + * The height of BoundList items + */ +/** + * @var {number/list} + * The padding of BoundList items + */ +/** + * @var {number} + * The border-width of BoundList items + */ +/** + * @var {string} + * The border-style of BoundList items + */ +/** + * @var {color} + * The border-color of BoundList items + */ +/** + * @var {color} + * The border-color of hovered BoundList items + */ +/** + * @var {color} + * The border-color of selected BoundList items + */ +/** + * @var {color} + * The background-color of hovered BoundList items + */ +/** + * @var {color} + * The background-color of selected BoundList items + */ +/** + * @class Ext.picker.Date + */ +/** + * @var {number} + * The border-width of the DatePicker + */ +/** + * @var {string} + * The border-style of the DatePicker + */ +/** + * @var {color} + * The background-color of the DatePicker + */ +/** + * @var {string} + * The background-image of the DatePicker next arrow + */ +/** + * @var {string} + * The background-image of the DatePicker previous arrow + */ +/** + * @var {number} + * The width of DatePicker arrows + */ +/** + * @var {number} + * The height of DatePicker arrows + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a DatePicker arrow + */ +/** + * @var {number} + * The opacity of the DatePicker arrows + */ +/** + * @var {number} + * The opacity of the DatePicker arrows when hovered + */ +/** + * @var {string/list} + * The Date Picker header background gradient. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The padding of the Date Picker header + */ +/** + * @var {color} + * The color of the Date Picker month button + */ +/** + * @var {number} + * The width of the arrow on the Date Picker month button + */ +/** + * @var {string} + * The background-image of the arrow on the Date Picker month button + */ +/** + * @var {boolean} + * True to render the month button as transparent + */ +/** + * @var {string} + * The text-align of the Date Picker header + */ +/** + * @var {number} + * The height of Date Picker items + */ +/** + * @var {number} + * The width of Date Picker items + */ +/** + * @var {number/list} + * The padding of Date Picker items + */ +/** + * @var {string} + * The font-family of Date Picker items + */ +/** + * @var {number} + * The font-size of Date Picker items + */ +/** + * @var {string} + * The font-weight of Date Picker items + */ +/** + * @var {string} + * The text-align of Date Picker items + */ +/** + * @var {color} + * The text color of Date Picker items + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Date Picker item + */ +/** + * @var {string} + * The font-family of Date Picker column headers + */ +/** + * @var {number} + * The font-size of Date Picker column headers + */ +/** + * @var {string} + * The font-weight of Date Picker column headers + */ +/** + * @var {string/list} + * The background-gradient of Date Picker column headers. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string} + * The border-style of Date Picker column headers + */ +/** + * @var {number} + * The border-width of Date Picker column headers + */ +/** + * @var {string} + * The text-align of Date Picker column headers + */ +/** + * @var {number} + * The height of Date Picker column headers + */ +/** + * @var {number/list} + * The padding of Date Picker column headers + */ +/** + * @var {number} + * The border-width of Date Picker items + */ +/** + * @var {string} + * The border-style of Date Picker items + */ +/** + * @var {color} + * The border-color of Date Picker items + */ +/** + * @var {string} + * The border-style of today's date on the Date Picker + */ +/** + * @var {string} + * The border-style of the selected item + */ +/** + * @var {string} + * The font-weight of the selected item + */ +/** + * @var {color} + * The text color of the items in the previous and next months + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a disabled item + */ +/** + * @var {color} + * The text color of disabled Date Picker items + */ +/** + * @var {color} + * The background-color of disabled Date Picker items + */ +/** + * @var {color} + * The background-color of the Date Picker footer + */ +/** + * @var {string/list} + * The background-gradient of the Date Picker footer. Can be either the name of a + * predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number/list} + * The border-width of the Date Picker footer + */ +/** + * @var {string} + * The border-style of the Date Picker footer + */ +/** + * @var {string} + * The text-align of the Date Picker footer + */ +/** + * @var {number/list} + * The padding of the Date Picker footer + */ +/** + * @var {number} + * The space between the footer buttons + */ +/** + * @var {color} + * The border-color of the Month Picker + */ +/** + * @var {number} + * The border-width of the Month Picker + */ +/** + * @var {string} + * The border-style of the Month Picker + */ +/** + * @var {color} + * The text color of Month Picker items + */ +/** + * @var {color} + * The text color of Month Picker items + */ +/** + * @var {color} + * The border-color of Month Picker items + */ +/** + * @var {string} + * The border-style of Month Picker items + */ +/** + * @var {string} + * The font-family of Month Picker items + */ +/** + * @var {number} + * The font-size of Month Picker items + */ +/** + * @var {string} + * The font-weight of Month Picker items + */ +/** + * @var {number/list} + * The margin of Month Picker items + */ +/** + * @var {string} + * The text-align of Month Picker items + */ +/** + * @var {number} + * The height of Month Picker items + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Month Picker item + */ +/** + * @var {color} + * The background-color of hovered Month Picker items + */ +/** + * @var {color} + * The background-color of selected Month Picker items + */ +/** + * @var {string} + * The border-style of selected Month Picker items + */ +/** + * @var {color} + * The border-color of selected Month Picker items + */ +/** + * @var {number} + * The height of the Month Picker year navigation buttons + */ +/** + * @var {number} + * The width of the Month Picker year navigation buttons + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a Month Picker year navigation button + */ +/** + * @var {number} + * The opacity of the Month Picker year navigation buttons + */ +/** + * @var {number} + * The opacity of hovered Month Picker year navigation buttons + */ +/** + * @var {string} + * The background-image of the Month Picker next year navigation button + */ +/** + * @var {string} + * The background-image of the Month Picker previous year navigation button + */ +/** + * @var {list} + * The background-poisition of the Month Picker next year navigation button + */ +/** + * @var {list} + * The background-poisition of the hovered Month Picker next year navigation button + */ +/** + * @var {list} + * The background-poisition of the Month Picker previous year navigation button + */ +/** + * @var {list} + * The background-poisition of the hovered Month Picker previous year navigation button + */ +/** + * @var {string} + * The border-style of the Month Picker separator + */ +/** + * @var {number} + * The border-width of the Month Picker separator + */ +/** + * @var {color} + * The border-color of the Month Picker separator + */ +/** + * @var {number/list} + * The margin of Month Picker items when the datepicker does not have footer buttons + */ +/** + * @var {number} + * The height of Month Picker items when the datepicker does not have footer buttons + */ +/** + * @class Ext.picker.Color + */ +/** + * @var {color} + * The background-color of Color Pickers + */ +/** + * @var {color} + * The border-color of Color Pickers + */ +/** + * @var {number} + * The border-width of Color Pickers + */ +/** + * @var {string} + * The border-style of Color Pickers + */ +/** + * @var {number} + * The number of columns to display in the Color Picker + */ +/** + * @var {number} + * The number of rows to display in the Color Picker + */ +/** + * @var {number} + * The height of each Color Picker item + */ +/** + * @var {number} + * The width of each Color Picker item + */ +/** + * @var {number} + * The padding of each Color Picker item + */ +/** + * @var {string} + * The cursor to display when the mouse is over a Color Picker item + */ +/** + * @var {color} + * The border-color of Color Picker items + */ +/** + * @var {number} + * The border-width of Color Picker items + */ +/** + * @var {string} + * The border-style of Color Picker items + */ +/** + * @var {color} + * The border-color of hovered Color Picker items + */ +/** + * @var {color} + * The background-color of Color Picker items + */ +/** + * @var {color} + * The background-color of hovered Color Picker items + */ +/** + * @var {color} + * The border-color of the selected Color Picker item + */ +/** + * @var {color} + * The background-color of the selected Color Picker item + */ +/** + * @var {color} + * The inner border-color of Color Picker items + */ +/** + * @var {number} + * The inner border-width of Color Picker items + */ +/** + * @var {string} + * The inner border-style of Color Picker items + */ +/** + * @class Ext.form.field.HtmlEditor + */ +/** + * @var {number} + * The border-width of the HtmlEditor + */ +/** + * @var {color} + * The border-color of the HtmlEditor + */ +/** + * @var {color} + * The background-color of the HtmlEditor + */ +/** + * @var {number} + * The size of the HtmlEditor toolbar icons + */ +/** + * @var {number} + * The font-size of the HtmlEditor's font selection control + */ +/** + * @var {number} + * The font-family of the HtmlEditor's font selection control + */ +/** + * @class Ext.panel.Table + */ +/** + * @var {color} + * The color of the text in the grid cells + */ +/** + * @var {number} + * The font size of the text in the grid cells + */ +/** + * var {number} $grid-row-cell-line-height + * The line-height of the text inside the grid cells. + */ +/** + * @var {string} + * The font-weight of the text in the grid cells + */ +/** + * @var {string} + * The font-family of the text in the grid cells + */ +/** + * @var {color} + * The background-color of the grid cells + */ +/** + * @var {color} + * The border-color of row/column borders. Can be specified as a single color, or as a list + * of colors containing the row border color followed by the column border color. + */ +/** + * @var {string} + * The border-style of the row/column borders. + */ +/** + * @var {number} + * The border-width of the row and column borders. + */ +/** + * @var {color} + * The background-color of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {string} + * The background-gradient to use for "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {number} + * The border-width of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border width is determined by + * {#$grid-row-cell-border-width}. + */ +/** + * @var {color} + * The border-color of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border color is determined by + * {#$grid-row-cell-border-color}. + */ +/** + * @var {string} + * The border-style of "special" cells. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the row border style is determined by + * {#$grid-row-cell-border-style}. + */ +/** + * @var {color} + * The border-color of "special" cells when the row is selected using a {@link + * Ext.selection.RowModel Row Selection Model}. Special cells are created by {@link + * Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel Checkbox Selection + * Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + * Only applies to the vertical border, since the selected row border color is determined by + * {#$grid-row-cell-selected-border-color}. + */ +/** + * @var {color} + * The background-color of "special" cells when the row is hovered. Special cells are + * created by {@link Ext.grid.RowNumberer RowNumberer}, {@link Ext.selection.CheckboxModel + * Checkbox Selection Model} and {@link Ext.grid.plugin.RowExpander RowExpander}. + */ +/** + * @var {color} + * The background-color color of odd-numbered rows when the table view is configured with + * `{@link Ext.view.Table#stripeRows stripeRows}: true`. + */ +/** + * @var {string} + * The border-style of the hovered row + */ +/** + * @var {color} + * The text color of the hovered row + */ +/** + * @var {color} + * The background-color of the hovered row + */ +/** + * @var {color} + * The border-color of the hovered row + */ +/** + * @var {string} + * The border-style of the selected row + */ +/** + * @var {color} + * The text color of the selected row + */ +/** + * @var {color} + * The background-color of the selected row + */ +/** + * @var {color} + * The border-color of the selected row + */ +/** + * @var {color} + * The border-color of the focused row + */ +/** + * @var {string} + * The border-style of the focused row + */ +/** + * @var {color} + * The text color of the focused row + */ +/** + * @var {color} + * The background-color of the focused row + */ +/** + * @var {boolean} + * True to show the focus border when a row is focused even if the grid has no + * {@link Ext.panel.Table#rowLines rowLines}. + */ +/** + * @var {color} + * The text color of a selected cell when using a {@link Ext.selection.CellModel + * Cell Selection Model}. + */ +/** + * @var {color} + * The background-color of a selected cell when using a {@link Ext.selection.CellModel + * Cell Selection Model}. + */ +/** + * @var {number} + * The amount of padding to apply to the grid cell's inner div element + */ +/** + * @var {string} + * The type of text-overflow to use on the grid cell's inner div element + */ +/** + * @var {color} + * The border-color of the grid body + */ +/** + * @var {number} + * The border-width of the grid body border + */ +/** + * @var {string} + * The border-style of the grid body border + */ +/** + * @var {color} + * The background-color of the grid body + */ +/** + * @var {number} + * The amount of padding to apply to the grid body when the grid contains no data. + */ +/** + * @var {color} + * The text color of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {color} + * The background color of the grid body when the grid contains no data. + */ +/** + * @var {number} + * The font-size of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {number} + * The font-weight of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {number} + * The font-family of the {@link Ext.view.Table#emptyText emptyText} in the grid body when + * the grid contains no data. + */ +/** + * @var {color} + * The color of the resize markers that display when dragging a column border to resize + * the column + */ +/** + * @class Ext.grid.header.DropZone + */ +/** + * @var {number} + * The size of the column move icon + */ +/** + * @class Ext.grid.header.Container + */ +/** + * @var {color} + * The background-color of grid headers + */ +/** + * @var {string/list} + * The background-gradient of grid headers. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of grid headers + */ +/** + * @var {number} + * The border-width of grid headers + */ +/** + * @var {string} + * The border-style of grid headers + */ +/** + * @var {color} + * The background-color of grid headers when the cursor is over the header + */ +/** + * @var {string/list} + * The background-gradient of grid headers when the cursor is over the header. Can be + * either the name of a predefined gradient or a list of color stops. Used as the `$type` + * parameter for {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The background-color of a grid header when its menu is open + */ +/** + * @var {number/list} + * The padding to apply to grid headers + */ +/** + * @var {number} + * The height of grid header triggers + */ +/** + * @var {number} + * The width of grid header triggers + */ +/** + * @var {number} + * The width of the grid header sort icon + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over a grid header trigger + */ +/** + * @var {number} + * The amount of space between the header trigger and text + */ +/** + * @var {list} + * The background-position of the header trigger + */ +/** + * @var {color} + * The background-color of the header trigger + */ +/** + * @var {color} + * The background-color of the header trigger when the menu is open + */ +/** + * @var {number} + * The space between the grid header sort icon and the grid header text + */ +/** + * @class Ext.grid.column.Column + */ +/** + * @var {string} + * The font-family of grid column headers + */ +/** + * @var {number} + * The font-size of grid column headers + */ +/** + * @var {string} + * The font-weight of grid column headers + */ +/** + * @var {number} + * The line-height of grid column headers + */ +/** + * @var {color} + * The text color of grid column headers + */ +/** + * @var {number} + * The border-width of grid column headers + */ +/** + * @var {string} + * The border-style of grid column headers + */ +/** + * @class Ext.grid.column.Action + */ +/** + * @var {number} + * The height of action column icons + */ +/** + * @var {number} + * The width of action column icons + */ +/** + * @var {string} + * The type of cursor to display when the cursor is over an action column icon + */ +/** + * @var {number} + * The opacity of disabled action column icons + */ +/** + * @var {number} + * The amount of padding to add to the left and right of the action column cell + */ +/** + * @class Ext.grid.column.CheckColumn + */ +/** + * @var {number} + * Opacity of disabled CheckColumns + */ +/** + * @class Ext.grid.column.RowNumberer + */ +/** + * @var {number} + * The horizontal space before the number in the RowNumberer cell + */ +/** + * @var {number} + * The horizontal space after the number in the RowNumberer cell + */ +/** + * @class Ext.grid.feature.Grouping + */ +/** + * @var {color} + * The background color of group headers + */ +/** + * @var {number/list} + * The border-width of group headers + */ +/** + * @var {string} + * The border-style of group headers + */ +/** + * @var {color} + * The border-color of group headers + */ +/** + * @var {number/list} + * The padding of group headers + */ +/** + * @var {string} + * The cursor of group headers + */ +/** + * @var {color} + * The text color of group header titles + */ +/** + * @var {string} + * The font-family of group header titles + */ +/** + * @var {number} + * The font-size of group header titles + */ +/** + * @var {string} + * The font-weight of group header titles + */ +/** + * @var {number} + * The line-height of group header titles + */ +/** + * @var {number/list} + * The amount of padding to add to the group title element. This is typically used + * to reserve space for an icon by setting the amountof space to be reserved for the icon + * as the left value and setting the remaining sides to 0. + */ +/** + * @class Ext.grid.feature.RowBody + */ +/** + * @var {number} + * The font-size of the RowBody + */ +/** + * @var {number} + * The line-height of the RowBody + */ +/** + * @var {string} + * The font-family of the RowBody + */ +/** + * @var {number} + * The font-weight of the RowBody + */ +/** + * @var {number/list} + * The padding of the RowBody + */ +/** + * @class Ext.grid.feature.RowWrap + */ +/** + * @var {color} + * The border-color of wrapped rows + */ +/** + * @var {string} + * The border-style of wrapped rows + */ +/** + * @class Ext.grid.locking.Lockable + */ +/** + * @var {number} + * The width of the border between the locked views + */ +/** + * @var {string} + * The border-style of the border between the locked views + */ +/** + * @class Ext.grid.plugin.Editing + */ +/** + * The height of grid editor text fields. Defaults to $form-field-height. If grid row + * height is smaller than $form-field-height, defaults to the grid row height. Grid row + * height is caluclated by adding $grid-row-cell-line-height to the top and bottom values of + * $grid-cell-inner-padding. + */ +/** + * The padding of grid editor text fields. + */ +/** + * @var {number} + * The font size of the grid editor text + */ +/** + * @var {string} + * The font-weight of the grid editor text + */ +/** + * @var {string} + * The font-family of the grid editor text + */ +/** + * @class Ext.grid.plugin.RowEditing + */ +/** + * @var {color} + * The background-color of the RowEditor + */ +/** + * @var {color} + * The border-color of the RowEditor + */ +/** + * @var {number} + * The border-width of the RowEditor + */ +/** + * @var {number/list} + * The padding of the RowEditor + */ +/** + * @var {number} + * The amount of space in between the editor fields + */ +/** + * @var {number} + * The space between the RowEditor buttons + */ +/** + * @var {number} + * The border-radius of the RowEditor button container + */ +/** + * @var {number/list} + * The padding of the RowEditor button container + */ +/** + * @var {number/list} + * Padding to apply to the body element of the error tooltip + */ +/** + * @var {string} + * The list-style of the error tooltip's list items + */ +/** + * @var {number} + * Space to add before each list item on the error tooltip + */ +/** + * @class Ext.grid.plugin.RowExpander + */ +/** + * @var {number} + * The height of the RowExpander icon + */ +/** + * @var {number} + * The width of the RowExpander icon + */ +/** + * @var {number} + * The horizontal space before the RowExpander icon + */ +/** + * @var {number} + * The horizontal space after the RowExpander icon + */ +/** + * @var {string} + * The cursor for the RowExpander icon + */ +/** + * @class Ext.grid.property.Grid + */ +/** + * @var {string} + * The background-image of property grid cells + */ +/** + * @var {string} + * The background-position of property grid cells + */ +/** + * @var {number/string} + * The padding to add before the text of property grid cells to make room for the + * background-image. Only applies if $grid-property-cell-background-image is not null + */ +/** + * @class Ext.layout.container.Accordion + */ +/** + * @var {color} + * The text color of Accordion headers + */ +/** + * @var {color} + * The background-color of Accordion headers + */ +/** + * @var {number} + * The size of {@link Ext.panel.Tool Tools} in Accordion headers + */ +/** + * @var {number/list} + * The border-width of Accordion headers + */ +/** + * @var {number/list} + * The padding of Accordion headers + */ +/** + * @var {string} + * The font-weight of Accordion headers + */ +/** + * @var {string} + * The font-family of Accordion headers + */ +/** + * @var {string} + * The text-transform property of Accordion headers + */ +/** + * @var {string} + * The text-transform property of Accordion headers + */ +/** + * @var {color} + * The background-color of the Accordion layout element + */ +/** + * @var {color} + * The background-color of the Accordion layout element + */ +/** + * @var {number/list} + * The padding of the Accordion layout element + */ +/** + * @var {string} + * The sprite image to use for {@link Ext.panel.Tool Tools} in Accordion headers + */ +/** + * @class Ext.resizer.Splitter + */ +/** + * @var {number} + * The size of the Splitter + */ +/** + * @var {color} + * The background-color of the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {number} + * The opacity of the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {number} + * The opacity of the collapse tool on the active Splitter (the Splitter currently being dragged) + */ +/** + * @var {string} + * The the type of cursor to display when the cursor is over the collapse tool + */ +/** + * @var {number} + * The size of the collapse tool. This becomes the width of the collapse tool for + * horizontal splitters, and the height for vertical splitters. + */ +/** + * @class Ext.layout.container.Border + */ +/** + * @var {color} + * The background-color of the Border layout element + */ +/** + * @class Ext.menu.Menu + */ +/** + * @var {color} + * The background-color of the Menu + */ +/** + * @var {color} + * The border-color of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {color} + * The background-color of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {number} + * The size of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {color} + * The border-color of the Menu + */ +/** + * @var {string} + * The border-style of the Menu + */ +/** + * @var {number} + * The border-width of the Menu + */ +/** + * @var {number} + * The font-size of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The margin of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The height of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The border-width of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {string} + * The style of cursor to display when the cursor is over a {@link Ext.menu.Item Menu Item} + */ +/** + * @var {color} + * The background-color of the active {@link Ext.menu.Item Menu Item} + */ +/** + * @var {color} + * The border-color of the active {@link Ext.menu.Item Menu Item} + */ +/** + * @var {string/list} + * The background-gradient for {@link Ext.menu.Item Menu Items}. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {number} + * The border-radius of {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The size of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {list} + * The background-position of {@link Ext.menu.Item Menu Item} icons + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} text + */ +/** + * @var {number/list} + * The margin of {@link Ext.menu.Separator Menu Separators} + */ +/** + * @var {number} + * The padding to the right of {@link Ext.menu.CheckItem Check Items}, to make room + * for the checkbox + */ +/** + * @var {number} + * The height of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The width of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The space to the left and right of {@link Ext.menu.Item Menu Item} arrows + */ +/** + * @var {number} + * The opacity of disabled {@link Ext.menu.Item Menu Items} + */ +/** + * @var {number} + * The height of Menu crollers + */ +/** + * @var {number} + * The opacity of Menu crollers + */ +/** + * @var {number} + * The opacity of Menu crollers when hovered + */ +/** + * @var {number} + * The opacity of Menu crollers when pressed + */ +/** + * @var {number/list} + * The padding to apply to the Menu body element + */ +/** + * @var {color} + * The color of Menu Item text + */ +/** + * @var {number/list} + * The margin non-MenuItems placed in a Menu + */ +/** + * @var {color} $menu-glyph-color + * The color to use for menu icons configured using {@link Ext.menu.Item#glyph glyph} + */ +/** + * @var {number} $menu-glyph-opacity + * The opacity to use for menu icons configured using {@link Ext.menu.Item#glyph glyph} + */ +/** + * @class Ext.panel.Tool + */ +/** + * @var {number} + * The size of Tools + */ +/** + * @var {boolean} + * True to change the background-position of the Tool on hover. Allows for a separate + * hover state icon in the sprite. + */ +/** + * @var {string} + * The cursor to display when the mouse cursor is over a Tool + */ +/** + * @var {number} + * The opacity of Tools + */ +/** + * @var {number} + * The opacity of hovered Tools + */ +/** + * @var {number} + * The opacity of pressed Tools + */ +/** + * @var {string} + * The sprite to use as the background-image for Tools + */ +/** + * @class Ext.slider.Multi + */ +/** + * @var {number} + * The horizontal slider thumb width + */ +/** + * @var {number} + * The horizontal slider thumb height + */ +/** + * @var {number} + * The width of the horizontal slider end caps + */ +/** + * @var {number} + * The vertical slider thumb width + */ +/** + * @var {number} + * The vertical slider thumb height + */ +/** + * @var {number} + * The height of the vertical slider end caps + */ +/** + * @class Ext.tab.Tab + */ +/** + * @var {color} + * The base color of Tabs + */ +/** + * @var {color} + * The base color of hovered Tabs + */ +/** + * @var {color} + * The base color of the active Tabs + */ +/** + * @var {color} + * The base color of disabled Tabs + */ +/** + * @var {color} + * The text color of Tabs + */ +/** + * @var {color} + * The text color of hovered Tabs + */ +/** + * @var {color} + * The text color of the active Tab + */ +/** + * @var {color} + * The text color of disabled Tabs + */ +/** + * @var {number} + * The font-size of Tabs + */ +/** + * @var {number} + * The font-size of hovered Tabs + */ +/** + * @var {number} + * The font-size of the active Tab + */ +/** + * @var {number} + * The font-size of disabled Tabs + */ +/** + * @var {string} + * The font-family of Tabs + */ +/** + * @var {string} + * The font-family of hovered Tabs + */ +/** + * @var {string} + * The font-family of the active Tab + */ +/** + * @var {string} + * The font-family of disabled Tabs + */ +/** + * @var {string} + * The font-weight of Tabs + */ +/** + * @var {string} + * The font-weight of hovered Tabs + */ +/** + * @var {string} + * The font-weight of the active Tab + */ +/** + * @var {string} + * The font-weight of disabled Tabs + */ +/** + * @var {string} + * The Tab cursor + */ +/** + * @var {string} + * The cursor of disabled Tabs + */ +/** + * @var {string/list} + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {string/list} + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {list} + * The border-radius of Tabs + */ +/** + * @var {number} + * The border-width of Tabs + */ +/** + * @var {number/list} + * The inner border-width of Tabs + */ +/** + * @var {color} + * The inner border-color of Tabs + */ +/** + * @var {color} + * The border-color of Tabs + */ +/** + * @var {color} + * The border-color of hovered Tabs + */ +/** + * @var {color} + * The border-color of the active Tab + */ +/** + * @var {color} + * The border-color of disabled Tabs + */ +/** + * @var {number/list} + * The padding of Tabs + */ +/** + * @var {number/list} + * The padding of the Tab's text element + */ +/** + * @var {number} + * The line-height of Tabs + */ +/** + * @var {number/list} + * The margin of Tabs. Typically used to add horizontal space between the tabs. + */ +/** + * @var {number} + * The width of the Tab close icon + */ +/** + * @var {number} + * The height of the Tab close icon + */ +/** + * @var {number} + * The distance to offset the Tab close icon from the top of the tab + */ +/** + * @var {number} + * The distance to offset the Tab close icon from the right of the tab + */ +/** + * @var {number} + * the space in between the text and the close button + */ +/** + * @var {number} + * The opacity of the Tab close icon + */ +/** + * @var {number} + * The opacity of the Tab close icon when hovered + */ +/** + * @var {number} + * The opacity of the Tab close icon when the Tab is disabled + */ +/** + * @var {boolean} + * True to change the x background-postition of the close icon background image on hover + * to allow for a horizontally aligned background image sprite + */ +/** + * @var {boolean} + * True to change the x background-postition of the close icon background image on click + * to allow for a horizontally aligned background image sprite + */ +/** + * @var {number} + * The width of Tab icons + */ +/** + * @var {number} + * The height of Tab icons + */ +/** + * @var {number} + * The space between the Tab icon and the Tab text + */ +/** + * @var {number} + * The background-position of Tab icons + */ +/** + * @var {color} + * The color of Tab glyph icons + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is hovered + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is active + */ +/** + * @var {color} + * The color of a Tab glyph icon when the Tab is disabled + */ +/** + * @var {number} + * The opacity of a Tab glyph icon + */ +/** + * @var {number} + * The opacity of a Tab glyph icon when the Tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's main element when the tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's text element when the tab is disabled + */ +/** + * @var {number} + * opacity to apply to the tab's icon element when the tab is disabled + */ +/** + * @var {string} + * Experimental - Has issues with IE + * The direction to rotate the contents of a left-aligned tab. `right` to rotate + * clockwise or `left` to rotate counterclockwise. Defaults to `left`. + */ +/** + * @var {string} + * Experimental - Has issues with IE + * The direction to rotate the contents of a right-aligned tab. `right` to rotate + * clockwise or `left` to rotate counterclockwise. Defaults to `right`. + */ +/** + * @var {boolean} + * True to include the "default" tab UI + */ +/** + * @class Ext.tab.Bar + */ +/** + * @var {number/list} + * The padding of the Tab Bar + */ +/** + * @var {number/list} + * The padding of the {@link Ext.tab.Panel#plain plain} Tab Bar + */ +/** + * @var {color} + * The base color of the Tab Bar + */ +/** + * @var {string/list} + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + */ +/** + * @var {color} + * The border-color of the Tab Bar + */ +/** + * @var {number/list} + * The border-width of the Tab Bar + */ +/** + * @var {number/list} + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar + */ +/** + * @var {number} + * The height of the Tab Bar strip + */ +/** + * @var {color} + * The border-color of the Tab Bar strip + */ +/** + * @var {color} + * The background-color of the Tab Bar strip + */ +/** + * @var {number/list} + * The border-width of the Tab Bar strip + */ +/** + * @var {number/list} + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + */ +/** + * @var {number} + * The width of the Tab Bar scrollers + */ +/** + * @var {string} + * The cursor of the Tab Bar scrollers + */ +/** + * @var {string} + * The cursor of disabled Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of hovered Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of pressed Tab Bar scrollers + */ +/** + * @var {number} + * The opacity of disabled Tab Bar scrollers + */ +/** + * @var {boolean} + * true to change the x postition of the background image on hover to allow for a + * horizonatlly alined background image sprite + */ +/** + * @var {boolean} + * true to include separate scroller icons for "plain" tabbars + */ +/** + * @var {boolean} + * if true, the tabbar will use symmetrical scroller icons. Top and bottom tabbars + * will share icons, and Left and right will share icons. + */ +/** + * @var {boolean} + * True to include the "default" tabbar UI + */ +/** + * @class Ext.selection.CheckboxModel + */ +/** + * @var {number} + * The horizontal space before the checkbox + */ +/** + * @var {number} + * The horizontal space after the checkbox + */ +/** + * @class Ext.tree.Panel + */ +/** + * @var {number} $tree-elbow-width + * The width of the tree elbow/arrow icons + */ +/** + * @var {number} $tree-icon-width + * The width of the tree folder/leaf icons + */ +/** + * @var {number} $tree-elbow-spacing + * The amount of spacing between the tree elbows or arrows, and the checkbox or icon. + */ +/** + * @var {number} $tree-checkbox-spacing + * The amount of space (in pixels) between the tree checkbox and the folder/leaf icon + */ +/** + * @var {number} $tree-icon-spacing + * The amount of space (in pixels) between the folder/leaf icons and the text + */ +/** + * @var {string} $tree-expander-cursor + * The type of cursor to display when the mouse is over a tree expander (+, - or arrow icon) + */ +/** + * @var {number/list} + * The amount of padding to apply to the tree cell's inner div element + */ +/* including package ext-theme-base */ +/** + * @class Global_CSS + */ +/** + * @var {string} $prefix + * The prefix to be applied to all CSS selectors. If this is changed, it must also be changed in your + * JavaScript application. + */ +/** + * @var {boolean/string} $relative-image-path-for-uis + * True to use a relative image path for all new UIs. If true, the path will be "../images/". + * It can also be a string of the path value. + * It defaults to false, which means it will look for the images in the ExtJS SDK folder. + */ +/** + * @var {boolean} $include-not-found-images + * True to include files which are not found when compiling your SASS + */ +/** + * @var {boolean} $include-ie + * True to include Internet Explorer specific rules + */ +/** + * @var {boolean} $include-content-box + * True to include rules for browsers that do not support the border-box model + * (IE6 strict and IE7 strict) + */ +/** + * @var {boolean} $include-ff + * True to include Firefox specific rules + */ +/** + * @var {boolean} $include-chrome + * True to include Chrome specific rules + */ +/** + * @var {boolean} $include-safari + * True to include Safari specific rules + */ +/** + * @var {boolean} $include-opera + * True to include Opera specific rules + */ +/** + * @var {boolean} $include-webkit + * True to include Webkit specific rules + */ +/** + * @var {measurement} $css-shadow-border-radius + * The border radius for CSS shadows + */ +/** + * @var {color} $include-shadow-images + * True to include all shadow images. + */ +/** + * @var {string} $image-extension + * default file extension to use for images (defaults to 'png'). + */ +/** + * @var {string} $slicer-image-extension + * default file extension to use for slicer images (defaults to 'gif'). + */ +/** + * Default search path for images + */ +/** + * @var {boolean} + * True to include the default UI for each component. + */ +/** + * @var {string} + * The base path relative to the CSS output directory to use for theme resources. For example + * if the theme's images live one directory up from the generated CSS output in a directory + * named 'foo/images/', you would need to set this variable to '../foo/' in order for the image + * paths in the CSS output to be generated correctly. By default this is the same as the + * CSS output directory. + */ +/* including package ext-theme-base */ +/* + * Although this file only contains a variable, all vars are included by default + * in application sass builds, so this needs to be in the rule file section + * to allow javascript inclusion filtering to disable it. + */ +/** + * @var {boolean} $include-rtl + * True to include right-to-left style rules. This variable gets set to true automatically + * for rtl builds. You should not need to ever assign a value to this variable, however + * it can be used to suppress rtl-specific rules when they are not needed. For example: + * @if $include-rtl { + * .x-rtl.foo { + * margin-left: $margin-right; + * margin-right: $margin-left; + * } + * } + * @member Global_CSS + */ +/* line 1, ../../../ext-theme-base/sass/src/Component.scss */ +.x-body { + margin: 0; +} + +/* line 5, ../../../ext-theme-base/sass/src/Component.scss */ +img { + border: 0; +} + +/* line 10, ../../../ext-theme-base/sass/src/Component.scss */ +.x-border-box, +.x-border-box * { + box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +/* line 17, ../../../ext-theme-base/sass/src/Component.scss */ +.x-rtl { + direction: rtl; +} + +/* line 21, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ltr { + direction: ltr; +} + +/* line 25, ../../../ext-theme-base/sass/src/Component.scss */ +.x-clear { + overflow: hidden; + clear: both; + font-size: 0; + line-height: 0; + display: table; +} + +/* line 33, ../../../ext-theme-base/sass/src/Component.scss */ +.x-strict .x-ie7 .x-clear { + height: 0; + width: 0; +} + +/* line 41, ../../../ext-theme-base/sass/src/Component.scss */ +.x-layer { + position: absolute !important; + overflow: hidden; + zoom: 1; +} + +/* line 49, ../../../ext-theme-base/sass/src/Component.scss */ +.x-fixed-layer { + position: fixed !important; + overflow: hidden; + zoom: 1; +} + +/* line 55, ../../../ext-theme-base/sass/src/Component.scss */ +.x-shim { + position: absolute; + left: 0; + top: 0; + overflow: hidden; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 63, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-display { + display: none !important; +} + +/* line 67, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-visibility { + visibility: hidden !important; +} + +/* line 72, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ie6 .x-item-disabled { + filter: none; +} + +/* line 78, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hidden, +.x-hide-offsets { + display: block !important; + visibility: hidden !important; + position: absolute !important; + top: -10000px !important; +} + +/* line 88, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-nosize { + height: 0 !important; + width: 0 !important; +} + +/* line 94, ../../../ext-theme-base/sass/src/Component.scss */ +.x-hide-clip { + position: absolute!important; + clip: rect(0, 0, 0, 0); + clip: rect(0 0 0 0); +} + +/* line 102, ../../../ext-theme-base/sass/src/Component.scss */ +.x-masked-relative { + position: relative; +} + +/* line 108, ../../../ext-theme-base/sass/src/Component.scss */ +.x-ie-shadow { + background-color: #777; + display: none; + position: absolute; + overflow: hidden; + zoom: 1; +} + +/* line 117, ../../../ext-theme-base/sass/src/Component.scss */ +.x-unselectable { + user-select: none; + -o-user-select: none; + -ms-user-select: none; + -moz-user-select: -moz-none; + -webkit-user-select: none; + cursor: default; +} + +/* line 121, ../../../ext-theme-base/sass/src/Component.scss */ +.x-selectable { + cursor: auto; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; + user-select: text; + -o-user-select: text; +} + +/* line 136, ../../../ext-theme-base/sass/src/Component.scss */ +.x-list-plain { + list-style-type: none; + margin: 0; + padding: 0; +} + +/* line 143, ../../../ext-theme-base/sass/src/Component.scss */ +.x-table-plain { + border-collapse: collapse; + border-spacing: 0; + font-size: 1em; +} + +/* line 156, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-tl, +.x-frame-tr, +.x-frame-tc, +.x-frame-bl, +.x-frame-br, +.x-frame-bc { + overflow: hidden; + background-repeat: no-repeat; +} + +/* line 162, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-tc, +.x-frame-bc { + background-repeat: repeat-x; +} + +/* line 166, ../../../ext-theme-base/sass/src/Component.scss */ +.x-frame-mc { + background-repeat: repeat-x; + overflow: hidden; +} + +/* line 171, ../../../ext-theme-base/sass/src/Component.scss */ +.x-proxy-el { + position: absolute; + background: #b4b4b4; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + opacity: 0.8; +} + +/* line 178, ../../../ext-theme-base/sass/src/Component.scss */ +.x-css-shadow { + position: absolute; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; +} + +/* line 184, ../../../ext-theme-base/sass/src/Component.scss */ +.x-item-disabled, +.x-item-disabled * { + cursor: default; +} + +/* line 3, ../../../ext-theme-base/sass/src/layout/container/Container.scss */ +.x-box-item { + position: absolute !important; + left: 0; + top: 0; +} + +/* line 10, ../../../ext-theme-base/sass/src/layout/container/Container.scss */ +.x-rtl > .x-box-item { + right: 0; + left: auto; +} + +/* line 20, ../../../ext-theme-base/sass/src/layout/container/Container.scss */ +.x-ie6 .x-rtl .x-box-item, +.x-quirks .x-ie .x-rtl .x-box-item { + right: 0; + left: auto; +} + +/* line 4, ../../../ext-theme-base/sass/src/Editor.scss */ +div.x-editor { + overflow: visible; +} + +/* line 1, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask { + z-index: 100; + position: absolute; + width: 100%; + height: 100%; + zoom: 1; +} + +/* line 10, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask-shim { + z-index: 100; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* line 20, ../../../ext-theme-base/sass/src/LoadMask.scss */ +.x-mask-msg { + z-index: 20001; + position: absolute; +} + +/* line 1, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress { + position: relative; + border-style: solid; + overflow: hidden; +} + +/* line 7, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress-bar { + overflow: hidden; + position: absolute; + width: 0; + height: 100%; +} + +/* line 14, ../../../ext-theme-base/sass/src/ProgressBar.scss */ +.x-progress-text { + overflow: hidden; + position: absolute; +} + +/* line 1, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn { + display: inline-block; + position: relative; + zoom: 1; + *display: inline; + outline: 0; + cursor: pointer; + white-space: nowrap; + vertical-align: middle; + text-decoration: none; +} + +/* line 15, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-wrap { + position: relative; + display: block; +} + +/* line 20, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-button { + position: relative; + display: block; + text-decoration: none; + overflow: hidden; + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner { + display: block; + white-space: nowrap; + overflow: hidden; + zoom: 1; +} + +/* line 35, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-icon-el { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; + background-repeat: no-repeat; + text-align: center; +} + +/* line 45, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-center { + text-align: center; +} + +/* line 49, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-left { + text-align: left; +} + +/* line 54, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-rtl.x-btn-inner-left { + text-align: right; +} + +/* line 59, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-btn-inner-right { + text-align: right; +} + +/* line 64, ../../../ext-theme-base/sass/src/button/Button.scss */ +.x-rtl.x-btn-inner-right { + text-align: left; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-layout-ct { + overflow: hidden; + zoom: 1; +} + +/* line 6, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-target { + position: absolute; + width: 20000px; + top: 0; + left: 0; + height: 1px; +} + +/* line 25, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-rtl.x-box-target { + left: auto; + right: 0; +} + +/* line 31, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-inner { + overflow: hidden; + zoom: 1; + position: relative; + left: 0; + top: 0; +} + +/* line 41, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-horizontal-box-overflow-body { + float: left; +} + +/* line 45, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller { + position: relative; + background-repeat: no-repeat; +} + +/* line 51, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller-left, +.x-box-scroller-right { + float: left; + height: 100%; + z-index: 5; +} + +/* line 59, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-scroller-top .x-box-scroller, +.x-box-scroller-bottom .x-box-scroller { + line-height: 0; + font-size: 0; + background-position: center 0; +} + +/* line 66, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-box-menu-after { + float: right; +} + +/* line 71, ../../../ext-theme-base/sass/src/layout/container/Box.scss */ +.x-rtl.x-box-menu-after { + float: left; +} + +/* line 1, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-text { + white-space: nowrap; +} + +/* line 5, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-separator { + display: block; + font-size: 1px; + overflow: hidden; + cursor: default; + border: 0; + width: 0; + height: 0; + line-height: 0px; +} + +/* line 17, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal { + width: 2px; +} + +/* line 22, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroller { + padding-left: 0; +} + +/* line 29, ../../../ext-theme-base/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-plain { + border: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked { + position: absolute !important; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-vertical { + position: static; +} + +/* line 11, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-top { + border-bottom-width: 0 !important; +} + +/* line 15, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-bottom { + border-top-width: 0 !important; +} + +/* line 19, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-left { + border-right-width: 0 !important; +} + +/* line 23, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-right { + border-left-width: 0 !important; +} + +/* line 27, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-top { + border-top-width: 0 !important; +} + +/* line 31, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-right { + border-right-width: 0 !important; +} + +/* line 35, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-bottom { + border-bottom-width: 0 !important; +} + +/* line 39, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-docked-noborder-left { + border-left-width: 0 !important; +} + +/* line 45, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-l { + border-left-width: 0 !important; +} + +/* line 48, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-b { + border-bottom-width: 0 !important; +} + +/* line 51, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-bl { + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 55, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-r { + border-right-width: 0 !important; +} + +/* line 58, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rl { + border-right-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 62, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rb { + border-right-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 66, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-rbl { + border-right-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 71, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-t { + border-top-width: 0 !important; +} + +/* line 74, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tl { + border-top-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 78, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tb { + border-top-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 82, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tbl { + border-top-width: 0 !important; + border-bottom-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 87, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-tr { + border-top-width: 0 !important; + border-right-width: 0 !important; +} + +/* line 91, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trl { + border-top-width: 0 !important; + border-right-width: 0 !important; + border-left-width: 0 !important; +} + +/* line 96, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trb { + border-top-width: 0 !important; + border-right-width: 0 !important; + border-bottom-width: 0 !important; +} + +/* line 101, ../../../ext-theme-base/sass/src/layout/component/Dock.scss */ +.x-noborder-trbl { + border-width: 0 !important; +} + +/* line 1, ../../../ext-theme-base/sass/src/panel/Header.scss */ +.x-header-icon { + background-repeat: no-repeat; + background-position: 0 0; + vertical-align: middle; + text-align: center; +} + +/* line 8, ../../../ext-theme-base/sass/src/panel/Header.scss */ +.x-header-text-container { + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +/* line 15, ../../../ext-theme-base/sass/src/panel/Header.scss */ +.x-rtl.x-header-text-container { + -o-text-overflow: clip; + text-overflow: clip; +} + +/* line 4, ../../../ext-theme-base/sass/src/dd/DD.scss */ +.x-dd-drag-proxy, +.x-dd-drag-current { + z-index: 1000000!important; + pointer-events: none; +} + +/* line 2, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-repair .x-dd-drag-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); + opacity: 0.6; +} +/* line 6, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-repair .x-dd-drop-icon { + display: none; +} + +/* line 11, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drag-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); + opacity: 0.85; + padding: 5px; + padding-left: 20px; + white-space: nowrap; + color: #000; + font: normal 11px tahoma, arial, verdana, sans-serif; + border: 1px solid; + border-color: #ddd #bbb #bbb #ddd; + background-color: #fff; +} + +/* line 28, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.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; +} + +/* line 51, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-rtl .x-dd-drag-ghost { + padding-left: 5px; + padding-right: 20px; +} +/* line 55, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-rtl .x-dd-drop-icon { + left: auto; + right: 3px; +} + +/* line 66, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-ok .x-dd-drop-icon { + background-image: url(images/dd/drop-yes.gif); +} + +/* line 70, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-ok-add .x-dd-drop-icon { + background-image: url(images/dd/drop-add.gif); +} + +/* line 75, ../../../ext-theme-base/sass/src/dd/StatusProxy.scss */ +.x-dd-drop-nodrop div.x-dd-drop-icon { + background-image: url(images/dd/drop-no.gif); +} + +/* line 2, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel, +.x-plain { + overflow: hidden; + position: relative; +} + +/* line 7, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel { + outline: none; +} + +/* line 23, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-ie .x-panel-header, +.x-ie .x-panel-header-tl, +.x-ie .x-panel-header-tc, +.x-ie .x-panel-header-tr, +.x-ie .x-panel-header-ml, +.x-ie .x-panel-header-mc, +.x-ie .x-panel-header-mr, +.x-ie .x-panel-header-bl, +.x-ie .x-panel-header-bc, +.x-ie .x-panel-header-br { + zoom: 1; +} + +/* line 29, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-ie8 td.x-frame-mc { + vertical-align: top; +} + +/* line 35, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel-body { + overflow: hidden; + position: relative; +} + +/* line 42, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-vertical .x-frame-mc { + background-repeat: repeat-y; +} + +/* line 49, ../../../ext-theme-base/sass/src/panel/Panel.scss */ +.x-panel-header-plain, +.x-panel-body-plain { + border: 0; + padding: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip { + position: absolute; + overflow: visible; + /*pointer needs to be able to stick out*/ +} + +/* line 6, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip-body { + overflow: hidden; + position: relative; +} + +/* line 11, ../../../ext-theme-base/sass/src/tip/Tip.scss */ +.x-tip-anchor { + position: absolute; + overflow: hidden; + border-style: solid; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Table.scss */ +.x-table-layout { + font-size: 1em; +} + +/* line 1, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group { + position: relative; + overflow: hidden; +} + +/* line 6, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body { + position: relative; + zoom: 1; +} +/* line 9, ../../../ext-theme-base/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body .x-table-layout-cell { + vertical-align: top; +} + +/* line 1, ../../../ext-theme-base/sass/src/container/Viewport.scss */ +.x-viewport, .x-viewport body { + margin: 0; + padding: 0; + border: 0 none; + overflow: hidden; + height: 100%; + position: static; +} + +/* line 1, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window { + outline: none; + overflow: hidden; +} +/* line 5, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window .x-window-wrap { + position: relative; +} + +/* line 10, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window-body { + position: relative; + overflow: hidden; +} + +/* line 15, ../../../ext-theme-base/sass/src/window/Window.scss */ +.x-window-body-plain { + background: transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label { + display: block; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label-right { + text-align: right; +} + +/* line 9, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-item-label-top { + display: block; + zoom: 1; +} + +/* line 15, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-invalid-icon { + overflow: hidden; +} +/* line 17, ../../../ext-theme-base/sass/src/form/Labelable.scss */ +.x-form-invalid-icon ul { + display: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */ +.x-form-textarea { + overflow: auto; + resize: none; +} +/* line 5, ../../../ext-theme-base/sass/src/form/field/TextArea.scss */ +.x-safari.x-mac .x-form-textarea { + margin-bottom: -2px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Display.scss */ +.x-form-display-field-body { + vertical-align: top; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb-wrap { + vertical-align: top; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb { + vertical-align: top; + overflow: hidden; + padding: 0; + border: 0; +} +/* line 10, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb::-moz-focus-inner { + padding: 0; + border: 0; +} + +/* line 16, ../../../ext-theme-base/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label { + display: inline-block; + zoom: 1; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset { + display: block; + /* preserve margins in IE */ + position: relative; +} + +/* line 6, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header { + overflow: hidden; +} +/* line 10, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-item, +.x-fieldset-header .x-tool { + float: left; +} +/* line 14, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb-wrap { + font-size: 0; + line-height: 0; +} +/* line 19, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb { + margin: 0; +} + +/* line 27, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-rtl.x-fieldset-header .x-form-item, +.x-rtl.x-fieldset-header .x-tool { + float: right; +} + +/* line 33, ../../../ext-theme-base/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text { + float: left; +} + +/*misc*/ +/* line 4, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-webkit *:focus { + outline: none !important; +} + +/* line 11, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-item { + vertical-align: top; + table-layout: fixed; +} + +/* line 17, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-item-body { + position: relative; +} + +/* line 26, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-rtl.x-form-item .x-form-item-input-row { + position: relative; + right: 0; +} + +/* line 33, ../../../ext-theme-base/sass/src/form/Panel.scss */ +.x-form-form-item td { + border-top: 1px solid transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-form-trigger { + cursor: pointer; + overflow: hidden; + background-repeat: no-repeat; +} +/* line 5, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-item-disabled .x-form-trigger { + cursor: default; +} + +/* line 10, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-trigger-noedit { + cursor: default; +} + +/* line 14, ../../../ext-theme-base/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap { + vertical-align: top; + border-collapse: separate; +} + +/* line 2, ../../../ext-theme-base/sass/src/form/field/Spinner.scss */ +.x-form-spinner-up, +.x-form-spinner-down { + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker { + position: relative; +} + +/* line 5, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-inner { + table-layout: fixed; + width: 100%; + border-collapse: separate; +} + +/* line 11, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-cell { + padding: 0; +} + +/* line 15, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-header { + position: relative; + zoom: 1; +} + +/* line 20, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-arrow { + position: absolute; + outline: none; + font-size: 0; +} + +/* line 26, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-column-header { + padding: 0; +} + +/* line 30, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-datepicker-date { + display: block; + zoom: 1; + text-decoration: none; +} + +/* line 36, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker { + position: absolute; + left: 0; + top: 0; +} + +/* line 42, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-body { + height: 100%; +} + +/* line 47, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-months, +.x-monthpicker-years { + float: left; + height: 100%; +} + +/* line 52, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-item { + float: left; +} + +/* line 56, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-item-inner { + display: block; + text-decoration: none; +} + +/* line 61, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button-ct { + float: left; + text-align: center; +} + +/* line 66, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button { + display: inline-block; + outline: none; + font-size: 0; +} + +/* line 72, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-monthpicker-buttons { + position: absolute; + bottom: 0; + width: 100%; +} +/* line 78, ../../../ext-theme-base/sass/src/picker/Date.scss */ +.x-strict .x-ie6 .x-monthpicker-buttons { + bottom: -1px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/File.scss */ +.x-form-file-btn { + overflow: hidden; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/File.scss */ +.x-form-file-input { + border: 0; + position: absolute; + cursor: pointer; + top: -2px; + right: -2px; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; + /* Yes, there's actually a good reason for this... + * If the configured buttonText is set to something longer than the default, + * then it will quickly exceed the width of the hidden file input's "Browse..." + * button, so part of the custom button's clickable area will be covered by + * the hidden file input's text box instead. This results in a text-selection + * mouse cursor over that part of the button, at least in Firefox, which is + * confusing to a user. Giving the hidden file input a huge font-size makes + * the native button part very large so it will cover the whole clickable area. + */ + font-size: 1000px; +} + +/* line 29, ../../../ext-theme-base/sass/src/form/field/File.scss */ +.x-rtl.x-form-file-input { + right: auto; + left: -2px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/Hidden.scss */ +.x-form-item-hidden { + margin: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/picker/Color.scss */ +.x-color-picker-item { + float: left; + text-decoration: none; +} + +/* line 6, ../../../ext-theme-base/sass/src/picker/Color.scss */ +.x-color-picker-item-inner { + display: block; + font-size: 1px; +} + +/* line 1, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-toolbar { + position: static !important; +} + +/* line 5, ../../../ext-theme-base/sass/src/form/field/HtmlEditor.scss */ +.x-htmleditor-iframe { + display: block; + overflow: auto; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Fit.scss */ +.x-fit-item { + position: relative; +} + +/* line 2, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-row, +.x-grid-data-row { + outline: none; +} + +/* line 6, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-view { + overflow: hidden; + position: relative; +} + +/* line 11, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-table { + table-layout: fixed; + border-collapse: separate; +} + +/* line 16, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-td { + overflow: hidden; + border-width: 0; + vertical-align: top; +} + +/* line 22, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-cell-inner { + overflow: hidden; + white-space: nowrap; + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/panel/Table.scss */ +.x-grid-resize-marker { + position: absolute; + z-index: 5; + top: 0; +} + +/* line 2, ../../../ext-theme-base/sass/src/grid/header/DropZone.scss */ +.col-move-top, +.col-move-bottom { + position: absolute; + top: 0; + line-height: 0; + font-size: 0; + overflow: hidden; + z-index: 20000; + background: no-repeat center top transparent; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/header/Container.scss */ +.x-grid-header-ct { + cursor: default; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header { + position: absolute; + overflow: hidden; + background-repeat: repeat-x; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-inner { + zoom: 1; + white-space: nowrap; + position: relative; + overflow: hidden; +} + +/* line 14, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-text { + white-space: nowrap; + background-repeat: no-repeat; + zoom: 1; + display: inline-block; +} + +/* line 25, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + display: none; + height: 100%; + background-repeat: no-repeat; + position: absolute; + right: 0; + top: 0; + z-index: 2; +} + +/* line 36, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header-trigger { + left: 0; + right: auto; +} + +/* line 43, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-over .x-column-header-trigger, .x-column-header-open .x-column-header-trigger { + display: block; +} + +/* line 48, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-right { + text-align: right; +} + +/* line 53, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header-align-right { + text-align: left; +} + +/* line 58, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-left { + text-align: left; +} + +/* line 63, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header-align-left { + text-align: right; +} + +/* line 68, ../../../ext-theme-base/sass/src/grid/column/Column.scss */ +.x-column-header-align-center { + text-align: center; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/Action.scss */ +.x-grid-cell-inner-action-col { + line-height: 0; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/CheckColumn.scss */ +.x-grid-cell-inner-checkcolumn { + line-height: 0; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/column/RowNumberer.scss */ +.x-row-numberer .x-column-header-inner { + text-overflow: clip; +} + +/* line 3, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-group, +.x-grid-group-body, +.x-grid-group-hd { + zoom: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd { + white-space: nowrap; +} + +/* line 11, ../../../ext-theme-base/sass/src/grid/feature/Grouping.scss */ +.x-grid-row-body-hidden, .x-grid-group-collapsed { + display: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */ +.x-grid-rowbody { + zoom: 1; +} + +/* line 5, ../../../ext-theme-base/sass/src/grid/feature/RowBody.scss */ +.x-grid-row-body-hidden { + display: none; +} + +/* line 3, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */ +td.x-grid-rowwrap .x-grid-table { + border: 0; +} +/* line 6, ../../../ext-theme-base/sass/src/grid/feature/RowWrap.scss */ +td.x-grid-rowwrap .x-grid-cell { + border-bottom: 0; + background-color: transparent; +} + +/* line 2, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb-wrap { + text-align: center; +} + +/* line 9, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field { + margin: 0; + white-space: nowrap; + overflow: hidden; +} +/* line 17, ../../../ext-theme-base/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor div.x-form-action-col-field { + line-height: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor { + position: absolute; + overflow: visible; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons { + position: absolute; + white-space: nowrap; +} + +/* line 1, ../../../ext-theme-base/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-expander { + font-size: 0; + line-height: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */ +.x-abs-layout-ct { + position: relative; +} + +/* line 5, ../../../ext-theme-base/sass/src/layout/container/Absolute.scss */ +.x-abs-layout-item { + position: absolute !important; +} + +/* line 1, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter { + font-size: 1px; +} + +/* line 5, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-horizontal { + cursor: e-resize; + cursor: row-resize; +} + +/* line 10, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-vertical { + cursor: e-resize; + cursor: col-resize; +} + +/* line 17, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed, +.x-splitter-horizontal-noresize, +.x-splitter-vertical-noresize { + cursor: default; +} + +/* line 21, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-splitter-active { + z-index: 4; +} + +/* line 25, ../../../ext-theme-base/sass/src/resizer/Splitter.scss */ +.x-collapse-el { + position: absolute; + background-repeat: no-repeat; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + overflow: hidden; + zoom: 1; +} + +/* line 6, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + position: relative; +} + +/* line 10, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-border-region-slide-in { + z-index: 5; +} + +/* line 14, ../../../ext-theme-base/sass/src/layout/container/Border.scss */ +.x-region-collapsed-placeholder { + z-index: 4; +} + +/* line 1, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-column { + float: left; +} + +/* line 6, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-rtl > .x-column { + float: right; +} + +/* line 13, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-ie6 .x-rtl .x-column, .x-quirks .x-ie .x-rtl .x-column { + float: right; +} + +/* line 21, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-ie6 .x-column { + display: inline; + /*prevent IE6 double-margin bug*/ +} + +/* line 25, ../../../ext-theme-base/sass/src/layout/container/Column.scss */ +.x-quirks .x-ie .x-form-layout-table, .x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item { + position: relative; +} + +/* line 2, ../../../ext-theme-base/sass/src/layout/container/Form.scss */ +.x-form-layout-table { + border-collapse: separate; + border-spacing: 0 2px; +} + +/* line 9, ../../../ext-theme-base/sass/src/layout/container/Form.scss */ +.x-ie6 .x-form-layout-table { + border-collapse: collapse; + border-spacing: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu { + outline: none; +} + +/* line 5, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item { + white-space: nowrap; + overflow: hidden; +} + +/* line 14, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-cmp .x-field-label-cell { + vertical-align: middle; +} + +/* line 22, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-icon-separator { + position: absolute; + top: 0px; + z-index: 0; + height: 100%; + overflow: hidden; +} +/* line 28, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-plain .x-menu-icon-separator { + display: none; +} + +/* line 33, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-link { + text-decoration: none; + outline: 0; + zoom: 1; +} + +/* line 40, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-text { + zoom: 1; +} + +/* line 47, ../../../ext-theme-base/sass/src/menu/Menu.scss */ +.x-menu-item-icon, +.x-menu-item-icon-right, +.x-menu-item-arrow { + position: absolute; + text-align: center; +} + +/* line 1, ../../../ext-theme-base/sass/src/resizer/SplitterTracker.scss */ +.x-resizable-overlay { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + display: none; + z-index: 200000; + background-color: #fff; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider { + outline: none; + zoom: 1; + position: relative; +} + +/* line 9, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-inner { + position: relative; + left: 0; + top: 0; + overflow: visible; + zoom: 1; +} +/* line 17, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-inner { + background: repeat-y 0 0; +} + +/* line 23, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-end { + zoom: 1; +} + +/* line 28, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-thumb { + position: absolute; + background: no-repeat 0 0; +} +/* line 31, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb { + left: 0; +} +/* line 34, ../../../ext-theme-base/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb { + bottom: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Tab.scss */ +a.x-tab { + text-decoration: none; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Bar.scss */ +.x-tab-bar { + position: relative; +} + +/* line 1, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox .x-column-header-text { + display: block; + background-repeat: no-repeat; + font-size: 0; +} + +/* line 7, ../../../ext-theme-base/sass/src/selection/CheckboxModel.scss */ +.x-grid-cell-row-checker { + vertical-align: middle; + background-repeat: no-repeat; + font-size: 0; +} + +/* line 1, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab { + display: block; + white-space: nowrap; + z-index: 1; +} + +/* line 7, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-active { + z-index: 3; +} + +/* line 11, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-wrap { + display: block; + position: relative; +} + +/* line 16, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-button { + zoom: 1; + display: block; + outline: none; +} + +/* line 22, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-inner { + display: block; + text-align: center; + white-space: nowrap; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + overflow: hidden; + zoom: 1; +} + +/* line 32, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-btn-icon-el { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; + background-repeat: no-repeat; + text-align: center; +} + +/* line 42, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar { + z-index: 1; +} + +/* line 46, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-body { + z-index: 2; + position: relative; +} + +/* line 51, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip { + position: absolute; + line-height: 0; + font-size: 0; + z-index: 1; +} + +/* line 58, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-horizontal .x-tab-bar-strip { + width: 100%; + left: 0; +} + +/* line 63, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-vertical .x-tab-bar-strip { + height: 100%; + top: 0; +} + +/* line 68, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-top { + bottom: 0; +} + +/* line 72, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-bottom { + top: 0; +} + +/* line 76, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-left { + right: 0; +} + +/* line 81, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-rtl.x-tab-bar .x-tab-bar-strip-left { + right: auto; + left: 0; +} + +/* line 87, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-strip-right { + left: 0; +} + +/* line 92, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-rtl.x-tab-bar .x-tab-bar-strip-right { + left: auto; + right: 0; +} + +/* line 98, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-bar-plain { + background: transparent !important; +} + +/* line 102, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-icon-el { + position: absolute; + background-repeat: no-repeat; + top: 0; + left: 0; + right: auto; + bottom: 0; +} + +/* line 112, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-rtl.x-tab-icon-el { + left: auto; + right: 0; +} + +/* line 118, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-close-btn { + display: block; + position: absolute; + font-size: 0; + line-height: 0; + background: no-repeat; +} + +/* line 126, ../../../ext-theme-base/sass/src/tab/Panel.scss */ +.x-tab-mc { + overflow: visible; +} + +/* line 3, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-autowidth-table .x-grid-table { + table-layout: auto; + width: auto !important; +} + +/* line 8, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-view { + overflow: hidden; +} + +/* line 13, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-elbow-img, +.x-tree-icon { + background-repeat: no-repeat; + background-position: 0 center; + vertical-align: top; +} + +/* line 19, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-checkbox { + border: 0; + padding: 0; + vertical-align: top; + position: relative; + background-color: transparent; +} + +/* line 27, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-animator-wrap { + overflow: hidden; +} + +/* line 31, ../../../ext-theme-base/sass/src/tree/Panel.scss */ +.x-tree-node-text { + zoom: 1; +} + +/* line 1, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-surface { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + overflow: hidden; +} + +/* line 6, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.rvml { + behavior: url(#default#VML); +} + +/* line 10, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-surface tspan { + user-select: none; + -o-user-select: none; + -ms-user-select: none; + -moz-user-select: -moz-none; + -webkit-user-select: none; + cursor: default; +} + +/* line 14, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-sprite { + position: absolute; + left: 0; + top: 0; + width: 1px; + height: 1px; +} + +/* line 22, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-group { + position: absolute; + left: 0; + top: 0; + width: 1000px; + height: 1000px; +} + +/* line 30, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-measure-span { + position: absolute; + left: -9999em; + top: -9999em; + padding: 0; + margin: 0; + display: inline; +} + +/* line 39, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-base { + position: relative; + top: 0; + left: 0; + overflow: hidden; + display: inline-block; +} + +/* line 47, ../../../ext-theme-base/sass/src/draw/Component.scss */ +.x-vml-base { + position: relative; + top: 0; + left: 0; + overflow: hidden; + display: inline-block; +} + +/* line 55, ../../../ext-theme-base/sass/src/draw/Component.scss */ +svg, vml { + overflow: hidden; +} + +/* including package ext-theme-neutral */ +/* line 1, ../../../ext-theme-neutral/sass/src/Component.scss */ +.x-body { + color: black; + font-size: 12px; + font-family: tahoma, arial, verdana, sans-serif; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/Component.scss */ +.x-animating-size, +.x-collapsed { + overflow: hidden!important; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/Editor.scss */ +.x-editor .x-form-item-body { + padding-bottom: 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-element { + position: absolute; + top: -10px; + left: -10px; + width: 0px; + height: 0px; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame { + position: absolute; + left: 0px; + top: 0px; + z-index: 100000000; + width: 0px; + height: 0px; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-top, +.x-focus-frame-bottom, +.x-focus-frame-left, +.x-focus-frame-right { + position: absolute; + top: 0px; + left: 0px; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-top, +.x-focus-frame-bottom { + border-top: solid 2px #15428b; + height: 2px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/FocusManager.scss */ +.x-focus-frame-left, +.x-focus-frame-right { + border-left: solid 2px #15428b; + width: 2px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + background: #cccccc; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg { + padding: 2px; + border-style: solid; + border-width: 1px; + border-color: #99bce8; + background-image: none; + background-color: #dfe9f6; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg-inner { + padding: 0 5px; + border-style: solid; + border-width: 1px; + border-color: #a3bad9; + background-color: #eeeeee; + color: #222222; + font: normal 11px tahoma, arial, verdana, sans-serif; +} + +/* line 41, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-mask-msg-text { + padding: 5px 5px 5px 20px; + background-image: url(images/grid/loading.gif); + background-repeat: no-repeat; + background-position: 0 center; +} + +/* line 52, ../../../ext-theme-neutral/sass/src/LoadMask.scss */ +.x-rtl.x-mask-msg-text { + padding: 5px 20px 5px 5px; + background-position: right center; +} + +/** + * Creates a visual theme for an Ext.ProgressBar + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$progress-border-color] + * The border-color of the ProgressBar + * + * @param {color} [$ui-background-color=$progress-background-color] + * The background-color of the ProgressBar + * + * @param {color} [$ui-bar-background-color=$progress-bar-background-color] + * The background-color of the ProgressBar's moving element + * + * @param {string/list} [$ui-bar-background-gradient=$progress-bar-background-gradient] + * The background-gradient of the ProgressBar's moving element. Can be either the name of + * a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {color} [$ui-color-front=$progress-text-color-front] + * The color of the ProgressBar's text when in front of the ProgressBar's moving element + * + * @param {color} [$ui-color-back=$progress-text-color-back] + * The color of the ProgressBar's text when the ProgressBar's 'moving element is not under it + * + * @param {number} [$ui-height=$progress-height] + * The height of the ProgressBar + * + * @param {number} [$ui-border-width=$progress-border-width] + * The border-width of the ProgressBar + * + * @param {number} [$ui-border-radius=$progress-border-radius] + * The border-radius of the ProgressBar + * + * @param {string} [$ui-text-text-align=$progress-text-text-align] + * The text-align of the ProgressBar's text + * + * @param {number} [$ui-text-font-size=$progress-text-font-size] + * The font-size of the ProgressBar's text + * + * @param {string} [$ui-text-font-weight=$progress-text-font-weight] + * The font-weight of the ProgressBar's text + * + * @member Ext.ProgressBar + */ +/* line 67, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default { + background-color: #e0e8f3; + border-width: 1px; + height: 20px; + border-color: #6594cf; + /*<if slicer>*/ + /*</if slicer>*/ + /* */ +} +/* line 72, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-content-box .x-progress-default { + height: 18px; +} +/* line 84, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-bar-default { + background-image: none; + background-color: #73a3e0; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b2ccee), color-stop(50%, #88b1e5), color-stop(51%, #73a3e0), color-stop(100%, #5e96db)); + background-image: -webkit-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: -moz-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: -o-linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); + background-image: linear-gradient(top, #b2ccee, #88b1e5 50%, #73a3e0 51%, #5e96db); +} +/* line 92, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-nlg .x-progress-default .x-progress-bar-default { + background: repeat-x; + background-image: url(images/progress/progress-default-bg.gif); +} +/* line 99, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-text { + color: white; + font-weight: bold; + font-size: 11px; + text-align: center; + line-height: 18px; +} +/* line 107, ../../../ext-theme-neutral/sass/src/ProgressBar.scss */ +.x-progress-default .x-progress-text-back { + color: #396295; + line-height: 18px; +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-progress-default .x-progress-bar-default:after { + display: none; + content: "x-slicer:bg:url(images/progress/progress-default-bg.gif)"; +} + +/** + * Creates a visual theme for a Button + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$border-radius=0px] + * The border-radius of the button + * + * @param {number} [$border-width=0px] + * The border-width of the button + * + * @param {color} $border-color + * The border-color of the button + * + * @param {color} $border-color-over + * The border-color of the button when the cursor is over the button + * + * @param {color} $border-color-focus + * The border-color of the button when focused + * + * @param {color} $border-color-pressed + * The border-color of the button when pressed + * + * @param {color} $border-color-disabled + * The border-color of the button when disabled + * + * @param {number} $padding + * The amount of padding inside the border of the button on all sides + * + * @param {number} $text-padding + * The amount of horizontal space to add to the left and right of the button text + * + * @param {color} $background-color + * The background-color of the button + * + * @param {color} $background-color-over + * The background-color of the button when the cursor is over the button + * + * @param {color} $background-color-focus + * The background-color of the button when focused + * + * @param {color} $background-color-pressed + * The background-color of the button when pressed + * + * @param {color} $background-color-disabled + * The background-color of the button when disabled + * + * @param {string/list} $background-gradient + * The background-gradient for the button. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-over + * The background-gradient to use when the cursor is over the button. Can be either the + * name of a predefined gradient or a list of color stops. Used as the `$type` parameter + * for {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-focus + * The background-gradient to use when the the button is focused. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-pressed + * The background-gradient to use when the the button is pressed. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string} $background-gradient-disabled + * The background-gradient to use when the the button is disabled. Can be either the name + * of a predefined gradient or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {color} $color + * The text color of the button + * + * @param {color} $color-over + * The text color of the button when the cursor is over the button + * + * @param {color} $color-focus + * The text color of the button when the button is focused + * + * @param {color} $color-pressed + * The text color of the button when the button is pressed + * + * @param {color} $color-disabled + * The text color of the button when the button is disabled + * + * @param {number} $font-size + * The font-size of the button + * + * @param {number} $font-size-over + * The font-size of the button when the cursor is over the button + * + * @param {number} $font-size-focus + * The font-size of the button when the button is focused + * + * @param {number} $font-size-pressed + * The font-size of the button when the button is pressed + * + * @param {number} $font-size-disabled + * The font-size of the button when the button is disabled + * + * @param {string} $font-weight + * The font-weight of the button + * + * @param {string} $font-weight-over + * The font-weight of the button when the cursor is over the button + * + * @param {string} $font-weight-focus + * The font-weight of the button when the button is focused + * + * @param {string} $font-weight-pressed + * The font-weight of the button when the button is pressed + * + * @param {string} $font-weight-disabled + * The font-weight of the button when the button is disabled + * + * @param {string} $font-family + * The font-family of the button + * + * @param {string} $font-family-over + * The font-family of the button when the cursor is over the button + * + * @param {string} $font-family-focus + * The font-family of the button when the button is focused + * + * @param {string} $font-family-pressed + * The font-family of the button when the button is pressed + * + * @param {string} $font-family-disabled + * The font-family of the button when the button is disabled + * + * @param {number} $icon-size + * The size of the button icon + * + * @param {color} $glyph-color + * The color of the button's {@link #glyph} icon + * + * @param {number} [$glyph-opacity=1] + * The opacity of the button's {@link #glyph} icon + * + * @param {number} $arrow-width + * The width of the button's {@link #cfg-menu} arrow + * + * @param {number} $arrow-height + * The height of the button's {@link #cfg-menu} arrow + * + * @param {number} $split-width + * The width of a {@link Ext.button.Split Split Button}'s arrow + * + * @param {number} $split-height + * The height of a {@link Ext.button.Split Split Button}'s arrow + * + * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows] + * True to include the UI name in the file name of the {@link #cfg-menu} + * arrow icon. Set this to false to share the same arrow bewteen multiple UIs. + * + * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows] + * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s + * arrow icon. Set this to false to share the same arrow bewteen multiple UIs. + * + * @param {boolean} [$include-split-noline-arrows=false] + * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s + * arrow icon. Used for hiding the split line when toolbar buttons are in their default + * state. + * + * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows] + * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor + * is over the button. The over icon file name will have a "-o" suffix + * + * @param {number} [$opacity-disabled=1] + * The opacity of the button when it is disabled + * + * @param {number} [$inner-opacity-disabled=1] + * The opacity of the button's text and icon elements when when the button is disabled + * + * @member Ext.button.Button + */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mc { + background-image: url(images/btn/btn-default-small-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-small { + background-image: url(images/btn/btn-default-small-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-small { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-small-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tr, +.x-btn-default-small-br, +.x-btn-default-small-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl, +.x-btn-default-small-bl, +.x-btn-default-small-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-tl, +.x-btn-default-small-bl, +.x-btn-default-small-tr, +.x-btn-default-small-br, +.x-btn-default-small-tc, +.x-btn-default-small-bc, +.x-btn-default-small-ml, +.x-btn-default-small-mr { + zoom: 1; + background-image: url(images/btn/btn-default-small-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-ml, +.x-btn-default-small-mr { + zoom: 1; + background-image: url(images/btn/btn-default-small-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-small-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-small-tl, +.x-strict .x-ie7 .x-btn-default-small-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 4px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-glyph { + font-size: 16px; + line-height: 16px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-small .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-button, +.x-btn-default-small-noicon .x-btn-button { + height: 16px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-inner, +.x-btn-default-small-noicon .x-btn-inner { + line-height: 16px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 4px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-inner { + width: 16px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon .x-btn-icon-el { + width: 16px; + height: 16px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-button { + height: 16px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-inner { + line-height: 16px; + padding-left: 20px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner { + padding-left: 4px; + padding-right: 20px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 20px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-btn-icon-el { + width: 16px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el { + height: 16px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-button { + height: 16px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-inner { + line-height: 16px; + padding-right: 20px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner { + padding-right: 4px; + padding-left: 20px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-btn-icon-el { + width: 16px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el { + height: 16px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-top .x-btn-inner { + padding-top: 20px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-top .x-btn-icon-el { + height: 16px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-bottom .x-btn-inner { + padding-bottom: 20px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-icon-text-bottom .x-btn-icon-el { + height: 16px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active, +.x-btn-default-small-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-tl, +.x-btn-default-small-over .x-frame-bl, +.x-btn-default-small-over .x-frame-tr, +.x-btn-default-small-over .x-frame-br, +.x-btn-default-small-over .x-frame-tc, +.x-btn-default-small-over .x-frame-bc { + background-image: url(images/btn/btn-default-small-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-ml, +.x-btn-default-small-over .x-frame-mr { + background-image: url(images/btn/btn-default-small-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-small-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-tl, +.x-btn-default-small-focus .x-frame-bl, +.x-btn-default-small-focus .x-frame-tr, +.x-btn-default-small-focus .x-frame-br, +.x-btn-default-small-focus .x-frame-tc, +.x-btn-default-small-focus .x-frame-bc { + background-image: url(images/btn/btn-default-small-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-ml, +.x-btn-default-small-focus .x-frame-mr { + background-image: url(images/btn/btn-default-small-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-small-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-tl, +.x-btn-default-small-menu-active .x-frame-bl, +.x-btn-default-small-menu-active .x-frame-tr, +.x-btn-default-small-menu-active .x-frame-br, +.x-btn-default-small-menu-active .x-frame-tc, +.x-btn-default-small-menu-active .x-frame-bc, +.x-btn-default-small-pressed .x-frame-tl, +.x-btn-default-small-pressed .x-frame-bl, +.x-btn-default-small-pressed .x-frame-tr, +.x-btn-default-small-pressed .x-frame-br, +.x-btn-default-small-pressed .x-frame-tc, +.x-btn-default-small-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-small-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-ml, +.x-btn-default-small-menu-active .x-frame-mr, +.x-btn-default-small-pressed .x-frame-ml, +.x-btn-default-small-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-small-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-menu-active .x-frame-mc, +.x-btn-default-small-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-small-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-tl, +.x-btn-default-small-disabled .x-frame-bl, +.x-btn-default-small-disabled .x-frame-tr, +.x-btn-default-small-disabled .x-frame-br, +.x-btn-default-small-disabled .x-frame-tc, +.x-btn-default-small-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-small-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-ml, +.x-btn-default-small-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-small-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-small-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-over { + background-image: url(images/btn/btn-default-small-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-focus { + background-image: url(images/btn/btn-default-small-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-menu-active, +.x-nlg .x-btn-default-small-pressed { + background-image: url(images/btn/btn-default-small-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-small-disabled { + background-image: url(images/btn/btn-default-small-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-small { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-small-disabled .x-btn-inner, +.x-btn-default-small-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-small-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mc { + background-image: url(images/btn/btn-default-medium-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-medium { + background-image: url(images/btn/btn-default-medium-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-medium { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-medium-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tr, +.x-btn-default-medium-br, +.x-btn-default-medium-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl, +.x-btn-default-medium-bl, +.x-btn-default-medium-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-tl, +.x-btn-default-medium-bl, +.x-btn-default-medium-tr, +.x-btn-default-medium-br, +.x-btn-default-medium-tc, +.x-btn-default-medium-bc, +.x-btn-default-medium-ml, +.x-btn-default-medium-mr { + zoom: 1; + background-image: url(images/btn/btn-default-medium-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-ml, +.x-btn-default-medium-mr { + zoom: 1; + background-image: url(images/btn/btn-default-medium-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-medium-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-medium-tl, +.x-strict .x-ie7 .x-btn-default-medium-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-glyph { + font-size: 24px; + line-height: 24px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-medium .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-button, +.x-btn-default-medium-noicon .x-btn-button { + height: 24px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-inner, +.x-btn-default-medium-noicon .x-btn-inner { + line-height: 24px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-inner { + width: 24px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon .x-btn-icon-el { + width: 24px; + height: 24px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-button { + height: 24px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-inner { + line-height: 24px; + padding-left: 28px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner { + padding-left: 3px; + padding-right: 28px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 28px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-btn-icon-el { + width: 24px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el { + height: 24px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-button { + height: 24px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-inner { + line-height: 24px; + padding-right: 28px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 28px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-btn-icon-el { + width: 24px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el { + height: 24px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-top .x-btn-inner { + padding-top: 28px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-top .x-btn-icon-el { + height: 24px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-bottom .x-btn-inner { + padding-bottom: 28px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-icon-text-bottom .x-btn-icon-el { + height: 24px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active, +.x-btn-default-medium-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-tl, +.x-btn-default-medium-over .x-frame-bl, +.x-btn-default-medium-over .x-frame-tr, +.x-btn-default-medium-over .x-frame-br, +.x-btn-default-medium-over .x-frame-tc, +.x-btn-default-medium-over .x-frame-bc { + background-image: url(images/btn/btn-default-medium-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-ml, +.x-btn-default-medium-over .x-frame-mr { + background-image: url(images/btn/btn-default-medium-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-medium-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-tl, +.x-btn-default-medium-focus .x-frame-bl, +.x-btn-default-medium-focus .x-frame-tr, +.x-btn-default-medium-focus .x-frame-br, +.x-btn-default-medium-focus .x-frame-tc, +.x-btn-default-medium-focus .x-frame-bc { + background-image: url(images/btn/btn-default-medium-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-ml, +.x-btn-default-medium-focus .x-frame-mr { + background-image: url(images/btn/btn-default-medium-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-medium-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-tl, +.x-btn-default-medium-menu-active .x-frame-bl, +.x-btn-default-medium-menu-active .x-frame-tr, +.x-btn-default-medium-menu-active .x-frame-br, +.x-btn-default-medium-menu-active .x-frame-tc, +.x-btn-default-medium-menu-active .x-frame-bc, +.x-btn-default-medium-pressed .x-frame-tl, +.x-btn-default-medium-pressed .x-frame-bl, +.x-btn-default-medium-pressed .x-frame-tr, +.x-btn-default-medium-pressed .x-frame-br, +.x-btn-default-medium-pressed .x-frame-tc, +.x-btn-default-medium-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-medium-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-ml, +.x-btn-default-medium-menu-active .x-frame-mr, +.x-btn-default-medium-pressed .x-frame-ml, +.x-btn-default-medium-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-medium-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-menu-active .x-frame-mc, +.x-btn-default-medium-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-medium-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-tl, +.x-btn-default-medium-disabled .x-frame-bl, +.x-btn-default-medium-disabled .x-frame-tr, +.x-btn-default-medium-disabled .x-frame-br, +.x-btn-default-medium-disabled .x-frame-tc, +.x-btn-default-medium-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-medium-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-ml, +.x-btn-default-medium-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-medium-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-medium-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-over { + background-image: url(images/btn/btn-default-medium-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-focus { + background-image: url(images/btn/btn-default-medium-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-menu-active, +.x-nlg .x-btn-default-medium-pressed { + background-image: url(images/btn/btn-default-medium-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-medium-disabled { + background-image: url(images/btn/btn-default-medium-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-medium { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-medium-disabled .x-btn-inner, +.x-btn-default-medium-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-medium-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large { + border-color: #d1d1d1; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: white; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(48%, #f9f9f9), color-stop(52%, #e2e2e2), color-stop(100%, #e7e7e7)); + background-image: -webkit-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -moz-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: -o-linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); + background-image: linear-gradient(top, #ffffff, #f9f9f9 48%, #e2e2e2 52%, #e7e7e7); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mc { + background-image: url(images/btn/btn-default-large-fbg.gif); + background-position: 0 top; + background-color: white; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-btn-default-large { + background-image: url(images/btn/btn-default-large-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-large { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-large-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tr, +.x-btn-default-large-br, +.x-btn-default-large-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl, +.x-btn-default-large-bl, +.x-btn-default-large-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-tl, +.x-btn-default-large-bl, +.x-btn-default-large-tr, +.x-btn-default-large-br, +.x-btn-default-large-tc, +.x-btn-default-large-bc, +.x-btn-default-large-ml, +.x-btn-default-large-mr { + zoom: 1; + background-image: url(images/btn/btn-default-large-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-ml, +.x-btn-default-large-mr { + zoom: 1; + background-image: url(images/btn/btn-default-large-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-large-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-large-tl, +.x-strict .x-ie7 .x-btn-default-large-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-glyph { + font-size: 32px; + line-height: 32px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-large .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: #f7f7f7; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f7f7f7), color-stop(48%, #f1f1f1), color-stop(52%, #dadada), color-stop(100%, #dfdfdf)); + background-image: -webkit-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -moz-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: -o-linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); + background-image: linear-gradient(top, #f7f7f7, #f1f1f1 48%, #dadada 52%, #dfdfdf); +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-button, +.x-btn-default-large-noicon .x-btn-button { + height: 32px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-inner, +.x-btn-default-large-noicon .x-btn-inner { + line-height: 32px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-inner { + width: 32px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon .x-btn-icon-el { + width: 32px; + height: 32px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-button { + height: 32px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-inner { + line-height: 32px; + padding-left: 36px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner { + padding-left: 3px; + padding-right: 36px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 36px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-btn-icon-el { + width: 32px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el { + height: 32px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-button { + height: 32px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-inner { + line-height: 32px; + padding-right: 36px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 36px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-btn-icon-el { + width: 32px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el { + height: 32px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-top .x-btn-inner { + padding-top: 36px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-top .x-btn-icon-el { + height: 32px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-bottom .x-btn-inner { + padding-bottom: 36px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-icon-text-bottom .x-btn-icon-el { + height: 32px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus { + border-color: #b0ccf2; + background-image: none; + background-color: #e4f3ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e4f3ff), color-stop(48%, #d9edff), color-stop(52%, #c2d8f2), color-stop(100%, #c6dcf6)); + background-image: -webkit-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -moz-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: -o-linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); + background-image: linear-gradient(top, #e4f3ff, #d9edff 48%, #c2d8f2 52%, #c6dcf6); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active, +.x-btn-default-large-pressed { + border-color: #9ebae1; + background-image: none; + background-color: #b6cbe4; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #b6cbe4), color-stop(48%, #bfd2e6), color-stop(52%, #8dc0f5), color-stop(100%, #98c5f5)); + background-image: -webkit-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -moz-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: -o-linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); + background-image: linear-gradient(top, #b6cbe4, #bfd2e6 48%, #8dc0f5 52%, #98c5f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-tl, +.x-btn-default-large-over .x-frame-bl, +.x-btn-default-large-over .x-frame-tr, +.x-btn-default-large-over .x-frame-br, +.x-btn-default-large-over .x-frame-tc, +.x-btn-default-large-over .x-frame-bc { + background-image: url(images/btn/btn-default-large-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-ml, +.x-btn-default-large-over .x-frame-mr { + background-image: url(images/btn/btn-default-large-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-large-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-tl, +.x-btn-default-large-focus .x-frame-bl, +.x-btn-default-large-focus .x-frame-tr, +.x-btn-default-large-focus .x-frame-br, +.x-btn-default-large-focus .x-frame-tc, +.x-btn-default-large-focus .x-frame-bc { + background-image: url(images/btn/btn-default-large-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-ml, +.x-btn-default-large-focus .x-frame-mr { + background-image: url(images/btn/btn-default-large-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-focus .x-frame-mc { + background-color: #e4f3ff; + background-image: url(images/btn/btn-default-large-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-tl, +.x-btn-default-large-menu-active .x-frame-bl, +.x-btn-default-large-menu-active .x-frame-tr, +.x-btn-default-large-menu-active .x-frame-br, +.x-btn-default-large-menu-active .x-frame-tc, +.x-btn-default-large-menu-active .x-frame-bc, +.x-btn-default-large-pressed .x-frame-tl, +.x-btn-default-large-pressed .x-frame-bl, +.x-btn-default-large-pressed .x-frame-tr, +.x-btn-default-large-pressed .x-frame-br, +.x-btn-default-large-pressed .x-frame-tc, +.x-btn-default-large-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-large-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-ml, +.x-btn-default-large-menu-active .x-frame-mr, +.x-btn-default-large-pressed .x-frame-ml, +.x-btn-default-large-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-large-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-menu-active .x-frame-mc, +.x-btn-default-large-pressed .x-frame-mc { + background-color: #b6cbe4; + background-image: url(images/btn/btn-default-large-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-tl, +.x-btn-default-large-disabled .x-frame-bl, +.x-btn-default-large-disabled .x-frame-tr, +.x-btn-default-large-disabled .x-frame-br, +.x-btn-default-large-disabled .x-frame-tc, +.x-btn-default-large-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-large-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-ml, +.x-btn-default-large-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-large-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-frame-mc { + background-color: #f7f7f7; + background-image: url(images/btn/btn-default-large-disabled-fbg.gif); +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-over { + background-image: url(images/btn/btn-default-large-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-focus { + background-image: url(images/btn/btn-default-large-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-menu-active, +.x-nlg .x-btn-default-large-pressed { + background-image: url(images/btn/btn-default-large-pressed-bg.gif); +} + +/* line 684, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-large-disabled { + background-image: url(images/btn/btn-default-large-disabled-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-large { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-split-right { + background-image: url(images/button/s-arrow.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 753, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-large-disabled .x-btn-inner, +.x-btn-default-large-disabled .x-btn-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-large-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-small { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-small-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tr, +.x-btn-default-toolbar-small-br, +.x-btn-default-toolbar-small-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl, +.x-btn-default-toolbar-small-bl, +.x-btn-default-toolbar-small-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-tl, +.x-btn-default-toolbar-small-bl, +.x-btn-default-toolbar-small-tr, +.x-btn-default-toolbar-small-br, +.x-btn-default-toolbar-small-tc, +.x-btn-default-toolbar-small-bc, +.x-btn-default-toolbar-small-ml, +.x-btn-default-toolbar-small-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-ml, +.x-btn-default-toolbar-small-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-small-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-small-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-small-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 4px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-glyph { + font-size: 16px; + line-height: 16px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-button, +.x-btn-default-toolbar-small-noicon .x-btn-button { + height: 16px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-inner, +.x-btn-default-toolbar-small-noicon .x-btn-inner { + line-height: 16px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 4px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-inner { + width: 16px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon .x-btn-icon-el { + width: 16px; + height: 16px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-button { + height: 16px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-inner { + line-height: 16px; + padding-left: 20px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner { + padding-left: 4px; + padding-right: 20px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 20px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el { + width: 16px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el { + height: 16px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-button { + height: 16px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-inner { + line-height: 16px; + padding-right: 20px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner { + padding-right: 4px; + padding-left: 20px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el { + width: 16px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el { + height: 16px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-top .x-btn-inner { + padding-top: 20px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el { + height: 16px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner { + padding-bottom: 20px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el { + height: 16px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active, +.x-btn-default-toolbar-small-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-tl, +.x-btn-default-toolbar-small-over .x-frame-bl, +.x-btn-default-toolbar-small-over .x-frame-tr, +.x-btn-default-toolbar-small-over .x-frame-br, +.x-btn-default-toolbar-small-over .x-frame-tc, +.x-btn-default-toolbar-small-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-ml, +.x-btn-default-toolbar-small-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-small-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-tl, +.x-btn-default-toolbar-small-focus .x-frame-bl, +.x-btn-default-toolbar-small-focus .x-frame-tr, +.x-btn-default-toolbar-small-focus .x-frame-br, +.x-btn-default-toolbar-small-focus .x-frame-tc, +.x-btn-default-toolbar-small-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-ml, +.x-btn-default-toolbar-small-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-small-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-tl, +.x-btn-default-toolbar-small-menu-active .x-frame-bl, +.x-btn-default-toolbar-small-menu-active .x-frame-tr, +.x-btn-default-toolbar-small-menu-active .x-frame-br, +.x-btn-default-toolbar-small-menu-active .x-frame-tc, +.x-btn-default-toolbar-small-menu-active .x-frame-bc, +.x-btn-default-toolbar-small-pressed .x-frame-tl, +.x-btn-default-toolbar-small-pressed .x-frame-bl, +.x-btn-default-toolbar-small-pressed .x-frame-tr, +.x-btn-default-toolbar-small-pressed .x-frame-br, +.x-btn-default-toolbar-small-pressed .x-frame-tc, +.x-btn-default-toolbar-small-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-ml, +.x-btn-default-toolbar-small-menu-active .x-frame-mr, +.x-btn-default-toolbar-small-pressed .x-frame-ml, +.x-btn-default-toolbar-small-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-menu-active .x-frame-mc, +.x-btn-default-toolbar-small-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-small-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-tl, +.x-btn-default-toolbar-small-disabled .x-frame-bl, +.x-btn-default-toolbar-small-disabled .x-frame-tr, +.x-btn-default-toolbar-small-disabled .x-frame-br, +.x-btn-default-toolbar-small-disabled .x-frame-tc, +.x-btn-default-toolbar-small-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-small-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-ml, +.x-btn-default-toolbar-small-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-small-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-over { + background-image: url(images/btn/btn-default-toolbar-small-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-focus { + background-image: url(images/btn/btn-default-toolbar-small-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-small-menu-active, +.x-nlg .x-btn-default-toolbar-small-pressed { + background-image: url(images/btn/btn-default-toolbar-small-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-small { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-noline-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-small-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-small-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-medium { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-medium-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tr, +.x-btn-default-toolbar-medium-br, +.x-btn-default-toolbar-medium-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl, +.x-btn-default-toolbar-medium-bl, +.x-btn-default-toolbar-medium-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-tl, +.x-btn-default-toolbar-medium-bl, +.x-btn-default-toolbar-medium-tr, +.x-btn-default-toolbar-medium-br, +.x-btn-default-toolbar-medium-tc, +.x-btn-default-toolbar-medium-bc, +.x-btn-default-toolbar-medium-ml, +.x-btn-default-toolbar-medium-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-ml, +.x-btn-default-toolbar-medium-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-medium-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-glyph { + font-size: 24px; + line-height: 24px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-button, +.x-btn-default-toolbar-medium-noicon .x-btn-button { + height: 24px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-inner, +.x-btn-default-toolbar-medium-noicon .x-btn-inner { + line-height: 24px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-inner { + width: 24px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon .x-btn-icon-el { + width: 24px; + height: 24px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-button { + height: 24px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner { + line-height: 24px; + padding-left: 28px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner { + padding-left: 3px; + padding-right: 28px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 28px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el { + width: 24px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el { + height: 24px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-button { + height: 24px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner { + line-height: 24px; + padding-right: 28px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 28px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el { + width: 24px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el { + height: 24px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner { + padding-top: 28px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el { + height: 24px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner { + padding-bottom: 28px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el { + height: 24px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active, +.x-btn-default-toolbar-medium-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-tl, +.x-btn-default-toolbar-medium-over .x-frame-bl, +.x-btn-default-toolbar-medium-over .x-frame-tr, +.x-btn-default-toolbar-medium-over .x-frame-br, +.x-btn-default-toolbar-medium-over .x-frame-tc, +.x-btn-default-toolbar-medium-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-ml, +.x-btn-default-toolbar-medium-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-medium-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-tl, +.x-btn-default-toolbar-medium-focus .x-frame-bl, +.x-btn-default-toolbar-medium-focus .x-frame-tr, +.x-btn-default-toolbar-medium-focus .x-frame-br, +.x-btn-default-toolbar-medium-focus .x-frame-tc, +.x-btn-default-toolbar-medium-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-ml, +.x-btn-default-toolbar-medium-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-medium-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-tl, +.x-btn-default-toolbar-medium-menu-active .x-frame-bl, +.x-btn-default-toolbar-medium-menu-active .x-frame-tr, +.x-btn-default-toolbar-medium-menu-active .x-frame-br, +.x-btn-default-toolbar-medium-menu-active .x-frame-tc, +.x-btn-default-toolbar-medium-menu-active .x-frame-bc, +.x-btn-default-toolbar-medium-pressed .x-frame-tl, +.x-btn-default-toolbar-medium-pressed .x-frame-bl, +.x-btn-default-toolbar-medium-pressed .x-frame-tr, +.x-btn-default-toolbar-medium-pressed .x-frame-br, +.x-btn-default-toolbar-medium-pressed .x-frame-tc, +.x-btn-default-toolbar-medium-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-ml, +.x-btn-default-toolbar-medium-menu-active .x-frame-mr, +.x-btn-default-toolbar-medium-pressed .x-frame-ml, +.x-btn-default-toolbar-medium-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-menu-active .x-frame-mc, +.x-btn-default-toolbar-medium-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-tl, +.x-btn-default-toolbar-medium-disabled .x-frame-bl, +.x-btn-default-toolbar-medium-disabled .x-frame-tr, +.x-btn-default-toolbar-medium-disabled .x-frame-br, +.x-btn-default-toolbar-medium-disabled .x-frame-tc, +.x-btn-default-toolbar-medium-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-medium-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-ml, +.x-btn-default-toolbar-medium-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-medium-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-over { + background-image: url(images/btn/btn-default-toolbar-medium-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-focus { + background-image: url(images/btn/btn-default-toolbar-medium-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-medium-menu-active, +.x-nlg .x-btn-default-toolbar-medium-pressed { + background-image: url(images/btn/btn-default-toolbar-medium-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-medium { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-noline-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-medium-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-medium-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 246, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large { + border-color: transparent; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 3px 3px 3px 3px; + border-width: 1px; + border-style: solid; + background-color: transparent; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mc { + background-color: transparent; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-default-toolbar-large { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-default-toolbar-large-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-3-3-3-3; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tr, +.x-btn-default-toolbar-large-br, +.x-btn-default-toolbar-large-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl, +.x-btn-default-toolbar-large-bl, +.x-btn-default-toolbar-large-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-tl, +.x-btn-default-toolbar-large-bl, +.x-btn-default-toolbar-large-tr, +.x-btn-default-toolbar-large-br, +.x-btn-default-toolbar-large-tc, +.x-btn-default-toolbar-large-bc, +.x-btn-default-toolbar-large-ml, +.x-btn-default-toolbar-large-mr { + zoom: 1; +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-ml, +.x-btn-default-toolbar-large-mr { + zoom: 1; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-default-toolbar-large-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-default-toolbar-large-tl, +.x-strict .x-ie7 .x-btn-default-toolbar-large-bl { + position: relative; + right: 0; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-inner { + font-size: 11px; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + color: #333333; + padding: 0 3px; +} +/* line 261, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow { + background-image: url(images/button/arrow.gif); +} +/* line 269, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow-right { + padding-right: 12px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right { + padding-right: 0; + padding-left: 12px; +} +/* line 280, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-arrow-bottom { + padding-bottom: 12px; +} +/* line 284, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-glyph { + font-size: 32px; + line-height: 32px; + color: #333333; + opacity: 0.5; +} +/* line 303, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph { + color: #999999; +} + +/* line 309, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled { + border-color: #e1e1e1; + background-image: none; + background-color: transparent; +} +/* line 317, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-btn-inner { + color: #8c8c8c; +} + +/* line 335, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-button, +.x-btn-default-toolbar-large-noicon .x-btn-button { + height: 32px; +} +/* line 339, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-inner, +.x-btn-default-toolbar-large-noicon .x-btn-inner { + line-height: 32px; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner, +.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner { + padding-right: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner, +.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 0; +} + +/* line 364, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-inner { + width: 32px; + padding: 0; +} +/* line 370, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon .x-btn-icon-el { + width: 32px; + height: 32px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-button { + height: 32px; +} +/* line 382, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-inner { + line-height: 32px; + padding-left: 36px; +} +/* line 388, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner { + padding-left: 3px; + padding-right: 36px; +} +/* line 393, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner { + padding-right: 36px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el { + width: 32px; + right: auto; +} +/* line 403, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el { + height: 32px; +} +/* line 409, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el { + left: auto; + right: 0; +} + +/* line 417, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-button { + height: 32px; +} +/* line 422, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-inner { + line-height: 32px; + padding-right: 36px; +} +/* line 428, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner { + padding-right: 3px; + padding-left: 36px; +} +/* line 434, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el { + width: 32px; + left: auto; +} +/* line 439, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el, .x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el { + height: 32px; +} +/* line 445, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el { + left: 0; + right: auto; +} + +/* line 453, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-top .x-btn-inner { + padding-top: 36px; +} +/* line 457, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el { + height: 32px; + bottom: auto; +} +/* line 465, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el { + width: 100%; +} + +/* line 473, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner { + padding-bottom: 36px; +} +/* line 477, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el { + height: 32px; + top: auto; +} +/* line 485, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el, .x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el { + width: 100%; +} + +/* line 492, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus { + border-color: #81a4d0; + background-image: none; + background-color: #dbeeff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dbeeff), color-stop(48%, #d0e7ff), color-stop(52%, #bbd2f0), color-stop(100%, #bed6f5)); + background-image: -webkit-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -moz-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: -o-linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); + background-image: linear-gradient(top, #dbeeff, #d0e7ff 48%, #bbd2f0 52%, #bed6f5); +} + +/* line 541, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active, +.x-btn-default-toolbar-large-pressed { + border-color: #7a9ac4; + background-image: none; + background-color: #bccfe5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #bccfe5), color-stop(48%, #c5d6e7), color-stop(52%, #95c4f4), color-stop(100%, #9fc9f5)); + background-image: -webkit-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -moz-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: -o-linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); + background-image: linear-gradient(top, #bccfe5, #c5d6e7 48%, #95c4f4 52%, #9fc9f5); +} + +/* line 573, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-tl, +.x-btn-default-toolbar-large-over .x-frame-bl, +.x-btn-default-toolbar-large-over .x-frame-tr, +.x-btn-default-toolbar-large-over .x-frame-br, +.x-btn-default-toolbar-large-over .x-frame-tc, +.x-btn-default-toolbar-large-over .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-over-corners.gif); +} +/* line 577, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-ml, +.x-btn-default-toolbar-large-over .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-over-sides.gif); +} +/* line 580, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-large-over-fbg.gif); +} + +/* line 595, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-tl, +.x-btn-default-toolbar-large-focus .x-frame-bl, +.x-btn-default-toolbar-large-focus .x-frame-tr, +.x-btn-default-toolbar-large-focus .x-frame-br, +.x-btn-default-toolbar-large-focus .x-frame-tc, +.x-btn-default-toolbar-large-focus .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-focus-corners.gif); +} +/* line 599, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-ml, +.x-btn-default-toolbar-large-focus .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-focus-sides.gif); +} +/* line 602, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-focus .x-frame-mc { + background-color: #dbeeff; + background-image: url(images/btn/btn-default-toolbar-large-focus-fbg.gif); +} + +/* line 618, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-tl, +.x-btn-default-toolbar-large-menu-active .x-frame-bl, +.x-btn-default-toolbar-large-menu-active .x-frame-tr, +.x-btn-default-toolbar-large-menu-active .x-frame-br, +.x-btn-default-toolbar-large-menu-active .x-frame-tc, +.x-btn-default-toolbar-large-menu-active .x-frame-bc, +.x-btn-default-toolbar-large-pressed .x-frame-tl, +.x-btn-default-toolbar-large-pressed .x-frame-bl, +.x-btn-default-toolbar-large-pressed .x-frame-tr, +.x-btn-default-toolbar-large-pressed .x-frame-br, +.x-btn-default-toolbar-large-pressed .x-frame-tc, +.x-btn-default-toolbar-large-pressed .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-pressed-corners.gif); +} +/* line 622, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-ml, +.x-btn-default-toolbar-large-menu-active .x-frame-mr, +.x-btn-default-toolbar-large-pressed .x-frame-ml, +.x-btn-default-toolbar-large-pressed .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-pressed-sides.gif); +} +/* line 625, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-menu-active .x-frame-mc, +.x-btn-default-toolbar-large-pressed .x-frame-mc { + background-color: #bccfe5; + background-image: url(images/btn/btn-default-toolbar-large-pressed-fbg.gif); +} + +/* line 640, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-tl, +.x-btn-default-toolbar-large-disabled .x-frame-bl, +.x-btn-default-toolbar-large-disabled .x-frame-tr, +.x-btn-default-toolbar-large-disabled .x-frame-br, +.x-btn-default-toolbar-large-disabled .x-frame-tc, +.x-btn-default-toolbar-large-disabled .x-frame-bc { + background-image: url(images/btn/btn-default-toolbar-large-disabled-corners.gif); +} +/* line 644, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-ml, +.x-btn-default-toolbar-large-disabled .x-frame-mr { + background-image: url(images/btn/btn-default-toolbar-large-disabled-sides.gif); +} +/* line 647, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled .x-frame-mc { + background-color: transparent; +} + +/* line 659, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-over { + background-image: url(images/btn/btn-default-toolbar-large-over-bg.gif); +} + +/* line 667, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-focus { + background-image: url(images/btn/btn-default-toolbar-large-focus-bg.gif); +} + +/* line 676, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nlg .x-btn-default-toolbar-large-menu-active, +.x-nlg .x-btn-default-toolbar-large-pressed { + background-image: url(images/btn/btn-default-toolbar-large-pressed-bg.gif); +} + +/* line 691, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-nbr .x-btn-default-toolbar-large { + background-image: none; +} + +/* line 709, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-split-right { + background-image: url(images/button/s-arrow-noline.gif); + padding-right: 14px; +} +/* line 715, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-noline-rtl.gif); + padding-right: 0; + padding-left: 14px; +} +/* line 722, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large .x-btn-split-bottom { + background-image: url(images/button/s-arrow-b-noline.gif); + padding-bottom: 14px; +} + +/* line 730, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-btn-split-right { + background-image: url(images/button/s-arrow-o.gif); +} +/* line 734, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right { + background-image: url(images/button/s-arrow-o-rtl.gif); +} +/* line 738, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-over .x-btn-split-bottom { + background-image: url(images/button/s-arrow-bo.gif); +} + +/* line 745, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-default-toolbar-large-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-over:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-focus:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-pressed:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-default-toolbar-large-disabled:after { + display: none; + content: "x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1161, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-left .x-btn-icon-el { + background-position: left center; +} +/* line 1166, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-left .x-rtl.x-btn-icon-el { + background-position: right center; +} + +/* line 1173, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-right .x-btn-icon-el { + background-position: right center; +} +/* line 1178, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-right .x-rtl.x-btn-icon-el { + background-position: left center; +} + +/* line 1184, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-top .x-btn-icon-el { + background-position: center top; +} + +/* line 1188, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-icon-text-bottom .x-btn-icon-el { + background-position: center bottom; +} + +/* line 1192, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow-right { + background-position: right center; +} + +/* line 1197, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-rtl.x-btn-arrow-right { + background-position: left center; +} + +/* line 1202, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow-bottom { + background-position: center bottom; +} + +/* line 1206, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-arrow { + background-repeat: no-repeat; +} + +/* line 1211, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split { + display: block; + background-repeat: no-repeat; +} + +/* line 1216, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split-right { + background-position: right center; +} + +/* line 1221, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-rtl.x-btn-split-right { + background-position: 0 center; +} + +/* line 1226, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-btn-split-bottom { + background-position: center bottom; +} + +/* line 1230, ../../../ext-theme-neutral/sass/src/button/Button.scss */ +.x-cycle-fixed-width .x-btn-inner { + text-align: inherit; +} + +/** + * Creates a visual theme for a Toolbar. + * @param {String} $ui + * The name of the UI + * + * @param {color} [$background-color=$toolbar-background-color] + * The background color of the toolbar + * + * @param {string/list} [$background-gradient=$toolbar-background-gradient] + * The background gradient of the toolbar + * + * @param {color} [$border-color=$toolbar-border-color] + * The border color of the toolbar + * + * @param {number} [$border-width=$toolbar-border-width] + * The border-width of the toolbar + * + * @param {string} [$scroller-cursor=$toolbar-scroller-cursor] + * The cursor of Toolbar scrollers + * + * @param {string} [$scroller-cursor-disabled=$toolbar-scroller-cursor-disabled] + * The cursor of disabled Toolbar scrollers + * + * @param {number} [$scroller-opacity-disabled=$toolbar-scroller-opacity-disabled] + * The opacity of disabled Toolbar scrollers + * + * @param {string} [$tool-background-image=$toolbar-tool-background-image] + * The sprite to use for {@link Ext.panel.Tool Tools} on a Toolbar + * + * @member Ext.toolbar.Toolbar + */ +/* line 94, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar { + font-size: 11px; + border-style: solid; + padding: 2px 0 2px 2px; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-item { + margin: 0 2px 0 0; +} + +/* line 107, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-rtl.x-toolbar-item { + margin: 0 0 0 2px; +} + +/* line 112, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-text { + margin: 0 6px 0 4px; + color: #4c4c4c; + line-height: 16px; + font-family: tahoma, arial, verdana, sans-serif; + font-size: 11px; + font-weight: normal; +} + +/* line 121, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-separator-horizontal { + margin: 0 2px 0 0; + height: 14px; + border-style: solid; + border-width: 0 1px; + border-left-color: #98c8ff; + border-right-color: white; +} + +/* line 132, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-rtl.x-toolbar { + padding: 2px 2px 2px 0; +} + +/* line 137, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-footer { + background: transparent; + border: 0; + margin: 3px 0 0; + padding: 2px 0 2px 6px; +} +/* line 144, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-footer .x-toolbar-item { + margin: 0 6px 0 0; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-spacer { + width: 2px; +} + +/* line 154, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-more-icon { + background-image: url(images/toolbar/more.gif) !important; + background-position: center center !important; + background-repeat: no-repeat; +} + +/* line 45, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default { + border-color: #99bce8; + border-width: 1px; + background-image: none; + background-color: #d3e1f1; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dfe9f5), color-stop(100%, #d3e1f1)); + background-image: -webkit-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: -moz-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: -o-linear-gradient(top, #dfe9f5, #d3e1f1); + background-image: linear-gradient(top, #dfe9f5, #d3e1f1); +} +/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default .x-box-scroller { + cursor: pointer; +} +/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-default .x-box-scroller-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + cursor: default; +} + +/* line 82, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-nlg .x-toolbar-default { + background-image: url(images/toolbar/toolbar-default-bg.gif) !important; + background-repeat: repeat-x; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-toolbar-default:after { + display: none; + content: "x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/* line 166, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-left { + background-image: url(images/toolbar/scroll-left.gif); + background-position: -14px 0; + width: 14px; + height: 22px; + border-style: solid; + border-color: #8db2e3; + border-width: 0 0 1px; + margin-top: 0; +} + +/* line 177, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-left-hover { + background-position: 0 0; +} + +/* line 181, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-right { + background-image: url(images/toolbar/scroll-right.gif); + width: 14px; + height: 22px; + border-style: solid; + border-color: #8db2e3; + border-width: 0 0 1px; + margin-top: 0; +} + +/* line 191, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-scroll-right-hover { + background-position: -14px 0; +} + +/* line 195, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar .x-box-menu-after { + margin: 0 2px 0 2px; +} + +/* line 199, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical { + padding: 2px 2px 0 2px; +} +/* line 202, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-item { + margin: 0 0 2px 0; +} +/* line 206, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-text { + margin: 4px 0 6px 0; +} +/* line 210, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-toolbar-separator-vertical { + margin: 0 5px 2px; + border-style: solid none; + border-width: 1px 0; + border-top-color: #98c8ff; + border-bottom-color: white; +} +/* line 219, ../../../ext-theme-neutral/sass/src/toolbar/Toolbar.scss */ +.x-toolbar-vertical .x-box-menu-after, +.x-toolbar-vertical .x-rtl.x-box-menu-after { + margin: 2px 0 2px 0; + display: block; + float: none; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/panel/Header.scss */ +.x-header-draggable .x-header-body, +.x-header-ghost { + cursor: move; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/panel/Header.scss */ +.x-header-text { + white-space: nowrap; +} + +/** + * Creates a visual theme for a Panel + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$panel-border-color] + * The border-color of the Panel + * + * @param {number} [$ui-border-radius=$panel-border-radius] + * The border-radius of the Panel + * + * @param {number} [$ui-border-width=$panel-border-width] + * The border-width of the Panel + * + * @param {number} [$ui-padding=$panel-padding] + * The padding of the Panel + * + * @param {color} [$ui-header-color=$panel-header-color] + * The text color of the Header + * + * @param {string} [$ui-header-font-family=$panel-header-font-family] + * The font-family of the Header + * + * @param {number} [$ui-header-font-size=$panel-header-font-size] + * The font-size of the Header + * + * @param {string} [$ui-header-font-weight=$panel-header-font-weight] + * The font-weight of the Header + * + * @param {number} [$ui-header-line-height=$panel-header-line-height] + * The line-height of the Header + * + * @param {color} [$ui-header-border-color=$panel-header-border-color] + * The border-color of the Header + * + * @param {number} [$ui-header-border-width=$panel-header-border-width] + * The border-width of the Header + * + * @param {string} [$ui-header-border-style=$panel-header-border-style] + * The border-style of the Header + * + * @param {color} [$ui-header-background-color=$panel-header-background-color] + * The background-color of the Header + * + * @param {string/list} [$ui-header-background-gradient=$panel-header-background-gradient] + * The background-gradient of the Header. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {color} [$ui-header-inner-border-color=$panel-header-inner-border-color] + * The inner border-color of the Header + * + * @param {number} [$ui-header-inner-border-width=$panel-header-inner-border-width] + * The inner border-width of the Header + * + * @param {number/list} [$ui-header-text-padding=$panel-header-text-padding] + * The padding of the Header's text element + * + * @param {string} [$ui-header-text-transform=$panel-header-text-transform] + * The text-transform of the Header + * + * @param {number/list} [$ui-header-padding=$panel-header-padding] + * The padding of the Header + * + * @param {number} [$ui-header-icon-width=$panel-header-icon-width] + * The width of the Header icon + * + * @param {number} [$ui-header-icon-height=$panel-header-icon-height] + * The height of the Header icon + * + * @param {number} [$ui-header-icon-spacing=$panel-header-icon-spacing] + * The space between the Header icon and text + * + * @param {list} [$ui-header-icon-background-position=$panel-header-icon-background-position] + * The background-position of the Header icon + * + * @param {color} [$ui-header-glyph-color=$panel-header-glyph-color] + * The color of the Header glyph icon + * + * @param {number} [$ui-header-glyph-opacity=$panel-header-glyph-opacity] + * The opacity of the Header glyph icon + * + * @param {number} [$ui-tool-spacing=$panel-tool-spacing] + * The space between the Panel {@link Ext.panel.Tool Tools} + * + * @param {string} [$ui-tool-background-image=$panel-tool-background-image] + * The background sprite to use for Panel {@link Ext.panel.Tool Tools} + * + * @param {color} [$ui-body-color=$panel-body-color] + * The color of text inside the Panel body + * + * @param {color} [$ui-body-border-color=$panel-body-border-color] + * The border-color of the Panel body + * + * @param {number} [$ui-body-border-width=$panel-body-border-width] + * The border-width of the Panel body + * + * @param {string} [$ui-body-border-style=$panel-body-border-style] + * The border-style of the Panel body + * + * @param {color} [$ui-body-background-color=$panel-body-background-color] + * The background-color of the Panel body + * + * @param {number} [$ui-body-font-size=$panel-body-font-size] + * The font-size of the Panel body + * + * @param {string} [$ui-body-font-weight=$panel-body-font-weight] + * The font-weight of the Panel body + * + * @param {string} [$ui-background-stretch-top=$panel-background-stretch-top] + * The direction to strech the background-gradient of top docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-bottom=$panel-background-stretch-bottom] + * The direction to strech the background-gradient of bottom docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-right=$panel-background-stretch-right] + * The direction to strech the background-gradient of right docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {string} [$ui-background-stretch-left=$panel-background-stretch-left] + * The direction to strech the background-gradient of left docked Headers when slicing images + * for IE using Sencha Cmd + * + * @param {boolean} [$ui-include-border-management-rules=$panel-include-border-management-rules] + * True to include neptune style border management rules. + * + * @param {color} [$ui-wrap-border-color=$panel-wrap-border-color] + * The color to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is + * `true`. + * + * @param {color} [$ui-wrap-border-width=$panel-wrap-border-width] + * The width to apply to the border that wraps the body and docked items in a framed + * panel. The presence of the wrap border in a framed panel is controlled by the + * {@link #border} config. Only applicable when `$ui-include-border-management-rules` is + * `true`. + * + * @member Ext.panel.Panel + */ +/* line 736, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65); + opacity: 0.65; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default { + border-color: #99bce8; + padding: 0; +} + +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default { + font-size: 11px; + border: 1px solid #99bce8; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal { + padding: 4px 5px 4px 5px; +} + +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal-noborder { + padding: 5px 6px 4px 6px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical-noborder { + padding: 6px 5px 6px 4px; +} + +/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-vertical-noborder { + padding: 6px 4px 6px 5px; +} + +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-text-container-default { + color: #04408c; + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + line-height: 15px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-body-default { + background: white; + border-color: #99bce8; + color: black; + font-size: 12px; + font-size: normal; + border-width: 1px; + border-style: solid; +} + +/* line 432, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 436, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 441, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-vertical { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 454, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-top { + background: url(images/panel-header/panel-header-default-top-bg.gif); +} +/* line 459, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-bottom { + background: url(images/panel-header/panel-header-default-bottom-bg.gif); +} +/* line 464, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-left { + background: url(images/panel-header/panel-header-default-left-bg.gif) top right; +} +/* line 469, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-panel-header-default-right { + background: url(images/panel-header/panel-header-default-right-bg.gif) top right; +} +/* line 476, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-rtl.x-panel-header-default-left { + background: url(images/panel-header/panel-header-default-left-bg-rtl.gif); +} +/* line 480, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nlg .x-rtl.x-panel-header-default-right { + background: url(images/panel-header/panel-header-default-right-bg-rtl.gif); +} + +/* line 494, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-top { + border-bottom-width: 1px !important; +} +/* line 498, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-right { + border-left-width: 1px !important; +} +/* line 502, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-bottom { + border-top-width: 1px !important; +} +/* line 506, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-collapsed-border-left { + border-right-width: 1px !important; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-top:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-bottom:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-left:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-right:after { + display: none; + content: "x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-top { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset; +} + +/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-right { + -webkit-box-shadow: #f3f7fb -1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb -1px 0 0px 0 inset; + box-shadow: #f3f7fb -1px 0 0px 0 inset; +} + +/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-bottom { + -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset; + box-shadow: #f3f7fb 0 -1px 0px 0 inset; +} + +/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-left { + -webkit-box-shadow: #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 1px 0 0px 0 inset; +} + +/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default .x-panel-header-icon { + width: 16px; + height: 16px; + background-position: center center; +} +/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default .x-panel-header-glyph { + color: #04408c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-ie8m .x-panel-header-default .x-panel-header-glyph { + color: #678ebf; +} + +/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-panel-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title { + margin: 0 0 0 2px; +} +/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-panel-header-icon-after-title { + margin: 0 0 0 2px; +} +/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title { + margin: 0 2px 0 0; +} + +/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} +/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-rtl.x-tool-after-title { + margin: 0 2px 0 0; +} +/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} +/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-horizontal .x-rtl.x-tool-before-title { + margin: 0 0 0 2px; +} + +/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-rtl.x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} +/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-vertical .x-rtl.x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-collapsed-border-right { + border-right-width: 1px !important; +} +/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-collapsed-border-left { + border-left-width: 1px !important; +} + +/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-resizable .x-panel-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-framed { + border-color: #99bce8; + padding: 4px; +} + +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed { + font-size: 11px; + border: 1px solid #99bce8; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal { + padding: 4px 5px 4px 5px; +} + +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal-noborder { + padding: 5px 6px 4px 6px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical-noborder { + padding: 6px 5px 6px 4px; +} + +/* line 249, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-framed-vertical { + padding: 5px 4px 5px 4px; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-framed-vertical-noborder { + padding: 6px 4px 6px 5px; +} + +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-text-container-default-framed { + color: #04408c; + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + line-height: 15px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-body-default-framed { + background: #dfe9f6; + border-color: #99bce8; + color: black; + font-size: 12px; + font-size: normal; + border-width: 0; + border-style: solid; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: #dfe9f6; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mc { + background-color: #dfe9f6; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-default-framed { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-default-framed-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tr, +.x-panel-default-framed-br, +.x-panel-default-framed-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl, +.x-panel-default-framed-bl, +.x-panel-default-framed-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-tl, +.x-panel-default-framed-bl, +.x-panel-default-framed-tr, +.x-panel-default-framed-br, +.x-panel-default-framed-tc, +.x-panel-default-framed-bc, +.x-panel-default-framed-ml, +.x-panel-default-framed-mr { + zoom: 1; + background-image: url(images/panel/panel-default-framed-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-ml, +.x-panel-default-framed-mr { + zoom: 1; + background-image: url(images/panel/panel-default-framed-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-default-framed-mc { + padding: 1px 1px 1px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-default-framed-tl, +.x-strict .x-ie7 .x-panel-default-framed-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-default-framed:after { + display: none; + content: "x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 5px 4px 5px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mc { + background-image: url(images/panel-header/panel-header-default-framed-top-fbg.gif); + background-position: 0 top; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-top { + background-image: url(images/panel-header/panel-header-default-framed-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-top-frameInfo { + font-family: dh-4-4-0-0-1-1-0-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tr, +.x-panel-header-default-framed-top-br, +.x-panel-header-default-framed-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl, +.x-panel-header-default-framed-top-bl, +.x-panel-header-default-framed-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-tl, +.x-panel-header-default-framed-top-bl, +.x-panel-header-default-framed-top-tr, +.x-panel-header-default-framed-top-br, +.x-panel-header-default-framed-top-tc, +.x-panel-header-default-framed-top-bc, +.x-panel-header-default-framed-top-ml, +.x-panel-header-default-framed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-ml, +.x-panel-header-default-framed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-top-mc { + padding: 1px 2px 4px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-top-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 5px 4px 5px 4px; + border-width: 1px 1px 1px 0; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-right-fbg.gif); + background-position: right 0; + background-color: #cbddf3; +} + +/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif); + background-position: 0 0; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-right { + background-image: url(images/panel-header/panel-header-default-framed-right-bg.gif); + background-position: right 0; +} +/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-rtl.x-panel-header-default-framed-right { + background-image: url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif); + background-position: 0 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-right-frameInfo { + font-family: dv-0-4-4-0-1-1-1-0-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc { + background-position: right 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bc { + background-position: right -4px; +} + +/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right-tc { + background-position: 0 0; +} + +/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tr, +.x-panel-header-default-framed-right-br, +.x-panel-header-default-framed-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl, +.x-panel-header-default-framed-right-bl, +.x-panel-header-default-framed-right-ml { + padding-left: 0; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tl, +.x-panel-header-default-framed-right-bl, +.x-panel-header-default-framed-right-tr, +.x-panel-header-default-framed-right-br, +.x-panel-header-default-framed-right-tc, +.x-panel-header-default-framed-right-bc, +.x-panel-header-default-framed-right-ml, +.x-panel-header-default-framed-right-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-right-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right-tl, .x-rtl.x-panel-header-default-framed-right-ml, .x-rtl.x-panel-header-default-framed-right-bl, .x-rtl.x-panel-header-default-framed-right-tr, .x-rtl.x-panel-header-default-framed-right-mr, .x-rtl.x-panel-header-default-framed-right-br { + background-image: url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-tc, +.x-panel-header-default-framed-right-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-right-sides.gif); + background-repeat: repeat-x; +} + +/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-right-tc, .x-rtl.x-panel-header-default-framed-right-bc { + background-image: url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-right-mc { + padding: 2px 1px 2px 4px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-right-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-right:after { + display: none; + content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mc { + background-image: url(images/panel-header/panel-header-default-framed-bottom-fbg.gif); + background-position: 0 bottom; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-bottom { + background-image: url(images/panel-header/panel-header-default-framed-bottom-bg.gif); + background-position: 0 bottom; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-bottom-frameInfo { + font-family: dh-0-0-4-4-0-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-ml { + background-position: 0 bottom; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mr { + background-position: right bottom; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tr, +.x-panel-header-default-framed-bottom-br, +.x-panel-header-default-framed-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl, +.x-panel-header-default-framed-bottom-bl, +.x-panel-header-default-framed-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-tl, +.x-panel-header-default-framed-bottom-bl, +.x-panel-header-default-framed-bottom-tr, +.x-panel-header-default-framed-bottom-br, +.x-panel-header-default-framed-bottom-tc, +.x-panel-header-default-framed-bottom-bc, +.x-panel-header-default-framed-bottom-ml, +.x-panel-header-default-framed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-ml, +.x-panel-header-default-framed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-bottom-mc { + padding: 4px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-bottom:after { + display: none; + content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px 0 1px 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-left-fbg.gif); + background-position: left 0; + background-color: #cbddf3; +} + +/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif); + background-position: right 0; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-left { + background-image: url(images/panel-header/panel-header-default-framed-left-bg.gif); + background-position: left 0; +} +/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-rtl.x-panel-header-default-framed-left { + background-image: url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif); + background-position: right 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-left-frameInfo { + font-family: dv-4-0-0-4-1-0-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc { + background-position: left 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bc { + background-position: left -4px; +} + +/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left-tc { + background-position: right 0; +} + +/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left-bc { + background-position: right -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tr, +.x-panel-header-default-framed-left-br, +.x-panel-header-default-framed-left-mr { + padding-right: 0; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl, +.x-panel-header-default-framed-left-bl, +.x-panel-header-default-framed-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tl, +.x-panel-header-default-framed-left-bl, +.x-panel-header-default-framed-left-tr, +.x-panel-header-default-framed-left-br, +.x-panel-header-default-framed-left-tc, +.x-panel-header-default-framed-left-bc, +.x-panel-header-default-framed-left-ml, +.x-panel-header-default-framed-left-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-left-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left-tl, .x-rtl.x-panel-header-default-framed-left-ml, .x-rtl.x-panel-header-default-framed-left-bl, .x-rtl.x-panel-header-default-framed-left-tr, .x-rtl.x-panel-header-default-framed-left-mr, .x-rtl.x-panel-header-default-framed-left-br { + background-image: url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-tc, +.x-panel-header-default-framed-left-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-left-sides.gif); + background-repeat: repeat-x; +} + +/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-left-tc, .x-rtl.x-panel-header-default-framed-left-bc { + background-image: url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-left-mc { + padding: 2px 4px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-left-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-left:after { + display: none; + content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif); + background-position: 0 top; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-top { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tr, +.x-panel-header-default-framed-collapsed-top-br, +.x-panel-header-default-framed-collapsed-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl, +.x-panel-header-default-framed-collapsed-top-bl, +.x-panel-header-default-framed-collapsed-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-tl, +.x-panel-header-default-framed-collapsed-top-bl, +.x-panel-header-default-framed-collapsed-top-tr, +.x-panel-header-default-framed-collapsed-top-br, +.x-panel-header-default-framed-collapsed-top-tc, +.x-panel-header-default-framed-collapsed-top-bc, +.x-panel-header-default-framed-collapsed-top-ml, +.x-panel-header-default-framed-collapsed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-ml, +.x-panel-header-default-framed-collapsed-top-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-top-mc { + padding: 1px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif); + background-position: right 0; + background-color: #cbddf3; +} + +/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif); + background-position: 0 0; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-right { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif); + background-position: right 0; +} +/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif); + background-position: 0 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo { + font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc { + background-position: right 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bc { + background-position: right -4px; +} + +/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right-tc { + background-position: 0 0; +} + +/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tr, +.x-panel-header-default-framed-collapsed-right-br, +.x-panel-header-default-framed-collapsed-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl, +.x-panel-header-default-framed-collapsed-right-bl, +.x-panel-header-default-framed-collapsed-right-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tl, +.x-panel-header-default-framed-collapsed-right-bl, +.x-panel-header-default-framed-collapsed-right-tr, +.x-panel-header-default-framed-collapsed-right-br, +.x-panel-header-default-framed-collapsed-right-tc, +.x-panel-header-default-framed-collapsed-right-bc, +.x-panel-header-default-framed-collapsed-right-ml, +.x-panel-header-default-framed-collapsed-right-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right-tl, .x-rtl.x-panel-header-default-framed-collapsed-right-ml, .x-rtl.x-panel-header-default-framed-collapsed-right-bl, .x-rtl.x-panel-header-default-framed-collapsed-right-tr, .x-rtl.x-panel-header-default-framed-collapsed-right-mr, .x-rtl.x-panel-header-default-framed-collapsed-right-br { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-tc, +.x-panel-header-default-framed-collapsed-right-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif); + background-repeat: repeat-x; +} + +/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-right-tc, .x-rtl.x-panel-header-default-framed-collapsed-right-bc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-right-mc { + padding: 2px 1px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-right:after { + display: none; + content: "x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(top, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif); + background-position: 0 bottom; + background-color: #cbddf3; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-bottom { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif); + background-position: 0 bottom; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo { + font-family: dh-4-4-4-4-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-ml { + background-position: 0 bottom; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mr { + background-position: right bottom; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tr, +.x-panel-header-default-framed-collapsed-bottom-br, +.x-panel-header-default-framed-collapsed-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl, +.x-panel-header-default-framed-collapsed-bottom-bl, +.x-panel-header-default-framed-collapsed-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-tl, +.x-panel-header-default-framed-collapsed-bottom-bl, +.x-panel-header-default-framed-collapsed-bottom-tr, +.x-panel-header-default-framed-collapsed-bottom-br, +.x-panel-header-default-framed-collapsed-bottom-tc, +.x-panel-header-default-framed-collapsed-bottom-bc, +.x-panel-header-default-framed-collapsed-bottom-ml, +.x-panel-header-default-framed-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-ml, +.x-panel-header-default-framed-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-bottom-mc { + padding: 1px 2px 1px 2px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-bottom:after { + display: none; + content: "x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(right, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 178, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left { + background-image: none; + background-color: #cbddf3; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dae7f6), color-stop(45%, #cddef3), color-stop(46%, #abc7ec), color-stop(50%, #abc7ec), color-stop(51%, #b8cfee), color-stop(100%, #cbddf3)); + background-image: -webkit-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -moz-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: -o-linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); + background-image: linear-gradient(left, #dae7f6, #cddef3 45%, #abc7ec 46%, #abc7ec 50%, #b8cfee 51%, #cbddf3); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif); + background-position: left 0; + background-color: #cbddf3; +} + +/* line 204, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left-mc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif); + background-position: right 0; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-panel-header-default-framed-collapsed-left { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif); + background-position: left 0; +} +/* line 223, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif); + background-position: right 0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo { + font-family: dv-4-4-4-4-1-1-1-1-5-4-5-4; +} + +/* line 279, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl { + background-position: 0 0; +} + +/* line 283, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tr { + background-position: 0 -4px; +} + +/* line 287, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bl { + background-position: 0 -8px; +} + +/* line 291, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-br { + background-position: 0 -12px; +} + +/* line 295, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-ml { + background-position: -4px 0; +} + +/* line 299, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mr { + background-position: right 0; +} + +/* line 303, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc { + background-position: left 0; +} + +/* line 307, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bc { + background-position: left -4px; +} + +/* line 312, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left-tc { + background-position: right 0; +} + +/* line 316, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left-bc { + background-position: right -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tr, +.x-panel-header-default-framed-collapsed-left-br, +.x-panel-header-default-framed-collapsed-left-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl, +.x-panel-header-default-framed-collapsed-left-bl, +.x-panel-header-default-framed-collapsed-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tl, +.x-panel-header-default-framed-collapsed-left-bl, +.x-panel-header-default-framed-collapsed-left-tr, +.x-panel-header-default-framed-collapsed-left-br, +.x-panel-header-default-framed-collapsed-left-tc, +.x-panel-header-default-framed-collapsed-left-bc, +.x-panel-header-default-framed-collapsed-left-ml, +.x-panel-header-default-framed-collapsed-left-mr { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left-tl, .x-rtl.x-panel-header-default-framed-collapsed-left-ml, .x-rtl.x-panel-header-default-framed-collapsed-left-bl, .x-rtl.x-panel-header-default-framed-collapsed-left-tr, .x-rtl.x-panel-header-default-framed-collapsed-left-mr, .x-rtl.x-panel-header-default-framed-collapsed-left-br { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif); +} + +/* line 406, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-tc, +.x-panel-header-default-framed-collapsed-left-bc { + zoom: 1; + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif); + background-repeat: repeat-x; +} + +/* line 418, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-left-tc, .x-rtl.x-panel-header-default-framed-collapsed-left-bc { + background-image: url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-panel-header-default-framed-collapsed-left-mc { + padding: 2px 1px 2px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl, +.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-panel-header-default-framed-collapsed-left:after { + display: none; + content: "x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 396, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-top { + border-bottom-width: 1px !important; +} +/* line 400, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-right { + border-left-width: 1px !important; +} +/* line 404, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-bottom { + border-top-width: 1px !important; +} +/* line 408, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel .x-panel-header-default-framed-left { + border-right-width: 1px !important; +} + +/* line 414, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-top { + border-bottom-width: 0 !important; +} +/* line 418, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-right { + border-left-width: 0 !important; +} +/* line 422, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-bottom { + border-top-width: 0 !important; +} +/* line 426, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-nbr .x-panel-header-default-framed-collapsed-left { + border-right-width: 0 !important; +} + +/* line 522, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 527, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container { + background-color: #cbddf3; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3); +} + +/* line 533, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-top { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 537, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-right { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset; +} + +/* line 541, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-bottom { + -webkit-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 -1px 0px 0 inset, #f3f7fb -1px 0 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 545, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-left { + -webkit-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + -moz-box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; + box-shadow: #f3f7fb 0 1px 0px 0 inset, #f3f7fb 0 -1px 0px 0 inset, #f3f7fb 1px 0 0px 0 inset; +} + +/* line 551, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed .x-panel-header-icon { + width: 16px; + height: 16px; + background-position: center center; +} +/* line 556, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed .x-panel-header-glyph { + color: #04408c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 572, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph { + color: #678ebf; +} + +/* line 580, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 585, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title { + margin: 0 0 0 2px; +} +/* line 590, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title { + margin: 0 0 0 2px; +} +/* line 595, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title { + margin: 0 2px 0 0; +} + +/* line 602, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 607, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 612, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} +/* line 617, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 625, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 630, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title { + margin: 0 2px 0 0; +} +/* line 635, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} +/* line 640, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title { + margin: 0 0 0 2px; +} + +/* line 647, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 652, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 657, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} +/* line 662, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 670, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-border-right { + border-right-width: 1px !important; +} +/* line 673, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-rtl.x-panel-header-default-framed-collapsed-border-left { + border-left-width: 1px !important; +} + +/* line 687, ../../../ext-theme-neutral/sass/src/panel/Panel.scss */ +.x-panel-default-framed-resizable .x-panel-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/** + * Creates a visual theme for a Ext.tip.Tip + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-border-color=$tip-border-color] + * The border-color of the Tip + * + * @param {number} [$ui-border-width=$tip-border-width] + * The border-width of the Tip + * + * @param {number} [$ui-border-radius=$tip-border-radius] + * The border-radius of the Tip + * + * @param {color} [$ui-background-color=$tip-background-color] + * The background-color of the Tip + * + * @param {string/list} [$ui-background-gradient=$tip-background-gradient] + * The background-gradient of the Tip. Can be either the name of a predefined gradient or a + * list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-tool-spacing=$tip-tool-spacing] + * The space between {@link Ext.panel.Tool Tools} in the header + * + * @param {string} [$ui-tool-background-image=$tip-tool-background-image] + * The sprite to use for the header {@link Ext.panel.Tool Tools} + * + * @param {number/list} [$ui-header-body-padding=$tip-header-body-padding] + * The padding of the Tip header's body element + * + * @param {color} [$ui-header-color=$tip-header-color] + * The text color of the Tip header + * + * @param {number} [$ui-header-font-size=$tip-header-font-size] + * The font-size of the Tip header + * + * @param {string} [$ui-header-font-weight=$tip-header-font-weight] + * The font-weight of the Tip header + * + * @param {number/list} [$ui-body-padding=$tip-body-padding] + * The padding of the Tip body + * + * @param {color} [$ui-body-color=$tip-body-color] + * The text color of the Tip body + * + * @param {number} [$ui-body-font-size=$tip-body-font-size] + * The font-size of the Tip body + * + * @param {string} [$ui-body-font-weight=$tip-body-font-weight] + * The font-weight of the Tip body + * + * @param {color} [$ui-body-link-color=$tip-body-link-color] + * The text color of any anchor tags inside the Tip body + * + * @param {number} [$ui-inner-border-width=0] + * The inner border-width of the Tip + * + * @param {color} [$ui-inner-border-color=#fff] + * The inner border-color of the Tip + * + * @member Ext.tip.Tip + */ +/* line 167, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor { + position: absolute; + overflow: hidden; + height: 10px; + width: 10px; + border-style: solid; + border-width: 5px; + border-color: #8eaace; + zoom: 1; +} +/* line 182, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-content-box .x-tip-anchor { + height: 0; + width: 0; +} + +/* line 189, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-top { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + _border-top-color: pink; + _border-left-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 202, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-bottom { + border-bottom-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + _border-bottom-color: pink; + _border-left-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 215, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-left { + border-top-color: transparent; + border-bottom-color: transparent; + border-left-color: transparent; + _border-top-color: pink; + _border-bottom-color: pink; + _border-left-color: pink; + _filter: chroma(color=pink); +} + +/* line 228, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-anchor-right { + border-top-color: transparent; + border-bottom-color: transparent; + border-right-color: transparent; + _border-top-color: pink; + _border-bottom-color: pink; + _border-right-color: pink; + _filter: chroma(color=pink); +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + padding: 2px 2px 2px 2px; + border-width: 1px; + border-style: solid; + background-color: #e9f2ff; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mc { + background-color: #e9f2ff; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tip-default { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tip-default-frameInfo { + font-family: th-3-3-3-3-1-1-1-1-2-2-2-2; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl { + background-position: 0 -6px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tr { + background-position: right -9px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bl { + background-position: 0 -12px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-br { + background-position: right -15px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bc { + background-position: 0 -3px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tr, +.x-tip-default-br, +.x-tip-default-mr { + padding-right: 3px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl, +.x-tip-default-bl, +.x-tip-default-ml { + padding-left: 3px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tc { + height: 3px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-bc { + height: 3px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-tl, +.x-tip-default-bl, +.x-tip-default-tr, +.x-tip-default-br, +.x-tip-default-tc, +.x-tip-default-bc, +.x-tip-default-ml, +.x-tip-default-mr { + zoom: 1; + background-image: url(images/tip/tip-default-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-ml, +.x-tip-default-mr { + zoom: 1; + background-image: url(images/tip/tip-default-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-default-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tip-default-tl, +.x-strict .x-ie7 .x-tip-default-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tip-default:after { + display: none; + content: "x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-default { + border-color: #8eaace; +} +/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-default .x-tool-img { + background-color: #e9f2ff; +} + +/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-tool-after-title { + margin: 0 0 0 6px; +} +/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-rtl.x-tool-after-title { + margin: 0 6px 0 0; +} +/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-tool-before-title { + margin: 0 6px 0 0; +} +/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-default .x-rtl.x-tool-before-title { + margin: 0 0 0 6px; +} + +/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-body-default { + padding: 3px 3px 0 3px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-text-container-default { + color: #444444; + font-size: 11px; + font-weight: bold; +} + +/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-default { + padding: 3px; + color: #444444; + font-size: 11px; + font-weight: normal; +} +/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-default a { + color: #2a2a2a; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: white; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mc { + background-color: white; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tip-form-invalid { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tip-form-invalid-frameInfo { + font-family: th-5-5-5-5-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tr, +.x-tip-form-invalid-br, +.x-tip-form-invalid-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl, +.x-tip-form-invalid-bl, +.x-tip-form-invalid-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-tl, +.x-tip-form-invalid-bl, +.x-tip-form-invalid-tr, +.x-tip-form-invalid-br, +.x-tip-form-invalid-tc, +.x-tip-form-invalid-bc, +.x-tip-form-invalid-ml, +.x-tip-form-invalid-mr { + zoom: 1; + background-image: url(images/tip/tip-form-invalid-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-ml, +.x-tip-form-invalid-mr { + zoom: 1; + background-image: url(images/tip/tip-form-invalid-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tip-form-invalid-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tip-form-invalid-tl, +.x-strict .x-ie7 .x-tip-form-invalid-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tip-form-invalid:after { + display: none; + content: "x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 100, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-form-invalid { + border-color: #a1311f; + -webkit-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; + -moz-box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; + box-shadow: #d87166 0 1px 0px 0 inset, #d87166 0 -1px 0px 0 inset, #d87166 -1px 0 0px 0 inset, #d87166 1px 0 0px 0 inset; +} +/* line 109, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-form-invalid .x-tool-img { + background-color: white; +} + +/* line 124, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-tool-after-title { + margin: 0 0 0 6px; +} +/* line 129, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-rtl.x-tool-after-title { + margin: 0 6px 0 0; +} +/* line 134, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-tool-before-title { + margin: 0 6px 0 0; +} +/* line 139, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-form-invalid .x-rtl.x-tool-before-title { + margin: 0 0 0 6px; +} + +/* line 145, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-body-form-invalid { + padding: 3px 3px 0 3px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-header-text-container-form-invalid { + color: #444444; + font-size: 11px; + font-weight: bold; +} + +/* line 155, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid { + padding: 3px 3px 3px 22px; + color: #444444; + font-size: 11px; + font-weight: normal; +} +/* line 160, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid a { + color: #2a2a2a; +} + +/* line 265, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid { + background: 1px 1px no-repeat; + background-image: url(images/form/exclamation.gif); +} +/* line 268, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid li { + margin-bottom: 4px; +} +/* line 270, ../../../ext-theme-neutral/sass/src/tip/Tip.scss */ +.x-tip-body-form-invalid li.last { + margin-bottom: 0; +} + +/** + * Creates a visual theme for a ButtonGroup. + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-background-color=$btn-group-background-color] + * The background-color of the button group + * + * @param {color} [$ui-border-color=$btn-group-border-color] + * The border-color of the button group + * + * @param {number} [$ui-border-width=$btn-group-border-width] + * The border-width of the button group + * + * @param {number} [$ui-border-radius=$btn-group-border-radius] + * The border-radius of the button group + * + * @param {color} [$ui-inner-border-color=$btn-group-inner-border-color] + * The inner border-color of the button group + * + * @param {color} [$ui-header-background-color=$btn-group-header-background-color] + * The background-color of the header + * + * @param {string} [$ui-header-font=$btn-group-header-font] + * The font of the header + * + * @param {color} [$ui-header-color=$btn-group-header-color] + * The text color of the header + * + * @param {number} [$ui-header-line-height=$btn-group-header-line-height] + * The line-height of the header + * + * @param {number} [$ui-header-padding=$btn-group-header-padding] + * The padding of the header + * + * @param {number} [$ui-body-padding=$btn-group-padding] + * The padding of the body element + * + * @param {string} [$ui-tool-background-image=$btn-group-tool-background-image] + * Sprite image to use for header {@link Ext.panel.Tool Tools} + * + * @member Ext.container.ButtonGroup + */ +/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-default { + border-color: #b7c8d7; + -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default { + margin: 2px 2px 0 2px; + padding: 1px 0; + line-height: 15px; + background: #c2d8f0; + -moz-border-radius-topleft: 0px; + -webkit-border-top-left-radius: 0px; + border-top-left-radius: 0px; + -moz-border-radius-topright: 0px; + -webkit-border-top-right-radius: 0px; + border-top-right-radius: 0px; +} +/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default .x-tool-img { + background-color: #c2d8f0; +} + +/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-text-container-default { + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 15px; + color: #3e6aaa; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default { + padding: 0 1px; +} +/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default .x-table-layout { + border-spacing: 0; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 1px 1px 1px 1px; + border-width: 1px; + border-style: solid; + background-color: #d0def0; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mc { + background-color: #d0def0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-group-default-framed { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-group-default-framed-frameInfo { + font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl { + background-position: 0 -4px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tr { + background-position: right -6px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bl { + background-position: 0 -8px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-br { + background-position: right -10px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bc { + background-position: 0 -2px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tr, +.x-btn-group-default-framed-br, +.x-btn-group-default-framed-mr { + padding-right: 2px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl, +.x-btn-group-default-framed-bl, +.x-btn-group-default-framed-ml { + padding-left: 2px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tc { + height: 2px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-bc { + height: 2px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-tl, +.x-btn-group-default-framed-bl, +.x-btn-group-default-framed-tr, +.x-btn-group-default-framed-br, +.x-btn-group-default-framed-tc, +.x-btn-group-default-framed-bc, +.x-btn-group-default-framed-ml, +.x-btn-group-default-framed-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-ml, +.x-btn-group-default-framed-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-group-default-framed-tl, +.x-strict .x-ie7 .x-btn-group-default-framed-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-group-default-framed:after { + display: none; + content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 1px 1px 1px 1px; + border-width: 1px; + border-style: solid; + background-color: #d0def0; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mc { + background-color: #d0def0; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-btn-group-default-framed-notitle { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-btn-group-default-framed-notitle-frameInfo { + font-family: dh-2-2-2-2-1-1-1-1-1-1-1-1; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl { + background-position: 0 -4px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tr { + background-position: right -6px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bl { + background-position: 0 -8px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-br { + background-position: right -10px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bc { + background-position: 0 -2px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tr, +.x-btn-group-default-framed-notitle-br, +.x-btn-group-default-framed-notitle-mr { + padding-right: 2px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl, +.x-btn-group-default-framed-notitle-bl, +.x-btn-group-default-framed-notitle-ml { + padding-left: 2px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tc { + height: 2px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-bc { + height: 2px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-tl, +.x-btn-group-default-framed-notitle-bl, +.x-btn-group-default-framed-notitle-tr, +.x-btn-group-default-framed-notitle-br, +.x-btn-group-default-framed-notitle-tc, +.x-btn-group-default-framed-notitle-bc, +.x-btn-group-default-framed-notitle-ml, +.x-btn-group-default-framed-notitle-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-notitle-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-ml, +.x-btn-group-default-framed-notitle-mr { + zoom: 1; + background-image: url(images/btn-group/btn-group-default-framed-notitle-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-btn-group-default-framed-notitle-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl, +.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-btn-group-default-framed-notitle:after { + display: none; + content: "x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 89, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-default-framed { + border-color: #b7c8d7; + -webkit-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + -moz-box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; + box-shadow: #e3ebf5 0 1px 0px 0 inset, #e3ebf5 0 -1px 0px 0 inset, #e3ebf5 -1px 0 0px 0 inset, #e3ebf5 1px 0 0px 0 inset; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default-framed { + margin: 2px 2px 0 2px; + padding: 1px 0; + line-height: 15px; + background: #c2d8f0; + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; +} +/* line 109, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-default-framed .x-tool-img { + background-color: #c2d8f0; +} + +/* line 120, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-header-text-container-default-framed { + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 15px; + color: #3e6aaa; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default-framed { + padding: 0 1px 0 1px; +} +/* line 128, ../../../ext-theme-neutral/sass/src/container/ButtonGroup.scss */ +.x-btn-group-body-default-framed .x-table-layout { + border-spacing: 0; +} + +/** + * Creates a visual theme for a Window + * + * @param {string} $ui-label + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$ui-padding=$window-padding] + * The padding of the Window + * + * @param {number} [$ui-border-radius=$window-border-radius] + * The border-radius of the Window + * + * @param {color} [$ui-border-color=$window-border-color] + * The border-color of the Window + * + * @param {number} [$ui-border-width=$window-border-width] + * The border-width of the Window + * + * @param {color} [$ui-inner-border-color=$window-inner-border-color] + * The inner border-color of the Window + * + * @param {number} [$ui-inner-border-width=$window-inner-border-width] + * The inner border-width of the Window + * + * @param {color} [$ui-header-color=$window-header-color] + * The text color of the Header + * + * @param {color} [$ui-header-background-color=$window-header-background-color] + * The background-color of the Header + * + * @param {number/list} [$ui-header-padding=$window-header-padding] + * The padding of the Header + * + * @param {string} [$ui-header-font-family=$window-header-font-family] + * The font-family of the Header + * + * @param {number} [$ui-header-font-size=$window-header-font-size] + * The font-size of the Header + * + * @param {string} [$ui-header-font-weight=$window-header-font-weight] + * The font-weight of the Header + * + * @param {number} [$ui-header-line-height=$window-header-line-height] + * The line-height of the Header + * + * @param {number/list} [$ui-header-text-padding=$window-header-text-padding] + * The padding of the Header's text element + * + * @param {string} [$ui-header-text-transform=$window-header-text-transform] + * The text-transform of the Header + * + * @param {color} [$ui-header-border-color=$ui-border-color] + * The border-color of the Header + * + * @param {number} [$ui-header-border-width=$window-header-border-width] + * The border-width of the Header + * + * @param {color} [$ui-header-inner-border-color=$window-header-inner-border-color] + * The inner border-color of the Header + * + * @param {number} [$ui-header-inner-border-width=$window-header-inner-border-width] + * The inner border-width of the Header + * + * @param {number} [$ui-header-icon-width=$window-header-icon-width] + * The width of the Header icon + * + * @param {number} [$ui-header-icon-height=$window-header-icon-height] + * The height of the Header icon + * + * @param {number} [$ui-header-icon-spacing=$window-header-icon-spacing] + * The space between the Header icon and text + * + * @param {list} [$ui-header-icon-background-position=$window-header-icon-background-position] + * The background-position of the Header icon + * + * @param {color} [$ui-header-glyph-color=$window-header-glyph-color] + * The color of the Header glyph icon + * + * @param {number} [$ui-header-glyph-opacity=$window-header-glyph-opacity] + * The opacity of the Header glyph icon + * + * @param {number} [$ui-tool-spacing=$window-tool-spacing] + * The space between the {@link Ext.panel.Tool Tools} + * + * @param {string} [$ui-tool-background-image=$window-tool-background-image] + * The background sprite to use for {@link Ext.panel.Tool Tools} + * + * @param {color} [$ui-body-border-color=$window-body-border-color] + * The border-color of the Window body + * + * @param {color} [$ui-body-background-color=$window-body-background-color] + * The background-color of the Window body + * + * @param {number} [$ui-body-border-width=$window-body-border-width] + * The border-width of the Window body + * + * @param {string} [$ui-body-border-style=$window-body-border-style] + * The border-style of the Window body + * + * @param {color} [$ui-body-color=$window-body-color] + * The color of text inside the Window body + * + * @param {color} [$ui-background-color=$window-background-color] + * The background-color of the Window + * + * @param {boolean} [$ui-force-header-border=$window-force-header-border] + * True to force the window header to have a border on the side facing + * the window body. Overrides dock layout's border management border + * removal rules. + * + * @param {boolean} [$ui-include-border-management-rules=$window-include-border-management-rules] + * True to include neptune style border management rules. + * + * @param {color} [$ui-wrap-border-color=$window-wrap-border-color] + * The color to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$ui-include-border-management-rules` is `true`. + * + * @param {color} [$ui-wrap-border-width=$window-wrap-border-width] + * The width to apply to the border that wraps the body and docked items. The presence of + * the wrap border is controlled by the {@link #border} config. Only applicable when + * `$ui-include-border-management-rules` is `true`. + * + * @member Ext.window.Window + */ +/* line 545, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-ghost { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=65); + opacity: 0.65; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-default { + border-color: #a2b1c5; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-default { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-default-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tr, +.x-window-default-br, +.x-window-default-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl, +.x-window-default-bl, +.x-window-default-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-tl, +.x-window-default-bl, +.x-window-default-tr, +.x-window-default-br, +.x-window-default-tc, +.x-window-default-bc, +.x-window-default-ml, +.x-window-default-mr { + zoom: 1; + background-image: url(images/window/window-default-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-ml, +.x-window-default-mr { + zoom: 1; + background-image: url(images/window/window-default-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-default-mc { + padding: 0px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-default-tl, +.x-strict .x-ie7 .x-window-default-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-default:after { + display: none; + content: "x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 195, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-body-default { + border-color: #99bbe8; + border-width: 1px; + border-style: solid; + background: #dfe8f6; + color: black; +} + +/* line 206, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default { + font-size: 11px; + border-color: #a2b1c5; + zoom: 1; + background-color: #ced9e7; +} +/* line 212, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-tool-img { + background-color: #ced9e7; +} + +/* line 223, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-text-container { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-window-header-default-vertical .x-window-header-text-container { + background-color: #ced9e7; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7); +} + +/* line 228, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-rtl.x-window-header-text-container { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container { + background-color: #ced9e7; + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3), progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7); +} + +/* line 233, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-text-container-default { + color: #04468c; + font-weight: bold; + line-height: 15px; + font-family: tahoma, arial, verdana, sans-serif; + font-size: 11px; + padding: 0 2px 1px; + text-transform: none; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 5px 0 5px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-top-frameInfo { + font-family: dh-5-5-0-0-1-1-0-1-4-5-0-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tr, +.x-window-header-default-top-br, +.x-window-header-default-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl, +.x-window-header-default-top-bl, +.x-window-header-default-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-tl, +.x-window-header-default-top-bl, +.x-window-header-default-top-tr, +.x-window-header-default-top-br, +.x-window-header-default-top-tc, +.x-window-header-default-top-bc, +.x-window-header-default-top-ml, +.x-window-header-default-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-ml, +.x-window-header-default-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-top-mc { + padding: 0px 1px 0 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-top-tl, +.x-strict .x-ie7 .x-window-header-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-top:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 5px 4px 5px 0; + border-width: 1px 1px 1px 0; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-right-frameInfo { + font-family: dh-0-5-5-0-1-1-1-0-5-4-5-0; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tr, +.x-window-header-default-right-br, +.x-window-header-default-right-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl, +.x-window-header-default-right-bl, +.x-window-header-default-right-ml { + padding-left: 0; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-tl, +.x-window-header-default-right-bl, +.x-window-header-default-right-tr, +.x-window-header-default-right-br, +.x-window-header-default-right-tc, +.x-window-header-default-right-bc, +.x-window-header-default-right-ml, +.x-window-header-default-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-right-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-window-header-default-right-tl, .x-rtl.x-window-header-default-right-ml, .x-rtl.x-window-header-default-right-bl, .x-rtl.x-window-header-default-right-tr, .x-rtl.x-window-header-default-right-mr, .x-rtl.x-window-header-default-right-br { + background-image: url(images/window-header/window-header-default-right-corners-rtl.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-ml, +.x-window-header-default-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-right-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-right-mc { + padding: 1px 0px 1px 0; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-right-tl, +.x-strict .x-ie7 .x-window-header-default-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-right:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 0 5px 4px 5px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-bottom-frameInfo { + font-family: dh-0-0-5-5-0-1-1-1-0-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tr, +.x-window-header-default-bottom-br, +.x-window-header-default-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl, +.x-window-header-default-bottom-bl, +.x-window-header-default-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-tl, +.x-window-header-default-bottom-bl, +.x-window-header-default-bottom-tr, +.x-window-header-default-bottom-br, +.x-window-header-default-bottom-tc, +.x-window-header-default-bottom-bc, +.x-window-header-default-bottom-ml, +.x-window-header-default-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-ml, +.x-window-header-default-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-bottom-mc { + padding: 0 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-bottom-tl, +.x-strict .x-ie7 .x-window-header-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-bottom:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 5px 0 5px 4px; + border-width: 1px 0 1px 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-left-frameInfo { + font-family: dh-5-0-0-5-1-0-1-1-5-0-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tr, +.x-window-header-default-left-br, +.x-window-header-default-left-mr { + padding-right: 0; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl, +.x-window-header-default-left-bl, +.x-window-header-default-left-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-tl, +.x-window-header-default-left-bl, +.x-window-header-default-left-tr, +.x-window-header-default-left-br, +.x-window-header-default-left-tc, +.x-window-header-default-left-bc, +.x-window-header-default-left-ml, +.x-window-header-default-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-left-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-window-header-default-left-tl, .x-rtl.x-window-header-default-left-ml, .x-rtl.x-window-header-default-left-bl, .x-rtl.x-window-header-default-left-tr, .x-rtl.x-window-header-default-left-mr, .x-rtl.x-window-header-default-left-br { + background-image: url(images/window-header/window-header-default-left-corners-rtl.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-ml, +.x-window-header-default-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-left-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-left-mc { + padding: 1px 0 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-left-tl, +.x-strict .x-ie7 .x-window-header-default-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-left:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-top-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tr, +.x-window-header-default-collapsed-top-br, +.x-window-header-default-collapsed-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl, +.x-window-header-default-collapsed-top-bl, +.x-window-header-default-collapsed-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-tl, +.x-window-header-default-collapsed-top-bl, +.x-window-header-default-collapsed-top-tr, +.x-window-header-default-collapsed-top-br, +.x-window-header-default-collapsed-top-tc, +.x-window-header-default-collapsed-top-bc, +.x-window-header-default-collapsed-top-ml, +.x-window-header-default-collapsed-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-ml, +.x-window-header-default-collapsed-top-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-top-mc { + padding: 0px 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-top:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-right-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tr, +.x-window-header-default-collapsed-right-br, +.x-window-header-default-collapsed-right-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl, +.x-window-header-default-collapsed-right-bl, +.x-window-header-default-collapsed-right-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-tl, +.x-window-header-default-collapsed-right-bl, +.x-window-header-default-collapsed-right-tr, +.x-window-header-default-collapsed-right-br, +.x-window-header-default-collapsed-right-tc, +.x-window-header-default-collapsed-right-bc, +.x-window-header-default-collapsed-right-ml, +.x-window-header-default-collapsed-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-right-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-window-header-default-collapsed-right-tl, .x-rtl.x-window-header-default-collapsed-right-ml, .x-rtl.x-window-header-default-collapsed-right-bl, .x-rtl.x-window-header-default-collapsed-right-tr, .x-rtl.x-window-header-default-collapsed-right-mr, .x-rtl.x-window-header-default-collapsed-right-br { + background-image: url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-ml, +.x-window-header-default-collapsed-right-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-right-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-right-mc { + padding: 1px 0px 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-right:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 4px 5px 4px 5px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-4-5-4-5; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tr, +.x-window-header-default-collapsed-bottom-br, +.x-window-header-default-collapsed-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl, +.x-window-header-default-collapsed-bottom-bl, +.x-window-header-default-collapsed-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-tl, +.x-window-header-default-collapsed-bottom-bl, +.x-window-header-default-collapsed-bottom-tr, +.x-window-header-default-collapsed-bottom-br, +.x-window-header-default-collapsed-bottom-tc, +.x-window-header-default-collapsed-bottom-bc, +.x-window-header-default-collapsed-bottom-ml, +.x-window-header-default-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-ml, +.x-window-header-default-collapsed-bottom-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-bottom-mc { + padding: 0px 1px 0px 1px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-bottom:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + padding: 5px 4px 5px 4px; + border-width: 1px; + border-style: solid; + background-color: #ced9e7; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mc { + background-color: #ced9e7; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-window-header-default-collapsed-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-window-header-default-collapsed-left-frameInfo { + font-family: dh-5-5-5-5-1-1-1-1-5-4-5-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tr, +.x-window-header-default-collapsed-left-br, +.x-window-header-default-collapsed-left-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl, +.x-window-header-default-collapsed-left-bl, +.x-window-header-default-collapsed-left-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-tl, +.x-window-header-default-collapsed-left-bl, +.x-window-header-default-collapsed-left-tr, +.x-window-header-default-collapsed-left-br, +.x-window-header-default-collapsed-left-tc, +.x-window-header-default-collapsed-left-bc, +.x-window-header-default-collapsed-left-ml, +.x-window-header-default-collapsed-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-left-corners.gif); +} + +/* line 397, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-rtl.x-window-header-default-collapsed-left-tl, .x-rtl.x-window-header-default-collapsed-left-ml, .x-rtl.x-window-header-default-collapsed-left-bl, .x-rtl.x-window-header-default-collapsed-left-tr, .x-rtl.x-window-header-default-collapsed-left-mr, .x-rtl.x-window-header-default-collapsed-left-br { + background-image: url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-ml, +.x-window-header-default-collapsed-left-mr { + zoom: 1; + background-image: url(images/window-header/window-header-default-collapsed-left-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-window-header-default-collapsed-left-mc { + padding: 1px 0px 1px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl, +.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-window-header-default-collapsed-left:after { + display: none; + content: "x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 337, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-top { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 341, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-right { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset; +} + +/* line 345, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-bottom { + -webkit-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 -1px 0px 0 inset, #ecf2fb -1px 0 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 349, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-left { + -webkit-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + -moz-box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; + box-shadow: #ecf2fb 0 1px 0px 0 inset, #ecf2fb 0 -1px 0px 0 inset, #ecf2fb 1px 0 0px 0 inset; +} + +/* line 355, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-window-header-icon { + width: 16px; + height: 16px; + color: #04468c; + font-size: 16px; + line-height: 16px; + background-position: center center; +} +/* line 364, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default .x-window-header-glyph { + color: #04468c; + font-size: 16px; + line-height: 16px; + opacity: 0.5; +} +/* line 380, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-ie8m .x-window-header-default .x-window-header-glyph { + color: #698fb9; +} + +/* line 388, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-window-header-icon-before-title { + margin: 0 2px 0 0; +} +/* line 393, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title { + margin: 0 0 0 2px; +} +/* line 398, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-window-header-icon-after-title { + margin: 0 0 0 2px; +} +/* line 403, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title { + margin: 0 2px 0 0; +} + +/* line 410, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 415, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title { + margin: 0 0 2px 0; +} +/* line 420, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-window-header-icon-after-title { + margin: 2px 0 0 0; +} +/* line 425, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title { + margin: 2px 0 0 0; +} + +/* line 433, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-tool-after-title { + margin: 0 0 0 2px; +} +/* line 438, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-rtl.x-tool-after-title { + margin: 0 2px 0 0; +} +/* line 443, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-tool-before-title { + margin: 0 2px 0 0; +} +/* line 448, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-horizontal .x-rtl.x-tool-before-title { + margin: 0 0 0 2px; +} + +/* line 455, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 460, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-rtl.x-tool-after-title { + margin: 2px 0 0 0; +} +/* line 465, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-tool-before-title { + margin: 0 0 2px 0; +} +/* line 470, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-header-default-vertical .x-rtl.x-tool-before-title { + margin: 0 0 2px 0; +} + +/* line 483, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-window-default-collapsed .x-window-header { + border-width: 1px !important; +} + +/* line 489, ../../../ext-theme-neutral/sass/src/window/Window.scss */ +.x-nbr .x-window-default-collapsed .x-window-header { + border-width: 0 !important; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-invalid-under { + padding: 2px 2px 2px 20px; + color: #c0272b; + font: normal 11px tahoma, arial, verdana, sans-serif; + line-height: 16px; + background: no-repeat 0 2px; + background-image: url(images/form/exclamation.gif); +} + +/* line 14, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +div.x-lbl-top-err-icon { + margin-bottom: 3px; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-invalid-icon { + width: 16px; + height: 16px; + margin: 0 1px; + background-image: url(images/form/exclamation.gif); + background-repeat: no-repeat; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-form-item-label { + color: black; + font: normal 12px/14px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} +/* line 31, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-toolbar-item .x-form-item-label { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} + +/* line 45, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-autocontainer-form-item, +.x-anchor-form-item, +.x-vbox-form-item, +.x-table-form-item { + margin-bottom: 5px; +} + +/* line 53, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-ie6 .x-form-form-item td { + border-top-width: 0; +} +/* line 59, ../../../ext-theme-neutral/sass/src/form/Labelable.scss */ +.x-ie6 td.x-form-item-pad { + height: 5px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-field { + color: black; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-item, +.x-form-field { + font: normal 12px tahoma, arial, verdana, sans-serif; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-form-type-text textarea.x-form-invalid-field, .x-form-type-text input.x-form-invalid-field, +.x-form-type-password textarea.x-form-invalid-field, +.x-form-type-password input.x-form-invalid-field, +.x-form-type-number textarea.x-form-invalid-field, +.x-form-type-number input.x-form-invalid-field, +.x-form-type-email textarea.x-form-invalid-field, +.x-form-type-email input.x-form-invalid-field, +.x-form-type-search textarea.x-form-invalid-field, +.x-form-type-search input.x-form-invalid-field, +.x-form-type-tel textarea.x-form-invalid-field, +.x-form-type-tel input.x-form-invalid-field { + background-color: white; + background-image: url(images/grid/invalid_line.gif); + background-repeat: repeat-x; + background-position: bottom; + border-color: #cc3300; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Base.scss */ +.x-item-disabled .x-form-item-label, +.x-item-disabled .x-form-field, +.x-item-disabled .x-form-display-field, +.x-item-disabled .x-form-cb-label, +.x-item-disabled .x-form-trigger { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-text { + color: black; + padding: 1px 3px 2px 3px; + background: white repeat-x 0 0; + border-width: 1px; + border-style: solid; + border-color: #b5b8c8; + background-image: url(images/form/text-bg.gif); + height: 22px; + line-height: 17px; +} +/* line 14, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-field-toolbar .x-form-text { + height: 20px; + line-height: 15px; +} +/* line 21, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-content-box .x-form-text { + height: 17px; +} +/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-content-box .x-field-toolbar .x-form-text { + height: 15px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-focus { + border-color: #7eadd9; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-form-empty-field, +textarea.x-form-empty-field { + color: gray; +} + +/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Text.scss */ +.x-quirks .x-ie .x-form-text, +.x-ie7m .x-form-text { + margin-top: -1px; + margin-bottom: -1px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/TextArea.scss */ +.x-form-textarea { + line-height: normal; + height: auto; + background-image: url(images/form/text-bg.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-form-display-field-body { + height: 22px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-toolbar-item .x-form-display-field-body { + height: 20px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-form-display-field { + font: normal 12px/14px tahoma, arial, verdana, sans-serif; + color: black; + margin-top: 4px; +} +/* line 17, ../../../ext-theme-neutral/sass/src/form/field/Display.scss */ +.x-toolbar-item .x-form-display-field { + margin-top: 4px; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box .x-window-body { + background-color: #ced9e7; + border-width: 0; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-info, +.x-message-box-warning, +.x-message-box-question, +.x-message-box-error { + background-position: top left; + background-repeat: no-repeat; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-rtl.x-message-box-info, .x-rtl.x-message-box-warning, .x-rtl.x-message-box-question, .x-rtl.x-message-box-error { + background-position: top left; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-info { + background-image: url(images/shared/icon-info.gif); +} + +/* line 33, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-warning { + background-image: url(images/shared/icon-warning.gif); +} + +/* line 37, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-question { + background-image: url(images/shared/icon-question.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/window/MessageBox.scss */ +.x-message-box-error { + background-image: url(images/shared/icon-error.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-wrap { + height: 22px; +} +/* line 4, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb-wrap { + height: 20px; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb { + margin-top: 5px; +} +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb { + margin-top: 4px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-checkbox { + width: 13px; + height: 13px; + background: url(images/form/checkbox.gif) no-repeat; +} + +/* line 25, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-checked .x-form-checkbox { + background-position: 0 -13px; +} + +/* Focused */ +/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-checkbox-focus { + background-position: -13px 0; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-checked .x-form-checkbox-focus { + background-position: -13px -13px; +} + +/* boxLabel */ +/* line 40, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label { + margin-top: 4px; + font: normal 12px/14px tahoma, arial, verdana, sans-serif; +} +/* line 43, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-toolbar-item .x-form-cb-label { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + margin-top: 4px; +} + +/* line 53, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label-before { + margin-right: 4px; +} + +/* line 58, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-rtl.x-field .x-form-cb-label-before { + margin-right: 0; + margin-left: 4px; +} + +/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-form-cb-label-after { + margin-left: 4px; +} + +/* line 69, ../../../ext-theme-neutral/sass/src/form/field/Checkbox.scss */ +.x-rtl.x-field .x-form-cb-label-after { + margin-left: 0; + margin-right: 4px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-checkboxgroup-body { + padding: 0 4px; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-invalid .x-form-checkboxgroup-body { + border: 1px solid #cc3300; + background-image: url(images/grid/invalid_line.gif); + background-repeat: repeat-x; + background-position: bottom; +} + +/* line 16, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-check-group-alt { + background: #d1ddef; + border-top: 1px dotted #b5b8c8; + border-bottom: 1px dotted #b5b8c8; +} + +/* line 22, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-form-check-group-label { + color: black; + padding: 2px; + margin: 0 30px 5px 0; + border-width: 0 0 1px 0; + border-style: solid; + border-color: black; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/form/CheckboxGroup.scss */ +.x-rtl.x-form-check-group-label { + margin: 0 0 5px 30px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset { + border: 1px solid #b5b8c8; + padding: 0 10px; + margin: 0 0 10px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie8m .x-fieldset, +.x-quirks .x-ie .x-fieldset { + padding-top: 0; +} +/* line 13, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie8m .x-fieldset .x-fieldset-body, +.x-quirks .x-ie .x-fieldset .x-fieldset-body { + padding-top: 0; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-checkbox { + line-height: 14px; + margin: 1px 3px 0 0; +} + +/* line 24, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header { + padding: 0 3px 1px; +} +/* line 27, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-tool { + margin-top: 1px; + padding: 0; +} +/* line 33, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header .x-form-cb-wrap { + padding: 1px 0; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text { + font: 11px/14px bold tahoma, arial, verdana, sans-serif; + color: #15428b; + padding: 1px 0; +} + +/* line 44, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-header-text-collapsible { + cursor: pointer; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-with-title .x-fieldset-header-checkbox, +.x-fieldset-with-title .x-tool { + margin: 1px 3px 0 0; +} + +/* line 58, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox, +.x-fieldset-with-title .x-rtl .x-tool { + margin: 1px 0 0 3px; +} + +/* line 66, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-webkit .x-fieldset-header { + -webkit-padding-start: 3px; + -webkit-padding-end: 3px; +} + +/* line 76, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-opera .x-fieldset-with-legend { + margin-top: -1px; +} +/* line 79, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-opera.x-mac .x-fieldset-header-text { + padding: 2px 0 0; +} + +/* line 87, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-strict .x-ie8 .x-fieldset-header { + margin-bottom: -1px; +} +/* line 91, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-strict .x-ie8 .x-fieldset-header .x-tool, +.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text, +.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox { + position: relative; + top: -1px; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-quirks .x-ie .x-fieldset-header, +.x-ie8m .x-fieldset-header { + padding-left: 1px; + padding-right: 1px; +} + +/* line 109, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-fieldset-body { + display: none; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed { + padding-bottom: 0 !important; + border-width: 1px 1px 0 1px !important; + border-left-color: transparent !important; + border-right-color: transparent !important; +} + +/* line 123, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie6 .x-fieldset-collapsed { + border-width: 1px 0 0 0 !important; + padding-bottom: 0 !important; + margin-left: 1px; + margin-right: 1px; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-bwrap { + zoom: 1; +} + +/* line 137, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset .x-tool-toggle { + background-position: 0 -60px; +} +/* line 144, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset .x-tool-over .x-tool-toggle { + background-position: -15px -60px; +} + +/* line 151, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-tool-toggle { + background-position: 0 -75px; +} +/* line 156, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-collapsed .x-tool-over .x-tool-toggle { + background-position: -15px -75px; +} + +/* IE legend positioning bug */ +/* line 164, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-noborder legend { + position: relative; + margin-bottom: 23px; +} + +/* line 170, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-ie .x-fieldset-noborder legend span { + position: absolute; + left: 16px; +} + +/* line 176, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset { + overflow: hidden; +} + +/* line 180, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-bwrap { + overflow: hidden; + zoom: 1; +} + +/* line 186, ../../../ext-theme-neutral/sass/src/form/FieldSet.scss */ +.x-fieldset-body { + overflow: hidden; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-radio { + width: 13px; + height: 13px; + background: url(images/form/radio.gif) no-repeat; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-cb-checked .x-form-radio { + background-position: 0 -13px; +} + +/* line 11, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-radio-focus { + background-position: -13px 0; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/form/field/Radio.scss */ +.x-form-cb-checked .x-form-radio-focus { + background-position: -13px -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger { + background: url(images/form/trigger.gif); + width: 17px; + border-width: 0 0 1px; + border-color: #b5b8c8; + border-style: solid; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-rtl.x-form-trigger-wrap .x-form-trigger { + background-image: url(images/form/trigger-rtl.gif); +} + +/* line 18, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-trigger-cell { + background-color: white; + width: 17px; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-over { + background-position: -17px 0; + border-color: #7eadd9; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap-focus .x-form-trigger { + background-position: -51px 0; + border-color: #7eadd9; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-wrap-focus .x-form-trigger-over { + background-position: -68px 0; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-trigger-click, +.x-form-trigger-wrap-focus .x-form-trigger-click { + background-position: -34px 0; +} + +/* line 49, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-clear-trigger { + background-image: url(images/form/clear-trigger.gif); +} + +/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-rtl.x-form-trigger-wrap .x-form-clear-trigger { + background-image: url(images/form/clear-trigger-rtl.gif); +} + +/* line 59, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-form-search-trigger { + background-image: url(images/form/search-trigger.gif); +} + +/* line 64, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-rtl.x-form-trigger-wrap .x-form-search-trigger { + background-image: url(images/form/search-trigger-rtl.gif); +} + +/* line 73, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-quirks .prefixie6 .x-form-trigger-input-cell { + height: 22px; +} +/* line 77, ../../../ext-theme-neutral/sass/src/form/field/Trigger.scss */ +.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell { + height: 20px; +} + +/* line 3, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +div.x-form-spinner-up, +div.x-form-spinner-down { + background-image: url(images/form/spinner.gif); + background-color: white; + width: 17px; + height: 11px; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-rtl.x-form-trigger-wrap .x-form-spinner-up, +.x-rtl.x-form-trigger-wrap .x-form-spinner-down { + background-image: url(images/form/spinner-rtl.gif); +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-spinner-down { + background-position: 0 -11px; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap-focus .x-form-spinner-down { + background-position: -51px -11px; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap .x-form-spinner-down-over { + background-position: -17px -11px; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap-focus .x-form-spinner-down-over { + background-position: -68px -11px; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-form-trigger-wrap .x-form-spinner-down-click { + background-position: -34px -11px; +} + +/* line 41, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item div.x-form-spinner-up, +.x-toolbar-item div.x-form-spinner-down { + background-image: url(images/form/spinner-small.gif); + height: 10px; +} +/* line 45, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-spinner-down { + background-position: 0 -10px; +} +/* line 48, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down { + background-position: -51px -10px; +} +/* line 51, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over { + background-position: -17px -10px; +} +/* line 54, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over { + background-position: -68px -10px; +} +/* line 57, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click { + background-position: -34px -10px; +} + +/* line 65, ../../../ext-theme-neutral/sass/src/form/field/Spinner.scss */ +.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up, +.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down { + background-image: url(images/form/spinner-small-rtl.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-number { + width: 30px; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-first { + background-image: url(images/grid/page-first.gif); +} + +/* line 9, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-prev { + background-image: url(images/grid/page-prev.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-next { + background-image: url(images/grid/page-next.gif); +} + +/* line 17, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-page-last { + background-image: url(images/grid/page-last.gif); +} + +/* line 21, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-tbar-loading { + background-image: url(images/grid/refresh.gif); +} + +/* line 27, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-first { + background-image: url(images/grid/page-first-disabled.gif); +} +/* line 31, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-prev { + background-image: url(images/grid/page-prev-disabled.gif); +} +/* line 35, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-next { + background-image: url(images/grid/page-next-disabled.gif); +} +/* line 39, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-page-last { + background-image: url(images/grid/page-last-disabled.gif); +} +/* line 43, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-tbar-loading { + background-image: url(images/grid/refresh-disabled.gif); +} + +/* line 51, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-rtl.x-tbar-page-first { + background-image: url(images/grid/page-last.gif); +} +/* line 55, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-rtl.x-tbar-page-prev { + background-image: url(images/grid/page-next.gif); +} +/* line 59, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-rtl.x-tbar-page-next { + background-image: url(images/grid/page-prev.gif); +} +/* line 63, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-rtl.x-tbar-page-last { + background-image: url(images/grid/page-first.gif); +} + +/* line 71, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-rtl.x-tbar-page-first { + background-image: url(images/grid/page-last-disabled.gif); +} +/* line 75, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-rtl.x-tbar-page-prev { + background-image: url(images/grid/page-next-disabled.gif); +} +/* line 79, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-rtl.x-tbar-page-next { + background-image: url(images/grid/page-prev-disabled.gif); +} +/* line 83, ../../../ext-theme-neutral/sass/src/toolbar/Paging.scss */ +.x-item-disabled .x-rtl.x-tbar-page-last { + background-image: url(images/grid/page-first-disabled.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist { + border-width: 1px; + border-style: solid; + border-color: #98c0f4; + background: white; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-strict .x-ie7m .x-boundlist-list-ct { + position: relative; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-item { + padding: 0 3px; + line-height: 20px; + cursor: pointer; + cursor: hand; + position: relative; + /*allow hover in IE on empty items*/ + zoom: 1; + border-width: 1px; + border-style: dotted; + border-color: white; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-selected { + background: #cbdaf0; + border-color: #8eabe4; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-item-over { + background: #dfe8f6; + border-color: #a3bae9; +} + +/* line 43, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-floating { + border-top-width: 0; +} + +/* line 47, ../../../ext-theme-neutral/sass/src/view/BoundList.scss */ +.x-boundlist-above { + border-top-width: 1px; + border-bottom-width: 1px; +} + +/* line 9, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker { + border-width: 1px; + border-style: solid; + border-color: #1b376c; + background-color: white; + width: 177px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-header { + padding: 3px 6px; + text-align: center; + background-image: none; + background-color: #23427c; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #264888), color-stop(100%, #1f3a6c)); + background-image: -webkit-linear-gradient(top, #264888, #1f3a6c); + background-image: -moz-linear-gradient(top, #264888, #1f3a6c); + background-image: -o-linear-gradient(top, #264888, #1f3a6c); + background-image: linear-gradient(top, #264888, #1f3a6c); +} + +/* line 32, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-arrow { + width: 15px; + height: 15px; + top: 6px; + cursor: pointer; + background-color: #23427c; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70); + opacity: 0.7; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-datepicker-arrow:hover { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 55, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-next { + right: 6px; + background-image: url(images/shared/right-btn.gif); +} + +/* line 60, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-prev { + left: 6px; + background-image: url(images/shared/left-btn.gif); +} + +/* line 76, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn, +.x-datepicker-month .x-btn .x-btn-tc, +.x-datepicker-month .x-btn .x-btn-tl, +.x-datepicker-month .x-btn .x-btn-tr, +.x-datepicker-month .x-btn .x-btn-mc, +.x-datepicker-month .x-btn .x-btn-ml, +.x-datepicker-month .x-btn .x-btn-mr, +.x-datepicker-month .x-btn .x-btn-bc, +.x-datepicker-month .x-btn .x-btn-bl, +.x-datepicker-month .x-btn .x-btn-br { + background: transparent; + border-width: 0 !important; +} +/* line 83, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn-inner { + color: white; +} +/* line 88, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-month .x-btn-split-right { + background-image: url(images/button/s-arrow-light.gif); + padding-right: 12px; +} + +/* line 94, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-column-header { + width: 25px; + color: #233d6d; + font: normal 10px tahoma, arial, verdana, sans-serif; + text-align: right; + border-width: 0 0 1px; + border-style: solid; + border-color: #b2d1f5; + background-image: none; + background-color: #dfecfb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #edf4fd), color-stop(100%, #cde1f9)); + background-image: -webkit-linear-gradient(top, #edf4fd, #cde1f9); + background-image: -moz-linear-gradient(top, #edf4fd, #cde1f9); + background-image: -o-linear-gradient(top, #edf4fd, #cde1f9); + background-image: linear-gradient(top, #edf4fd, #cde1f9); +} + +/* line 113, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-column-header-inner { + line-height: 19px; + padding: 0 7px 0 0; +} + +/* line 118, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-cell { + text-align: right; + border-width: 1px; + border-style: solid; + border-color: white; +} + +/* line 128, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-date { + padding: 0 4px 0 0; + font: normal 11px tahoma, arial, verdana, sans-serif; + color: black; + cursor: pointer; + line-height: 18px; +} + +/* line 138, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-datepicker-date:hover { + color: black; + background-color: #ddecfe; +} + +/* line 143, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-selected { + border-style: solid; + border-color: #8db2e3; +} +/* line 146, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-selected .x-datepicker-date { + background-color: #dae5f3; + font-weight: bold; +} + +/* line 152, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-today { + border-color: darkred; + border-style: solid; +} + +/* line 159, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-prevday .x-datepicker-date, +.x-datepicker-nextday .x-datepicker-date { + color: #aaaaaa; +} + +/* line 166, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-disabled a.x-datepicker-date { + background-color: #eeeeee; + cursor: default; + color: #bbbbbb; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-disabled a.x-datepicker-date:hover { + background-color: #eeeeee; +} + +/* line 179, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-footer, +.x-monthpicker-buttons { + padding: 4px 0; + border-width: 1px 0 0; + border-style: solid; + border-color: #b2d1f5; + background-image: none; + background-color: #dfecfb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dee8f5), color-stop(49%, #d1dff0), color-stop(51%, #c7d8ed), color-stop(100%, #cbdaee)); + background-image: -webkit-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: -moz-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: -o-linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + background-image: linear-gradient(top, #dee8f5, #d1dff0 49%, #c7d8ed 51%, #cbdaee); + text-align: center; +} +/* line 195, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-datepicker-footer .x-btn, +.x-monthpicker-buttons .x-btn { + margin: 0 2px 0 2px; +} + +/* line 201, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker { + width: 177px; + border-width: 1px; + border-style: solid; + border-color: #1b376c; + background-color: white; +} + +/* line 211, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-months { + border-width: 0 1px 0 0; + border-color: #1b376c; + border-style: solid; + width: 87px; +} +/* line 220, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-months .x-monthpicker-item { + width: 43px; +} + +/* line 225, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-years { + width: 88px; +} +/* line 228, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-years .x-monthpicker-item { + width: 44px; +} + +/* line 233, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-item { + margin: 5px 0 4px; + font: normal 11px tahoma, arial, verdana, sans-serif; + text-align: center; +} + +/* line 239, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-item-inner { + margin: 0 5px 0 5px; + color: #15428b; + border-width: 1px; + border-style: solid; + border-color: white; + line-height: 16px; + cursor: pointer; +} + +/* line 254, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +a.x-monthpicker-item-inner:hover { + background-color: #ddecfe; +} + +/* line 258, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-selected { + background-color: #dae5f3; + border-style: solid; + border-color: #8db2e3; +} + +/* line 264, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav { + height: 27px; +} + +/* line 268, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button-ct { + width: 44px; +} + +/* line 272, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-button { + height: 15px; + width: 15px; + cursor: pointer; + margin-top: 6px; + background-color: white; +} + +/* line 294, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-next { + background-image: url(images/tools/tool-sprites.gif); + background-position: 0 -120px; +} + +/* line 299, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-next-over { + background-position: -15px -120px; +} + +/* line 303, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-prev { + background-image: url(images/tools/tool-sprites.gif); + background-position: 0 -105px; +} + +/* line 308, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-yearnav-prev-over { + background-position: -15px -105px; +} + +/* line 313, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-item { + margin: 2px 0 2px; +} +/* line 317, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-item-inner { + margin: 0 5px 0 5px; +} +/* line 321, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-yearnav { + height: 22px; +} +/* line 325, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-monthpicker-small .x-monthpicker-yearnav-button { + margin-top: 3px; +} + +/* line 334, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-nlg .x-datepicker-header { + background-image: url(images/datepicker/datepicker-header-bg.gif); + background-repeat: repeat-x; + background-position: top left; +} +/* line 343, ../../../ext-theme-neutral/sass/src/picker/Date.scss */ +.x-nlg .x-datepicker-footer, +.x-nlg .x-monthpicker-buttons { + background-image: url(images/datepicker/datepicker-footer-bg.gif); + background-repeat: repeat-x; + background-position: top left; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-datepicker-header:after { + display: none; + content: "x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-datepicker-footer:after { + display: none; + content: "x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */ +.x-form-date-trigger { + background-image: url(images/form/date-trigger.gif); +} + +/* line 6, ../../../ext-theme-neutral/sass/src/form/field/Date.scss */ +.x-rtl.x-form-trigger-wrap .x-form-date-trigger { + background-image: url(images/form/date-trigger-rtl.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/File.scss */ +.x-form-file-wrap .x-form-text { + color: gray; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker { + width: 144px; + height: 90px; + background-color: white; + border-color: white; + border-width: 0; + border-style: solid; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-item { + width: 18px; + height: 18px; + border-width: 1px; + border-color: white; + border-style: solid; + background-color: white; + cursor: pointer; + padding: 2px; +} +/* line 20, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-content-box .x-color-picker-item { + width: 12px; + height: 12px; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +a.x-color-picker-item:hover { + border-color: #8bb8f3; + background-color: #deecfd; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-selected { + border-color: #8bb8f3; + background-color: #deecfd; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/picker/Color.scss */ +.x-color-picker-item-inner { + line-height: 10px; + border-color: #aca899; + border-width: 1px; + border-style: solid; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-btn-text { + background: transparent no-repeat; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 7, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-bold, +.x-menu-item div.x-edit-bold { + background-position: 0 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-italic, +.x-menu-item div.x-edit-italic { + background-position: -16px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 19, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-underline, +.x-menu-item div.x-edit-underline { + background-position: -32px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 25, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-forecolor, +.x-menu-item div.x-edit-forecolor { + background-position: -160px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 31, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-backcolor, +.x-menu-item div.x-edit-backcolor { + background-position: -176px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 37, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifyleft, +.x-menu-item div.x-edit-justifyleft { + background-position: -112px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 43, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifycenter, +.x-menu-item div.x-edit-justifycenter { + background-position: -128px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 49, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-justifyright, +.x-menu-item div.x-edit-justifyright { + background-position: -144px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 55, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-insertorderedlist, +.x-menu-item div.x-edit-insertorderedlist { + background-position: -80px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 61, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-insertunorderedlist, +.x-menu-item div.x-edit-insertunorderedlist { + background-position: -96px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 67, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-increasefontsize, +.x-menu-item div.x-edit-increasefontsize { + background-position: -48px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 73, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-decreasefontsize, +.x-menu-item div.x-edit-decreasefontsize { + background-position: -64px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 79, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-sourceedit, +.x-menu-item div.x-edit-sourceedit { + background-position: -192px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 85, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-edit-createlink, +.x-menu-item div.x-edit-createlink { + background-position: -208px 0; + background-image: url(images/editor/tb-sprite.gif); +} + +/* line 90, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { + padding: 5px; + padding-bottom: 1px; +} + +/* line 95, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-tb .x-font-select { + font-size: 11px; + font-family: inherit; +} + +/* line 100, ../../../ext-theme-neutral/sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-wrap textarea { + font: normal 12px tahoma, arial, verdana, sans-serif; + background-color: white; + resize: none; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-body { + background: white; + border-width: 1px; + border-style: solid; + border-color: #99bce8; +} + +/* line 8, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-empty { + padding: 10px; + color: gray; + background-color: white; + font: normal 11px tahoma, arial, verdana, sans-serif; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell { + color: null; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + background-color: white; + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-alt .x-grid-td { + background-color: #fafafa; +} +/* line 30, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-over .x-grid-td { + border-bottom-style: solid; + border-bottom-color: #dddddd; +} +/* line 35, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-over .x-grid-td { + border-bottom-style: solid; + border-bottom-color: #dddddd; +} +/* line 40, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-selected .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #a3bae9; +} +/* line 45, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #a3bae9; +} +/* line 50, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-before-focused .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #464646; + border-bottom-width: 1px; +} +/* line 58, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-td { + background-color: #efefef; +} +/* line 65, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-over .x-grid-td { + background-color: #efefef; +} +/* line 73, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-td { + background-color: #dfe8f6; +} +/* line 82, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-td { + border-bottom-style: dotted; + border-bottom-color: #464646; + border-bottom-width: 1px; +} +/* line 92, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-table .x-grid-row-focused-first .x-grid-td { + border-top: 1px dotted #464646; +} +/* line 103, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-row-summary .x-grid-td { + border-bottom-color: #dfe8f6; + border-top-width: 0; +} +/* line 108, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-focused .x-grid-row-summary .x-grid-td { + border-bottom-color: #efefef; + border-top-width: 0; +} + +/* line 115, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-td { + border-bottom-width: 1px; +} +/* line 121, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table { + border-top: 1px solid white; +} +/* line 125, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table-over-first { + border-top-style: solid; + border-top-color: #dddddd; +} +/* line 130, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-row-lines .x-grid-table-selected-first { + border-top-style: dotted; + border-top-color: #a3bae9; +} + +/* line 139, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-body .x-grid-table-focused-first { + border-top: 1px dotted #464646; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell-inner { + text-overflow: ellipsis; + padding: 3px 6px 4px 6px; +} + +/* line 163, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner { + padding-top: 2px; + padding-bottom: 3px; +} + +/* line 178, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-cell-special { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; + border-right-width: 1px; + background-image: none; + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: -moz-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: -o-linear-gradient(top, #f6f6f6, #e9e9e9); + background-image: linear-gradient(top, #f6f6f6, #e9e9e9); + /*<if slicer>*/ + /*</if slicer>*/ + /* */ + /*<if slicer>*/ + /*</if slicer>*/ + /* */ +} +/* line 191, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row-selected .x-grid-cell-special { + border-right-color: #ededed #aaccf6; + background-image: none; + background-color: #dfe8f6; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dfe8f6), color-stop(100%, #cbdaf0)); + background-image: -webkit-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: -moz-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: -o-linear-gradient(left, #dfe8f6, #cbdaf0); + background-image: linear-gradient(left, #dfe8f6, #cbdaf0); +} +/* line 206, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-nlg .x-grid-cell-special { + background-repeat: repeat-y; + background-image: url(images/grid/cell-special-bg.gif); +} +/* line 211, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-nlg .x-grid-row-selected .x-grid-cell-special { + background-image: url(images/grid/cell-special-selected-bg.gif); +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-cell-special .x-grid-cell-special:after { + display: none; + content: "x-slicer:bg:url(images/grid/cell-special-bg.gif)"; +} +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-cell-special .x-grid-cell-special-selected:after { + display: none; + content: "x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"; +} + +/* line 221, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-rtl.x-grid-cell-special { + border-right-width: 0; + border-left-width: 1px; +} + +/* line 228, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-dirty-cell { + background: url(images/grid/dirty.gif) no-repeat 0 0; +} + +/* line 233, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-rtl.x-grid-dirty-cell { + background-image: url(images/grid/dirty-rtl.gif); + background-position: right 0; +} + +/* line 241, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-row .x-grid-cell-selected { + color: null; + background-color: #b8cfee; +} + +/* line 247, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-with-col-lines .x-grid-cell { + border-right-width: 1px; +} + +/* line 253, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-rtl.x-grid-with-col-lines .x-grid-cell { + border-right-width: 0; + border-left-width: 1px; +} + +/* line 259, ../../../ext-theme-neutral/sass/src/panel/Table.scss */ +.x-grid-resize-marker { + width: 1px; + background-color: #0f0f0f; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator { + position: absolute; + height: 1px; + line-height: 0px; + background-color: #77BC71; + overflow: visible; + pointer-events: none; +} +/* line 9, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator .x-grid-drop-indicator-left { + position: absolute; + top: -8px; + left: -12px; + background-image: url(images/grid/dd-insert-arrow-right.png); + height: 16px; + width: 16px; +} +/* line 18, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-grid-drop-indicator .x-grid-drop-indicator-right { + position: absolute; + top: -8px; + right: -11px; + background-image: url(images/grid/dd-insert-arrow-left.png); + height: 16px; + width: 16px; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-ie6 .x-grid-drop-indicator-left { + background-image: url(images/grid/dd-insert-arrow-right.gif); +} +/* line 33, ../../../ext-theme-neutral/sass/src/view/DropZone.scss */ +.x-ie6 .x-grid-drop-indicator-right { + background-image: url(images/grid/dd-insert-arrow-left.gif); +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-top, +.col-move-bottom { + width: 9px; + height: 9px; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-top { + background-image: url(images/grid/col-move-top.gif); +} + +/* line 11, ../../../ext-theme-neutral/sass/src/grid/header/DropZone.scss */ +.col-move-bottom { + background-image: url(images/grid/col-move-bottom.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-grid-header-ct { + border: 1px solid #99bce8; + border-bottom-color: #c5c5c5; + background-color: #c5c5c5; + background-image: none; + background-color: #c5c5c5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: linear-gradient(top, #f9f9f9, #e3e4e6); +} + +/* line 14, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-accordion-item .x-grid-header-ct { + border-width: 0 0 1px !important; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-accordion-item .x-grid-header-ct-hidden { + border: 0 !important; +} + +/* line 28, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-grid-body { + border-top-color: #c5c5c5; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-hmenu-sort-asc .x-menu-item-icon { + background-image: url(images/grid/hmenu-asc.gif); +} + +/* line 36, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-hmenu-sort-desc .x-menu-item-icon { + background-image: url(images/grid/hmenu-desc.gif); +} + +/* line 40, ../../../ext-theme-neutral/sass/src/grid/header/Container.scss */ +.x-cols-icon .x-menu-item-icon { + background-image: url(images/grid/columns.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header { + border-right: 1px solid #c5c5c5; + color: black; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + background-image: none; + background-color: #c5c5c5; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f9f9f9), color-stop(100%, #e3e4e6)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -moz-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: -o-linear-gradient(top, #f9f9f9, #e3e4e6); + background-image: linear-gradient(top, #f9f9f9, #e3e4e6); +} + +/* line 18, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header { + border-right: 0 none; + border-left: 1px solid #c5c5c5; +} + +/* line 24, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-group-sub-header { + background: transparent; + border-top: 1px solid #c5c5c5; +} +/* line 29, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-group-sub-header .x-column-header-inner { + padding: 3px 6px 5px 6px; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-inner { + padding: 4px 6px 5px 6px; + text-overflow: ellipsis; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-over, +.x-column-header-sort-ASC, +.x-column-header-sort-DESC { + background-image: none; + background-color: #aaccf6; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ebf3fd), color-stop(39%, #ebf3fd), color-stop(40%, #d9e8fb), color-stop(100%, #d9e8fb)); + background-image: -webkit-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: -moz-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: -o-linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); + background-image: linear-gradient(top, #ebf3fd, #ebf3fd 39%, #d9e8fb 40%, #d9e8fb); +} + +/* line 51, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-nlg .x-grid-header-ct, +.x-nlg .x-column-header { + background-image: url(images/grid/column-header-bg.gif); +} + +/* line 62, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-nlg .x-column-header-over, +.x-nlg .x-column-header-sort-ASC, +.x-nlg .x-column-header-sort-DESC { + background-image: url(images/grid/column-header-over-bg.gif); +} + +/* line 70, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-open { + background-color: transparent; +} +/* line 73, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-open .x-column-header-trigger { + background-color: transparent; +} + +/* line 78, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + width: 14px; + cursor: pointer; + background-color: transparent; + background-position: 0 center; +} + +/* line 86, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header-trigger { + background-position: right center; +} + +/* line 96, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-align-right .x-column-header-text { + margin-right: 9px; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-align-right .x-rtl.x-column-header-text { + margin-right: 0; + margin-left: 9px; +} + +/* line 110, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-ASC .x-column-header-text, +.x-column-header-sort-DESC .x-column-header-text { + padding-right: 12px; + background-position: right center; +} + +/* line 119, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-ASC .x-rtl.x-column-header-text, +.x-column-header-sort-DESC .x-rtl.x-column-header-text { + padding-right: 0; + padding-left: 12px; + background-position: 0 center; +} + +/* line 127, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-ASC .x-column-header-text { + background-image: url(images/grid/sort_asc.gif); +} + +/* line 130, ../../../ext-theme-neutral/sass/src/grid/column/Column.scss */ +.x-column-header-sort-DESC .x-column-header-text { + background-image: url(images/grid/sort_desc.gif); +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-column-header:after { + display: none; + content: "x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-column-header-over:after { + display: none; + content: "x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-grid-cell-inner-action-col { + padding: 2px 2px 2px 2px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col { + padding-top: 1px; + padding-bottom: 1px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-action-col-cell .x-item-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 16, ../../../ext-theme-neutral/sass/src/grid/column/Action.scss */ +.x-action-col-icon { + height: 16px; + width: 16px; + cursor: pointer; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-cell-inner-checkcolumn { + padding: 4px 6px 3px 6px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn { + padding-top: 3px; + padding-bottom: 2px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-checkcolumn { + width: 13px; + height: 13px; + background: url(images/form/checkbox.gif) 0 0 no-repeat; +} +/* line 17, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-item-disabled .x-grid-checkcolumn { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 22, ../../../ext-theme-neutral/sass/src/grid/column/CheckColumn.scss */ +.x-grid-checkcolumn-checked { + background-position: 0 -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/column/RowNumberer.scss */ +.x-grid-cell-inner-row-numberer { + padding: 3px 5px 4px 3px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd { + border-width: 0 0 2px 0; + border-style: solid; + border-color: #99bbe8; + padding: 10px 4px 4px 4px; + background: white; + cursor: pointer; +} + +/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-not-collapsible { + cursor: default; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-collapsible .x-grid-group-title { + background-repeat: no-repeat; + background-position: left center; + background-image: url(images/grid/group-collapse.gif); + padding: 0 0 0 14px; +} + +/* line 24, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title { + background-position: right center; + padding: 0 14px 0 0; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-title { + color: #3764a0; + font: bold 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 36, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-hd-collapsed .x-grid-group-title { + background-image: url(images/grid/group-expand.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-grid-group-collapsed .x-grid-group-title { + background-image: url(images/grid/group-expand.gif); +} + +/* line 45, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-group-by-icon { + background-image: url(images/grid/group-by.gif); +} + +/* line 49, ../../../ext-theme-neutral/sass/src/grid/feature/Grouping.scss */ +.x-show-groups-icon { + background-image: url(images/grid/group-by.gif); +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */ +.x-grid-rowbody { + font: normal 11px/13px tahoma, arial, verdana, sans-serif; + padding: 5px 6px 5px 6px; +} +/* line 6, ../../../ext-theme-neutral/sass/src/grid/feature/RowBody.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody { + padding-top: 6px; + padding-bottom: 4px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/RowWrap.scss */ +.x-grid-rowwrap { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + border-style: solid; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-summary-bottom { + border-bottom-color: #c5c5c5; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-docked-summary { + border-width: 1px; + border-color: #99bce8; + border-style: solid; +} +/* line 10, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-docked-summary .x-grid-table { + width: 100%; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-grid-row-summary .x-grid-cell, +.x-grid-row-summary .x-grid-rowwrap, +.x-grid-row-summary .x-grid-cell-rowbody { + border-color: #ededed #d0d0d0 #ededed #d0d0d0; + background-color: transparent !important; + border-top-width: 0; + font: normal 11px/13px tahoma, arial, verdana, sans-serif; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/grid/feature/Summary.scss */ +.x-grid-with-row-lines .x-grid-table-summary { + border: 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-locked .x-grid-inner-locked { + border-width: 0 1px 0 0; + border-style: solid; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-locked .x-rtl.x-grid-inner-locked { + border-width: 0 0 0 1px; +} + +/* line 17, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-inner-locked .x-column-header-last, +.x-grid-inner-locked .x-grid-cell-last { + border-right-width: 0!important; +} +/* line 21, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-grid-inner-locked .x-rtl.x-column-header-last { + border-left-width: 0!important; +} + +/* line 29, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last { + border-left: 0 none; +} +/* line 32, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last { + border-left: 0 none; +} + +/* line 39, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-hmenu-lock .x-menu-item-icon { + background-image: url(images/grid/hmenu-lock.gif); +} + +/* line 43, ../../../ext-theme-neutral/sass/src/grid/locking/Lockable.scss */ +.x-hmenu-unlock .x-menu-item-icon { + background-image: url(images/grid/hmenu-unlock.gif); +} + +/* line 4, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-text { + font: normal 11px/15px tahoma, arial, verdana, sans-serif; + padding: 1px 5px 2px 5px; + height: 20px; +} +/* line 15, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-text { + height: 15px; +} +/* line 21, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-gecko .x-grid-editor .x-form-text { + padding-left: 4px; + padding-right: 4px; +} +/* line 31, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-trigger { + height: 20px; +} +/* line 39, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down { + height: 10px; +} +/* line 47, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb { + margin-top: 4px; +} +/* line 51, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-cb-wrap { + height: 20px; +} +/* line 58, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field-body { + height: 20px; +} +/* line 62, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-display-field { + font: normal 11px/15px tahoma, arial, verdana, sans-serif; + padding: 2px 6px 3px 6px; + text-overflow: ellipsis; +} +/* line 73, ../../../ext-theme-neutral/sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-action-col-field { + padding: 2px 2px 2px 2px; +} + +/* line 3, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */ +.x-tree-cell-editor .x-form-text { + padding-left: 2px; + padding-right: 2px; +} +/* line 8, ../../../ext-theme-neutral/sass/src/grid/plugin/CellEditing.scss */ +.x-gecko .x-tree-cell-editor .x-form-text { + padding-left: 1px; + padding-right: 1px; +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-field { + margin: 0 1px 0 1px; +} +/* line 7, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-display-field { + padding: 2px 5px 3px 5px; +} +/* line 16, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-action-col-field { + padding: 2px 1px 2px 1px; +} +/* line 27, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-form-text { + padding: 1px 4px 2px 4px; +} +/* line 30, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-gecko .x-grid-row-editor .x-form-text { + padding-left: 3px; + padding-right: 3px; +} +/* line 38, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor .x-panel-body { + border-top: 1px solid #99bce8 !important; + border-bottom: 1px solid #99bce8 !important; + padding: 4px 0 4px 0; + background-color: #eaf1fb; +} +/* line 48, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-with-col-lines .x-grid-row-editor .x-form-cb { + margin-right: 1px; +} +/* line 53, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb { + margin-right: 0; + margin-left: 1px; +} + +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-right-radius: 5px; + border-bottom-right-radius: 5px; + -moz-border-radius-bottomleft: 5px; + -webkit-border-bottom-left-radius: 5px; + border-bottom-left-radius: 5px; + padding: 4px 4px 4px 4px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-color: #eaf1fb; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mc { + background-color: #eaf1fb; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-grid-row-editor-buttons-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo { + font-family: th-0-0-5-5-0-1-1-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tr, +.x-grid-row-editor-buttons-default-bottom-br, +.x-grid-row-editor-buttons-default-bottom-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl, +.x-grid-row-editor-buttons-default-bottom-bl, +.x-grid-row-editor-buttons-default-bottom-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-bc { + height: 5px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-tl, +.x-grid-row-editor-buttons-default-bottom-bl, +.x-grid-row-editor-buttons-default-bottom-tr, +.x-grid-row-editor-buttons-default-bottom-br, +.x-grid-row-editor-buttons-default-bottom-tc, +.x-grid-row-editor-buttons-default-bottom-bc, +.x-grid-row-editor-buttons-default-bottom-ml, +.x-grid-row-editor-buttons-default-bottom-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-ml, +.x-grid-row-editor-buttons-default-bottom-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-bottom-mc { + padding: 4px 0px 0px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl, +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-row-editor-buttons-default-bottom:after { + display: none; + content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top { + -moz-border-radius-topleft: 5px; + -webkit-border-top-left-radius: 5px; + border-top-left-radius: 5px; + -moz-border-radius-topright: 5px; + -webkit-border-top-right-radius: 5px; + border-top-right-radius: 5px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 4px 4px 4px 4px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-color: #eaf1fb; +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mc { + background-color: #eaf1fb; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-grid-row-editor-buttons-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo { + font-family: th-5-5-0-0-1-1-0-1-4-4-4-4; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl { + background-position: 0 -10px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tr { + background-position: right -15px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bl { + background-position: 0 -20px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-br { + background-position: right -25px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bc { + background-position: 0 -5px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tr, +.x-grid-row-editor-buttons-default-top-br, +.x-grid-row-editor-buttons-default-top-mr { + padding-right: 5px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl, +.x-grid-row-editor-buttons-default-top-bl, +.x-grid-row-editor-buttons-default-top-ml { + padding-left: 5px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tc { + height: 5px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-tl, +.x-grid-row-editor-buttons-default-top-bl, +.x-grid-row-editor-buttons-default-top-tr, +.x-grid-row-editor-buttons-default-top-br, +.x-grid-row-editor-buttons-default-top-tc, +.x-grid-row-editor-buttons-default-top-bc, +.x-grid-row-editor-buttons-default-top-ml, +.x-grid-row-editor-buttons-default-top-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-ml, +.x-grid-row-editor-buttons-default-top-mr { + zoom: 1; + background-image: url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif); + background-repeat: repeat-y; +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-grid-row-editor-buttons-default-top-mc { + padding: 0px 0px 4px 0px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl, +.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-grid-row-editor-buttons-default-top:after { + display: none; + content: "x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 97, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons-default-bottom { + top: 29px; +} + +/* line 103, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons-default-top { + bottom: 29px; +} + +/* line 108, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-buttons { + border-color: #99bce8; +} + +/* line 112, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-row-editor-update-button { + margin-right: 2px; +} + +/* line 115, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-row-editor-cancel-button { + margin-left: 2px; +} + +/* line 120, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-rtl.x-row-editor-update-button { + margin-left: 2px; + margin-right: auto; +} + +/* line 124, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-rtl.x-row-editor-cancel-button { + margin-right: 2px; + margin-left: auto; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-errors .x-tip-body { + padding: 5px; +} + +/* line 136, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-grid-row-editor-errors-item { + list-style: disc; + margin-left: 15px; +} + +/* line 143, ../../../ext-theme-neutral/sass/src/grid/plugin/RowEditing.scss */ +.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item { + margin-left: 0; + margin-right: 15px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-cell-inner-row-expander { + padding: 6px 7px 5px 7px; +} +/* line 5, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander { + padding-top: 5px; + padding-bottom: 4px; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-expander { + width: 9px; + height: 9px; + cursor: pointer; + background-image: url(images/grid/group-collapse.gif); +} +/* line 20, ../../../ext-theme-neutral/sass/src/grid/plugin/RowExpander.scss */ +.x-grid-row-collapsed .x-grid-row-expander { + background-image: url(images/grid/group-expand.gif); +} + +/* line 2, ../../../ext-theme-neutral/sass/src/grid/property/Grid.scss */ +.x-grid-cell-inner-property-name { + background-image: url(images/grid/property-cell-bg.gif); + background-repeat: no-repeat; + background-position: -16px 2px; + padding-left: 12px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-layout-ct { + background-color: white; + padding: 0; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-panel-header-text-container { + color: black; + font-weight: normal; + font-family: tahoma, arial, verdana, sans-serif; + text-transform: none; +} + +/* line 13, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item { + margin: 0; +} +/* line 16, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd { + background: #d9e7f8; + border-top-color: #f3f7fb; + padding: 4px 5px 5px 5px; +} +/* line 22, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd-sibling-expanded { + border-top-color: #99bce8; +} +/* line 26, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-hd-last-collapsed { + border-bottom-color: #d9e7f8; +} +/* line 30, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-item .x-accordion-body { + border-width: 0; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-collapse-top, +.x-accordion-hd .x-tool-collapse-bottom { + background-position: 0 -255px; +} +/* line 42, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-expand-top, +.x-accordion-hd .x-tool-expand-bottom { + background-position: 0 -240px; +} +/* line 50, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-over .x-tool-collapse-top, +.x-accordion-hd .x-tool-over .x-tool-collapse-bottom { + background-position: -15px -255px; +} +/* line 55, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-over .x-tool-expand-top, +.x-accordion-hd .x-tool-over .x-tool-expand-bottom { + background-position: -15px -240px; +} +/* line 61, ../../../ext-theme-neutral/sass/src/layout/container/Accordion.scss */ +.x-accordion-hd .x-tool-img { + background-color: #d9e7f8; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-collapse-el { + cursor: pointer; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-left, +.x-layout-split-right { + top: 50%; + margin-top: -18px; + width: 5px; + height: 35px; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-top, +.x-layout-split-bottom { + left: 50%; + width: 35px; + height: 5px; + margin-left: -18px; +} + +/* line 21, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-left { + background-image: url(images/util/splitter/mini-left.gif); +} + +/* line 25, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-right { + background-image: url(images/util/splitter/mini-right.gif); +} + +/* line 31, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-rtl.x-layout-split-left { + background-image: url(images/util/splitter/mini-right.gif); +} +/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-rtl.x-layout-split-right { + background-image: url(images/util/splitter/mini-left.gif); +} + +/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-top { + background-image: url(images/util/splitter/mini-top.gif); +} + +/* line 45, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-layout-split-bottom { + background-image: url(images/util/splitter/mini-bottom.gif); +} + +/* line 50, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-left { + background-image: url(images/util/splitter/mini-right.gif); +} +/* line 54, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-right { + background-image: url(images/util/splitter/mini-left.gif); +} +/* line 60, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-rtl.x-layout-split-left { + background-image: url(images/util/splitter/mini-left.gif); +} +/* line 64, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-rtl.x-layout-split-right { + background-image: url(images/util/splitter/mini-right.gif); +} +/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-top { + background-image: url(images/util/splitter/mini-bottom.gif); +} +/* line 74, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-collapsed .x-layout-split-bottom { + background-image: url(images/util/splitter/mini-top.gif); +} + +/* line 79, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-active { + background-color: #b4b4b4; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + opacity: 0.8; +} +/* line 83, ../../../ext-theme-neutral/sass/src/resizer/Splitter.scss */ +.x-splitter-active .x-collapse-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/layout/container/Border.scss */ +.x-border-layout-ct { + background-color: #dfe8f6; +} + +/* line 14, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-body { + background: #f0f0f0; + padding: 2px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-icon-separator { + left: 24px; + border-left: solid 1px #e0e0e0; + background-color: white; + width: 2px; +} + +/* line 27, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu .x-menu-icon-separator { + left: auto; + right: 24px; +} + +/* line 33, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item { + padding: 1px; + cursor: pointer; +} + +/* line 46, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-indent { + margin-left: 30px; +} + +/* line 51, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu-item-indent { + margin-left: 0; + margin-right: 30px; +} + +/* line 57, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-active { + background-image: none; + background-color: #d9e8fb; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7f0fc), color-stop(100%, #c7ddf9)); + background-image: -webkit-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: -moz-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: -o-linear-gradient(top, #e7f0fc, #c7ddf9); + background-image: linear-gradient(top, #e7f0fc, #c7ddf9); + border-color: #a9cbf5; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; + padding: 0; +} +/* line 75, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-nlg .x-menu-item-active { + background: #d9e8fb repeat-x left top; + background-image: url(images/menu/menu-item-active-bg.gif); +} + +/* line 82, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-link { + line-height: 22px; + padding: 0 0 0 30px; + display: inline-block; +} + +/* line 91, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu-item-link { + padding: 0 30px 0 0; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-right-check-item-text { + padding-right: 22px; +} + +/* line 102, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-right-check-item-text { + padding-left: 22px; + padding-right: 0; +} + +/* line 108, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-icon { + width: 16px; + height: 16px; + top: 4px; + left: 3px; + background-position: center center; +} + +/* line 116, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-glyph { + font-size: 16px; + line-height: 16px; + color: #222222; + opacity: 0.5; +} +/* line 132, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie8m .x-menu-item-glyph { + color: #898989; +} + +/* line 142, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-menu-item-icon, +.x-quirks .x-menu-item-active .x-menu-item-icon, +.x-ie9m .x-menu-item-active .x-menu-item-icon { + top: 3px; + left: 2px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu-item-icon { + left: auto; + right: 3px; +} + +/* line 159, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon, +.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon, +.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon { + left: auto; + right: 2px; +} + +/* line 168, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-icon-right { + width: 16px; + height: 16px; + top: 3px; + right: 3px; + background-position: center center; +} + +/* line 177, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu-item-icon-right { + right: auto; + left: 3px; +} + +/* line 183, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-text { + font-size: 11px; + color: #222222; + cursor: pointer; + margin-right: 16px; +} + +/* line 193, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +a.x-rtl .x-menu-item-text { + margin-right: 0; + margin-left: 16px; +} + +/* line 201, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-checked .x-menu-item-icon, .x-menu-item-checked .x-menu-item-icon-right { + background-image: url(images/menu/checked.gif); +} +/* line 204, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-checked .x-menu-group-icon { + background-image: url(images/menu/group-checked.gif); +} + +/* line 210, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-unchecked .x-menu-item-icon, .x-menu-item-unchecked .x-menu-item-icon-right { + background-image: url(images/menu/unchecked.gif); +} +/* line 213, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-unchecked .x-menu-group-icon { + background-image: none; +} + +/* line 218, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-separator { + height: 2px; + border-top: solid 1px #e0e0e0; + background-color: white; + margin: 2px 0; + padding: 0; +} + +/* line 226, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-arrow { + width: 12px; + height: 9px; + top: 7px; + right: 0; + background-image: url(images/menu/menu-parent.gif); +} + +/* line 239, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-menu-item-arrow, +.x-quirks .x-menu-item-active .x-menu-item-arrow, +.x-ie9m .x-menu-item-active .x-menu-item-arrow { + top: 6px; + right: -1px; +} + +/* line 246, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-rtl.x-menu-item-arrow { + left: 0; + right: auto; + background-image: url(images/menu/menu-parent-left.gif); +} + +/* line 257, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow, +.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow, +.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow { + right: auto; + left: -1px; +} + +/* line 264, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} + +/* line 270, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-content-box .x-menu-icon-separator { + width: 1px; +} +/* line 274, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-content-box .x-menu-item-separator { + height: 1px; +} + +/* line 281, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie .x-menu-item-disabled .x-menu-item-icon { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} +/* line 285, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-ie .x-menu-item-disabled .x-menu-item-text { + background-color: transparent; +} + +/* line 294, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-date-item { + border-color: #99BBE8; +} + +/* line 300, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-item .x-form-item-label { + font-size: 11px; + color: #222222; +} + +/* line 306, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-top { + height: 8px; + background-image: url(images/menu/scroll-top.gif); +} + +/* line 310, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-bottom { + height: 8px; + background-image: url(images/menu/scroll-bottom.gif); +} + +/* line 316, ../../../ext-theme-neutral/sass/src/menu/Menu.scss */ +.x-menu-scroll-top, .x-menu-scroll-bottom { + background-color: #f0f0f0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-menu-item-link:after { + display: none; + content: "x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 1, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool { + cursor: pointer; +} + +/* line 5, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-img { + overflow: hidden; + width: 15px; + height: 15px; + background-image: url(images/tools/tool-sprites.gif); + margin: 0; +} + +/* line 30, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-placeholder { + visibility: hidden; +} + +/* line 34, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-close { + background-position: 0 0; +} + +/* line 38, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-minimize { + background-position: 0 -15px; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-maximize { + background-position: 0 -30px; +} + +/* line 46, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-restore { + background-position: 0 -45px; +} + +/* line 50, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-toggle { + background-position: 0 -60px; +} +/* line 53, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-panel-collapsed .x-tool-toggle { + background-position: 0 -75px; +} + +/* line 58, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-gear { + background-position: 0 -90px; +} + +/* line 62, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-prev { + background-position: 0 -105px; +} + +/* line 66, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-next { + background-position: 0 -120px; +} + +/* line 70, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-pin { + background-position: 0 -135px; +} + +/* line 74, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-unpin { + background-position: 0 -150px; +} + +/* line 78, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-right { + background-position: 0 -165px; +} + +/* line 82, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-left { + background-position: 0 -180px; +} + +/* line 86, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-down { + background-position: 0 -195px; +} + +/* line 90, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-up { + background-position: 0 -210px; +} + +/* line 94, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-refresh { + background-position: 0 -225px; +} + +/* line 98, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-plus { + background-position: 0 -240px; +} + +/* line 102, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-minus { + background-position: 0 -255px; +} + +/* line 106, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-search { + background-position: 0 -270px; +} + +/* line 110, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-save { + background-position: 0 -285px; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-help { + background-position: 0 -300px; +} + +/* line 118, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-print { + background-position: 0 -315px; +} + +/* line 122, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand { + background-position: 0 -330px; +} + +/* line 126, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-collapse { + background-position: 0 -345px; +} + +/* line 130, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-resize { + background-position: 0 -360px; +} + +/* line 134, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-move { + background-position: 0 -375px; +} + +/* line 139, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-bottom, +.x-tool-collapse-bottom { + background-position: 0 -195px; +} + +/* line 144, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-top, +.x-tool-collapse-top { + background-position: 0 -210px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-left, +.x-tool-collapse-left { + background-position: 0 -180px; +} + +/* line 154, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-expand-right, +.x-tool-collapse-right { + background-position: 0 -165px; +} + +/* line 161, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-rtl.x-tool-expand-left, .x-rtl.x-tool-collapse-left { + background-position: 0 -165px; +} +/* line 166, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-rtl.x-tool-expand-right, .x-rtl.x-tool-collapse-right { + background-position: 0 -180px; +} + +/* line 174, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-close { + background-position: -15px 0; +} +/* line 178, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-minimize { + background-position: -15px -15px; +} +/* line 182, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-maximize { + background-position: -15px -30px; +} +/* line 186, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-restore { + background-position: -15px -45px; +} +/* line 190, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-toggle { + background-position: -15px -60px; +} +/* line 195, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-panel-collapsed .x-tool-over .x-tool-toggle { + background-position: -15px -75px; +} +/* line 200, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-gear { + background-position: -15px -90px; +} +/* line 204, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-prev { + background-position: -15px -105px; +} +/* line 208, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-next { + background-position: -15px -120px; +} +/* line 212, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-pin { + background-position: -15px -135px; +} +/* line 216, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-unpin { + background-position: -15px -150px; +} +/* line 220, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-right { + background-position: -15px -165px; +} +/* line 224, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-left { + background-position: -15px -180px; +} +/* line 228, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-down { + background-position: -15px -195px; +} +/* line 232, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-up { + background-position: -15px -210px; +} +/* line 236, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-refresh { + background-position: -15px -225px; +} +/* line 240, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-plus { + background-position: -15px -240px; +} +/* line 244, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-minus { + background-position: -15px -255px; +} +/* line 248, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-search { + background-position: -15px -270px; +} +/* line 252, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-save { + background-position: -15px -285px; +} +/* line 256, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-help { + background-position: -15px -300px; +} +/* line 260, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-print { + background-position: -15px -315px; +} +/* line 264, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand { + background-position: -15px -330px; +} +/* line 268, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-collapse { + background-position: -15px -345px; +} +/* line 272, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-resize { + background-position: -15px -360px; +} +/* line 276, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-move { + background-position: -15px -375px; +} +/* line 281, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-bottom, +.x-tool-over .x-tool-collapse-bottom { + background-position: -15px -195px; +} +/* line 286, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-top, +.x-tool-over .x-tool-collapse-top { + background-position: -15px -210px; +} +/* line 291, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-left, +.x-tool-over .x-tool-collapse-left { + background-position: -15px -180px; +} +/* line 296, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-tool-expand-right, +.x-tool-over .x-tool-collapse-right { + background-position: -15px -165px; +} +/* line 303, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-rtl.x-tool-expand-left, .x-tool-over .x-rtl.x-tool-collapse-left { + background-position: -15px -165px; +} +/* line 308, ../../../ext-theme-neutral/sass/src/panel/Tool.scss */ +.x-tool-over .x-rtl.x-tool-expand-right, .x-tool-over .x-rtl.x-tool-collapse-right { + background-position: -15px -180px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle { + position: absolute; + z-index: 100; + font-size: 1px; + line-height: 6px; + overflow: hidden; + zoom: 1; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; + background-color: #fff; +} + +/* line 18, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-collapsed .x-resizable-handle { + display: none; +} + +/* line 23, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-north { + cursor: n-resize; +} +/* line 26, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south { + cursor: s-resize; +} +/* line 29, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east { + cursor: e-resize; +} +/* line 32, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-west { + cursor: w-resize; +} +/* line 35, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast { + cursor: se-resize; +} +/* line 38, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest { + cursor: nw-resize; +} +/* line 41, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast { + cursor: ne-resize; +} +/* line 44, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest { + cursor: sw-resize; +} + +/* line 49, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-east { + width: 6px; + height: 100%; + right: 0; + top: 0; +} + +/* line 56, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-south { + width: 100%; + height: 6px; + left: 0; + bottom: 0; +} + +/* line 63, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-west { + width: 6px; + height: 100%; + left: 0; + top: 0; +} + +/* line 70, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-north { + width: 100%; + height: 6px; + left: 0; + top: 0; +} + +/* line 77, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-southeast { + width: 6px; + height: 6px; + right: 0; + bottom: 0; + z-index: 101; +} + +/* line 85, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-northwest { + width: 6px; + height: 6px; + left: 0; + top: 0; + z-index: 101; +} + +/* line 93, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-northeast { + width: 6px; + height: 6px; + right: 0; + top: 0; + z-index: 101; +} + +/* line 101, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-handle-southwest { + width: 6px; + height: 6px; + left: 0; + bottom: 0; + z-index: 101; +} + +/*IE rounding error*/ +/* line 111, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-ie .x-resizable-handle-east { + margin-right: -1px; + /*IE rounding error*/ +} +/* line 115, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-ie .x-resizable-handle-south { + margin-bottom: -1px; +} + +/* line 122, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-pinned .x-resizable-handle, +.x-resizable-over .x-resizable-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 127, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-window .x-window-handle { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; +} + +/* line 131, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-window-collapsed .x-window-handle { + display: none; +} + +/* line 136, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-proxy { + border: 1px dashed #3b5a82; + position: absolute; + overflow: hidden; + z-index: 50000; +} + +/* line 148, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, +.x-resizable-pinned .x-resizable-handle-east, +.x-resizable-pinned .x-resizable-handle-west { + background-image: url(images/sizer/e-handle.gif); +} +/* line 154, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, +.x-resizable-pinned .x-resizable-handle-south, +.x-resizable-pinned .x-resizable-handle-north { + background-image: url(images/sizer/s-handle.gif); +} +/* line 159, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast, +.x-resizable-pinned .x-resizable-handle-southeast { + background-position: top left; + background-image: url(images/sizer/se-handle.gif); +} +/* line 164, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest, +.x-resizable-pinned .x-resizable-handle-northwest { + background-position: bottom right; + background-image: url(images/sizer/nw-handle.gif); +} +/* line 169, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast, +.x-resizable-pinned .x-resizable-handle-northeast { + background-position: bottom left; + background-image: url(images/sizer/ne-handle.gif); +} +/* line 174, ../../../ext-theme-neutral/sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest, +.x-resizable-pinned .x-resizable-handle-southwest { + background-position: top right; + background-image: url(images/sizer/sw-handle.gif); +} + +/* Horizontal styles */ +/* line 2, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz { + padding-left: 7px; + background: no-repeat 0 -15px; +} +/* line 6, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-end { + padding-right: 7px; + background: no-repeat right -30px; +} + +/* line 12, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-inner { + height: 15px; +} + +/* line 20, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-ie6 .x-form-item .x-slider-horz, +.x-ie7 .x-form-item .x-slider-horz, +.x-quirks .x-ie .x-form-item .x-slider-horz { + margin-top: 4px; +} + +/* line 26, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb { + width: 14px; + height: 15px; + margin-left: -7px; + background-image: url(images/slider/slider-thumb.png); +} + +/* line 33, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb-over { + background-position: -14px -15px; +} + +/* line 37, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz .x-slider-thumb-drag { + background-position: -28px -30px; +} + +/* line 42, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-rtl.x-slider-horz { + padding-left: 0; + padding-right: 7px; + background-position: right -30px; +} +/* line 47, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-rtl.x-slider-horz .x-slider-end { + padding-right: 0; + padding-left: 7px; + background-position: left -15px; +} +/* line 53, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-rtl.x-slider-horz .x-slider-thumb { + margin-right: -7px; +} + +/* Vertical styles */ +/* line 60, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert { + padding-top: 7px; + background: no-repeat -30px 0; +} + +/* line 65, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-end { + padding-bottom: 7px; + background: no-repeat -15px bottom; + width: 15px; +} + +/* line 71, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-inner { + width: 15px; +} + +/* line 75, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb { + width: 15px; + height: 14px; + margin-bottom: -7px; + background-image: url(images/slider/slider-v-thumb.png); +} + +/* line 82, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb-over { + background-position: -15px -14px; +} + +/* line 86, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert .x-slider-thumb-drag { + background-position: -30px -28px; +} + +/* line 92, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-horz, +.x-slider-horz .x-slider-end, +.x-slider-horz .x-slider-inner { + background-image: url(images/slider/slider-bg.png); +} + +/* line 98, ../../../ext-theme-neutral/sass/src/slider/Multi.scss */ +.x-slider-vert, +.x-slider-vert .x-slider-end, +.x-slider-vert .x-slider-inner { + background-image: url(images/slider/slider-v-bg.png); +} + +/** + * Creates a visual theme for a Tab + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-background-color=$tab-base-color] + * The background-color of Tabs + * + * @param {color} [$ui-background-color-over=$tab-base-color-over] + * The background-color of hovered Tabs + * + * @param {color} [$ui-background-color-active=$tab-base-color-active] + * The background-color of the active Tab + * + * @param {color} [$ui-background-color-disabled=$tab-base-color-disabled] + * The background-color of disabled Tabs + * + * @param {list} [$ui-border-radius=$tab-border-radius] + * The border-radius of Tabs + * + * @param {number} [$ui-border-width=$tab-border-width] + * The border-width of Tabs + * + * @param {number/list} [$ui-margin=$tab-margin] + * The border-width of Tabs + * + * @param {number/list} [$ui-padding=$tab-padding] + * The padding of Tabs + * + * @param {number/list} [$ui-text-padding=$tab-text-padding] + * The padding of the Tab's text element + * + * @param {color} [$ui-border-color=$tab-border-color] + * The border-color of Tabs + * + * @param {color} [$ui-border-color-over=$tab-border-color-over] + * The border-color of hovered Tabs + * + * @param {color} [$ui-border-color-active=$tab-border-color-active] + * The border-color of the active Tab + * + * @param {color} [$ui-border-color-disabled=$tab-border-color-disabled] + * The border-color of disabled Tabs + * + * @param {string} [$ui-cursor=$tab-cursor] + * The Tab cursor + * + * @param {string} [$ui-cursor-disabled=$tab-cursor-disabled] + * The cursor of disabled Tabs + * + * @param {number} [$ui-font-size=$tab-font-size] + * The font-size of Tabs + * + * @param {number} [$ui-font-size-over=$tab-font-size-over] + * The font-size of hovered Tabs + * + * @param {number} [$ui-font-size-active=$tab-font-size-active] + * The font-size of the active Tab + * + * @param {number} [$ui-font-size-disabled=$tab-font-size-disabled] + * The font-size of disabled Tabs + * + * @param {string} [$ui-font-weight=$tab-font-weight] + * The font-weight of Tabs + * + * @param {string} [$ui-font-weight-over=$tab-font-weight-over] + * The font-weight of hovered Tabs + * + * @param {string} [$ui-font-weight-active=$tab-font-weight-active] + * The font-weight of the active Tab + * + * @param {string} [$ui-font-weight-disabled=$tab-font-weight-disabled] + * The font-weight of disabled Tabs + * + * @param {string} [$ui-font-family=$tab-font-family] + * The font-family of Tabs + * + * @param {string} [$ui-font-family-over=$tab-font-family-over] + * The font-family of hovered Tabs + * + * @param {string} [$ui-font-family-active=$tab-font-family-active] + * The font-family of the active Tab + * + * @param {string} [$ui-font-family-disabled=$tab-font-family-disabled] + * The font-family of disabled Tabs + * + * @param {number} [$ui-line-height=$tab-line-height] + * The line-height of Tabs + * + * @param {color} [$ui-color=$tab-color] + * The text color of Tabs + * + * @param {color} [$ui-color-over=$tab-color-over] + * The text color of hovered Tabs + * + * @param {color} [$ui-color-active=$tab-color-active] + * The text color of the active Tab + * + * @param {color} [$ui-color-disabled=$tab-color-disabled] + * The text color of disabled Tabs + * + * @param {string/list} [$ui-background-gradient=$tab-background-gradient] + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-over=$tab-background-gradient-over] + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-active=$tab-background-gradient-active] + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-background-gradient-disabled=$tab-background-gradient-disabled] + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-inner-border-width=$tab-inner-border-width] + * The inner border-width of Tabs + * + * @param {color} [$ui-inner-border-color=$tab-inner-border-color] + * The inner border-color of Tabs + * + * @param {number} [$ui-icon-width=$tab-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-icon-height=$tab-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-icon-spacing=$tab-icon-spacing] + * the space in between the text and the close button + * + * @param {list} [$ui-icon-background-position=$tab-icon-background-position] + * The background-position of Tab icons + * + * @param {color} [$ui-glyph-color=$tab-glyph-color] + * The color of Tab glyph icons + * + * @param {color} [$ui-glyph-color-over=$tab-glyph-color-over] + * The color of a Tab glyph icon when the Tab is hovered + * + * @param {color} [$ui-glyph-color-active=$tab-glyph-color-active] + * The color of a Tab glyph icon when the Tab is active + * + * @param {color} [$ui-glyph-color-disabled=$tab-glyph-color-disabled] + * The color of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-glyph-opacity=$tab-glyph-opacity] + * The opacity of a Tab glyph icon + * + * @param {number} [$ui-glyph-opacity-disabled=$tab-glyph-opacity-disabled] + * The opacity of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-opacity-disabled=$tab-opacity-disabled] + * opacity to apply to the tab's main element when the tab is disabled + * + * @param {number} [$ui-text-opacity-disabled=$tab-text-opacity-disabled] + * opacity to apply to the tab's text element when the tab is disabled + * + * @param {number} [$ui-icon-opacity-disabled=$tab-icon-opacity-disabled] + * opacity to apply to the tab's icon element when the tab is disabled + * + * @param {number} [$ui-closable-icon-width=$tab-closable-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-closable-icon-height=$tab-closable-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-closable-icon-top=$tab-closable-icon-top] + * The distance to offset the Tab close icon from the top of the tab + * + * @param {number} [$ui-closable-icon-right=$tab-closable-icon-right] + * The distance to offset the Tab close icon from the right of the tab + * + * @param {number} [$ui-closable-icon-spacing=$tab-closable-icon-spacing] + * The space in between the text and the close button + * + * @param {color} [$ui-border-bottom-color=$tabbar-strip-border-color] + * The bottom border color of inactive tabs. + * + * @member Ext.tab.Tab + */ +/** + * Creates a visual theme for a Tab Bar + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {number} [$ui-strip-height=$tabbar-strip-height] + * The height of the Tab Bar strip + * + * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width] + * The border-width of the Tab Bar strip + * + * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width] + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + * + * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color] + * The border-color of the Tab Bar strip + * + * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color] + * The background-color of the Tab Bar strip + * + * @param {number/list} [$ui-border-width=$tabbar-border-width] + * The border-width of the Tab Bar + * + * @param {color} [$ui-border-color=$tabbar-border-color] + * The border-color of the Tab Bar + * + * @param {number/list} [$ui-padding=$tabbar-padding] + * The padding of the Tab Bar + * + * @param {color} [$ui-background-color=$tabbar-background-color] + * The background color of the Tab Bar + * + * @param {string/list} [$ui-background-gradient=$tabbar-background-gradient] + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-scroller-width=$tabbar-scroller-width] + * The width of the Tab Bar scrollers + * + * @param {string} [$ui-scroller-cursor=$tabbar-scroller-cursor] + * The cursor of the Tab Bar scrollers + * + * @param {string} [$ui-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled] + * The cursor of disabled Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity=$tabbar-scroller-opacity] + * The opacity of Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-over=$tabbar-scroller-opacity-over] + * The opacity of hovered Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed] + * The opacity of pressed Tab Bar scrollers + * + * @param {number} [$ui-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled] + * The opacity of disabled Tab Bar scrollers + * + * @param {number} [$ui-tab-height] + * The height of tabs that will be used in this tabbar UI. The tabbar body is given + * a fixed height to leave room for the tabs, and so that the tabbar does not collapse + * when it does not contain any tabs. + * + * @member Ext.tab.Bar + */ +/** + * Creates a visual theme for a Tab Panel + * + * @param {string} $ui + * The name of the UI being created. Can not included spaces or special punctuation + * (used in CSS class names). + * + * @param {color} [$ui-tab-background-color=$tab-base-color] + * The background-color of Tabs + * + * @param {color} [$ui-tab-background-color-over=$tab-base-color-over] + * The background-color of hovered Tabs + * + * @param {color} [$ui-tab-background-color-active=$tab-base-color-active] + * The background-color of the active Tab + * + * @param {color} [$ui-tab-background-color-disabled=$tab-base-color-disabled] + * The background-color of disabled Tabs + * + * @param {list} [$ui-tab-border-radius=$tab-border-radius] + * The border-radius of Tabs + * + * @param {number} [$ui-tab-border-width=$tab-border-width] + * The border-width of Tabs + * + * @param {number/list} [$ui-tab-margin=$tab-margin] + * The border-width of Tabs + * + * @param {number/list} [$ui-tab-padding=$tab-padding] + * The padding of Tabs + * + * @param {number/list} [$ui-tab-text-padding=$tab-text-padding] + * The padding of the Tab's text element + * + * @param {color} [$ui-tab-border-color=$tab-border-color] + * The border-color of Tabs + * + * @param {color} [$ui-tab-border-color-over=$tab-border-color-over] + * The border-color of hovered Tabs + * + * @param {color} [$ui-tab-border-color-active=$tab-border-color-active] + * The border-color of the active Tab + * + * @param {color} [$ui-tab-border-color-disabled=$tab-border-color-disabled] + * The border-color of disabled Tabs + * + * @param {string} [$ui-tab-cursor=$tab-cursor] + * The Tab cursor + * + * @param {string} [$ui-tab-cursor-disabled=$tab-cursor-disabled] + * The cursor of disabled Tabs + * + * @param {number} [$ui-tab-font-size=$tab-font-size] + * The font-size of Tabs + * + * @param {number} [$ui-tab-font-size-over=$tab-font-size-over] + * The font-size of hovered Tabs + * + * @param {number} [$ui-tab-font-size-active=$tab-font-size-active] + * The font-size of the active Tab + * + * @param {number} [$ui-tab-font-size-disabled=$tab-font-size-disabled] + * The font-size of disabled Tabs + * + * @param {string} [$ui-tab-font-weight=$tab-font-weight] + * The font-weight of Tabs + * + * @param {string} [$ui-tab-font-weight-over=$tab-font-weight-over] + * The font-weight of hovered Tabs + * + * @param {string} [$ui-tab-font-weight-active=$tab-font-weight-active] + * The font-weight of the active Tab + * + * @param {string} [$ui-tab-font-weight-disabled=$tab-font-weight-disabled] + * The font-weight of disabled Tabs + * + * @param {string} [$ui-tab-font-family=$tab-font-family] + * The font-family of Tabs + * + * @param {string} [$ui-tab-font-family-over=$tab-font-family-over] + * The font-family of hovered Tabs + * + * @param {string} [$ui-tab-font-family-active=$tab-font-family-active] + * The font-family of the active Tab + * + * @param {string} [$ui-tab-font-family-disabled=$tab-font-family-disabled] + * The font-family of disabled Tabs + * + * @param {number} [$ui-tab-line-height=$tab-line-height] + * The line-height of Tabs + * + * @param {color} [$ui-tab-color=$tab-color] + * The text color of Tabs + * + * @param {color} [$ui-tab-color-over=$tab-color-over] + * The text color of hovered Tabs + * + * @param {color} [$ui-tab-color-active=$tab-color-active] + * The text color of the active Tab + * + * @param {color} [$ui-tab-color-disabled=$tab-color-disabled] + * The text color of disabled Tabs + * + * @param {string/list} [$ui-tab-background-gradient=$tab-background-gradient] + * The background-gradient for Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-over=$tab-background-gradient-over] + * The background-gradient for hovered Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-active=$tab-background-gradient-active] + * The background-gradient for the active Tab. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {string/list} [$ui-tab-background-gradient-disabled=$tab-background-gradient-disabled] + * The background-gradient for disabled Tabs. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-tab-inner-border-width=$tab-inner-border-width] + * The inner border-width of Tabs + * + * @param {color} [$ui-tab-inner-border-color=$tab-inner-border-color] + * The inner border-color of Tabs + * + * @param {number} [$ui-tab-icon-width=$tab-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-tab-icon-height=$tab-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-tab-icon-spacing=$tab-icon-spacing] + * the space in between the text and the close button + * + * @param {list} [$ui-tab-icon-background-position=$tab-icon-background-position] + * The background-position of Tab icons + * + * @param {color} [$ui-tab-glyph-color=$tab-glyph-color] + * The color of Tab glyph icons + * + * @param {color} [$ui-tab-glyph-color-over=$tab-glyph-color-over] + * The color of a Tab glyph icon when the Tab is hovered + * + * @param {color} [$ui-tab-glyph-color-active=$tab-glyph-color-active] + * The color of a Tab glyph icon when the Tab is active + * + * @param {color} [$ui-tab-glyph-color-disabled=$tab-glyph-color-disabled] + * The color of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-tab-glyph-opacity=$tab-glyph-opacity] + * The opacity of a Tab glyph icon + * + * @param {number} [$ui-tab-glyph-opacity-disabled=$tab-glyph-opacity-disabled] + * The opacity of a Tab glyph icon when the Tab is disabled + * + * @param {number} [$ui-tab-opacity-disabled=$tab-opacity-disabled] + * opacity to apply to the tab's main element when the tab is disabled + * + * @param {number} [$ui-tab-text-opacity-disabled=$tab-text-opacity-disabled] + * opacity to apply to the tab's text element when the tab is disabled + * + * @param {number} [$ui-tab-icon-opacity-disabled=$tab-icon-opacity-disabled] + * opacity to apply to the tab's icon element when the tab is disabled + * + * @param {number} [$ui-strip-height=$tabbar-strip-height] + * The height of the Tab Bar strip + * + * @param {number/list} [$ui-strip-border-width=$tabbar-strip-border-width] + * The border-width of the Tab Bar strip + * + * @param {number/list} [$ui-strip-plain-border-width=$tabbar-strip-plain-border-width] + * The border-width of the {@link Ext.tab.Panel#plain plain} Tab Bar strip + * + * @param {color} [$ui-strip-border-color=$tabbar-strip-border-color] + * The border-color of the Tab Bar strip + * + * @param {color} [$ui-strip-background-color=$tabbar-strip-background-color] + * The background-color of the Tab Bar strip + * + * @param {number/list} [$ui-bar-border-width=$tabbar-border-width] + * The border-width of the Tab Bar + * + * @param {color} [$ui-bar-border-color=$tabbar-border-color] + * The border-color of the Tab Bar + * + * @param {number/list} [$ui-bar-padding=$tabbar-padding] + * The padding of the Tab Bar + * + * @param {color} [$ui-bar-background-color=$tabbar-background-color] + * The background color of the Tab Bar + * + * @param {string/list} [$ui-bar-background-gradient=$tabbar-background-gradient] + * The background-gradient of the Tab Bar. Can be either the name of a predefined gradient + * or a list of color stops. Used as the `$type` parameter for + * {@link Global_CSS#background-gradient}. + * + * @param {number} [$ui-bar-scroller-width=$tabbar-scroller-width] + * The width of the Tab Bar scrollers + * + * @param {string} [$ui-bar-scroller-cursor=$tabbar-scroller-cursor] + * The cursor of the Tab Bar scrollers + * + * @param {string} [$ui-bar-scroller-cursor-disabled=$tabbar-scroller-cursor-disabled] + * The cursor of disabled Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity=$tabbar-scroller-opacity] + * The opacity of Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-over=$tabbar-scroller-opacity-over] + * The opacity of hovered Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-pressed=$tabbar-scroller-opacity-pressed] + * The opacity of pressed Tab Bar scrollers + * + * @param {number} [$ui-bar-scroller-opacity-disabled=$tabbar-scroller-opacity-disabled] + * The opacity of disabled Tab Bar scrollers + * + * @param {number} [$ui-tab-closable-icon-width=$tab-closable-icon-width] + * The width of the Tab close icon + * + * @param {number} [$ui-tab-closable-icon-height=$tab-closable-icon-height] + * The height of the Tab close icon + * + * @param {number} [$ui-tab-closable-icon-top=$tab-closable-icon-top] + * The distance to offset the Tab close icon from the top of the tab + * + * @param {number} [$ui-tab-closable-icon-right=$tab-closable-icon-right] + * The distance to offset the Tab close icon from the right of the tab + * + * @param {number} [$ui-tab-closable-icon-spacing=$tab-closable-icon-spacing] + * the space in between the text and the close button + * + * @member Ext.tab.Panel + */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-top { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-top { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-top-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tr, +.x-tab-default-top-br, +.x-tab-default-top-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl, +.x-tab-default-top-bl, +.x-tab-default-top-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-tl, +.x-tab-default-top-bl, +.x-tab-default-top-tr, +.x-tab-default-top-br, +.x-tab-default-top-tc, +.x-tab-default-top-bc, +.x-tab-default-top-ml, +.x-tab-default-top-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-ml, +.x-tab-default-top-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-top-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-top-tl, +.x-strict .x-ie7 .x-tab-default-top-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + padding: 3px 9px 3px 9px; + border-width: 0 1px 1px 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mc { + background-image: url(images/tab/tab-default-bottom-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-bottom { + background-image: url(images/tab/tab-default-bottom-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-bottom { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-bottom-frameInfo { + font-family: th-0-0-4-4-0-1-1-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tr, +.x-tab-default-bottom-br, +.x-tab-default-bottom-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl, +.x-tab-default-bottom-bl, +.x-tab-default-bottom-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tc { + height: 0; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-bc { + height: 4px; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-tl, +.x-tab-default-bottom-bl, +.x-tab-default-bottom-tr, +.x-tab-default-bottom-br, +.x-tab-default-bottom-tc, +.x-tab-default-bottom-bc, +.x-tab-default-bottom-ml, +.x-tab-default-bottom-mr { + zoom: 1; + background-image: url(images/tab/tab-default-bottom-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-ml, +.x-tab-default-bottom-mr { + zoom: 1; + background-image: url(images/tab/tab-default-bottom-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-bottom-mc { + padding: 3px 6px 0px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-bottom-tl, +.x-strict .x-ie7 .x-tab-default-bottom-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-left { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-left { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-left-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tr, +.x-tab-default-left-br, +.x-tab-default-left-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl, +.x-tab-default-left-bl, +.x-tab-default-left-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-tl, +.x-tab-default-left-bl, +.x-tab-default-left-tr, +.x-tab-default-left-br, +.x-tab-default-left-tc, +.x-tab-default-left-bc, +.x-tab-default-left-ml, +.x-tab-default-left-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-ml, +.x-tab-default-left-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-left-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-left-tl, +.x-strict .x-ie7 .x-tab-default-left-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-left:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 137, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 3px 9px 3px 9px; + border-width: 1px 1px 0 1px; + border-style: solid; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); +} + +/* line 189, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mc { + background-image: url(images/tab/tab-default-top-fbg.gif); + background-position: 0 top; + background-color: #deecfd; +} + +/* line 212, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nlg .x-tab-default-right { + background-image: url(images/tab/tab-default-top-bg.gif); + background-position: 0 top; +} + +/* line 235, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-nbr .x-tab-default-right { + padding: 0 !important; + border-width: 0 !important; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -ms-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + background-color: transparent; + background-image: none; +} + +/* line 255, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +body.x-nbr .x-tab-default-right-frameInfo { + font-family: th-4-4-0-0-1-1-0-1-3-9-3-9; +} + +/* line 322, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl { + background-position: 0 -8px; +} + +/* line 326, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tr { + background-position: right -12px; +} + +/* line 330, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bl { + background-position: 0 -16px; +} + +/* line 334, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-br { + background-position: right -20px; +} + +/* line 338, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-ml { + background-position: 0 top; +} + +/* line 342, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mr { + background-position: right top; +} + +/* line 346, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tc { + background-position: 0 0; +} + +/* line 350, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bc { + background-position: 0 -4px; +} + +/* line 357, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tr, +.x-tab-default-right-br, +.x-tab-default-right-mr { + padding-right: 4px; +} + +/* line 363, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl, +.x-tab-default-right-bl, +.x-tab-default-right-ml { + padding-left: 4px; +} + +/* line 367, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tc { + height: 4px; +} + +/* line 370, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-bc { + height: 0; +} + +/* line 381, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-tl, +.x-tab-default-right-bl, +.x-tab-default-right-tr, +.x-tab-default-right-br, +.x-tab-default-right-tc, +.x-tab-default-right-bc, +.x-tab-default-right-ml, +.x-tab-default-right-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-corners.gif); +} + +/* line 425, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-ml, +.x-tab-default-right-mr { + zoom: 1; + background-image: url(images/tab/tab-default-top-sides.gif); +} + +/* line 437, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-tab-default-right-mc { + padding: 0px 6px 3px 6px; +} + +/* line 446, ../../../ext-theme-base/sass/etc/mixins/frame.scss */ +.x-strict .x-ie7 .x-tab-default-right-tl, +.x-strict .x-ie7 .x-tab-default-right-bl { + position: relative; + right: 0; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-right:after { + display: none; + content: "x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 307, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default { + border-color: #8db3e3; + margin: 0 0 0 2px; + cursor: pointer; +} +/* line 312, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-inner { + font-size: 11px; + font-weight: bold; + font-family: tahoma, arial, verdana, sans-serif; + color: #416da3; + line-height: 13px; +} +/* line 322, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-icon-el { + width: 16px; + height: 16px; + line-height: 16px; + background-position: center center; +} +/* line 329, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-glyph { + font-size: 16px; + color: #416da3; + opacity: 0.5; +} +/* line 343, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default .x-tab-glyph { + color: #8facd0; +} +/* line 351, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default { + padding-left: 0; +} +/* line 354, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button { + padding-left: 9px; +} +/* line 358, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el { + left: 9px; +} + +/* line 366, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-icon .x-tab-inner { + width: 16px; +} + +/* line 373, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default { + margin: 0 2px 0 0; +} + +/* line 379, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default { + margin: 0 2px 0 0; +} + +/* line 384, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-left { + margin: 0 2px 0 0; +} + +/* line 389, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default-left { + margin: 0 0 0 2px; +} + +/* line 396, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top, +.x-tab-default-left, +.x-tab-default-right { + border-bottom: 1px solid #99bce8; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(top, #ccdef6, #d6e6fa 25%, #deecfd 45%); + -webkit-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + -moz-box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + box-shadow: white 0 1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; +} +/* line 403, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top, .x-nlg +.x-tab-default-left, .x-nlg +.x-tab-default-right { + background-image: url(images/tab/tab-default-top-bg.gif); +} + +/* line 417, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom { + border-top: 1px solid #99bce8; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ccdef6), color-stop(25%, #d6e6fa), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ccdef6, #d6e6fa 25%, #deecfd 45%); + -webkit-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + -moz-box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; + box-shadow: white 0 -1px 0px 0 inset, white -1px 0 0px 0 inset, white 1px 0 0px 0 inset; +} +/* line 424, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom { + background-image: url(images/tab/tab-default-bottom-bg.gif); +} + +/* line 438, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-left { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-tab-default-left { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +/* line 449, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default-left { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-rtl.x-tab-default-left { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +/* line 454, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-right { + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-tab-default-right { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} + +/* line 465, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default-right { + -webkit-transform: rotate(270deg); + -webkit-transform-origin: 100% 0; + -moz-transform: rotate(270deg); + -moz-transform-origin: 100% 0; + -o-transform: rotate(270deg); + -o-transform-origin: 100% 0; + transform: rotate(270deg); + transform-origin: 100% 0; +} +/* line 36, ../../../ext-theme-base/sass/etc/mixins/rotate-element.scss */ +.x-ie9m .x-rtl.x-tab-default-right { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} + +/* line 471, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-icon-text-left .x-tab-inner { + padding-left: 20px; +} + +/* line 478, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default-icon-text-left .x-tab-inner { + padding-left: 0; + padding-right: 20px; +} + +/* line 485, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-over { + background-color: #e8f2ff; +} +/* line 509, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-over .x-tab-glyph { + color: #416da3; +} +/* line 516, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-over .x-tab-glyph { + color: #94afd1; +} + +/* line 525, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over, +.x-tab-default-left-over, +.x-tab-default-right-over { + background-image: none; + background-color: #e8f2ff; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff)); + background-image: -webkit-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -moz-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -o-linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: linear-gradient(top, #d7e5fd, #e0edff 25%, #e8f2ff 45%); +} +/* line 529, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-over, .x-nlg +.x-tab-default-left-over, .x-nlg +.x-tab-default-right-over { + background-image: url(images/tab/tab-default-top-over-bg.gif); +} + +/* line 534, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over { + background-image: none; + background-color: #e8f2ff; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #d7e5fd), color-stop(25%, #e0edff), color-stop(45%, #e8f2ff)); + background-image: -webkit-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -moz-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: -o-linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); + background-image: linear-gradient(bottom, #d7e5fd, #e0edff 25%, #e8f2ff 45%); +} +/* line 538, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-over { + background-image: url(images/tab/tab-default-bottom-over-bg.gif); +} + +/* line 545, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active { + background-color: #deecfd; +} +/* line 551, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active .x-tab-inner { + color: #15498b; +} +/* line 566, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-active .x-tab-glyph { + color: #15498b; +} +/* line 573, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-active .x-tab-glyph { + color: #799ac4; +} + +/* line 581, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active, +.x-tab-default-left-active, +.x-tab-default-right-active { + border-bottom: 1px solid #deecfd; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -moz-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -o-linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: linear-gradient(top, #ffffff, #f5f9fe 25%, #deecfd 45%); +} +/* line 587, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-active, .x-nlg +.x-tab-default-left-active, .x-nlg +.x-tab-default-right-active { + background-image: url(images/tab/tab-default-top-active-bg.gif); +} + +/* line 594, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active { + border-top: 1px solid #deecfd; + background-image: none; + background-color: #deecfd; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #ffffff), color-stop(25%, #f5f9fe), color-stop(45%, #deecfd)); + background-image: -webkit-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -moz-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: -o-linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); + background-image: linear-gradient(bottom, #ffffff, #f5f9fe 25%, #deecfd 45%); +} +/* line 600, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-active { + background-image: url(images/tab/tab-default-bottom-active-bg.gif); +} + +/* line 607, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled { + border-color: #bbd2ef; + cursor: default; +} +/* line 620, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-inner { + color: #c3b3b3; +} +/* line 639, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-icon-el { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; +} +/* line 644, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-glyph { + color: #c3b3b3; + opacity: 0.3; + filter: none; +} +/* line 658, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-ie8m .x-tab-default-disabled .x-tab-glyph { + color: #d8dae4; +} + +/* line 667, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled, +.x-tab-default-left-disabled, +.x-tab-default-right-disabled { + border-color: #bbd2ef #bbd2ef #99bce8; +} + +/* line 671, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled { + border-color: #99bce8 #bbd2ef #bbd2ef #bbd2ef; +} + +/* line 678, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled, +.x-tab-default-left-disabled, +.x-tab-default-right-disabled { + background-image: none; + background-color: #e1ecfa; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe)); + background-image: -webkit-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: -moz-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: -o-linear-gradient(top, #e1ecfa, #ecf4fe); + background-image: linear-gradient(top, #e1ecfa, #ecf4fe); +} +/* line 682, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-top-disabled, .x-nlg +.x-tab-default-left-disabled, .x-nlg +.x-tab-default-right-disabled { + background-image: url(images/tab/tab-default-top-disabled-bg.gif); +} + +/* line 687, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled { + background-image: none; + background-color: #e1ecfa; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e1ecfa), color-stop(100%, #ecf4fe)); + background-image: -webkit-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: -moz-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: -o-linear-gradient(bottom, #e1ecfa, #ecf4fe); + background-image: linear-gradient(bottom, #e1ecfa, #ecf4fe); +} +/* line 691, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nlg .x-tab-default-bottom-disabled { + background-image: url(images/tab/tab-default-bottom-disabled-bg.gif); +} + +/* line 699, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default { + background-image: none; +} + +/* line 710, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-tl, +.x-tab-default-top-over .x-frame-bl, +.x-tab-default-top-over .x-frame-tr, +.x-tab-default-top-over .x-frame-br, +.x-tab-default-top-over .x-frame-tc, +.x-tab-default-top-over .x-frame-bc, +.x-tab-default-left-over .x-frame-tl, +.x-tab-default-left-over .x-frame-bl, +.x-tab-default-left-over .x-frame-tr, +.x-tab-default-left-over .x-frame-br, +.x-tab-default-left-over .x-frame-tc, +.x-tab-default-left-over .x-frame-bc, +.x-tab-default-right-over .x-frame-tl, +.x-tab-default-right-over .x-frame-bl, +.x-tab-default-right-over .x-frame-tr, +.x-tab-default-right-over .x-frame-br, +.x-tab-default-right-over .x-frame-tc, +.x-tab-default-right-over .x-frame-bc { + background-image: url(images/tab/tab-default-top-over-corners.gif); +} +/* line 714, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-ml, +.x-tab-default-top-over .x-frame-mr, +.x-tab-default-left-over .x-frame-ml, +.x-tab-default-left-over .x-frame-mr, +.x-tab-default-right-over .x-frame-ml, +.x-tab-default-right-over .x-frame-mr { + background-image: url(images/tab/tab-default-top-over-sides.gif); +} +/* line 717, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-over .x-frame-mc, +.x-tab-default-left-over .x-frame-mc, +.x-tab-default-right-over .x-frame-mc { + background-color: #e8f2ff; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-over-fbg.gif); +} + +/* line 732, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-tl, +.x-tab-default-bottom-over .x-frame-bl, +.x-tab-default-bottom-over .x-frame-tr, +.x-tab-default-bottom-over .x-frame-br, +.x-tab-default-bottom-over .x-frame-tc, +.x-tab-default-bottom-over .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-over-corners.gif); +} +/* line 736, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-ml, +.x-tab-default-bottom-over .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-over-sides.gif); +} +/* line 739, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-over .x-frame-mc { + background-color: #e8f2ff; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-over-fbg.gif); +} + +/* line 756, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-tl, +.x-tab-default-top-active .x-frame-bl, +.x-tab-default-top-active .x-frame-tr, +.x-tab-default-top-active .x-frame-br, +.x-tab-default-top-active .x-frame-tc, +.x-tab-default-top-active .x-frame-bc, +.x-tab-default-left-active .x-frame-tl, +.x-tab-default-left-active .x-frame-bl, +.x-tab-default-left-active .x-frame-tr, +.x-tab-default-left-active .x-frame-br, +.x-tab-default-left-active .x-frame-tc, +.x-tab-default-left-active .x-frame-bc, +.x-tab-default-right-active .x-frame-tl, +.x-tab-default-right-active .x-frame-bl, +.x-tab-default-right-active .x-frame-tr, +.x-tab-default-right-active .x-frame-br, +.x-tab-default-right-active .x-frame-tc, +.x-tab-default-right-active .x-frame-bc { + background-image: url(images/tab/tab-default-top-active-corners.gif); +} +/* line 760, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-ml, +.x-tab-default-top-active .x-frame-mr, +.x-tab-default-left-active .x-frame-ml, +.x-tab-default-left-active .x-frame-mr, +.x-tab-default-right-active .x-frame-ml, +.x-tab-default-right-active .x-frame-mr { + background-image: url(images/tab/tab-default-top-active-sides.gif); +} +/* line 763, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-active .x-frame-mc, +.x-tab-default-left-active .x-frame-mc, +.x-tab-default-right-active .x-frame-mc { + background-color: #deecfd; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-active-fbg.gif); +} + +/* line 778, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-tl, +.x-tab-default-bottom-active .x-frame-bl, +.x-tab-default-bottom-active .x-frame-tr, +.x-tab-default-bottom-active .x-frame-br, +.x-tab-default-bottom-active .x-frame-tc, +.x-tab-default-bottom-active .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-active-corners.gif); +} +/* line 782, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-ml, +.x-tab-default-bottom-active .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-active-sides.gif); +} +/* line 785, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-active .x-frame-mc { + background-color: #deecfd; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-active-fbg.gif); +} + +/* line 802, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-tl, +.x-tab-default-top-disabled .x-frame-bl, +.x-tab-default-top-disabled .x-frame-tr, +.x-tab-default-top-disabled .x-frame-br, +.x-tab-default-top-disabled .x-frame-tc, +.x-tab-default-top-disabled .x-frame-bc, +.x-tab-default-left-disabled .x-frame-tl, +.x-tab-default-left-disabled .x-frame-bl, +.x-tab-default-left-disabled .x-frame-tr, +.x-tab-default-left-disabled .x-frame-br, +.x-tab-default-left-disabled .x-frame-tc, +.x-tab-default-left-disabled .x-frame-bc, +.x-tab-default-right-disabled .x-frame-tl, +.x-tab-default-right-disabled .x-frame-bl, +.x-tab-default-right-disabled .x-frame-tr, +.x-tab-default-right-disabled .x-frame-br, +.x-tab-default-right-disabled .x-frame-tc, +.x-tab-default-right-disabled .x-frame-bc { + background-image: url(images/tab/tab-default-top-disabled-corners.gif); +} +/* line 806, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-ml, +.x-tab-default-top-disabled .x-frame-mr, +.x-tab-default-left-disabled .x-frame-ml, +.x-tab-default-left-disabled .x-frame-mr, +.x-tab-default-right-disabled .x-frame-ml, +.x-tab-default-right-disabled .x-frame-mr { + background-image: url(images/tab/tab-default-top-disabled-sides.gif); +} +/* line 809, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-top-disabled .x-frame-mc, +.x-tab-default-left-disabled .x-frame-mc, +.x-tab-default-right-disabled .x-frame-mc { + background-color: #e1ecfa; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-top-disabled-fbg.gif); +} + +/* line 824, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-tl, +.x-tab-default-bottom-disabled .x-frame-bl, +.x-tab-default-bottom-disabled .x-frame-tr, +.x-tab-default-bottom-disabled .x-frame-br, +.x-tab-default-bottom-disabled .x-frame-tc, +.x-tab-default-bottom-disabled .x-frame-bc { + background-image: url(images/tab/tab-default-bottom-disabled-corners.gif); +} +/* line 828, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-ml, +.x-tab-default-bottom-disabled .x-frame-mr { + background-image: url(images/tab/tab-default-bottom-disabled-sides.gif); +} +/* line 831, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-bottom-disabled .x-frame-mc { + background-color: #e1ecfa; + background-repeat: repeat-x; + background-image: url(images/tab/tab-default-bottom-disabled-fbg.gif); +} + +/* line 850, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default-top, +.x-nbr .x-tab-default-left, +.x-nbr .x-tab-default-right { + border-bottom-width: 1px !important; +} +/* line 853, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-nbr .x-tab-default-bottom { + border-top-width: 1px !important; +} + +/* line 861, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn { + width: 11px; + height: 11px; + background-image: url(images/tab/tab-default-close.gif); + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=60); + opacity: 0.6; +} +/* line 870, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn-over { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} + +/* line 880, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default .x-tab-close-btn { + top: 2px; + right: 2px; +} + +/* line 886, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default .x-tab-close-btn { + right: auto; + left: 2px; +} + +/* line 924, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-disabled .x-tab-close-btn { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=30); + opacity: 0.3; +} + +/* line 939, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-tab-default-closable .x-tab-wrap { + padding-right: 14px; +} + +/* line 944, ../../../ext-theme-neutral/sass/src/tab/Tab.scss */ +.x-rtl.x-tab-default-closable .x-tab-wrap { + padding-right: 0px; + padding-left: 14px; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-over:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-over:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-active:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-active:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-top-disabled:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-default-bottom-disabled:after { + display: none; + content: "x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"; +} + +/*</if slicer>*/ +/* */ +/* line 94, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default { + border-style: solid; + border-color: #99bce8; +} + +/* line 100, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top { + padding: 1px 0 0; + border-width: 1px 1px 0; +} + +/* line 107, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom { + padding: 0 0 1px 0; + border-width: 0 1px 1px 1px; +} + +/* line 114, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left { + padding: 0 0 0 1px; + border-width: 1px 0 1px 1px; +} + +/* line 122, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-left { + padding: 0 1px 0 0; + border-width: 1px 1px 1px 0; +} + +/* line 130, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right { + padding: 0 1px 0 0; + border-width: 1px 1px 1px 0; +} + +/* line 138, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-right { + padding: 0 0 0 1px; + border-width: 1px 0 1px 1px; +} + +/* line 149, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-horizontal { + height: 25px; +} +/* line 153, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-default-horizontal { + height: 23px; +} + +/* line 161, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-vertical { + width: 25px; +} +/* line 165, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-default-vertical { + width: 23px; +} + +/* line 172, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-top { + padding-bottom: 2px; +} + +/* line 176, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-bottom { + padding-top: 2px; +} + +/* line 180, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-left { + padding-right: 2px; +} + +/* line 185, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-body-default-left { + padding-right: 0; + padding-left: 2px; +} + +/* line 191, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-body-default-right { + padding-left: 2px; +} + +/* line 196, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-body-default-right { + padding-left: 0; + padding-right: 2px; +} + +/* line 202, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default { + border-style: solid; + border-color: #99bce8; + background-color: #deecfd; +} + +/* line 210, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-strip-default-horizontal { + height: 2px; +} + +/* line 218, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-content-box .x-tab-bar-strip-default-vertical { + width: 2px; +} + +/* line 224, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-top { + border-width: 1px 0 0 0; + height: 3px; +} +/* line 227, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-top { + border-width: 1px 1px 0; +} + +/* line 232, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-bottom { + border-width: 0 0 1px 0; + height: 3px; +} +/* line 235, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-bottom { + border-width: 0 1px 1px 1px; +} + +/* line 240, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-left { + border-width: 0 0 0 1px; + width: 3px; +} +/* line 243, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-left { + border-width: 1px 0 1px 1px; +} + +/* line 249, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-strip-default-left { + border-width: 0 1px 0 0; +} +/* line 251, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left { + border-width: 1px 1px 1px 0; +} + +/* line 257, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-strip-default-right { + border-width: 0 1px 0 0; + width: 3px; +} +/* line 260, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-tab-bar-strip-default-right { + border-width: 1px 1px 1px 0; +} + +/* line 266, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-strip-default-right { + border-width: 0 0 0 1px; +} +/* line 268, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right { + border-width: 1px 0 1px 1px; +} + +/* line 274, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default { + background-color: #cbdbef; +} + +/* line 279, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(top, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(top, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(top, #dde8f5, #cbdbef); + background-image: linear-gradient(top, #dde8f5, #cbdbef); +} +/* line 283, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-top { + background: url(images/tab-bar/tab-bar-default-top-bg.gif); +} + +/* line 289, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(bottom, #dde8f5, #cbdbef); + background-image: linear-gradient(bottom, #dde8f5, #cbdbef); +} +/* line 293, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-bottom { + background: url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0; +} + +/* line 299, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(left, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(left, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(left, #dde8f5, #cbdbef); + background-image: linear-gradient(left, #dde8f5, #cbdbef); +} +/* line 303, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-left { + background: url(images/tab-bar/tab-bar-default-left-bg.gif); +} + +/* line 309, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right { + background-image: none; + background-color: #cbdbef; + background-image: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #dde8f5), color-stop(100%, #cbdbef)); + background-image: -webkit-linear-gradient(right, #dde8f5, #cbdbef); + background-image: -moz-linear-gradient(right, #dde8f5, #cbdbef); + background-image: -o-linear-gradient(right, #dde8f5, #cbdbef); + background-image: linear-gradient(right, #dde8f5, #cbdbef); +} +/* line 313, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-nlg .x-tab-bar-default-right { + background: url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right; +} + +/* line 323, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-box-scroller { + cursor: pointer; +} +/* line 363, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-left, +.x-tab-bar-default .x-tabbar-scroll-right { + height: 20px; + width: 18px; +} +/* line 369, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-top, +.x-tab-bar-default .x-tabbar-scroll-bottom { + width: 20px; + height: 18px; +} + +/* line 377, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-box-scroller { + margin-top: 1px; +} +/* line 381, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-box-scroller { + margin-left: 1px; +} +/* line 386, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-right .x-box-scroller { + margin-left: 0; + margin-right: 1px; +} + +/* line 456, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-left-top.gif); +} +/* line 459, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-top .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-right-top.gif); +} + +/* line 466, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-right-top.gif); +} +/* line 469, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-left-top.gif); +} + +/* line 476, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-left-bottom.gif); +} +/* line 479, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-bottom .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-right-bottom.gif); +} + +/* line 486, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left { + background-image: url(images/tab-bar/default-scroll-right-bottom.gif); +} +/* line 489, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right { + background-image: url(images/tab-bar/default-scroll-left-bottom.gif); +} + +/* line 496, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-left.gif); +} +/* line 499, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-left .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-left.gif); +} + +/* line 506, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-right.gif); +} +/* line 509, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-right.gif); +} + +/* line 516, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-right.gif); +} +/* line 519, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default-right .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-right.gif); +} + +/* line 526, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top { + background-image: url(images/tab-bar/default-scroll-top-left.gif); +} +/* line 529, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom { + background-image: url(images/tab-bar/default-scroll-bottom-left.gif); +} + +/* line 539, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-left-hover, +.x-tab-bar-default .x-tabbar-scroll-right-hover { + background-position: -18px 0; +} +/* line 544, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-tabbar-scroll-top-hover, +.x-tab-bar-default .x-tabbar-scroll-bottom-hover { + background-position: 0 -18px; +} +/* line 549, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-default .x-box-scroller-disabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; + cursor: default; +} + +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-top:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-bottom:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-left:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"; +} + +/*</if slicer>*/ +/* */ +/*<if slicer>*/ +/* line 78, ../../../ext-theme-base/sass/etc/mixins/slicer.scss */ +.x-tab-bar-default-right:after { + display: none; + content: "x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"; +} + +/*</if slicer>*/ +/* */ +/* line 998, ../../../ext-theme-neutral/sass/src/tab/Bar.scss */ +.x-tab-bar-plain { + border-width: 0; + padding: 0; + height: 23px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox { + border-color: #c5c5c5; +} + +/* line 6, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-row-checker, +.x-column-header-checkbox .x-column-header-text { + height: 13px; + width: 13px; + background-image: url(images/form/checkbox.gif); + line-height: 13px; +} + +/* line 15, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-column-header-checkbox .x-column-header-inner { + padding: 5px 5px 4px 5px; +} + +/* line 19, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-cell-row-checker .x-grid-cell-inner { + padding: 4px 5px 3px 5px; +} +/* line 23, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner { + padding-top: 3px; + padding-bottom: 2px; +} + +/* line 32, ../../../ext-theme-neutral/sass/src/selection/CheckboxModel.scss */ +.x-grid-hd-checker-on .x-column-header-text, +.x-grid-row-selected .x-grid-row-checker, +.x-grid-row-checked .x-grid-row-checker { + background-position: 0 -13px; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-expander { + cursor: pointer; +} + +/* line 7, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-tree-expander { + background-image: url(images/tree/arrows.gif); +} +/* line 11, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-tree-expander-over .x-tree-expander { + background-position: -32px center; +} +/* line 15, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander { + background-position: -16px center; +} +/* line 19, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander { + background-position: -48px center; +} +/* line 24, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-rtl.x-tree-expander { + background: url(images/tree/arrows-rtl.gif) no-repeat -48px center; +} +/* line 28, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander { + background-position: -16px center; +} +/* line 32, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander { + background-position: -32px center; +} +/* line 36, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander { + background-position: 0 center; +} + +/* line 44, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow { + background-image: url(images/tree/elbow.gif); +} +/* line 48, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-end { + background-image: url(images/tree/elbow-end.gif); +} +/* line 52, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-plus { + background-image: url(images/tree/elbow-plus.gif); +} +/* line 56, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-plus.gif); +} +/* line 60, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus { + background-image: url(images/tree/elbow-minus.gif); +} +/* line 64, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-minus.gif); +} +/* line 68, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-tree-elbow-line { + background-image: url(images/tree/elbow-line.gif); +} +/* line 73, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-rtl.x-tree-elbow { + background-image: url(images/tree/elbow-rtl.gif); +} +/* line 77, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-rtl.x-tree-elbow-end { + background-image: url(images/tree/elbow-end-rtl.gif); +} +/* line 81, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-rtl.x-tree-elbow-plus { + background-image: url(images/tree/elbow-plus-rtl.gif); +} +/* line 85, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-rtl.x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-plus-rtl.gif); +} +/* line 89, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus { + background-image: url(images/tree/elbow-minus-rtl.gif); +} +/* line 93, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus { + background-image: url(images/tree/elbow-end-minus-rtl.gif); +} +/* line 97, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-lines .x-rtl.x-tree-elbow-line { + background-image: url(images/tree/elbow-line-rtl.gif); +} + +/* line 104, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-tree-expander { + background-image: url(images/tree/elbow-plus-nl.gif); +} +/* line 108, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander { + background-image: url(images/tree/elbow-minus-nl.gif); +} +/* line 113, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-rtl.x-tree-expander { + background-image: url(images/tree/elbow-plus-nl-rtl.gif); +} +/* line 117, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander { + background-image: url(images/tree/elbow-minus-nl-rtl.gif); +} + +/* line 123, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon { + width: 16px; + height: 20px; +} + +/* line 128, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-elbow-img { + width: 16px; + height: 20px; + margin-right: 0; +} + +/* line 135, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-rtl.x-tree-elbow-img { + margin-right: 0; + margin-left: 0; +} + +/* line 143, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon, +.x-tree-elbow-img, +.x-tree-checkbox { + margin-top: -3px; + margin-bottom: -4px; +} + +/* line 151, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon-leaf { + background-image: url(images/tree/leaf.gif); +} + +/* line 156, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-rtl.x-tree-icon-leaf { + background-image: url(images/tree/leaf-rtl.gif); +} + +/* line 161, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-icon-parent { + background-image: url(images/tree/folder.gif); +} + +/* line 166, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-rtl.x-tree-icon-parent { + background-image: url(images/tree/folder-rtl.gif); +} + +/* line 171, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-node-expanded .x-tree-icon-parent { + background-image: url(images/tree/folder-open.gif); +} + +/* line 176, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent { + background-image: url(images/tree/folder-open-rtl.gif); +} + +/* line 181, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-checkbox { + margin-right: 3px; + top: 4px; + width: 13px; + height: 13px; + background-image: url(images/form/checkbox.gif); +} + +/* line 190, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-rtl.x-tree-checkbox { + margin-right: 0; + margin-left: 3px; +} + +/* line 196, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-checkbox-checked { + background-position: 0 -13px; +} + +/* line 200, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-loading .x-tree-icon { + background-image: url(images/tree/loading.gif); +} + +/* line 205, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-tree-loading .x-rtl.x-tree-icon { + background-image: url(images/tree/loading.gif); +} + +/* line 215, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-cell-inner-treecolumn { + font-size: 1px; + line-height: 0; +} + +/* line 221, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-tree-node-text { + font-size: 11px; + line-height: 13px; + padding-left: 3px; +} + +/* line 228, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-rtl.x-tree-node-text { + padding-left: 0; + padding-right: 3px; +} + +/* line 235, ../../../ext-theme-neutral/sass/src/tree/Panel.scss */ +.x-grid-cell-inner-treecolumn { + padding: 3px 6px 4px 0; +} + +/* line 1, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-append .x-dd-drop-icon { + background-image: url(images/tree/drop-append.gif); +} + +/* line 5, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-above .x-dd-drop-icon { + background-image: url(images/tree/drop-above.gif); +} + +/* line 9, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-below .x-dd-drop-icon { + background-image: url(images/tree/drop-below.gif); +} + +/* line 13, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-drop-ok-between .x-dd-drop-icon { + background-image: url(images/tree/drop-between.gif); +} + +/* line 17, ../../../ext-theme-neutral/sass/src/tree/ViewDropZone.scss */ +.x-tree-ddindicator { + height: 1px; + border-width: 1px 0px 0px; + border-style: dotted; + border-color: green; +} + +/* including package ext-theme-classic */ +/* line 2, ../../sass/src/dom/Element.scss */ +.x-box-tl { + background: transparent no-repeat 0 0; + zoom: 1; +} + +/* line 7, ../../sass/src/dom/Element.scss */ +.x-box-tc { + height: 8px; + background: transparent repeat-x 0 0; + overflow: hidden; +} + +/* line 13, ../../sass/src/dom/Element.scss */ +.x-box-tr { + background: transparent no-repeat right -8px; +} + +/* line 17, ../../sass/src/dom/Element.scss */ +.x-box-ml { + background: transparent repeat-y 0; + padding-left: 4px; + overflow: hidden; + zoom: 1; +} + +/* line 24, ../../sass/src/dom/Element.scss */ +.x-box-mc { + background: repeat-x 0 -16px; + padding: 4px 10px; +} + +/* line 29, ../../sass/src/dom/Element.scss */ +.x-box-mc h3 { + margin: 0 0 4px 0; + zoom: 1; +} + +/* line 34, ../../sass/src/dom/Element.scss */ +.x-box-mr { + background: transparent repeat-y right; + padding-right: 4px; + overflow: hidden; +} + +/* line 40, ../../sass/src/dom/Element.scss */ +.x-box-bl { + background: transparent no-repeat 0 -16px; + zoom: 1; +} + +/* line 45, ../../sass/src/dom/Element.scss */ +.x-box-bc { + background: transparent repeat-x 0 -8px; + height: 8px; + overflow: hidden; +} + +/* line 51, ../../sass/src/dom/Element.scss */ +.x-box-br { + background: transparent no-repeat right -24px; +} + +/* line 55, ../../sass/src/dom/Element.scss */ +.x-box-tl, .x-box-bl { + padding-left: 8px; + overflow: hidden; +} + +/* line 60, ../../sass/src/dom/Element.scss */ +.x-box-tr, .x-box-br { + padding-right: 8px; + overflow: hidden; +} + +/* line 65, ../../sass/src/dom/Element.scss */ +.x-box-tl { + background-image: url(images/box/corners.gif); +} + +/* line 69, ../../sass/src/dom/Element.scss */ +.x-box-tc { + background-image: url(images/box/tb.gif); +} + +/* line 73, ../../sass/src/dom/Element.scss */ +.x-box-tr { + background-image: url(images/box/corners.gif); +} + +/* line 77, ../../sass/src/dom/Element.scss */ +.x-box-ml { + background-image: url(images/box/l.gif); +} + +/* line 81, ../../sass/src/dom/Element.scss */ +.x-box-mc { + background-color: #eee; + background-image: url(images/box/tb.gif); + font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; + color: #393939; + font-size: 15px; +} + +/* line 89, ../../sass/src/dom/Element.scss */ +.x-box-mc h3 { + font-size: 18px; + font-weight: bold; +} + +/* line 94, ../../sass/src/dom/Element.scss */ +.x-box-mr { + background-image: url(images/box/r.gif); +} + +/* line 98, ../../sass/src/dom/Element.scss */ +.x-box-bl { + background-image: url(images/box/corners.gif); +} + +/* line 102, ../../sass/src/dom/Element.scss */ +.x-box-bc { + background-image: url(images/box/tb.gif); +} + +/* line 106, ../../sass/src/dom/Element.scss */ +.x-box-br { + background-image: url(images/box/corners.gif); +} + +/* line 110, ../../sass/src/dom/Element.scss */ +.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/box/corners-blue.gif); +} + +/* line 114, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { + background-image: url(images/box/tb-blue.gif); +} + +/* line 118, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mc { + background-color: #c3daf9; +} + +/* line 122, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mc h3 { + color: #17385b; +} + +/* line 126, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-ml { + background-image: url(images/box/l-blue.gif); +} + +/* line 130, ../../sass/src/dom/Element.scss */ +.x-box-blue .x-box-mr { + background-image: url(images/box/r-blue.gif); +} + +/* line 3, ../../sass/src/toolbar/Toolbar.scss */ +.x-rtl.x-toolbar-more-icon { + background-image: url(images/toolbar/more-left.gif) !important; +} + +/* line 2, ../../sass/src/window/MessageBox.scss */ +.x-message-box .x-msg-box-wait { + background-image: url(images/shared/blue-loading.gif); +} + +/* line 1, ../../sass/src/form/field/Trigger.scss */ +.x-form-trigger { + height: 22px; +} +/* line 5, ../../sass/src/form/field/Trigger.scss */ +.x-content-box .x-form-trigger { + height: 21px; +} + +/* line 12, ../../sass/src/form/field/Trigger.scss */ +.x-field-toolbar .x-form-trigger { + height: 20px; +} +/* line 16, ../../sass/src/form/field/Trigger.scss */ +.x-content-box .x-field-toolbar .x-form-trigger { + height: 19px; +} + +/* line 4, ../../sass/src/form/field/Spinner.scss */ +.x-content-box div.x-form-spinner-up, +.x-content-box div.x-form-spinner-down { + height: 10px; +} +/* line 10, ../../sass/src/form/field/Spinner.scss */ +.x-content-box .x-toolbar-item div.x-form-spinner-up, +.x-content-box .x-toolbar-item div.x-form-spinner-down { + height: 9px; +} + +/* line 2, ../../sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-wrap .x-toolbar { + border-left-color: #b5b8c8; + border-top-color: #b5b8c8; + border-right-color: #b5b8c8; +} + +/* line 9, ../../sass/src/form/field/HtmlEditor.scss */ +.x-html-editor-input { + border: 1px solid #b5b8c8; + border-top-width: 0; +} + +/* line 1, ../../sass/src/grid/column/Column.scss */ +.x-column-header-trigger { + background-color: #c5c5c5; + background-image: url(images/grid/grid3-hd-btn.gif); +} + +/* line 8, ../../sass/src/grid/column/Column.scss */ +.x-rtl.x-column-header-trigger { + background-image: url(images/grid/grid3-hd-btn-left.gif); +} + +/* line 6, ../../sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-trigger { + height: 19px; +} +/* line 13, ../../sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-form-spinner-up, .x-grid-editor .x-form-spinner-down { + background-image: url(images/form/spinner-small.gif); +} +/* line 16, ../../sass/src/grid/plugin/Editing.scss */ +.x-content-box .x-grid-editor .x-form-spinner-up, .x-content-box .x-grid-editor .x-form-spinner-down { + height: 9px; +} +/* line 24, ../../sass/src/grid/plugin/Editing.scss */ +.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up, .x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down { + background-image: url(images/form/spinner-small-rtl.gif); +} + +/* line 1, ../../sass/src/layout/container/Accordion.scss */ +.x-accordion-hd { + border-width: 1px 0 !important; + -webkit-box-shadow: inset 0 0 0 0 #d9e7f8; + -moz-box-shadow: inset 0 0 0 0 #d9e7f8; + box-shadow: inset 0 0 0 0 #d9e7f8; +} + +/* line 6, ../../sass/src/layout/container/Accordion.scss */ +.x-accordion-hd-sibling-expanded { + -webkit-box-shadow: inset 0 1px 0 0 #f3f7fb; + -moz-box-shadow: inset 0 1px 0 0 #f3f7fb; + box-shadow: inset 0 1px 0 0 #f3f7fb; +} + +/* line 5, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, +.x-resizable-pinned .x-resizable-handle-east, +.x-resizable-pinned .x-resizable-handle-west { + background-position: left; +} +/* line 10, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, +.x-resizable-pinned .x-resizable-handle-south, +.x-resizable-pinned .x-resizable-handle-north { + background-position: top; +} +/* line 14, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southeast, +.x-resizable-pinned .x-resizable-handle-southeast { + background-position: top left; +} +/* line 18, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northwest, +.x-resizable-pinned .x-resizable-handle-northwest { + background-position: bottom right; +} +/* line 22, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-northeast, +.x-resizable-pinned .x-resizable-handle-northeast { + background-position: bottom left; +} +/* line 26, ../../sass/src/resizer/Resizer.scss */ +.x-resizable-over .x-resizable-handle-southwest, +.x-resizable-pinned .x-resizable-handle-southwest { + background-position: top right; +} + +/* line 6, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-horz, +.x-ie6 .x-slider-horz .x-slider-end, +.x-ie6 .x-slider-horz .x-slider-inner { + background-image: url(images/slider/slider-bg.gif); +} +/* line 10, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-horz .x-slider-thumb { + background-image: url(images/slider/slider-thumb.gif); +} +/* line 16, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-vert, +.x-ie6 .x-slider-vert .x-slider-end, +.x-ie6 .x-slider-vert .x-slider-inner { + background-image: url(images/slider/slider-v-bg.gif); +} +/* line 20, ../../sass/src/slider/Multi.scss */ +.x-ie6 .x-slider-vert .x-slider-thumb { + background-image: url(images/slider/slider-v-thumb.gif); +} + +/* line 1, ../../sass/src/tab/Panel.scss */ +.x-tab-icon-el { + top: -1px; +} + +/* line 6, ../../sass/src/tab/Panel.scss */ +.x-tab-noicon .x-tab-icon { + display: none; +} diff --git a/resources/ext-theme-classic/ext-theme-classic-all-rtl.css b/resources/ext-theme-classic/ext-theme-classic-all-rtl.css new file mode 100644 index 00000000..631043d8 --- /dev/null +++ b/resources/ext-theme-classic/ext-theme-classic-all-rtl.css @@ -0,0 +1 @@ +.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}.x-rtl>.x-box-item{right:0;left:auto}.x-ie6 .x-rtl .x-box-item,.x-quirks .x-ie .x-rtl .x-box-item{right:0;left:auto}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-rtl.x-btn-inner-left{text-align:right}.x-btn-inner-right{text-align:right}.x-rtl.x-btn-inner-right{text-align:left}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-rtl.x-box-target{left:auto;right:0}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-rtl.x-box-menu-after{float:left}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-rtl.x-header-text-container{-o-text-overflow:clip;text-overflow:clip}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.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-rtl .x-dd-drag-ghost{padding-left:5px;padding-right:20px}.x-rtl .x-dd-drop-icon{left:auto;right:3px}.x-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-rtl.x-fieldset-header .x-form-item,.x-rtl.x-fieldset-header .x-tool{float:right}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-rtl.x-form-item .x-form-item-input-row{position:relative;right:0}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-rtl.x-form-file-input{right:auto;left:-2px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-rtl.x-column-header-trigger{left:0;right:auto}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-rtl.x-column-header-align-right{text-align:left}.x-column-header-align-left{text-align:left}.x-rtl.x-column-header-align-left{text-align:right}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-rtl>.x-column{float:right}.x-ie6 .x-rtl .x-column,.x-quirks .x-ie .x-rtl .x-column{float:right}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-rtl.x-tab-bar .x-tab-bar-strip-left{right:auto;left:0}.x-tab-bar-strip-right{left:0}.x-rtl.x-tab-bar .x-tab-bar-strip-right{left:auto;right:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-rtl.x-tab-icon-el{left:auto;right:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-rtl.x-mask-msg-text{padding:5px 20px 5px 5px;background-position:right center}.x-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#396295;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#999}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#999}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#999}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-inner{padding-left:4px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-inner{padding-right:4px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-rtl.x-btn-arrow-right{padding-right:0;padding-left:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-rtl.x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-inner{padding-left:3px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-rtl.x-btn-inner{padding-right:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-rtl.x-btn-icon-el{left:auto;right:0}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-inner{padding-right:3px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-rtl.x-btn-icon-el{left:0;right:auto}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-noline-rtl.gif);padding-right:0;padding-left:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-rtl.x-btn-split-right{background-image:url(images/button/s-arrow-o-rtl.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-left .x-rtl.x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-right .x-rtl.x-btn-icon-el{background-position:left center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-rtl.x-btn-arrow-right{background-position:left center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-rtl.x-btn-split-right{background-position:0 center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-rtl.x-toolbar-item{margin:0 0 0 2px}.x-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x-rtl.x-toolbar{padding:2px 2px 2px 0}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#99bce8;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-nlg .x-rtl.x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg-rtl.gif)}.x-nlg .x-rtl.x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg-rtl.gif)}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-left-bg-rtl.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-right-bg-rtl.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-vertical .x-rtl.x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-collapsed-border-left{border-left-width:1px!important}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#99bce8;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-rtl.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-rtl.x-panel-header-default-framed-vertical-noborder{padding:6px 4px 6px 5px}.x-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-right-tl,.x-rtl.x-panel-header-default-framed-right-ml,.x-rtl.x-panel-header-default-framed-right-bl,.x-rtl.x-panel-header-default-framed-right-tr,.x-rtl.x-panel-header-default-framed-right-mr,.x-rtl.x-panel-header-default-framed-right-br{background-image:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-right-tc,.x-rtl.x-panel-header-default-framed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-right-sides-rtl.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-left-bc{background-position:right -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-left-tl,.x-rtl.x-panel-header-default-framed-left-ml,.x-rtl.x-panel-header-default-framed-left-bl,.x-rtl.x-panel-header-default-framed-left-tr,.x-rtl.x-panel-header-default-framed-left-mr,.x-rtl.x-panel-header-default-framed-left-br{background-image:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-left-tc,.x-rtl.x-panel-header-default-framed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-left-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-collapsed-right{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif);background-position:0 0}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif);background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-rtl.x-panel-header-default-framed-collapsed-right-tc{background-position:0 0}.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-right-tl,.x-rtl.x-panel-header-default-framed-collapsed-right-ml,.x-rtl.x-panel-header-default-framed-collapsed-right-bl,.x-rtl.x-panel-header-default-framed-collapsed-right-tr,.x-rtl.x-panel-header-default-framed-collapsed-right-mr,.x-rtl.x-panel-header-default-framed-collapsed-right-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-right-tc,.x-rtl.x-panel-header-default-framed-collapsed-right-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-rtl.x-panel-header-default-framed-collapsed-left{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(left,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-rtl.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif);background-position:right 0}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nlg .x-rtl.x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-rtl.x-panel-header-default-framed-collapsed-left-tc{background-position:right 0}.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-rtl.x-panel-header-default-framed-collapsed-left-tl,.x-rtl.x-panel-header-default-framed-collapsed-left-ml,.x-rtl.x-panel-header-default-framed-collapsed-left-bl,.x-rtl.x-panel-header-default-framed-collapsed-left-tr,.x-rtl.x-panel-header-default-framed-collapsed-left-mr,.x-rtl.x-panel-header-default-framed-collapsed-left-br{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-rtl.x-panel-header-default-framed-collapsed-left-tc,.x-rtl.x-panel-header-default-framed-collapsed-left-bc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), frame-bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), bg-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), corners-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif), sides-rtl:url(images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-panel-header-default-framed-vertical .x-rtl.x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-panel-header-icon-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-rtl.x-panel-header-default-framed-collapsed-border-right{border-right-width:1px!important}.x-rtl.x-panel-header-default-framed-collapsed-border-left{border-left-width:1px!important}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-tip-default-mc{background-color:#e9f2ff}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#8eaace}.x-tip-default .x-tool-img{background-color:#e9f2ff}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-default .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-rtl.x-tool-after-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-form-invalid .x-rtl.x-tool-before-title{margin:0 0 0 6px}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x-window-header-default .x-tool-img{background-color:#ced9e7}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-default-vertical .x-rtl.x-window-header-text-container{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-window-header-default-vertical .x-rtl.x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-rtl.x-window-header-default-right-tl,.x-rtl.x-window-header-default-right-ml,.x-rtl.x-window-header-default-right-bl,.x-rtl.x-window-header-default-right-tr,.x-rtl.x-window-header-default-right-mr,.x-rtl.x-window-header-default-right-br{background-image:url(images/window-header/window-header-default-right-corners-rtl.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-rtl.x-window-header-default-left-tl,.x-rtl.x-window-header-default-left-ml,.x-rtl.x-window-header-default-left-bl,.x-rtl.x-window-header-default-left-tr,.x-rtl.x-window-header-default-left-mr,.x-rtl.x-window-header-default-left-br{background-image:url(images/window-header/window-header-default-left-corners-rtl.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-rtl.x-window-header-default-collapsed-right-tl,.x-rtl.x-window-header-default-collapsed-right-ml,.x-rtl.x-window-header-default-collapsed-right-bl,.x-rtl.x-window-header-default-collapsed-right-tr,.x-rtl.x-window-header-default-collapsed-right-mr,.x-rtl.x-window-header-default-collapsed-right-br{background-image:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-right-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-rtl.x-window-header-default-collapsed-left-tl,.x-rtl.x-window-header-default-collapsed-left-ml,.x-rtl.x-window-header-default-collapsed-left-bl,.x-rtl.x-window-header-default-collapsed-left-tr,.x-rtl.x-window-header-default-collapsed-left-mr,.x-rtl.x-window-header-default-collapsed-left-br{background-image:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), corners-rtl:url(images/window-header/window-header-default-collapsed-left-corners-rtl.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#698fb9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-before-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-window-header-icon-after-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-rtl.x-tool-after-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-rtl.x-tool-before-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-rtl.x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-rtl.x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#7eadd9}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#ced9e7;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-rtl.x-message-box-info,.x-rtl.x-message-box-warning,.x-rtl.x-message-box-question,.x-rtl.x-message-box-error{background-position:top left}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-rtl.x-field .x-form-cb-label-before{margin-right:0;margin-left:4px}.x-form-cb-label-after{margin-left:4px}.x-rtl.x-field .x-form-cb-label-after{margin-left:0;margin-right:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-rtl.x-form-check-group-label{margin:0 0 5px 30px}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-fieldset-with-title .x-rtl .x-fieldset-header-checkbox,.x-fieldset-with-title .x-rtl .x-tool{margin:1px 0 0 3px}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-rtl.x-form-trigger-wrap .x-form-trigger{background-image:url(images/form/trigger-rtl.gif)}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-clear-trigger{background-image:url(images/form/clear-trigger-rtl.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-search-trigger{background-image:url(images/form/search-trigger-rtl.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-rtl.gif)}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-toolbar-item .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last.gif)}.x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next.gif)}.x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev.gif)}.x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first.gif)}.x-item-disabled .x-rtl.x-tbar-page-first{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-prev{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-next{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-rtl.x-tbar-page-last{background-image:url(images/grid/page-first-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:#ddecfe}.x-datepicker-selected{border-style:solid;border-color:#8db2e3}.x-datepicker-selected .x-datepicker-date{background-color:#dae5f3;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#ddecfe}.x-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-rtl.x-form-trigger-wrap .x-form-date-trigger{background-image:url(images/form/date-trigger-rtl.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/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-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#dfe8f6}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-rtl.x-grid-cell-special{border-right-width:0;border-left-width:1px}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-rtl.x-grid-dirty-cell{background-image:url(images/grid/dirty-rtl.gif);background-position:right 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-rtl.x-grid-with-col-lines .x-grid-cell{border-right-width:0;border-left-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-rtl.x-column-header{border-right:0 none;border-left:1px solid #c5c5c5}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-rtl.x-column-header-trigger{background-position:right center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-align-right .x-rtl.x-column-header-text{margin-right:0;margin-left:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-rtl.x-column-header-text,.x-column-header-sort-DESC .x-rtl.x-column-header-text{padding-right:0;padding-left:12px;background-position:0 center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-rtl.x-grid-view .x-grid-group-hd-collapsible .x-grid-group-title{background-position:right center;padding:0 14px 0 0}.x-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-locked .x-rtl.x-grid-inner-locked{border-width:0 0 0 1px}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-grid-inner-locked .x-rtl.x-column-header-last{border-left-width:0!important}.x-rtl.x-grid-inner-locked .x-grid-row .x-column-header-last{border-left:0 none}.x-rtl.x-grid-inner-locked .x-grid-row .x-grid-cell-last{border-left:0 none}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-with-col-lines .x-grid-row-editor .x-rtl.x-form-cb{margin-right:0;margin-left:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#99bce8}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-rtl.x-row-editor-update-button{margin-left:2px;margin-right:auto}.x-rtl.x-row-editor-cancel-button{margin-right:2px;margin-left:auto}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-rtl.x-grid-row-editor-errors .x-grid-row-editor-errors-item{margin-left:0;margin-right:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#d9e7f8}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-rtl.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#dfe8f6}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-rtl.x-menu .x-menu-icon-separator{left:auto;right:24px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-rtl.x-menu-item-indent{margin-left:0;margin-right:30px}.x-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-rtl.x-menu-item-link{padding:0 30px 0 0}.x-right-check-item-text{padding-right:22px}.x-rtl.x-right-check-item-text{padding-left:22px;padding-right:0}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-rtl.x-menu-item-icon{left:auto;right:3px}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-icon,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-icon,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-icon{left:auto;right:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-rtl.x-menu-item-icon-right{right:auto;left:3px}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}a.x-rtl .x-menu-item-text{margin-right:0;margin-left:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-rtl.x-menu-item-arrow{left:0;right:auto;background-image:url(images/menu/menu-parent-left.gif)}.x-gecko .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-rtl.x-menu-item-arrow,.x-quirks .x-menu-item-active .x-rtl.x-menu-item-arrow{right:auto;left:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-rtl.x-tool-expand-left,.x-rtl.x-tool-collapse-left{background-position:0 -165px}.x-rtl.x-tool-expand-right,.x-rtl.x-tool-collapse-right{background-position:0 -180px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-left,.x-tool-over .x-rtl.x-tool-collapse-left{background-position:-15px -165px}.x-tool-over .x-rtl.x-tool-expand-right,.x-tool-over .x-rtl.x-tool-collapse-right{background-position:-15px -180px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-rtl.x-slider-horz{padding-left:0;padding-right:7px;background-position:right -30px}.x-rtl.x-slider-horz .x-slider-end{padding-right:0;padding-left:7px;background-position:left -15px}.x-rtl.x-slider-horz .x-slider-thumb{margin-right:-7px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#8facd0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-rtl.x-tab-default{margin:0 2px 0 0}.x-tab-default-left{margin:0 2px 0 0}.x-rtl.x-tab-default-left{margin:0 0 0 2px}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-rtl.x-tab-default-left{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-rtl.x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-rtl.x-tab-default-right{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-rtl.x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-rtl.x-tab-default-icon-text-left .x-tab-inner{padding-left:0;padding-right:20px}.x-tab-default-over{background-color:#e8f2ff}.x-tab-default-over .x-tab-glyph{color:#416da3}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#94afd1}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#deecfd}.x-tab-default-active .x-tab-inner{color:#15498b}.x-tab-default-active .x-tab-glyph{color:#15498b}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#799ac4}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#d8dae4}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-rtl.x-tab-default .x-tab-close-btn{right:auto;left:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-rtl.x-tab-default-closable .x-tab-wrap{padding-right:0;padding-left:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#99bce8}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-default-left{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-default-right{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-rtl.x-tab-bar-body-default-left{padding-right:0;padding-left:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-rtl.x-tab-bar-body-default-right{padding-left:0;padding-right:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-rtl.x-tab-bar-strip-default-left{border-width:0 1px 0 0}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-left{border-width:1px 1px 1px 0}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-rtl.x-tab-bar-strip-default-right{border-width:0 0 0 1px}.x-tab-bar-plain .x-rtl.x-tab-bar-strip-default-right{border-width:1px 0 1px 1px}.x-tab-bar-default{background-color:#cbdbef}.x-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-rtl.x-tab-bar-default-right .x-box-scroller{margin-left:0;margin-right:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-rtl.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-rtl.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-rtl.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-rtl.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-arrows .x-rtl.x-tree-expander{background:url(images/tree/arrows-rtl.gif) no-repeat -48px center}.x-tree-arrows .x-tree-expander-over .x-rtl.x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-rtl.x-tree-expander{background-position:0 center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-lines .x-rtl.x-tree-elbow{background-image:url(images/tree/elbow-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end{background-image:url(images/tree/elbow-end-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-plus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-plus{background-image:url(images/tree/elbow-minus-rtl.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-rtl.x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus-rtl.gif)}.x-tree-lines .x-rtl.x-tree-elbow-line{background-image:url(images/tree/elbow-line-rtl.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-no-row-lines .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-plus-nl-rtl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-rtl.x-tree-expander{background-image:url(images/tree/elbow-minus-nl-rtl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-rtl.x-tree-elbow-img{margin-right:0;margin-left:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-rtl.x-tree-icon-leaf{background-image:url(images/tree/leaf-rtl.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-rtl.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-grid-tree-node-expanded .x-rtl.x-tree-icon-parent{background-image:url(images/tree/folder-open-rtl.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-rtl.x-tree-checkbox{margin-right:0;margin-left:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-tree-loading .x-rtl.x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-rtl.x-tree-node-text{padding-left:0;padding-right:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.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-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/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/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/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/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-rtl.x-toolbar-more-icon{background-image:url(images/toolbar/more-left.gif)!important}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-rtl.x-column-header-trigger{background-image:url(images/grid/grid3-hd-btn-left.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-rtl.x-form-trigger-wrap .x-form-spinner-down{background-image:url(images/form/spinner-small-rtl.gif)}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.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-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none} \ No newline at end of file diff --git a/resources/ext-theme-classic/ext-theme-classic-all.css b/resources/ext-theme-classic/ext-theme-classic-all.css new file mode 100644 index 00000000..d3a9d0ba --- /dev/null +++ b/resources/ext-theme-classic/ext-theme-classic-all.css @@ -0,0 +1 @@ +.x-body{margin:0}img{border:0}.x-border-box,.x-border-box *{box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box}.x-rtl{direction:rtl}.x-ltr{direction:ltr}.x-clear{overflow:hidden;clear:both;font-size:0;line-height:0;display:table}.x-strict .x-ie7 .x-clear{height:0;width:0}.x-layer{position:absolute!important;overflow:hidden;zoom:1}.x-fixed-layer{position:fixed!important;overflow:hidden;zoom:1}.x-shim{position:absolute;left:0;top:0;overflow:hidden;filter:alpha(opacity=0);opacity:0}.x-hide-display{display:none!important}.x-hide-visibility{visibility:hidden!important}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block!important;visibility:hidden!important;position:absolute!important;top:-10000px!important}.x-hide-nosize{height:0!important;width:0!important}.x-hide-clip{position:absolute!important;clip:rect(0,0,0,0);clip:rect(0 0 0 0)}.x-masked-relative{position:relative}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-unselectable{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-selectable{cursor:auto;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text;-o-user-select:text}.x-list-plain{list-style-type:none;margin:0;padding:0}.x-table-plain{border-collapse:collapse;border-spacing:0;font-size:1em}.x-frame-tl,.x-frame-tr,.x-frame-tc,.x-frame-bl,.x-frame-br,.x-frame-bc{overflow:hidden;background-repeat:no-repeat}.x-frame-tc,.x-frame-bc{background-repeat:repeat-x}.x-frame-mc{background-repeat:repeat-x;overflow:hidden}.x-proxy-el{position:absolute;background:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-css-shadow{position:absolute;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-item-disabled,.x-item-disabled *{cursor:default}.x-box-item{position:absolute!important;left:0;top:0}div.x-editor{overflow:visible}.x-mask{z-index:100;position:absolute;width:100%;height:100%;zoom:1}.x-mask-shim{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%}.x-mask-msg{z-index:20001;position:absolute}.x-progress{position:relative;border-style:solid;overflow:hidden}.x-progress-bar{overflow:hidden;position:absolute;width:0;height:100%}.x-progress-text{overflow:hidden;position:absolute}.x-btn{display:inline-block;position:relative;zoom:1;*display:inline;outline:0;cursor:pointer;white-space:nowrap;vertical-align:middle;text-decoration:none}.x-btn-wrap{position:relative;display:block}.x-btn-button{position:relative;display:block;text-decoration:none;overflow:hidden;zoom:1}.x-btn-inner{display:block;white-space:nowrap;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-btn-inner-center{text-align:center}.x-btn-inner-left{text-align:left}.x-btn-inner-right{text-align:right}.x-box-layout-ct{overflow:hidden;zoom:1}.x-box-target{position:absolute;width:20000px;top:0;left:0;height:1px}.x-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-horizontal-box-overflow-body{float:left}.x-box-scroller{position:relative;background-repeat:no-repeat}.x-box-scroller-left,.x-box-scroller-right{float:left;height:100%;z-index:5}.x-box-scroller-top .x-box-scroller,.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0;background-position:center 0}.x-box-menu-after{float:right}.x-toolbar-text{white-space:nowrap}.x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0;width:0;height:0;line-height:0}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-scroller{padding-left:0}.x-toolbar-plain{border:0}.x-docked{position:absolute!important;z-index:1}.x-docked-vertical{position:static}.x-docked-top{border-bottom-width:0!important}.x-docked-bottom{border-top-width:0!important}.x-docked-left{border-right-width:0!important}.x-docked-right{border-left-width:0!important}.x-docked-noborder-top{border-top-width:0!important}.x-docked-noborder-right{border-right-width:0!important}.x-docked-noborder-bottom{border-bottom-width:0!important}.x-docked-noborder-left{border-left-width:0!important}.x-noborder-l{border-left-width:0!important}.x-noborder-b{border-bottom-width:0!important}.x-noborder-bl{border-bottom-width:0!important;border-left-width:0!important}.x-noborder-r{border-right-width:0!important}.x-noborder-rl{border-right-width:0!important;border-left-width:0!important}.x-noborder-rb{border-right-width:0!important;border-bottom-width:0!important}.x-noborder-rbl{border-right-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-t{border-top-width:0!important}.x-noborder-tl{border-top-width:0!important;border-left-width:0!important}.x-noborder-tb{border-top-width:0!important;border-bottom-width:0!important}.x-noborder-tbl{border-top-width:0!important;border-bottom-width:0!important;border-left-width:0!important}.x-noborder-tr{border-top-width:0!important;border-right-width:0!important}.x-noborder-trl{border-top-width:0!important;border-right-width:0!important;border-left-width:0!important}.x-noborder-trb{border-top-width:0!important;border-right-width:0!important;border-bottom-width:0!important}.x-noborder-trbl{border-width:0!important}.x-header-icon{background-repeat:no-repeat;background-position:0 0;vertical-align:middle;text-align:center}.x-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-dd-drag-proxy,.x-dd-drag-current{z-index:1000000!important;pointer-events:none}.x-dd-drag-repair .x-dd-drag-ghost{filter:alpha(opacity=60);opacity:.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.x-dd-drag-ghost{filter:alpha(opacity=85);opacity:.85;padding:5px;padding-left:20px;white-space:nowrap;color:#000;font:normal 11px tahoma,arial,verdana,sans-serif;border:1px solid;border-color:#ddd #bbb #bbb #ddd;background-color:#fff}.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-dd-drop-ok .x-dd-drop-icon{background-image:url(images/dd/drop-yes.gif)}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url(images/dd/drop-add.gif)}.x-dd-drop-nodrop div.x-dd-drop-icon{background-image:url(images/dd/drop-no.gif)}.x-panel,.x-plain{overflow:hidden;position:relative}.x-panel{outline:0}.x-ie .x-panel-header,.x-ie .x-panel-header-tl,.x-ie .x-panel-header-tc,.x-ie .x-panel-header-tr,.x-ie .x-panel-header-ml,.x-ie .x-panel-header-mc,.x-ie .x-panel-header-mr,.x-ie .x-panel-header-bl,.x-ie .x-panel-header-bc,.x-ie .x-panel-header-br{zoom:1}.x-ie8 td.x-frame-mc{vertical-align:top}.x-panel-body{overflow:hidden;position:relative}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible}.x-tip-body{overflow:hidden;position:relative}.x-tip-anchor{position:absolute;overflow:hidden;border-style:solid}.x-table-layout{font-size:1em}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-window{outline:0;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;overflow:hidden}.x-window-body-plain{background:transparent}.x-form-item-label{display:block}.x-form-item-label-right{text-align:right}.x-form-item-label-top{display:block;zoom:1}.x-form-invalid-icon{overflow:hidden}.x-form-invalid-icon ul{display:none}.x-form-textarea{overflow:auto;resize:none}.x-safari.x-mac .x-form-textarea{margin-bottom:-2px}.x-form-display-field-body{vertical-align:top}.x-form-cb-wrap{vertical-align:top}.x-form-cb{vertical-align:top;overflow:hidden;padding:0;border:0}.x-form-cb::-moz-focus-inner{padding:0;border:0}.x-form-cb-label{display:inline-block;zoom:1}.x-fieldset{display:block;position:relative}.x-fieldset-header{overflow:hidden}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left}.x-fieldset-header .x-form-cb-wrap{font-size:0;line-height:0}.x-fieldset-header .x-form-cb{margin:0}.x-fieldset-header-text{float:left}.x-webkit *:focus{outline:none!important}.x-form-item{vertical-align:top;table-layout:fixed}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-form-trigger{cursor:pointer;overflow:hidden;background-repeat:no-repeat}.x-item-disabled .x-form-trigger{cursor:default}.x-trigger-noedit{cursor:default}.x-form-trigger-wrap{vertical-align:top;border-collapse:separate}.x-form-spinner-up,.x-form-spinner-down{font-size:0}.x-datepicker{position:relative}.x-datepicker-inner{table-layout:fixed;width:100%;border-collapse:separate}.x-datepicker-cell{padding:0}.x-datepicker-header{position:relative;zoom:1}.x-datepicker-arrow{position:absolute;outline:0;font-size:0}.x-datepicker-column-header{padding:0}.x-datepicker-date{display:block;zoom:1;text-decoration:none}.x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker-body{height:100%}.x-monthpicker-months,.x-monthpicker-years{float:left;height:100%}.x-monthpicker-item{float:left}.x-monthpicker-item-inner{display:block;text-decoration:none}.x-monthpicker-yearnav-button-ct{float:left;text-align:center}.x-monthpicker-yearnav-button{display:inline-block;outline:0;font-size:0}.x-monthpicker-buttons{position:absolute;bottom:0;width:100%}.x-strict .x-ie6 .x-monthpicker-buttons{bottom:-1px}.x-form-file-btn{overflow:hidden}.x-form-file-input{border:0;position:absolute;cursor:pointer;top:-2px;right:-2px;filter:alpha(opacity=0);opacity:0;font-size:1000px}.x-form-item-hidden{margin:0}.x-color-picker-item{float:left;text-decoration:none}.x-color-picker-item-inner{display:block;font-size:1px}.x-html-editor-tb .x-toolbar{position:static!important}.x-htmleditor-iframe{display:block;overflow:auto}.x-fit-item{position:relative}.x-grid-row,.x-grid-data-row{outline:0}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-grid-td{overflow:hidden;border-width:0;vertical-align:top}.x-grid-cell-inner{overflow:hidden;white-space:nowrap;zoom:1}.x-grid-resize-marker{position:absolute;z-index:5;top:0}.col-move-top,.col-move-bottom{position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat center top transparent}.x-grid-header-ct{cursor:default}.x-column-header{position:absolute;overflow:hidden;background-repeat:repeat-x}.x-column-header-inner{zoom:1;white-space:nowrap;position:relative;overflow:hidden}.x-column-header-text{white-space:nowrap;background-repeat:no-repeat;zoom:1;display:inline-block}.x-column-header-trigger{display:none;height:100%;background-repeat:no-repeat;position:absolute;right:0;top:0;z-index:2}.x-column-header-over .x-column-header-trigger,.x-column-header-open .x-column-header-trigger{display:block}.x-column-header-align-right{text-align:right}.x-column-header-align-left{text-align:left}.x-column-header-align-center{text-align:center}.x-grid-cell-inner-action-col{line-height:0;font-size:0}.x-grid-cell-inner-checkcolumn{line-height:0;font-size:0}.x-row-numberer .x-column-header-inner{text-overflow:clip}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{white-space:nowrap}.x-grid-row-body-hidden,.x-grid-group-collapsed{display:none}.x-grid-rowbody{zoom:1}.x-grid-row-body-hidden{display:none}td.x-grid-rowwrap .x-grid-table{border:0}td.x-grid-rowwrap .x-grid-cell{border-bottom:0;background-color:transparent}.x-grid-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-display-field{margin:0;white-space:nowrap;overflow:hidden}.x-grid-editor div.x-form-action-col-field{line-height:0}.x-grid-row-editor{position:absolute;overflow:visible;z-index:1}.x-grid-row-editor-buttons{position:absolute;white-space:nowrap}.x-grid-row-expander{font-size:0;line-height:0}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute!important}.x-splitter{font-size:1px}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize}.x-splitter-vertical{cursor:e-resize;cursor:col-resize}.x-splitter-collapsed,.x-splitter-horizontal-noresize,.x-splitter-vertical-noresize{cursor:default}.x-splitter-active{z-index:4}.x-collapse-el{position:absolute;background-repeat:no-repeat}.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-column{float:left}.x-ie6 .x-column{display:inline}.x-quirks .x-ie .x-form-layout-table,.x-quirks .x-ie .x-form-layout-table tbody tr.x-form-item{position:relative}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-menu{outline:0}.x-menu-item{white-space:nowrap;overflow:hidden}.x-menu-item-cmp .x-field-label-cell{vertical-align:middle}.x-menu-icon-separator{position:absolute;top:0;z-index:0;height:100%;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-item-link{text-decoration:none;outline:0;zoom:1}.x-menu-item-text{zoom:1}.x-menu-item-icon,.x-menu-item-icon-right,.x-menu-item-arrow{position:absolute;text-align:center}.x-resizable-overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:none;z-index:200000;background-color:#fff;filter:alpha(opacity=0);opacity:0}.x-slider{outline:0;zoom:1;position:relative}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-vert .x-slider-inner{background:repeat-y 0 0}.x-slider-end{zoom:1}.x-slider-thumb{position:absolute;background:no-repeat 0 0}.x-slider-horz .x-slider-thumb{left:0}.x-slider-vert .x-slider-thumb{bottom:0}a.x-tab{text-decoration:none}.x-tab-bar{position:relative}.x-column-header-checkbox .x-column-header-text{display:block;background-repeat:no-repeat;font-size:0}.x-grid-cell-row-checker{vertical-align:middle;background-repeat:no-repeat;font-size:0}.x-tab{display:block;white-space:nowrap;z-index:1}.x-tab-active{z-index:3}.x-tab-wrap{display:block;position:relative}.x-tab-button{zoom:1;display:block;outline:0}.x-tab-inner{display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden;zoom:1}.x-btn-icon-el{top:0;right:0;bottom:0;left:0;position:absolute;background-repeat:no-repeat;text-align:center}.x-tab-bar{z-index:1}.x-tab-bar-body{z-index:2;position:relative}.x-tab-bar-strip{position:absolute;line-height:0;font-size:0;z-index:1}.x-tab-bar-horizontal .x-tab-bar-strip{width:100%;left:0}.x-tab-bar-vertical .x-tab-bar-strip{height:100%;top:0}.x-tab-bar-strip-top{bottom:0}.x-tab-bar-strip-bottom{top:0}.x-tab-bar-strip-left{right:0}.x-tab-bar-strip-right{left:0}.x-tab-bar-plain{background:transparent!important}.x-tab-icon-el{position:absolute;background-repeat:no-repeat;top:0;left:0;right:auto;bottom:0}.x-tab-close-btn{display:block;position:absolute;font-size:0;line-height:0;background:no-repeat}.x-tab-mc{overflow:visible}.x-autowidth-table .x-grid-table{table-layout:auto;width:auto!important}.x-tree-view{overflow:hidden}.x-tree-elbow-img,.x-tree-icon{background-repeat:no-repeat;background-position:0 center;vertical-align:top}.x-tree-checkbox{border:0;padding:0;vertical-align:top;position:relative;background-color:transparent}.x-tree-animator-wrap{overflow:hidden}.x-tree-node-text{zoom:1}.x-surface{display:-moz-inline-stack;display:inline-block;vertical-align:middle;*vertical-align:auto;zoom:1;*display:inline;overflow:hidden}.rvml{behavior:url(#default#VML)}.x-surface tspan{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-vml-sprite{position:absolute;left:0;top:0;width:1px;height:1px}.x-vml-group{position:absolute;left:0;top:0;width:1000px;height:1000px}.x-vml-measure-span{position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;display:inline}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}.x-vml-base{position:relative;top:0;left:0;overflow:hidden;display:inline-block}svg,vml{overflow:hidden}.x-body{color:black;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.x-animating-size,.x-collapsed{overflow:hidden!important}.x-editor .x-form-item-body{padding-bottom:0}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;height:0}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0;left:0}.x-focus-frame-top,.x-focus-frame-bottom{border-top:solid 2px #15428b;height:2px}.x-focus-frame-left,.x-focus-frame-right{border-left:solid 2px #15428b;width:2px}.x-mask{filter:alpha(opacity=50);opacity:.5;background:#ccc}.x-mask-msg{padding:2px;border-style:solid;border-width:1px;border-color:#99bce8;background-image:none;background-color:#dfe9f6}.x-mask-msg-inner{padding:0 5px;border-style:solid;border-width:1px;border-color:#a3bad9;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-mask-msg-text{padding:5px 5px 5px 20px;background-image:url(images/grid/loading.gif);background-repeat:no-repeat;background-position:0 center}.x-progress-default{background-color:#e0e8f3;border-width:1px;height:20px;border-color:#6594cf}.x-content-box .x-progress-default{height:18px}.x-progress-default .x-progress-bar-default{background-image:none;background-color:#73a3e0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b2ccee),color-stop(50%,#88b1e5),color-stop(51%,#73a3e0),color-stop(100%,#5e96db));background-image:-webkit-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-moz-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:-o-linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db);background-image:linear-gradient(top,#b2ccee,#88b1e5 50%,#73a3e0 51%,#5e96db)}.x-nlg .x-progress-default .x-progress-bar-default{background:repeat-x;background-image:url(images/progress/progress-default-bg.gif)}.x-progress-default .x-progress-text{color:white;font-weight:bold;font-size:11px;text-align:center;line-height:18px}.x-progress-default .x-progress-text-back{color:#396295;line-height:18px}.x-progress-default .x-progress-bar-default:after{display:none;content:"x-slicer:bg:url(images/progress/progress-default-bg.gif)"}.x-btn-default-small{border-color:#d1d1d1}.x-btn-default-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-small-mc{background-image:url(images/btn/btn-default-small-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-small{background-image:url(images/btn/btn-default-small-bg.gif);background-position:0 top}.x-nbr .x-btn-default-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-small-tl{background-position:0 -6px}.x-btn-default-small-tr{background-position:right -9px}.x-btn-default-small-bl{background-position:0 -12px}.x-btn-default-small-br{background-position:right -15px}.x-btn-default-small-ml{background-position:0 top}.x-btn-default-small-mr{background-position:right top}.x-btn-default-small-tc{background-position:0 0}.x-btn-default-small-bc{background-position:0 -3px}.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-mr{padding-right:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-ml{padding-left:3px}.x-btn-default-small-tc{height:3px}.x-btn-default-small-bc{height:3px}.x-btn-default-small-tl,.x-btn-default-small-bl,.x-btn-default-small-tr,.x-btn-default-small-br,.x-btn-default-small-tc,.x-btn-default-small-bc,.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-corners.gif)}.x-btn-default-small-ml,.x-btn-default-small-mr{zoom:1;background-image:url(images/btn/btn-default-small-sides.gif)}.x-btn-default-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-small-tl,.x-strict .x-ie7 .x-btn-default-small-bl{position:relative;right:0}.x-btn-default-small:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-small-fbg.gif), bg:url(images/btn/btn-default-small-bg.gif), corners:url(images/btn/btn-default-small-corners.gif), sides:url(images/btn/btn-default-small-sides.gif)"}.x-btn-default-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-small .x-btn-glyph{color:#999}.x-btn-default-small-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-small-icon .x-btn-button,.x-btn-default-small-noicon .x-btn-button{height:16px}.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-small-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-small-over .x-frame-tl,.x-btn-default-small-over .x-frame-bl,.x-btn-default-small-over .x-frame-tr,.x-btn-default-small-over .x-frame-br,.x-btn-default-small-over .x-frame-tc,.x-btn-default-small-over .x-frame-bc{background-image:url(images/btn/btn-default-small-over-corners.gif)}.x-btn-default-small-over .x-frame-ml,.x-btn-default-small-over .x-frame-mr{background-image:url(images/btn/btn-default-small-over-sides.gif)}.x-btn-default-small-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-over-fbg.gif)}.x-btn-default-small-focus .x-frame-tl,.x-btn-default-small-focus .x-frame-bl,.x-btn-default-small-focus .x-frame-tr,.x-btn-default-small-focus .x-frame-br,.x-btn-default-small-focus .x-frame-tc,.x-btn-default-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-small-focus-corners.gif)}.x-btn-default-small-focus .x-frame-ml,.x-btn-default-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-small-focus-sides.gif)}.x-btn-default-small-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-small-focus-fbg.gif)}.x-btn-default-small-menu-active .x-frame-tl,.x-btn-default-small-menu-active .x-frame-bl,.x-btn-default-small-menu-active .x-frame-tr,.x-btn-default-small-menu-active .x-frame-br,.x-btn-default-small-menu-active .x-frame-tc,.x-btn-default-small-menu-active .x-frame-bc,.x-btn-default-small-pressed .x-frame-tl,.x-btn-default-small-pressed .x-frame-bl,.x-btn-default-small-pressed .x-frame-tr,.x-btn-default-small-pressed .x-frame-br,.x-btn-default-small-pressed .x-frame-tc,.x-btn-default-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-small-pressed-corners.gif)}.x-btn-default-small-menu-active .x-frame-ml,.x-btn-default-small-menu-active .x-frame-mr,.x-btn-default-small-pressed .x-frame-ml,.x-btn-default-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-small-pressed-sides.gif)}.x-btn-default-small-menu-active .x-frame-mc,.x-btn-default-small-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-small-pressed-fbg.gif)}.x-btn-default-small-disabled .x-frame-tl,.x-btn-default-small-disabled .x-frame-bl,.x-btn-default-small-disabled .x-frame-tr,.x-btn-default-small-disabled .x-frame-br,.x-btn-default-small-disabled .x-frame-tc,.x-btn-default-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-small-disabled-corners.gif)}.x-btn-default-small-disabled .x-frame-ml,.x-btn-default-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-small-disabled-sides.gif)}.x-btn-default-small-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-small-disabled-fbg.gif)}.x-nlg .x-btn-default-small-over{background-image:url(images/btn/btn-default-small-over-bg.gif)}.x-nlg .x-btn-default-small-focus{background-image:url(images/btn/btn-default-small-focus-bg.gif)}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-image:url(images/btn/btn-default-small-pressed-bg.gif)}.x-nlg .x-btn-default-small-disabled{background-image:url(images/btn/btn-default-small-disabled-bg.gif)}.x-nbr .x-btn-default-small{background-image:none}.x-btn-default-small .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-small-disabled .x-btn-inner,.x-btn-default-small-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-over-corners.gif), sides:url(images/btn/btn-default-small-over-sides.gif), frame-bg:url(images/btn/btn-default-small-over-fbg.gif), bg:url(images/btn/btn-default-small-over-bg.gif)"}.x-btn-default-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-focus-corners.gif), sides:url(images/btn/btn-default-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-small-focus-fbg.gif), bg:url(images/btn/btn-default-small-focus-bg.gif)"}.x-btn-default-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-pressed-corners.gif), sides:url(images/btn/btn-default-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-small-pressed-fbg.gif), bg:url(images/btn/btn-default-small-pressed-bg.gif)"}.x-btn-default-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-small-disabled-corners.gif), sides:url(images/btn/btn-default-small-disabled-sides.gif), frame-bg:url(images/btn/btn-default-small-disabled-fbg.gif), bg:url(images/btn/btn-default-small-disabled-bg.gif)"}.x-btn-default-medium{border-color:#d1d1d1}.x-btn-default-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-medium-mc{background-image:url(images/btn/btn-default-medium-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-medium{background-image:url(images/btn/btn-default-medium-bg.gif);background-position:0 top}.x-nbr .x-btn-default-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-medium-tl{background-position:0 -6px}.x-btn-default-medium-tr{background-position:right -9px}.x-btn-default-medium-bl{background-position:0 -12px}.x-btn-default-medium-br{background-position:right -15px}.x-btn-default-medium-ml{background-position:0 top}.x-btn-default-medium-mr{background-position:right top}.x-btn-default-medium-tc{background-position:0 0}.x-btn-default-medium-bc{background-position:0 -3px}.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-mr{padding-right:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-ml{padding-left:3px}.x-btn-default-medium-tc{height:3px}.x-btn-default-medium-bc{height:3px}.x-btn-default-medium-tl,.x-btn-default-medium-bl,.x-btn-default-medium-tr,.x-btn-default-medium-br,.x-btn-default-medium-tc,.x-btn-default-medium-bc,.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-corners.gif)}.x-btn-default-medium-ml,.x-btn-default-medium-mr{zoom:1;background-image:url(images/btn/btn-default-medium-sides.gif)}.x-btn-default-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-medium-tl,.x-strict .x-ie7 .x-btn-default-medium-bl{position:relative;right:0}.x-btn-default-medium:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-medium-fbg.gif), bg:url(images/btn/btn-default-medium-bg.gif), corners:url(images/btn/btn-default-medium-corners.gif), sides:url(images/btn/btn-default-medium-sides.gif)"}.x-btn-default-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-medium .x-btn-glyph{color:#999}.x-btn-default-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-medium-icon .x-btn-button,.x-btn-default-medium-noicon .x-btn-button{height:24px}.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-medium-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-medium-over .x-frame-tl,.x-btn-default-medium-over .x-frame-bl,.x-btn-default-medium-over .x-frame-tr,.x-btn-default-medium-over .x-frame-br,.x-btn-default-medium-over .x-frame-tc,.x-btn-default-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-medium-over-corners.gif)}.x-btn-default-medium-over .x-frame-ml,.x-btn-default-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-medium-over-sides.gif)}.x-btn-default-medium-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-over-fbg.gif)}.x-btn-default-medium-focus .x-frame-tl,.x-btn-default-medium-focus .x-frame-bl,.x-btn-default-medium-focus .x-frame-tr,.x-btn-default-medium-focus .x-frame-br,.x-btn-default-medium-focus .x-frame-tc,.x-btn-default-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-medium-focus-corners.gif)}.x-btn-default-medium-focus .x-frame-ml,.x-btn-default-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-medium-focus-sides.gif)}.x-btn-default-medium-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-medium-focus-fbg.gif)}.x-btn-default-medium-menu-active .x-frame-tl,.x-btn-default-medium-menu-active .x-frame-bl,.x-btn-default-medium-menu-active .x-frame-tr,.x-btn-default-medium-menu-active .x-frame-br,.x-btn-default-medium-menu-active .x-frame-tc,.x-btn-default-medium-menu-active .x-frame-bc,.x-btn-default-medium-pressed .x-frame-tl,.x-btn-default-medium-pressed .x-frame-bl,.x-btn-default-medium-pressed .x-frame-tr,.x-btn-default-medium-pressed .x-frame-br,.x-btn-default-medium-pressed .x-frame-tc,.x-btn-default-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-medium-pressed-corners.gif)}.x-btn-default-medium-menu-active .x-frame-ml,.x-btn-default-medium-menu-active .x-frame-mr,.x-btn-default-medium-pressed .x-frame-ml,.x-btn-default-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-medium-pressed-sides.gif)}.x-btn-default-medium-menu-active .x-frame-mc,.x-btn-default-medium-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-medium-pressed-fbg.gif)}.x-btn-default-medium-disabled .x-frame-tl,.x-btn-default-medium-disabled .x-frame-bl,.x-btn-default-medium-disabled .x-frame-tr,.x-btn-default-medium-disabled .x-frame-br,.x-btn-default-medium-disabled .x-frame-tc,.x-btn-default-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-medium-disabled-corners.gif)}.x-btn-default-medium-disabled .x-frame-ml,.x-btn-default-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-medium-disabled-sides.gif)}.x-btn-default-medium-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-medium-disabled-fbg.gif)}.x-nlg .x-btn-default-medium-over{background-image:url(images/btn/btn-default-medium-over-bg.gif)}.x-nlg .x-btn-default-medium-focus{background-image:url(images/btn/btn-default-medium-focus-bg.gif)}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-image:url(images/btn/btn-default-medium-pressed-bg.gif)}.x-nlg .x-btn-default-medium-disabled{background-image:url(images/btn/btn-default-medium-disabled-bg.gif)}.x-nbr .x-btn-default-medium{background-image:none}.x-btn-default-medium .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-medium-disabled .x-btn-inner,.x-btn-default-medium-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-over-corners.gif), sides:url(images/btn/btn-default-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-medium-over-fbg.gif), bg:url(images/btn/btn-default-medium-over-bg.gif)"}.x-btn-default-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-focus-corners.gif), sides:url(images/btn/btn-default-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-medium-focus-fbg.gif), bg:url(images/btn/btn-default-medium-focus-bg.gif)"}.x-btn-default-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-pressed-corners.gif), sides:url(images/btn/btn-default-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-medium-pressed-bg.gif)"}.x-btn-default-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-medium-disabled-corners.gif), sides:url(images/btn/btn-default-medium-disabled-sides.gif), frame-bg:url(images/btn/btn-default-medium-disabled-fbg.gif), bg:url(images/btn/btn-default-medium-disabled-bg.gif)"}.x-btn-default-large{border-color:#d1d1d1}.x-btn-default-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-image:none;background-color:white;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(48%,#f9f9f9),color-stop(52%,#e2e2e2),color-stop(100%,#e7e7e7));background-image:-webkit-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-moz-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:-o-linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7);background-image:linear-gradient(top,#fff,#f9f9f9 48%,#e2e2e2 52%,#e7e7e7)}.x-btn-default-large-mc{background-image:url(images/btn/btn-default-large-fbg.gif);background-position:0 top;background-color:white}.x-nlg .x-btn-default-large{background-image:url(images/btn/btn-default-large-bg.gif);background-position:0 top}.x-nbr .x-btn-default-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-btn-default-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-large-tl{background-position:0 -6px}.x-btn-default-large-tr{background-position:right -9px}.x-btn-default-large-bl{background-position:0 -12px}.x-btn-default-large-br{background-position:right -15px}.x-btn-default-large-ml{background-position:0 top}.x-btn-default-large-mr{background-position:right top}.x-btn-default-large-tc{background-position:0 0}.x-btn-default-large-bc{background-position:0 -3px}.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-mr{padding-right:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-ml{padding-left:3px}.x-btn-default-large-tc{height:3px}.x-btn-default-large-bc{height:3px}.x-btn-default-large-tl,.x-btn-default-large-bl,.x-btn-default-large-tr,.x-btn-default-large-br,.x-btn-default-large-tc,.x-btn-default-large-bc,.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-corners.gif)}.x-btn-default-large-ml,.x-btn-default-large-mr{zoom:1;background-image:url(images/btn/btn-default-large-sides.gif)}.x-btn-default-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-large-tl,.x-strict .x-ie7 .x-btn-default-large-bl{position:relative;right:0}.x-btn-default-large:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/btn/btn-default-large-fbg.gif), bg:url(images/btn/btn-default-large-bg.gif), corners:url(images/btn/btn-default-large-corners.gif), sides:url(images/btn/btn-default-large-sides.gif)"}.x-btn-default-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-large .x-btn-glyph{color:#999}.x-btn-default-large-disabled{border-color:#e1e1e1;background-image:none;background-color:#f7f7f7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f7f7f7),color-stop(48%,#f1f1f1),color-stop(52%,#dadada),color-stop(100%,#dfdfdf));background-image:-webkit-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-moz-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:-o-linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf);background-image:linear-gradient(top,#f7f7f7,#f1f1f1 48%,#dadada 52%,#dfdfdf)}.x-btn-default-large-icon .x-btn-button,.x-btn-default-large-noicon .x-btn-button{height:32px}.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-large-over{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-focus{border-color:#b0ccf2;background-image:none;background-color:#e4f3ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e4f3ff),color-stop(48%,#d9edff),color-stop(52%,#c2d8f2),color-stop(100%,#c6dcf6));background-image:-webkit-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-moz-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:-o-linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6);background-image:linear-gradient(top,#e4f3ff,#d9edff 48%,#c2d8f2 52%,#c6dcf6)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#9ebae1;background-image:none;background-color:#b6cbe4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#b6cbe4),color-stop(48%,#bfd2e6),color-stop(52%,#8dc0f5),color-stop(100%,#98c5f5));background-image:-webkit-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-moz-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:-o-linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5);background-image:linear-gradient(top,#b6cbe4,#bfd2e6 48%,#8dc0f5 52%,#98c5f5)}.x-btn-default-large-over .x-frame-tl,.x-btn-default-large-over .x-frame-bl,.x-btn-default-large-over .x-frame-tr,.x-btn-default-large-over .x-frame-br,.x-btn-default-large-over .x-frame-tc,.x-btn-default-large-over .x-frame-bc{background-image:url(images/btn/btn-default-large-over-corners.gif)}.x-btn-default-large-over .x-frame-ml,.x-btn-default-large-over .x-frame-mr{background-image:url(images/btn/btn-default-large-over-sides.gif)}.x-btn-default-large-over .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-over-fbg.gif)}.x-btn-default-large-focus .x-frame-tl,.x-btn-default-large-focus .x-frame-bl,.x-btn-default-large-focus .x-frame-tr,.x-btn-default-large-focus .x-frame-br,.x-btn-default-large-focus .x-frame-tc,.x-btn-default-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-large-focus-corners.gif)}.x-btn-default-large-focus .x-frame-ml,.x-btn-default-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-large-focus-sides.gif)}.x-btn-default-large-focus .x-frame-mc{background-color:#e4f3ff;background-image:url(images/btn/btn-default-large-focus-fbg.gif)}.x-btn-default-large-menu-active .x-frame-tl,.x-btn-default-large-menu-active .x-frame-bl,.x-btn-default-large-menu-active .x-frame-tr,.x-btn-default-large-menu-active .x-frame-br,.x-btn-default-large-menu-active .x-frame-tc,.x-btn-default-large-menu-active .x-frame-bc,.x-btn-default-large-pressed .x-frame-tl,.x-btn-default-large-pressed .x-frame-bl,.x-btn-default-large-pressed .x-frame-tr,.x-btn-default-large-pressed .x-frame-br,.x-btn-default-large-pressed .x-frame-tc,.x-btn-default-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-large-pressed-corners.gif)}.x-btn-default-large-menu-active .x-frame-ml,.x-btn-default-large-menu-active .x-frame-mr,.x-btn-default-large-pressed .x-frame-ml,.x-btn-default-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-large-pressed-sides.gif)}.x-btn-default-large-menu-active .x-frame-mc,.x-btn-default-large-pressed .x-frame-mc{background-color:#b6cbe4;background-image:url(images/btn/btn-default-large-pressed-fbg.gif)}.x-btn-default-large-disabled .x-frame-tl,.x-btn-default-large-disabled .x-frame-bl,.x-btn-default-large-disabled .x-frame-tr,.x-btn-default-large-disabled .x-frame-br,.x-btn-default-large-disabled .x-frame-tc,.x-btn-default-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-large-disabled-corners.gif)}.x-btn-default-large-disabled .x-frame-ml,.x-btn-default-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-large-disabled-sides.gif)}.x-btn-default-large-disabled .x-frame-mc{background-color:#f7f7f7;background-image:url(images/btn/btn-default-large-disabled-fbg.gif)}.x-nlg .x-btn-default-large-over{background-image:url(images/btn/btn-default-large-over-bg.gif)}.x-nlg .x-btn-default-large-focus{background-image:url(images/btn/btn-default-large-focus-bg.gif)}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-image:url(images/btn/btn-default-large-pressed-bg.gif)}.x-nlg .x-btn-default-large-disabled{background-image:url(images/btn/btn-default-large-disabled-bg.gif)}.x-nbr .x-btn-default-large{background-image:none}.x-btn-default-large .x-btn-split-right{background-image:url(images/button/s-arrow.gif);padding-right:14px}.x-btn-default-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b.gif);padding-bottom:14px}.x-btn-default-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-large-disabled .x-btn-inner,.x-btn-default-large-disabled .x-btn-icon-el{filter:alpha(opacity=50);opacity:.5}.x-btn-default-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-over-corners.gif), sides:url(images/btn/btn-default-large-over-sides.gif), frame-bg:url(images/btn/btn-default-large-over-fbg.gif), bg:url(images/btn/btn-default-large-over-bg.gif)"}.x-btn-default-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-focus-corners.gif), sides:url(images/btn/btn-default-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-large-focus-fbg.gif), bg:url(images/btn/btn-default-large-focus-bg.gif)"}.x-btn-default-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-pressed-corners.gif), sides:url(images/btn/btn-default-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-large-pressed-fbg.gif), bg:url(images/btn/btn-default-large-pressed-bg.gif)"}.x-btn-default-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-large-disabled-corners.gif), sides:url(images/btn/btn-default-large-disabled-sides.gif), frame-bg:url(images/btn/btn-default-large-disabled-fbg.gif), bg:url(images/btn/btn-default-large-disabled-bg.gif)"}.x-btn-default-toolbar-small{border-color:transparent}.x-btn-default-toolbar-small{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-small-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-small{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-small-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-btn-default-toolbar-small-tl{background-position:0 -6px}.x-btn-default-toolbar-small-tr{background-position:right -9px}.x-btn-default-toolbar-small-bl{background-position:0 -12px}.x-btn-default-toolbar-small-br{background-position:right -15px}.x-btn-default-toolbar-small-ml{background-position:0 top}.x-btn-default-toolbar-small-mr{background-position:right top}.x-btn-default-toolbar-small-tc{background-position:0 0}.x-btn-default-toolbar-small-bc{background-position:0 -3px}.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-mr{padding-right:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-ml{padding-left:3px}.x-btn-default-toolbar-small-tc{height:3px}.x-btn-default-toolbar-small-bc{height:3px}.x-btn-default-toolbar-small-tl,.x-btn-default-toolbar-small-bl,.x-btn-default-toolbar-small-tr,.x-btn-default-toolbar-small-br,.x-btn-default-toolbar-small-tc,.x-btn-default-toolbar-small-bc,.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-ml,.x-btn-default-toolbar-small-mr{zoom:1}.x-btn-default-toolbar-small-mc{padding:0}.x-strict .x-ie7 .x-btn-default-toolbar-small-tl,.x-strict .x-ie7 .x-btn-default-toolbar-small-bl{position:relative;right:0}.x-btn-default-toolbar-small .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 4px}.x-btn-default-toolbar-small .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-small .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-small .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-small .x-btn-glyph{font-size:16px;line-height:16px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-small .x-btn-glyph{color:#999}.x-btn-default-toolbar-small-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-small-icon .x-btn-button,.x-btn-default-toolbar-small-noicon .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-inner{line-height:16px}.x-btn-default-toolbar-small-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-small-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon-el{width:16px;height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{width:16px;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-button{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{line-height:16px;padding-right:20px}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{width:16px;left:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon-el{height:16px}.x-btn-default-toolbar-small-icon-text-top .x-btn-inner{padding-top:20px}.x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{height:16px;bottom:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{height:16px;top:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-small-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-small-over .x-frame-tl,.x-btn-default-toolbar-small-over .x-frame-bl,.x-btn-default-toolbar-small-over .x-frame-tr,.x-btn-default-toolbar-small-over .x-frame-br,.x-btn-default-toolbar-small-over .x-frame-tc,.x-btn-default-toolbar-small-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-over-corners.gif)}.x-btn-default-toolbar-small-over .x-frame-ml,.x-btn-default-toolbar-small-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-over-sides.gif)}.x-btn-default-toolbar-small-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-over-fbg.gif)}.x-btn-default-toolbar-small-focus .x-frame-tl,.x-btn-default-toolbar-small-focus .x-frame-bl,.x-btn-default-toolbar-small-focus .x-frame-tr,.x-btn-default-toolbar-small-focus .x-frame-br,.x-btn-default-toolbar-small-focus .x-frame-tc,.x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-focus-corners.gif)}.x-btn-default-toolbar-small-focus .x-frame-ml,.x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-focus-sides.gif)}.x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-small-focus-fbg.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-btn-default-toolbar-small-menu-active .x-frame-br,.x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-btn-default-toolbar-small-pressed .x-frame-tl,.x-btn-default-toolbar-small-pressed .x-frame-bl,.x-btn-default-toolbar-small-pressed .x-frame-tr,.x-btn-default-toolbar-small-pressed .x-frame-br,.x-btn-default-toolbar-small-pressed .x-frame-tc,.x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-pressed-corners.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-btn-default-toolbar-small-pressed .x-frame-ml,.x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-pressed-sides.gif)}.x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif)}.x-btn-default-toolbar-small-disabled .x-frame-tl,.x-btn-default-toolbar-small-disabled .x-frame-bl,.x-btn-default-toolbar-small-disabled .x-frame-tr,.x-btn-default-toolbar-small-disabled .x-frame-br,.x-btn-default-toolbar-small-disabled .x-frame-tc,.x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-small-disabled-corners.gif)}.x-btn-default-toolbar-small-disabled .x-frame-ml,.x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)}.x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small-over{background-image:url(images/btn/btn-default-toolbar-small-over-bg.gif)}.x-nlg .x-btn-default-toolbar-small-focus{background-image:url(images/btn/btn-default-toolbar-small-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-small-menu-active,.x-nlg .x-btn-default-toolbar-small-pressed{background-image:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-small{background-image:none}.x-btn-default-toolbar-small .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-small .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-small-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-small-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-small-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-small-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-over-corners.gif), sides:url(images/btn/btn-default-toolbar-small-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-over-bg.gif)"}.x-btn-default-toolbar-small-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-small-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-focus-bg.gif)"}.x-btn-default-toolbar-small-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-small-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-small-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-small-pressed-bg.gif)"}.x-btn-default-toolbar-small-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-small-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-small-disabled-sides.gif)"}.x-btn-default-toolbar-medium{border-color:transparent}.x-btn-default-toolbar-medium{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-medium-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-medium{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-medium-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-medium-tl{background-position:0 -6px}.x-btn-default-toolbar-medium-tr{background-position:right -9px}.x-btn-default-toolbar-medium-bl{background-position:0 -12px}.x-btn-default-toolbar-medium-br{background-position:right -15px}.x-btn-default-toolbar-medium-ml{background-position:0 top}.x-btn-default-toolbar-medium-mr{background-position:right top}.x-btn-default-toolbar-medium-tc{background-position:0 0}.x-btn-default-toolbar-medium-bc{background-position:0 -3px}.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-mr{padding-right:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-ml{padding-left:3px}.x-btn-default-toolbar-medium-tc{height:3px}.x-btn-default-toolbar-medium-bc{height:3px}.x-btn-default-toolbar-medium-tl,.x-btn-default-toolbar-medium-bl,.x-btn-default-toolbar-medium-tr,.x-btn-default-toolbar-medium-br,.x-btn-default-toolbar-medium-tc,.x-btn-default-toolbar-medium-bc,.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-ml,.x-btn-default-toolbar-medium-mr{zoom:1}.x-btn-default-toolbar-medium-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-medium-tl,.x-strict .x-ie7 .x-btn-default-toolbar-medium-bl{position:relative;right:0}.x-btn-default-toolbar-medium .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-medium .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-medium .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-medium .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-medium .x-btn-glyph{font-size:24px;line-height:24px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-medium .x-btn-glyph{color:#999}.x-btn-default-toolbar-medium-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-medium-icon .x-btn-button,.x-btn-default-toolbar-medium-noicon .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-inner{line-height:24px}.x-btn-default-toolbar-medium-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-medium-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon-el{width:24px;height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{width:24px;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-button{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{line-height:24px;padding-right:28px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{width:24px;left:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon-el{height:24px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-inner{padding-top:28px}.x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{height:24px;bottom:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{height:24px;top:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-medium-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-medium-over .x-frame-tl,.x-btn-default-toolbar-medium-over .x-frame-bl,.x-btn-default-toolbar-medium-over .x-frame-tr,.x-btn-default-toolbar-medium-over .x-frame-br,.x-btn-default-toolbar-medium-over .x-frame-tc,.x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-over-corners.gif)}.x-btn-default-toolbar-medium-over .x-frame-ml,.x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-over-sides.gif)}.x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-over-fbg.gif)}.x-btn-default-toolbar-medium-focus .x-frame-tl,.x-btn-default-toolbar-medium-focus .x-frame-bl,.x-btn-default-toolbar-medium-focus .x-frame-tr,.x-btn-default-toolbar-medium-focus .x-frame-br,.x-btn-default-toolbar-medium-focus .x-frame-tc,.x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-focus-corners.gif)}.x-btn-default-toolbar-medium-focus .x-frame-ml,.x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-focus-sides.gif)}.x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-btn-default-toolbar-medium-pressed .x-frame-br,.x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif)}.x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-btn-default-toolbar-medium-disabled .x-frame-br,.x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)}.x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium-over{background-image:url(images/btn/btn-default-toolbar-medium-over-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-focus{background-image:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-medium-menu-active,.x-nlg .x-btn-default-toolbar-medium-pressed{background-image:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-medium{background-image:none}.x-btn-default-toolbar-medium .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-medium .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-medium-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-medium-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-medium-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-medium-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-over-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-over-bg.gif)"}.x-btn-default-toolbar-medium-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-focus-bg.gif)"}.x-btn-default-toolbar-medium-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-medium-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-medium-pressed-bg.gif)"}.x-btn-default-toolbar-medium-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-medium-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-medium-disabled-sides.gif)"}.x-btn-default-toolbar-large{border-color:transparent}.x-btn-default-toolbar-large{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:3px 3px 3px 3px;border-width:1px;border-style:solid;background-color:transparent}.x-btn-default-toolbar-large-mc{background-color:transparent}.x-nbr .x-btn-default-toolbar-large{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-default-toolbar-large-frameInfo{font-family:th-3-3-3-3-1-1-1-1-3-3-3-3}.x-btn-default-toolbar-large-tl{background-position:0 -6px}.x-btn-default-toolbar-large-tr{background-position:right -9px}.x-btn-default-toolbar-large-bl{background-position:0 -12px}.x-btn-default-toolbar-large-br{background-position:right -15px}.x-btn-default-toolbar-large-ml{background-position:0 top}.x-btn-default-toolbar-large-mr{background-position:right top}.x-btn-default-toolbar-large-tc{background-position:0 0}.x-btn-default-toolbar-large-bc{background-position:0 -3px}.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-mr{padding-right:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-ml{padding-left:3px}.x-btn-default-toolbar-large-tc{height:3px}.x-btn-default-toolbar-large-bc{height:3px}.x-btn-default-toolbar-large-tl,.x-btn-default-toolbar-large-bl,.x-btn-default-toolbar-large-tr,.x-btn-default-toolbar-large-br,.x-btn-default-toolbar-large-tc,.x-btn-default-toolbar-large-bc,.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-ml,.x-btn-default-toolbar-large-mr{zoom:1}.x-btn-default-toolbar-large-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-btn-default-toolbar-large-tl,.x-strict .x-ie7 .x-btn-default-toolbar-large-bl{position:relative;right:0}.x-btn-default-toolbar-large .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;padding:0 3px}.x-btn-default-toolbar-large .x-btn-arrow{background-image:url(images/button/arrow.gif)}.x-btn-default-toolbar-large .x-btn-arrow-right{padding-right:12px}.x-btn-default-toolbar-large .x-btn-arrow-bottom{padding-bottom:12px}.x-btn-default-toolbar-large .x-btn-glyph{font-size:32px;line-height:32px;color:#333;opacity:.5}.x-ie8m .x-btn-default-toolbar-large .x-btn-glyph{color:#999}.x-btn-default-toolbar-large-disabled{border-color:#e1e1e1;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c}.x-btn-default-toolbar-large-icon .x-btn-button,.x-btn-default-toolbar-large-noicon .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-inner{line-height:32px}.x-btn-default-toolbar-large-icon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-noicon .x-btn-arrow-right .x-btn-inner,.x-btn-default-toolbar-large-icon-text-left .x-btn-arrow-right .x-btn-inner{padding-right:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon-el{width:32px;height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{width:32px;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-button{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{line-height:32px;padding-right:36px}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{width:32px;left:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon-el{height:32px}.x-btn-default-toolbar-large-icon-text-top .x-btn-inner{padding-top:36px}.x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{height:32px;bottom:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{height:32px;top:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon-el{width:100%}.x-btn-default-toolbar-large-over{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-focus{border-color:#81a4d0;background-image:none;background-color:#dbeeff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dbeeff),color-stop(48%,#d0e7ff),color-stop(52%,#bbd2f0),color-stop(100%,#bed6f5));background-image:-webkit-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-moz-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:-o-linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5);background-image:linear-gradient(top,#dbeeff,#d0e7ff 48%,#bbd2f0 52%,#bed6f5)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#7a9ac4;background-image:none;background-color:#bccfe5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#bccfe5),color-stop(48%,#c5d6e7),color-stop(52%,#95c4f4),color-stop(100%,#9fc9f5));background-image:-webkit-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-moz-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:-o-linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5);background-image:linear-gradient(top,#bccfe5,#c5d6e7 48%,#95c4f4 52%,#9fc9f5)}.x-btn-default-toolbar-large-over .x-frame-tl,.x-btn-default-toolbar-large-over .x-frame-bl,.x-btn-default-toolbar-large-over .x-frame-tr,.x-btn-default-toolbar-large-over .x-frame-br,.x-btn-default-toolbar-large-over .x-frame-tc,.x-btn-default-toolbar-large-over .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-over-corners.gif)}.x-btn-default-toolbar-large-over .x-frame-ml,.x-btn-default-toolbar-large-over .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-over-sides.gif)}.x-btn-default-toolbar-large-over .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-over-fbg.gif)}.x-btn-default-toolbar-large-focus .x-frame-tl,.x-btn-default-toolbar-large-focus .x-frame-bl,.x-btn-default-toolbar-large-focus .x-frame-tr,.x-btn-default-toolbar-large-focus .x-frame-br,.x-btn-default-toolbar-large-focus .x-frame-tc,.x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-focus-corners.gif)}.x-btn-default-toolbar-large-focus .x-frame-ml,.x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-focus-sides.gif)}.x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#dbeeff;background-image:url(images/btn/btn-default-toolbar-large-focus-fbg.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-btn-default-toolbar-large-menu-active .x-frame-br,.x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-btn-default-toolbar-large-pressed .x-frame-tl,.x-btn-default-toolbar-large-pressed .x-frame-bl,.x-btn-default-toolbar-large-pressed .x-frame-tr,.x-btn-default-toolbar-large-pressed .x-frame-br,.x-btn-default-toolbar-large-pressed .x-frame-tc,.x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-pressed-corners.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-btn-default-toolbar-large-pressed .x-frame-ml,.x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-pressed-sides.gif)}.x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#bccfe5;background-image:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif)}.x-btn-default-toolbar-large-disabled .x-frame-tl,.x-btn-default-toolbar-large-disabled .x-frame-bl,.x-btn-default-toolbar-large-disabled .x-frame-tr,.x-btn-default-toolbar-large-disabled .x-frame-br,.x-btn-default-toolbar-large-disabled .x-frame-tc,.x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url(images/btn/btn-default-toolbar-large-disabled-corners.gif)}.x-btn-default-toolbar-large-disabled .x-frame-ml,.x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)}.x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large-over{background-image:url(images/btn/btn-default-toolbar-large-over-bg.gif)}.x-nlg .x-btn-default-toolbar-large-focus{background-image:url(images/btn/btn-default-toolbar-large-focus-bg.gif)}.x-nlg .x-btn-default-toolbar-large-menu-active,.x-nlg .x-btn-default-toolbar-large-pressed{background-image:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)}.x-nbr .x-btn-default-toolbar-large{background-image:none}.x-btn-default-toolbar-large .x-btn-split-right{background-image:url(images/button/s-arrow-noline.gif);padding-right:14px}.x-btn-default-toolbar-large .x-btn-split-bottom{background-image:url(images/button/s-arrow-b-noline.gif);padding-bottom:14px}.x-btn-default-toolbar-large-over .x-btn-split-right{background-image:url(images/button/s-arrow-o.gif)}.x-btn-default-toolbar-large-over .x-btn-split-bottom{background-image:url(images/button/s-arrow-bo.gif)}.x-btn-default-toolbar-large-disabled{filter:alpha(opacity=50);opacity:.5}.x-btn-default-toolbar-large-over:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-over-corners.gif), sides:url(images/btn/btn-default-toolbar-large-over-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-over-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-over-bg.gif)"}.x-btn-default-toolbar-large-focus:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-focus-corners.gif), sides:url(images/btn/btn-default-toolbar-large-focus-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-focus-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-focus-bg.gif)"}.x-btn-default-toolbar-large-pressed:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-pressed-corners.gif), sides:url(images/btn/btn-default-toolbar-large-pressed-sides.gif), frame-bg:url(images/btn/btn-default-toolbar-large-pressed-fbg.gif), bg:url(images/btn/btn-default-toolbar-large-pressed-bg.gif)"}.x-btn-default-toolbar-large-disabled:after{display:none;content:"x-slicer:stretch:bottom, corners:url(images/btn/btn-default-toolbar-large-disabled-corners.gif), sides:url(images/btn/btn-default-toolbar-large-disabled-sides.gif)"}.x-btn-icon-text-left .x-btn-icon-el{background-position:left center}.x-btn-icon-text-right .x-btn-icon-el{background-position:right center}.x-btn-icon-text-top .x-btn-icon-el{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon-el{background-position:center bottom}.x-btn-arrow-right{background-position:right center}.x-btn-arrow-bottom{background-position:center bottom}.x-btn-arrow{background-repeat:no-repeat}.x-btn-split{display:block;background-repeat:no-repeat}.x-btn-split-right{background-position:right center}.x-btn-split-bottom{background-position:center bottom}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-toolbar{font-size:11px;border-style:solid;padding:2px 0 2px 2px}.x-toolbar-item{margin:0 2px 0 0}.x-toolbar-text{margin:0 6px 0 4px;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar-separator-horizontal{margin:0 2px 0 0;height:14px;border-style:solid;border-width:0 1px;border-left-color:#98c8ff;border-right-color:white}.x-toolbar-footer{background:transparent;border:0;margin:3px 0 0;padding:2px 0 2px 6px}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url(images/toolbar/more.gif)!important;background-position:center center!important;background-repeat:no-repeat}.x-toolbar-default{border-color:#99bce8;border-width:1px;background-image:none;background-color:#d3e1f1;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dfe9f5),color-stop(100%,#d3e1f1));background-image:-webkit-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-moz-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:-o-linear-gradient(top,#dfe9f5,#d3e1f1);background-image:linear-gradient(top,#dfe9f5,#d3e1f1)}.x-toolbar-default .x-box-scroller{cursor:pointer}.x-toolbar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-nlg .x-toolbar-default{background-image:url(images/toolbar/toolbar-default-bg.gif)!important;background-repeat:repeat-x}.x-toolbar-default:after{display:none;content:"x-slicer:bg:url(images/toolbar/toolbar-default-bg.gif), stretch:bottom"}.x-toolbar-scroll-left{background-image:url(images/toolbar/scroll-left.gif);background-position:-14px 0;width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-left-hover{background-position:0 0}.x-toolbar-scroll-right{background-image:url(images/toolbar/scroll-right.gif);width:14px;height:22px;border-style:solid;border-color:#8db2e3;border-width:0 0 1px;margin-top:0}.x-toolbar-scroll-right-hover{background-position:-14px 0}.x-toolbar .x-box-menu-after{margin:0 2px 0 2px}.x-toolbar-vertical{padding:2px 2px 0 2px}.x-toolbar-vertical .x-toolbar-item{margin:0 0 2px 0}.x-toolbar-vertical .x-toolbar-text{margin:4px 0 6px 0}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:0 5px 2px;border-style:solid none;border-width:1px 0;border-top-color:#98c8ff;border-bottom-color:white}.x-toolbar-vertical .x-box-menu-after,.x-toolbar-vertical .x-rtl.x-box-menu-after{margin:2px 0 2px 0;display:block;float:none}.x-header-draggable .x-header-body,.x-header-ghost{cursor:move}.x-header-text{white-space:nowrap}.x-panel-ghost{filter:alpha(opacity=65);opacity:.65}.x-panel-default{border-color:#99bce8;padding:0}.x-panel-header-default{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default{background:white;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:1px;border-style:solid}.x-panel-header-default{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-vertical{background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-nlg .x-panel-header-default-top{background:url(images/panel-header/panel-header-default-top-bg.gif)}.x-nlg .x-panel-header-default-bottom{background:url(images/panel-header/panel-header-default-bottom-bg.gif)}.x-nlg .x-panel-header-default-left{background:url(images/panel-header/panel-header-default-left-bg.gif) top right}.x-nlg .x-panel-header-default-right{background:url(images/panel-header/panel-header-default-right-bg.gif) top right}.x-panel .x-panel-header-default-collapsed-border-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-right{border-left-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-collapsed-border-left{border-right-width:1px!important}.x-panel-header-default-top:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-top-bg.gif), stretch:bottom"}.x-panel-header-default-bottom:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-bottom-bg.gif), stretch:bottom"}.x-panel-header-default-left:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-left-bg.gif), stretch:left"}.x-panel-header-default-right:after{display:none;content:"x-slicer:bg:url(images/panel-header/panel-header-default-right-bg.gif), stretch:left"}.x-panel-header-default-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 1px 0 0 0 inset}.x-panel-header-default .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-panel-default-framed{border-color:#99bce8;padding:4px}.x-panel-header-default-framed{font-size:11px;border:1px solid #99bce8}.x-panel-header-default-framed-horizontal{padding:4px 5px 4px 5px}.x-panel-header-default-framed-horizontal-noborder{padding:5px 6px 4px 6px}.x-panel-header-default-framed-vertical{padding:5px 4px 5px 4px}.x-panel-header-default-framed-vertical-noborder{padding:6px 5px 6px 4px}.x-panel-header-text-container-default-framed{color:#04408c;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:15px;padding:0 2px 1px;text-transform:none}.x-panel-body-default-framed{background:#dfe9f6;border-color:#99bce8;color:black;font-size:12px;font-size:normal;border-width:0;border-style:solid}.x-panel-default-framed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#dfe9f6}.x-panel-default-framed-mc{background-color:#dfe9f6}.x-nbr .x-panel-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-panel-default-framed-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-4-4-4}.x-panel-default-framed-tl{background-position:0 -8px}.x-panel-default-framed-tr{background-position:right -12px}.x-panel-default-framed-bl{background-position:0 -16px}.x-panel-default-framed-br{background-position:right -20px}.x-panel-default-framed-ml{background-position:0 top}.x-panel-default-framed-mr{background-position:right top}.x-panel-default-framed-tc{background-position:0 0}.x-panel-default-framed-bc{background-position:0 -4px}.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-mr{padding-right:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-ml{padding-left:4px}.x-panel-default-framed-tc{height:4px}.x-panel-default-framed-bc{height:4px}.x-panel-default-framed-tl,.x-panel-default-framed-bl,.x-panel-default-framed-tr,.x-panel-default-framed-br,.x-panel-default-framed-tc,.x-panel-default-framed-bc,.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-corners.gif)}.x-panel-default-framed-ml,.x-panel-default-framed-mr{zoom:1;background-image:url(images/panel/panel-default-framed-sides.gif);background-repeat:repeat-y}.x-panel-default-framed-mc{padding:1px 1px 1px 1px}.x-strict .x-ie7 .x-panel-default-framed-tl,.x-strict .x-ie7 .x-panel-default-framed-bl{position:relative;right:0}.x-panel-default-framed:after{display:none;content:"x-slicer:corners:url(images/panel/panel-default-framed-corners.gif), sides:url(images/panel/panel-default-framed-sides.gif)"}.x-panel-header-default-framed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-top{background-image:url(images/panel-header/panel-header-default-framed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-top-frameInfo{font-family:dh-4-4-0-0-1-1-0-1-4-5-4-5}.x-panel-header-default-framed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-top-tr{background-position:right -12px}.x-panel-header-default-framed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-top-br{background-position:right -20px}.x-panel-header-default-framed-top-ml{background-position:0 top}.x-panel-header-default-framed-top-mr{background-position:right top}.x-panel-header-default-framed-top-tc{background-position:0 0}.x-panel-header-default-framed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-mr{padding-right:4px}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-ml{padding-left:4px}.x-panel-header-default-framed-top-tc{height:4px}.x-panel-header-default-framed-top-bc{height:0}.x-panel-header-default-framed-top-tl,.x-panel-header-default-framed-top-bl,.x-panel-header-default-framed-top-tr,.x-panel-header-default-framed-top-br,.x-panel-header-default-framed-top-tc,.x-panel-header-default-framed-top-bc,.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-corners.gif)}.x-panel-header-default-framed-top-ml,.x-panel-header-default-framed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-top-sides.gif)}.x-panel-header-default-framed-top-mc{padding:1px 2px 4px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-top-bl{position:relative;right:0}.x-panel-header-default-framed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-top-sides.gif)"}.x-panel-header-default-framed-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 4px;border-width:1px 1px 1px 0;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-right{background-image:url(images/panel-header/panel-header-default-framed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-right-frameInfo{font-family:dv-0-4-4-0-1-1-1-0-5-4-5-4}.x-panel-header-default-framed-right-tl{background-position:0 0}.x-panel-header-default-framed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-right-br{background-position:0 -12px}.x-panel-header-default-framed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-right-mr{background-position:right 0}.x-panel-header-default-framed-right-tc{background-position:right 0}.x-panel-header-default-framed-right-bc{background-position:right -4px}.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-mr{padding-right:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-ml{padding-left:0}.x-panel-header-default-framed-right-tc{height:4px}.x-panel-header-default-framed-right-bc{height:4px}.x-panel-header-default-framed-right-tl,.x-panel-header-default-framed-right-bl,.x-panel-header-default-framed-right-tr,.x-panel-header-default-framed-right-br,.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc,.x-panel-header-default-framed-right-ml,.x-panel-header-default-framed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-corners.gif)}.x-panel-header-default-framed-right-tc,.x-panel-header-default-framed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-right-mc{padding:2px 1px 2px 4px}.x-strict .x-ie7 .x-panel-header-default-framed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-right-bl{position:relative;right:0}.x-panel-header-default-framed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-right-sides.gif)"}.x-panel-header-default-framed-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-bottom{background-image:url(images/panel-header/panel-header-default-framed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-bottom-frameInfo{font-family:dh-0-0-4-4-0-1-1-1-4-5-4-5}.x-panel-header-default-framed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-bottom-tc{height:0}.x-panel-header-default-framed-bottom-bc{height:4px}.x-panel-header-default-framed-bottom-tl,.x-panel-header-default-framed-bottom-bl,.x-panel-header-default-framed-bottom-tr,.x-panel-header-default-framed-bottom-br,.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-bc,.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-corners.gif)}.x-panel-header-default-framed-bottom-ml,.x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)}.x-panel-header-default-framed-bottom-mc{padding:4px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-bottom-sides.gif)"}.x-panel-header-default-framed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-left{background-image:url(images/panel-header/panel-header-default-framed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-left-frameInfo{font-family:dv-4-0-0-4-1-0-1-1-5-4-5-4}.x-panel-header-default-framed-left-tl{background-position:0 0}.x-panel-header-default-framed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-left-br{background-position:0 -12px}.x-panel-header-default-framed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-left-mr{background-position:right 0}.x-panel-header-default-framed-left-tc{background-position:left 0}.x-panel-header-default-framed-left-bc{background-position:left -4px}.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-mr{padding-right:0}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-ml{padding-left:4px}.x-panel-header-default-framed-left-tc{height:4px}.x-panel-header-default-framed-left-bc{height:4px}.x-panel-header-default-framed-left-tl,.x-panel-header-default-framed-left-bl,.x-panel-header-default-framed-left-tr,.x-panel-header-default-framed-left-br,.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc,.x-panel-header-default-framed-left-ml,.x-panel-header-default-framed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-corners.gif)}.x-panel-header-default-framed-left-tc,.x-panel-header-default-framed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-left-mc{padding:2px 4px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-left-bl{position:relative;right:0}.x-panel-header-default-framed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-left-sides.gif)"}.x-panel-header-default-framed-collapsed-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-top-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif);background-position:0 top;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-top{background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif);background-position:0 top}.x-nbr .x-panel-header-default-framed-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-top-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-top-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-top-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-top-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-top-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-top-ml{background-position:0 top}.x-panel-header-default-framed-collapsed-top-mr{background-position:right top}.x-panel-header-default-framed-collapsed-top-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-top-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-top-tc{height:4px}.x-panel-header-default-framed-collapsed-top-bc{height:4px}.x-panel-header-default-framed-collapsed-top-tl,.x-panel-header-default-framed-collapsed-top-bl,.x-panel-header-default-framed-collapsed-top-tr,.x-panel-header-default-framed-collapsed-top-br,.x-panel-header-default-framed-collapsed-top-tc,.x-panel-header-default-framed-collapsed-top-bc,.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif)}.x-panel-header-default-framed-collapsed-top-ml,.x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)}.x-panel-header-default-framed-collapsed-top-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-top-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-top-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-top-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-top-sides.gif)"}.x-panel-header-default-framed-collapsed-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-right-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif);background-position:right 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-right{background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif);background-position:right 0}.x-nbr .x-panel-header-default-framed-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-right-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-right-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-right-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-right-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-right-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-right-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-right-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-right-tc{background-position:right 0}.x-panel-header-default-framed-collapsed-right-bc{background-position:right -4px}.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-right-tc{height:4px}.x-panel-header-default-framed-collapsed-right-bc{height:4px}.x-panel-header-default-framed-collapsed-right-tl,.x-panel-header-default-framed-collapsed-right-bl,.x-panel-header-default-framed-collapsed-right-tr,.x-panel-header-default-framed-collapsed-right-br,.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc,.x-panel-header-default-framed-collapsed-right-ml,.x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif)}.x-panel-header-default-framed-collapsed-right-tc,.x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-right-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-right-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-right:after{display:none;content:"x-slicer:stretch:left, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-right-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-right-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-right-sides.gif)"}.x-panel-header-default-framed-collapsed-bottom{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(top,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-bottom-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif);background-position:0 bottom;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-bottom{background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif);background-position:0 bottom}.x-nbr .x-panel-header-default-framed-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-bottom-frameInfo{font-family:dh-4-4-4-4-1-1-1-1-4-5-4-5}.x-panel-header-default-framed-collapsed-bottom-tl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-bottom-tr{background-position:right -12px}.x-panel-header-default-framed-collapsed-bottom-bl{background-position:0 -16px}.x-panel-header-default-framed-collapsed-bottom-br{background-position:right -20px}.x-panel-header-default-framed-collapsed-bottom-ml{background-position:0 bottom}.x-panel-header-default-framed-collapsed-bottom-mr{background-position:right bottom}.x-panel-header-default-framed-collapsed-bottom-tc{background-position:0 0}.x-panel-header-default-framed-collapsed-bottom-bc{background-position:0 -4px}.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-bottom-tc{height:4px}.x-panel-header-default-framed-collapsed-bottom-bc{height:4px}.x-panel-header-default-framed-collapsed-bottom-tl,.x-panel-header-default-framed-collapsed-bottom-bl,.x-panel-header-default-framed-collapsed-bottom-tr,.x-panel-header-default-framed-collapsed-bottom-br,.x-panel-header-default-framed-collapsed-bottom-tc,.x-panel-header-default-framed-collapsed-bottom-bc,.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif)}.x-panel-header-default-framed-collapsed-bottom-ml,.x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)}.x-panel-header-default-framed-collapsed-bottom-mc{padding:1px 2px 1px 2px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-bottom-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-bottom:after{display:none;content:"x-slicer:stretch:top, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif)"}.x-panel-header-default-framed-collapsed-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-image:none;background-color:#cbddf3;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dae7f6),color-stop(45%,#cddef3),color-stop(46%,#abc7ec),color-stop(50%,#abc7ec),color-stop(51%,#b8cfee),color-stop(100%,#cbddf3));background-image:-webkit-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-moz-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:-o-linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3);background-image:linear-gradient(right,#dae7f6,#cddef3 45%,#abc7ec 46%,#abc7ec 50%,#b8cfee 51%,#cbddf3)}.x-panel-header-default-framed-collapsed-left-mc{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif);background-position:left 0;background-color:#cbddf3}.x-nlg .x-panel-header-default-framed-collapsed-left{background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif);background-position:left 0}.x-nbr .x-panel-header-default-framed-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-panel-header-default-framed-collapsed-left-frameInfo{font-family:dv-4-4-4-4-1-1-1-1-5-4-5-4}.x-panel-header-default-framed-collapsed-left-tl{background-position:0 0}.x-panel-header-default-framed-collapsed-left-tr{background-position:0 -4px}.x-panel-header-default-framed-collapsed-left-bl{background-position:0 -8px}.x-panel-header-default-framed-collapsed-left-br{background-position:0 -12px}.x-panel-header-default-framed-collapsed-left-ml{background-position:-4px 0}.x-panel-header-default-framed-collapsed-left-mr{background-position:right 0}.x-panel-header-default-framed-collapsed-left-tc{background-position:left 0}.x-panel-header-default-framed-collapsed-left-bc{background-position:left -4px}.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-mr{padding-right:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-ml{padding-left:4px}.x-panel-header-default-framed-collapsed-left-tc{height:4px}.x-panel-header-default-framed-collapsed-left-bc{height:4px}.x-panel-header-default-framed-collapsed-left-tl,.x-panel-header-default-framed-collapsed-left-bl,.x-panel-header-default-framed-collapsed-left-tr,.x-panel-header-default-framed-collapsed-left-br,.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc,.x-panel-header-default-framed-collapsed-left-ml,.x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif)}.x-panel-header-default-framed-collapsed-left-tc,.x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif);background-repeat:repeat-x}.x-panel-header-default-framed-collapsed-left-mc{padding:2px 1px 2px 1px}.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-tl,.x-strict .x-ie7 .x-panel-header-default-framed-collapsed-left-bl{position:relative;right:0}.x-panel-header-default-framed-collapsed-left:after{display:none;content:"x-slicer:stretch:right, frame-bg:url(images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif), bg:url(images/panel-header/panel-header-default-framed-collapsed-left-bg.gif), corners:url(images/panel-header/panel-header-default-framed-collapsed-left-corners.gif), sides:url(images/panel-header/panel-header-default-framed-collapsed-left-sides.gif)"}.x-panel .x-panel-header-default-framed-top{border-bottom-width:1px!important}.x-panel .x-panel-header-default-framed-right{border-left-width:1px!important}.x-panel .x-panel-header-default-framed-bottom{border-top-width:1px!important}.x-panel .x-panel-header-default-framed-left{border-right-width:1px!important}.x-nbr .x-panel-header-default-framed-collapsed-top{border-bottom-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-right{border-left-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-bottom{border-top-width:0!important}.x-nbr .x-panel-header-default-framed-collapsed-left{border-right-width:0!important}.x-panel-header-default-framed-vertical .x-panel-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-panel-header-default-framed-vertical .x-panel-header-text-container{background-color:#cbddf3;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#cbddf3)}.x-panel-header-default-framed-top{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 -1px 0 0 inset,#f3f7fb -1px 0 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;-moz-box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset;box-shadow:#f3f7fb 0 1px 0 0 inset,#f3f7fb 0 -1px 0 0 inset,#f3f7fb 1px 0 0 0 inset}.x-panel-header-default-framed .x-panel-header-icon{width:16px;height:16px;background-position:center center}.x-panel-header-default-framed .x-panel-header-glyph{color:#04408c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-panel-header-default-framed .x-panel-header-glyph{color:#678ebf}.x-panel-header-default-framed-horizontal .x-panel-header-icon-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-horizontal .x-panel-header-icon-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-vertical .x-panel-header-icon-before-title{margin:0 0 2px 0}.x-panel-header-default-framed-vertical .x-panel-header-icon-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-panel-header-default-framed-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-panel-header-default-framed-vertical .x-tool-after-title{margin:2px 0 0 0}.x-panel-header-default-framed-vertical .x-tool-before-title{margin:0 0 2px 0}.x-panel-default-framed-resizable .x-panel-handle{filter:alpha(opacity=0);opacity:0}.x-tip-anchor{position:absolute;overflow:hidden;height:10px;width:10px;border-style:solid;border-width:5px;border-color:#8eaace;zoom:1}.x-content-box .x-tip-anchor{height:0;width:0}.x-tip-anchor-top{border-top-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-bottom{border-bottom-color:transparent;border-left-color:transparent;border-right-color:transparent;_border-bottom-color:pink;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-left{border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-left-color:pink;_filter:chroma(color=pink)}.x-tip-anchor-right{border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent;_border-top-color:pink;_border-bottom-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.x-tip-default{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:2px 2px 2px 2px;border-width:1px;border-style:solid;background-color:#e9f2ff}.x-tip-default-mc{background-color:#e9f2ff}.x-nbr .x-tip-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-default-frameInfo{font-family:th-3-3-3-3-1-1-1-1-2-2-2-2}.x-tip-default-tl{background-position:0 -6px}.x-tip-default-tr{background-position:right -9px}.x-tip-default-bl{background-position:0 -12px}.x-tip-default-br{background-position:right -15px}.x-tip-default-ml{background-position:0 top}.x-tip-default-mr{background-position:right top}.x-tip-default-tc{background-position:0 0}.x-tip-default-bc{background-position:0 -3px}.x-tip-default-tr,.x-tip-default-br,.x-tip-default-mr{padding-right:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-ml{padding-left:3px}.x-tip-default-tc{height:3px}.x-tip-default-bc{height:3px}.x-tip-default-tl,.x-tip-default-bl,.x-tip-default-tr,.x-tip-default-br,.x-tip-default-tc,.x-tip-default-bc,.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-corners.gif)}.x-tip-default-ml,.x-tip-default-mr{zoom:1;background-image:url(images/tip/tip-default-sides.gif);background-repeat:repeat-y}.x-tip-default-mc{padding:0}.x-strict .x-ie7 .x-tip-default-tl,.x-strict .x-ie7 .x-tip-default-bl{position:relative;right:0}.x-tip-default:after{display:none;content:"x-slicer:corners:url(images/tip/tip-default-corners.gif), sides:url(images/tip/tip-default-sides.gif)"}.x-tip-default{border-color:#8eaace}.x-tip-default .x-tool-img{background-color:#e9f2ff}.x-tip-header-default .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-default .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-default{padding:3px 3px 0 3px}.x-tip-header-text-container-default{color:#444;font-size:11px;font-weight:bold}.x-tip-body-default{padding:3px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-default a{color:#2a2a2a}.x-tip-form-invalid{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:white}.x-tip-form-invalid-mc{background-color:white}.x-nbr .x-tip-form-invalid{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-tip-form-invalid-frameInfo{font-family:th-5-5-5-5-1-1-1-1-4-4-4-4}.x-tip-form-invalid-tl{background-position:0 -10px}.x-tip-form-invalid-tr{background-position:right -15px}.x-tip-form-invalid-bl{background-position:0 -20px}.x-tip-form-invalid-br{background-position:right -25px}.x-tip-form-invalid-ml{background-position:0 top}.x-tip-form-invalid-mr{background-position:right top}.x-tip-form-invalid-tc{background-position:0 0}.x-tip-form-invalid-bc{background-position:0 -5px}.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-mr{padding-right:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-ml{padding-left:5px}.x-tip-form-invalid-tc{height:5px}.x-tip-form-invalid-bc{height:5px}.x-tip-form-invalid-tl,.x-tip-form-invalid-bl,.x-tip-form-invalid-tr,.x-tip-form-invalid-br,.x-tip-form-invalid-tc,.x-tip-form-invalid-bc,.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-corners.gif)}.x-tip-form-invalid-ml,.x-tip-form-invalid-mr{zoom:1;background-image:url(images/tip/tip-form-invalid-sides.gif);background-repeat:repeat-y}.x-tip-form-invalid-mc{padding:0}.x-strict .x-ie7 .x-tip-form-invalid-tl,.x-strict .x-ie7 .x-tip-form-invalid-bl{position:relative;right:0}.x-tip-form-invalid:after{display:none;content:"x-slicer:corners:url(images/tip/tip-form-invalid-corners.gif), sides:url(images/tip/tip-form-invalid-sides.gif)"}.x-tip-form-invalid{border-color:#a1311f;-webkit-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;-moz-box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset;box-shadow:#d87166 0 1px 0 0 inset,#d87166 0 -1px 0 0 inset,#d87166 -1px 0 0 0 inset,#d87166 1px 0 0 0 inset}.x-tip-form-invalid .x-tool-img{background-color:white}.x-tip-header-form-invalid .x-tool-after-title{margin:0 0 0 6px}.x-tip-header-form-invalid .x-tool-before-title{margin:0 6px 0 0}.x-tip-header-body-form-invalid{padding:3px 3px 0 3px}.x-tip-header-text-container-form-invalid{color:#444;font-size:11px;font-weight:bold}.x-tip-body-form-invalid{padding:3px 3px 3px 22px;color:#444;font-size:11px;font-weight:normal}.x-tip-body-form-invalid a{color:#2a2a2a}.x-tip-body-form-invalid{background:1px 1px no-repeat;background-image:url(images/form/exclamation.gif)}.x-tip-body-form-invalid li{margin-bottom:4px}.x-tip-body-form-invalid li.last{margin-bottom:0}.x-btn-group-default{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.x-btn-group-header-default .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default{padding:0 1px}.x-btn-group-body-default .x-table-layout{border-spacing:0}.x-btn-group-default-framed{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-tl{background-position:0 -4px}.x-btn-group-default-framed-tr{background-position:right -6px}.x-btn-group-default-framed-bl{background-position:0 -8px}.x-btn-group-default-framed-br{background-position:right -10px}.x-btn-group-default-framed-ml{background-position:0 top}.x-btn-group-default-framed-mr{background-position:right top}.x-btn-group-default-framed-tc{background-position:0 0}.x-btn-group-default-framed-bc{background-position:0 -2px}.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-mr{padding-right:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-ml{padding-left:2px}.x-btn-group-default-framed-tc{height:2px}.x-btn-group-default-framed-bc{height:2px}.x-btn-group-default-framed-tl,.x-btn-group-default-framed-bl,.x-btn-group-default-framed-tr,.x-btn-group-default-framed-br,.x-btn-group-default-framed-tc,.x-btn-group-default-framed-bc,.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-corners.gif)}.x-btn-group-default-framed-ml,.x-btn-group-default-framed-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-tl,.x-strict .x-ie7 .x-btn-group-default-framed-bl{position:relative;right:0}.x-btn-group-default-framed:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-corners.gif), sides:url(images/btn-group/btn-group-default-framed-sides.gif)"}.x-btn-group-default-framed-notitle{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;padding:1px 1px 1px 1px;border-width:1px;border-style:solid;background-color:#d0def0}.x-btn-group-default-framed-notitle-mc{background-color:#d0def0}.x-nbr .x-btn-group-default-framed-notitle{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-btn-group-default-framed-notitle-frameInfo{font-family:dh-2-2-2-2-1-1-1-1-1-1-1-1}.x-btn-group-default-framed-notitle-tl{background-position:0 -4px}.x-btn-group-default-framed-notitle-tr{background-position:right -6px}.x-btn-group-default-framed-notitle-bl{background-position:0 -8px}.x-btn-group-default-framed-notitle-br{background-position:right -10px}.x-btn-group-default-framed-notitle-ml{background-position:0 top}.x-btn-group-default-framed-notitle-mr{background-position:right top}.x-btn-group-default-framed-notitle-tc{background-position:0 0}.x-btn-group-default-framed-notitle-bc{background-position:0 -2px}.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-mr{padding-right:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-ml{padding-left:2px}.x-btn-group-default-framed-notitle-tc{height:2px}.x-btn-group-default-framed-notitle-bc{height:2px}.x-btn-group-default-framed-notitle-tl,.x-btn-group-default-framed-notitle-bl,.x-btn-group-default-framed-notitle-tr,.x-btn-group-default-framed-notitle-br,.x-btn-group-default-framed-notitle-tc,.x-btn-group-default-framed-notitle-bc,.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-corners.gif)}.x-btn-group-default-framed-notitle-ml,.x-btn-group-default-framed-notitle-mr{zoom:1;background-image:url(images/btn-group/btn-group-default-framed-notitle-sides.gif);background-repeat:repeat-y}.x-btn-group-default-framed-notitle-mc{padding:0}.x-strict .x-ie7 .x-btn-group-default-framed-notitle-tl,.x-strict .x-ie7 .x-btn-group-default-framed-notitle-bl{position:relative;right:0}.x-btn-group-default-framed-notitle:after{display:none;content:"x-slicer:corners:url(images/btn-group/btn-group-default-framed-notitle-corners.gif), sides:url(images/btn-group/btn-group-default-framed-notitle-sides.gif)"}.x-btn-group-default-framed{border-color:#b7c8d7;-webkit-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;-moz-box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset;box-shadow:#e3ebf5 0 1px 0 0 inset,#e3ebf5 0 -1px 0 0 inset,#e3ebf5 -1px 0 0 0 inset,#e3ebf5 1px 0 0 0 inset}.x-btn-group-header-default-framed{margin:2px 2px 0 2px;padding:1px 0;line-height:15px;background:#c2d8f0;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px}.x-btn-group-header-default-framed .x-tool-img{background-color:#c2d8f0}.x-btn-group-header-text-container-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;line-height:15px;color:#3e6aaa}.x-btn-group-body-default-framed{padding:0 1px 0 1px}.x-btn-group-body-default-framed .x-table-layout{border-spacing:0}.x-window-ghost{filter:alpha(opacity=65);opacity:.65}.x-window-default{border-color:#a2b1c5;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-default{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 4px 4px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-default-mc{background-color:#ced9e7}.x-nbr .x-window-default{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-default-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-4-4-4}.x-window-default-tl{background-position:0 -10px}.x-window-default-tr{background-position:right -15px}.x-window-default-bl{background-position:0 -20px}.x-window-default-br{background-position:right -25px}.x-window-default-ml{background-position:0 top}.x-window-default-mr{background-position:right top}.x-window-default-tc{background-position:0 0}.x-window-default-bc{background-position:0 -5px}.x-window-default-tr,.x-window-default-br,.x-window-default-mr{padding-right:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-ml{padding-left:5px}.x-window-default-tc{height:5px}.x-window-default-bc{height:5px}.x-window-default-tl,.x-window-default-bl,.x-window-default-tr,.x-window-default-br,.x-window-default-tc,.x-window-default-bc,.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-corners.gif)}.x-window-default-ml,.x-window-default-mr{zoom:1;background-image:url(images/window/window-default-sides.gif);background-repeat:repeat-y}.x-window-default-mc{padding:0}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-default:after{display:none;content:"x-slicer:corners:url(images/window/window-default-corners.gif), sides:url(images/window/window-default-sides.gif)"}.x-window-body-default{border-color:#99bbe8;border-width:1px;border-style:solid;background:#dfe8f6;color:black}.x-window-header-default{font-size:11px;border-color:#a2b1c5;zoom:1;background-color:#ced9e7}.x-window-header-default .x-tool-img{background-color:#ced9e7}.x-window-header-default-vertical .x-window-header-text-container{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-window-header-default-vertical .x-window-header-text-container{background-color:#ced9e7;filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1),progid:DXImageTransform.Microsoft.Chroma(color=#ced9e7)}.x-window-header-text-container-default{color:#04468c;font-weight:bold;line-height:15px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;padding:0 2px 1px;text-transform:none}.x-window-header-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 5px 0 5px;border-width:1px 1px 0 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-top-frameInfo{font-family:dh-5-5-0-0-1-1-0-1-4-5-0-5}.x-window-header-default-top-tl{background-position:0 -10px}.x-window-header-default-top-tr{background-position:right -15px}.x-window-header-default-top-bl{background-position:0 -20px}.x-window-header-default-top-br{background-position:right -25px}.x-window-header-default-top-ml{background-position:0 top}.x-window-header-default-top-mr{background-position:right top}.x-window-header-default-top-tc{background-position:0 0}.x-window-header-default-top-bc{background-position:0 -5px}.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-mr{padding-right:5px}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-ml{padding-left:5px}.x-window-header-default-top-tc{height:5px}.x-window-header-default-top-bc{height:0}.x-window-header-default-top-tl,.x-window-header-default-top-bl,.x-window-header-default-top-tr,.x-window-header-default-top-br,.x-window-header-default-top-tc,.x-window-header-default-top-bc,.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-corners.gif)}.x-window-header-default-top-ml,.x-window-header-default-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-top-tl,.x-strict .x-ie7 .x-window-header-default-top-bl{position:relative;right:0}.x-window-header-default-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-top-corners.gif), sides:url(images/window-header/window-header-default-top-sides.gif)"}.x-window-header-default-right{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:5px 4px 5px 0;border-width:1px 1px 1px 0;border-style:solid;background-color:#ced9e7}.x-window-header-default-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-right-frameInfo{font-family:dh-0-5-5-0-1-1-1-0-5-4-5-0}.x-window-header-default-right-tl{background-position:0 -10px}.x-window-header-default-right-tr{background-position:right -15px}.x-window-header-default-right-bl{background-position:0 -20px}.x-window-header-default-right-br{background-position:right -25px}.x-window-header-default-right-ml{background-position:0 top}.x-window-header-default-right-mr{background-position:right top}.x-window-header-default-right-tc{background-position:0 0}.x-window-header-default-right-bc{background-position:0 -5px}.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-mr{padding-right:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-ml{padding-left:0}.x-window-header-default-right-tc{height:5px}.x-window-header-default-right-bc{height:5px}.x-window-header-default-right-tl,.x-window-header-default-right-bl,.x-window-header-default-right-tr,.x-window-header-default-right-br,.x-window-header-default-right-tc,.x-window-header-default-right-bc,.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-corners.gif)}.x-window-header-default-right-ml,.x-window-header-default-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-right-tl,.x-strict .x-ie7 .x-window-header-default-right-bl{position:relative;right:0}.x-window-header-default-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-right-corners.gif), sides:url(images/window-header/window-header-default-right-sides.gif)"}.x-window-header-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:0 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-bottom-frameInfo{font-family:dh-0-0-5-5-0-1-1-1-0-5-4-5}.x-window-header-default-bottom-tl{background-position:0 -10px}.x-window-header-default-bottom-tr{background-position:right -15px}.x-window-header-default-bottom-bl{background-position:0 -20px}.x-window-header-default-bottom-br{background-position:right -25px}.x-window-header-default-bottom-ml{background-position:0 top}.x-window-header-default-bottom-mr{background-position:right top}.x-window-header-default-bottom-tc{background-position:0 0}.x-window-header-default-bottom-bc{background-position:0 -5px}.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-mr{padding-right:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-ml{padding-left:5px}.x-window-header-default-bottom-tc{height:0}.x-window-header-default-bottom-bc{height:5px}.x-window-header-default-bottom-tl,.x-window-header-default-bottom-bl,.x-window-header-default-bottom-tr,.x-window-header-default-bottom-br,.x-window-header-default-bottom-tc,.x-window-header-default-bottom-bc,.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-corners.gif)}.x-window-header-default-bottom-ml,.x-window-header-default-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-bottom-tl,.x-strict .x-ie7 .x-window-header-default-bottom-bl{position:relative;right:0}.x-window-header-default-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-bottom-corners.gif), sides:url(images/window-header/window-header-default-bottom-sides.gif)"}.x-window-header-default-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:5px 0 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-left-frameInfo{font-family:dh-5-0-0-5-1-0-1-1-5-0-5-4}.x-window-header-default-left-tl{background-position:0 -10px}.x-window-header-default-left-tr{background-position:right -15px}.x-window-header-default-left-bl{background-position:0 -20px}.x-window-header-default-left-br{background-position:right -25px}.x-window-header-default-left-ml{background-position:0 top}.x-window-header-default-left-mr{background-position:right top}.x-window-header-default-left-tc{background-position:0 0}.x-window-header-default-left-bc{background-position:0 -5px}.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-mr{padding-right:0}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-ml{padding-left:5px}.x-window-header-default-left-tc{height:5px}.x-window-header-default-left-bc{height:5px}.x-window-header-default-left-tl,.x-window-header-default-left-bl,.x-window-header-default-left-tr,.x-window-header-default-left-br,.x-window-header-default-left-tc,.x-window-header-default-left-bc,.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-corners.gif)}.x-window-header-default-left-ml,.x-window-header-default-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-left-tl,.x-strict .x-ie7 .x-window-header-default-left-bl{position:relative;right:0}.x-window-header-default-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-left-corners.gif), sides:url(images/window-header/window-header-default-left-sides.gif)"}.x-window-header-default-collapsed-top{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-top-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-top-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-top-tl{background-position:0 -10px}.x-window-header-default-collapsed-top-tr{background-position:right -15px}.x-window-header-default-collapsed-top-bl{background-position:0 -20px}.x-window-header-default-collapsed-top-br{background-position:right -25px}.x-window-header-default-collapsed-top-ml{background-position:0 top}.x-window-header-default-collapsed-top-mr{background-position:right top}.x-window-header-default-collapsed-top-tc{background-position:0 0}.x-window-header-default-collapsed-top-bc{background-position:0 -5px}.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-mr{padding-right:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-ml{padding-left:5px}.x-window-header-default-collapsed-top-tc{height:5px}.x-window-header-default-collapsed-top-bc{height:5px}.x-window-header-default-collapsed-top-tl,.x-window-header-default-collapsed-top-bl,.x-window-header-default-collapsed-top-tr,.x-window-header-default-collapsed-top-br,.x-window-header-default-collapsed-top-tc,.x-window-header-default-collapsed-top-bc,.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-corners.gif)}.x-window-header-default-collapsed-top-ml,.x-window-header-default-collapsed-top-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-top-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-top-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-top-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-top-bl{position:relative;right:0}.x-window-header-default-collapsed-top:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-top-corners.gif), sides:url(images/window-header/window-header-default-collapsed-top-sides.gif)"}.x-window-header-default-collapsed-right{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-right-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-right-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-right-tl{background-position:0 -10px}.x-window-header-default-collapsed-right-tr{background-position:right -15px}.x-window-header-default-collapsed-right-bl{background-position:0 -20px}.x-window-header-default-collapsed-right-br{background-position:right -25px}.x-window-header-default-collapsed-right-ml{background-position:0 top}.x-window-header-default-collapsed-right-mr{background-position:right top}.x-window-header-default-collapsed-right-tc{background-position:0 0}.x-window-header-default-collapsed-right-bc{background-position:0 -5px}.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-mr{padding-right:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-ml{padding-left:5px}.x-window-header-default-collapsed-right-tc{height:5px}.x-window-header-default-collapsed-right-bc{height:5px}.x-window-header-default-collapsed-right-tl,.x-window-header-default-collapsed-right-bl,.x-window-header-default-collapsed-right-tr,.x-window-header-default-collapsed-right-br,.x-window-header-default-collapsed-right-tc,.x-window-header-default-collapsed-right-bc,.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-corners.gif)}.x-window-header-default-collapsed-right-ml,.x-window-header-default-collapsed-right-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-right-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-right-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-right-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-right-bl{position:relative;right:0}.x-window-header-default-collapsed-right:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-right-corners.gif), sides:url(images/window-header/window-header-default-collapsed-right-sides.gif)"}.x-window-header-default-collapsed-bottom{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:4px 5px 4px 5px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-bottom-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-bottom-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-4-5-4-5}.x-window-header-default-collapsed-bottom-tl{background-position:0 -10px}.x-window-header-default-collapsed-bottom-tr{background-position:right -15px}.x-window-header-default-collapsed-bottom-bl{background-position:0 -20px}.x-window-header-default-collapsed-bottom-br{background-position:right -25px}.x-window-header-default-collapsed-bottom-ml{background-position:0 top}.x-window-header-default-collapsed-bottom-mr{background-position:right top}.x-window-header-default-collapsed-bottom-tc{background-position:0 0}.x-window-header-default-collapsed-bottom-bc{background-position:0 -5px}.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-mr{padding-right:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-ml{padding-left:5px}.x-window-header-default-collapsed-bottom-tc{height:5px}.x-window-header-default-collapsed-bottom-bc{height:5px}.x-window-header-default-collapsed-bottom-tl,.x-window-header-default-collapsed-bottom-bl,.x-window-header-default-collapsed-bottom-tr,.x-window-header-default-collapsed-bottom-br,.x-window-header-default-collapsed-bottom-tc,.x-window-header-default-collapsed-bottom-bc,.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-corners.gif)}.x-window-header-default-collapsed-bottom-ml,.x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-bottom-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-bottom-mc{padding:0 1px 0 1px}.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-bottom-bl{position:relative;right:0}.x-window-header-default-collapsed-bottom:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-bottom-corners.gif), sides:url(images/window-header/window-header-default-collapsed-bottom-sides.gif)"}.x-window-header-default-collapsed-left{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;padding:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#ced9e7}.x-window-header-default-collapsed-left-mc{background-color:#ced9e7}.x-nbr .x-window-header-default-collapsed-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-window-header-default-collapsed-left-frameInfo{font-family:dh-5-5-5-5-1-1-1-1-5-4-5-4}.x-window-header-default-collapsed-left-tl{background-position:0 -10px}.x-window-header-default-collapsed-left-tr{background-position:right -15px}.x-window-header-default-collapsed-left-bl{background-position:0 -20px}.x-window-header-default-collapsed-left-br{background-position:right -25px}.x-window-header-default-collapsed-left-ml{background-position:0 top}.x-window-header-default-collapsed-left-mr{background-position:right top}.x-window-header-default-collapsed-left-tc{background-position:0 0}.x-window-header-default-collapsed-left-bc{background-position:0 -5px}.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-mr{padding-right:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-ml{padding-left:5px}.x-window-header-default-collapsed-left-tc{height:5px}.x-window-header-default-collapsed-left-bc{height:5px}.x-window-header-default-collapsed-left-tl,.x-window-header-default-collapsed-left-bl,.x-window-header-default-collapsed-left-tr,.x-window-header-default-collapsed-left-br,.x-window-header-default-collapsed-left-tc,.x-window-header-default-collapsed-left-bc,.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-corners.gif)}.x-window-header-default-collapsed-left-ml,.x-window-header-default-collapsed-left-mr{zoom:1;background-image:url(images/window-header/window-header-default-collapsed-left-sides.gif);background-repeat:repeat-y}.x-window-header-default-collapsed-left-mc{padding:1px 0 1px 0}.x-strict .x-ie7 .x-window-header-default-collapsed-left-tl,.x-strict .x-ie7 .x-window-header-default-collapsed-left-bl{position:relative;right:0}.x-window-header-default-collapsed-left:after{display:none;content:"x-slicer:corners:url(images/window-header/window-header-default-collapsed-left-corners.gif), sides:url(images/window-header/window-header-default-collapsed-left-sides.gif)"}.x-window-header-default-top{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-right{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 -1px 0 0 inset,#ecf2fb -1px 0 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default-left{-webkit-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;-moz-box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset;box-shadow:#ecf2fb 0 1px 0 0 inset,#ecf2fb 0 -1px 0 0 inset,#ecf2fb 1px 0 0 0 inset}.x-window-header-default .x-window-header-icon{width:16px;height:16px;color:#04468c;font-size:16px;line-height:16px;background-position:center center}.x-window-header-default .x-window-header-glyph{color:#04468c;font-size:16px;line-height:16px;opacity:.5}.x-ie8m .x-window-header-default .x-window-header-glyph{color:#698fb9}.x-window-header-default-horizontal .x-window-header-icon-before-title{margin:0 2px 0 0}.x-window-header-default-horizontal .x-window-header-icon-after-title{margin:0 0 0 2px}.x-window-header-default-vertical .x-window-header-icon-before-title{margin:0 0 2px 0}.x-window-header-default-vertical .x-window-header-icon-after-title{margin:2px 0 0 0}.x-window-header-default-horizontal .x-tool-after-title{margin:0 0 0 2px}.x-window-header-default-horizontal .x-tool-before-title{margin:0 2px 0 0}.x-window-header-default-vertical .x-tool-after-title{margin:2px 0 0 0}.x-window-header-default-vertical .x-tool-before-title{margin:0 0 2px 0}.x-window-default-collapsed .x-window-header{border-width:1px!important}.x-nbr .x-window-default-collapsed .x-window-header{border-width:0!important}.x-form-invalid-under{padding:2px 2px 2px 20px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url(images/form/exclamation.gif)}div.x-lbl-top-err-icon{margin-bottom:3px}.x-form-invalid-icon{width:16px;height:16px;margin:0 1px;background-image:url(images/form/exclamation.gif);background-repeat:no-repeat}.x-form-item-label{color:black;font:normal 12px/14px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-toolbar-item .x-form-item-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-table-form-item{margin-bottom:5px}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-form-field{color:black}.x-form-item,.x-form-field{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-type-text textarea.x-form-invalid-field,.x-form-type-text input.x-form-invalid-field,.x-form-type-password textarea.x-form-invalid-field,.x-form-type-password input.x-form-invalid-field,.x-form-type-number textarea.x-form-invalid-field,.x-form-type-number input.x-form-invalid-field,.x-form-type-email textarea.x-form-invalid-field,.x-form-type-email input.x-form-invalid-field,.x-form-type-search textarea.x-form-invalid-field,.x-form-type-search input.x-form-invalid-field,.x-form-type-tel textarea.x-form-invalid-field,.x-form-type-tel input.x-form-invalid-field{background-color:white;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-display-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:alpha(opacity=30);opacity:.3}.x-form-text{color:black;padding:1px 3px 2px 3px;background:white repeat-x 0 0;border-width:1px;border-style:solid;border-color:#b5b8c8;background-image:url(images/form/text-bg.gif);height:22px;line-height:17px}.x-field-toolbar .x-form-text{height:20px;line-height:15px}.x-content-box .x-form-text{height:17px}.x-content-box .x-field-toolbar .x-form-text{height:15px}.x-form-focus{border-color:#7eadd9}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-quirks .x-ie .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-form-textarea{line-height:normal;height:auto;background-image:url(images/form/text-bg.gif)}.x-form-display-field-body{height:22px}.x-toolbar-item .x-form-display-field-body{height:20px}.x-form-display-field{font:normal 12px/14px tahoma,arial,verdana,sans-serif;color:black;margin-top:4px}.x-toolbar-item .x-form-display-field{margin-top:4px;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-message-box .x-window-body{background-color:#ced9e7;border-width:0}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background-position:top left;background-repeat:no-repeat}.x-message-box-info{background-image:url(images/shared/icon-info.gif)}.x-message-box-warning{background-image:url(images/shared/icon-warning.gif)}.x-message-box-question{background-image:url(images/shared/icon-question.gif)}.x-message-box-error{background-image:url(images/shared/icon-error.gif)}.x-form-cb-wrap{height:22px}.x-toolbar-item .x-form-cb-wrap{height:20px}.x-form-cb{margin-top:5px}.x-toolbar-item .x-form-cb{margin-top:4px}.x-form-checkbox{width:13px;height:13px;background:url(images/form/checkbox.gif) no-repeat}.x-form-cb-checked .x-form-checkbox{background-position:0 -13px}.x-form-checkbox-focus{background-position:-13px 0}.x-form-cb-checked .x-form-checkbox-focus{background-position:-13px -13px}.x-form-cb-label{margin-top:4px;font:normal 12px/14px tahoma,arial,verdana,sans-serif}.x-toolbar-item .x-form-cb-label{font:normal 11px/13px tahoma,arial,verdana,sans-serif;margin-top:4px}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:0 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background-image:url(images/grid/invalid_line.gif);background-repeat:repeat-x;background-position:bottom}.x-check-group-alt{background:#d1ddef;border-top:1px dotted #b5b8c8;border-bottom:1px dotted #b5b8c8}.x-form-check-group-label{color:black;padding:2px;margin:0 30px 5px 0;border-width:0 0 1px 0;border-style:solid;border-color:black}.x-fieldset{border:1px solid #b5b8c8;padding:0 10px;margin:0 0 10px}.x-ie8m .x-fieldset,.x-quirks .x-ie .x-fieldset{padding-top:0}.x-ie8m .x-fieldset .x-fieldset-body,.x-quirks .x-ie .x-fieldset .x-fieldset-body{padding-top:0}.x-fieldset-header-checkbox{line-height:14px;margin:1px 3px 0 0}.x-fieldset-header{padding:0 3px 1px}.x-fieldset-header .x-tool{margin-top:1px;padding:0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0}.x-fieldset-header-text{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#15428b;padding:1px 0}.x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin:1px 3px 0 0}.x-webkit .x-fieldset-header{-webkit-padding-start:3px;-webkit-padding-end:3px}.x-opera .x-fieldset-with-legend{margin-top:-1px}.x-opera.x-mac .x-fieldset-header-text{padding:2px 0 0}.x-strict .x-ie8 .x-fieldset-header{margin-bottom:-1px}.x-strict .x-ie8 .x-fieldset-header .x-tool,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-text,.x-strict .x-ie8 .x-fieldset-header .x-fieldset-header-checkbox{position:relative;top:-1px}.x-quirks .x-ie .x-fieldset-header,.x-ie8m .x-fieldset-header{padding-left:1px;padding-right:1px}.x-fieldset-collapsed .x-fieldset-body{display:none}.x-fieldset-collapsed{padding-bottom:0!important;border-width:1px 1px 0 1px!important;border-left-color:transparent!important;border-right-color:transparent!important}.x-ie6 .x-fieldset-collapsed{border-width:1px 0 0 0!important;padding-bottom:0!important;margin-left:1px;margin-right:1px}.x-ie .x-fieldset-bwrap{zoom:1}.x-fieldset .x-tool-toggle{background-position:0 -60px}.x-fieldset .x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-ie .x-fieldset-noborder legend{position:relative;margin-bottom:23px}.x-ie .x-fieldset-noborder legend span{position:absolute;left:16px}.x-fieldset{overflow:hidden}.x-fieldset-bwrap{overflow:hidden;zoom:1}.x-fieldset-body{overflow:hidden}.x-form-radio{width:13px;height:13px;background:url(images/form/radio.gif) no-repeat}.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-radio-focus{background-position:-13px 0}.x-form-cb-checked .x-form-radio-focus{background-position:-13px -13px}.x-form-trigger{background:url(images/form/trigger.gif);width:17px;border-width:0 0 1px;border-color:#b5b8c8;border-style:solid}.x-trigger-cell{background-color:white;width:17px}.x-form-trigger-over{background-position:-17px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-color:#7eadd9}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0}.x-form-clear-trigger{background-image:url(images/form/clear-trigger.gif)}.x-form-search-trigger{background-image:url(images/form/search-trigger.gif)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-toolbar .x-form-trigger-input-cell{height:20px}div.x-form-spinner-up,div.x-form-spinner-down{background-image:url(images/form/spinner.gif);background-color:white;width:17px;height:11px}.x-form-spinner-down{background-position:0 -11px}.x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-toolbar-item div.x-form-spinner-up,.x-toolbar-item div.x-form-spinner-down{background-image:url(images/form/spinner-small.gif);height:10px}.x-toolbar-item .x-form-spinner-down{background-position:0 -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -10px}.x-toolbar-item .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -10px}.x-toolbar-item .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -10px}.x-tbar-page-number{width:30px}.x-tbar-page-first{background-image:url(images/grid/page-first.gif)}.x-tbar-page-prev{background-image:url(images/grid/page-prev.gif)}.x-tbar-page-next{background-image:url(images/grid/page-next.gif)}.x-tbar-page-last{background-image:url(images/grid/page-last.gif)}.x-tbar-loading{background-image:url(images/grid/refresh.gif)}.x-item-disabled .x-tbar-page-first{background-image:url(images/grid/page-first-disabled.gif)}.x-item-disabled .x-tbar-page-prev{background-image:url(images/grid/page-prev-disabled.gif)}.x-item-disabled .x-tbar-page-next{background-image:url(images/grid/page-next-disabled.gif)}.x-item-disabled .x-tbar-page-last{background-image:url(images/grid/page-last-disabled.gif)}.x-item-disabled .x-tbar-loading{background-image:url(images/grid/refresh-disabled.gif)}.x-boundlist{border-width:1px;border-style:solid;border-color:#98c0f4;background:white}.x-strict .x-ie7m .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:0 3px;line-height:20px;cursor:pointer;cursor:hand;position:relative;zoom:1;border-width:1px;border-style:dotted;border-color:white}.x-boundlist-selected{background:#cbdaf0;border-color:#8eabe4}.x-boundlist-item-over{background:#dfe8f6;border-color:#a3bae9}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-datepicker{border-width:1px;border-style:solid;border-color:#1b376c;background-color:white;width:177px}.x-datepicker-header{padding:3px 6px;text-align:center;background-image:none;background-color:#23427c;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#264888),color-stop(100%,#1f3a6c));background-image:-webkit-linear-gradient(top,#264888,#1f3a6c);background-image:-moz-linear-gradient(top,#264888,#1f3a6c);background-image:-o-linear-gradient(top,#264888,#1f3a6c);background-image:linear-gradient(top,#264888,#1f3a6c)}.x-datepicker-arrow{width:15px;height:15px;top:6px;cursor:pointer;background-color:#23427c;filter:alpha(opacity=70);opacity:.7}a.x-datepicker-arrow:hover{filter:alpha(opacity=100);opacity:1}.x-datepicker-next{right:6px;background-image:url(images/shared/right-btn.gif)}.x-datepicker-prev{left:6px;background-image:url(images/shared/left-btn.gif)}.x-datepicker-month .x-btn,.x-datepicker-month .x-btn .x-btn-tc,.x-datepicker-month .x-btn .x-btn-tl,.x-datepicker-month .x-btn .x-btn-tr,.x-datepicker-month .x-btn .x-btn-mc,.x-datepicker-month .x-btn .x-btn-ml,.x-datepicker-month .x-btn .x-btn-mr,.x-datepicker-month .x-btn .x-btn-bc,.x-datepicker-month .x-btn .x-btn-bl,.x-datepicker-month .x-btn .x-btn-br{background:transparent;border-width:0!important}.x-datepicker-month .x-btn-inner{color:white}.x-datepicker-month .x-btn-split-right{background-image:url(images/button/s-arrow-light.gif);padding-right:12px}.x-datepicker-column-header{width:25px;color:#233d6d;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-width:0 0 1px;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#edf4fd),color-stop(100%,#cde1f9));background-image:-webkit-linear-gradient(top,#edf4fd,#cde1f9);background-image:-moz-linear-gradient(top,#edf4fd,#cde1f9);background-image:-o-linear-gradient(top,#edf4fd,#cde1f9);background-image:linear-gradient(top,#edf4fd,#cde1f9)}.x-datepicker-column-header-inner{line-height:19px;padding:0 7px 0 0}.x-datepicker-cell{text-align:right;border-width:1px;border-style:solid;border-color:white}.x-datepicker-date{padding:0 4px 0 0;font:normal 11px tahoma,arial,verdana,sans-serif;color:black;cursor:pointer;line-height:18px}a.x-datepicker-date:hover{color:black;background-color:#ddecfe}.x-datepicker-selected{border-style:solid;border-color:#8db2e3}.x-datepicker-selected .x-datepicker-date{background-color:#dae5f3;font-weight:bold}.x-datepicker-today{border-color:darkred;border-style:solid}.x-datepicker-prevday .x-datepicker-date,.x-datepicker-nextday .x-datepicker-date{color:#aaa}.x-datepicker-disabled a.x-datepicker-date{background-color:#eee;cursor:default;color:#bbb}.x-datepicker-disabled a.x-datepicker-date:hover{background-color:#eee}.x-datepicker-footer,.x-monthpicker-buttons{padding:4px 0;border-width:1px 0 0;border-style:solid;border-color:#b2d1f5;background-image:none;background-color:#dfecfb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dee8f5),color-stop(49%,#d1dff0),color-stop(51%,#c7d8ed),color-stop(100%,#cbdaee));background-image:-webkit-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-moz-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:-o-linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);background-image:linear-gradient(top,#dee8f5,#d1dff0 49%,#c7d8ed 51%,#cbdaee);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{margin:0 2px 0 2px}.x-monthpicker{width:177px;border-width:1px;border-style:solid;border-color:#1b376c;background-color:white}.x-monthpicker-months{border-width:0 1px 0 0;border-color:#1b376c;border-style:solid;width:87px}.x-monthpicker-months .x-monthpicker-item{width:43px}.x-monthpicker-years{width:88px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-item{margin:5px 0 4px;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center}.x-monthpicker-item-inner{margin:0 5px 0 5px;color:#15428b;border-width:1px;border-style:solid;border-color:white;line-height:16px;cursor:pointer}a.x-monthpicker-item-inner:hover{background-color:#ddecfe}.x-monthpicker-selected{background-color:#dae5f3;border-style:solid;border-color:#8db2e3}.x-monthpicker-yearnav{height:27px}.x-monthpicker-yearnav-button-ct{width:44px}.x-monthpicker-yearnav-button{height:15px;width:15px;cursor:pointer;margin-top:6px;background-color:white}.x-monthpicker-yearnav-next{background-image:url(images/tools/tool-sprites.gif);background-position:0 -120px}.x-monthpicker-yearnav-next-over{background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-image:url(images/tools/tool-sprites.gif);background-position:0 -105px}.x-monthpicker-yearnav-prev-over{background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px}.x-monthpicker-small .x-monthpicker-item-inner{margin:0 5px 0 5px}.x-monthpicker-small .x-monthpicker-yearnav{height:22px}.x-monthpicker-small .x-monthpicker-yearnav-button{margin-top:3px}.x-nlg .x-datepicker-header{background-image:url(images/datepicker/datepicker-header-bg.gif);background-repeat:repeat-x;background-position:top left}.x-nlg .x-datepicker-footer,.x-nlg .x-monthpicker-buttons{background-image:url(images/datepicker/datepicker-footer-bg.gif);background-repeat:repeat-x;background-position:top left}.x-datepicker-header:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-header-bg.gif)"}.x-datepicker-footer:after{display:none;content:"x-slicer:bg:url(images/datepicker/datepicker-footer-bg.gif)"}.x-form-date-trigger{background-image:url(images/form/date-trigger.gif)}.x-form-file-wrap .x-form-text{color:gray}.x-color-picker{width:144px;height:90px;background-color:white;border-color:white;border-width:0;border-style:solid}.x-color-picker-item{width:18px;height:18px;border-width:1px;border-color:white;border-style:solid;background-color:white;cursor:pointer;padding:2px}.x-content-box .x-color-picker-item{width:12px;height:12px}a.x-color-picker-item:hover{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker-item-inner{line-height:10px;border-color:#aca899;border-width:1px;border-style:solid}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-bold,.x-menu-item div.x-edit-bold{background-position:0 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-italic,.x-menu-item div.x-edit-italic{background-position:-16px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-underline,.x-menu-item div.x-edit-underline{background-position:-32px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-forecolor,.x-menu-item div.x-edit-forecolor{background-position:-160px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-backcolor,.x-menu-item div.x-edit-backcolor{background-position:-176px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item div.x-edit-justifyleft{background-position:-112px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item div.x-edit-justifycenter{background-position:-128px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-justifyright,.x-menu-item div.x-edit-justifyright{background-position:-144px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item div.x-edit-insertorderedlist{background-position:-80px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item div.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item div.x-edit-increasefontsize{background-position:-48px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item div.x-edit-decreasefontsize{background-position:-64px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item div.x-edit-sourceedit{background-position:-192px 0;background-image:url(images/editor/tb-sprite.gif)}.x-html-editor-tb .x-edit-createlink,.x-menu-item div.x-edit-createlink{background-position:-208px 0;background-image:url(images/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-font-select{font-size:11px;font-family:inherit}.x-html-editor-wrap textarea{font:normal 12px tahoma,arial,verdana,sans-serif;background-color:white;resize:none}.x-grid-body{background:white;border-width:1px;border-style:solid;border-color:#99bce8}.x-grid-empty{padding:10px;color:gray;background-color:white;font:normal 11px tahoma,arial,verdana,sans-serif}.x-grid-cell{color:null;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-color:white;border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-grid-row-alt .x-grid-td{background-color:#fafafa}.x-grid-row-before-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-over .x-grid-td{border-bottom-style:solid;border-bottom-color:#ddd}.x-grid-row-before-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-selected .x-grid-td{border-bottom-style:dotted;border-bottom-color:#a3bae9}.x-grid-row-before-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-row-focused .x-grid-td{background-color:#efefef}.x-grid-row-over .x-grid-td{background-color:#efefef}.x-grid-row-selected .x-grid-td{background-color:#dfe8f6}.x-grid-row-focused .x-grid-td{border-bottom-style:dotted;border-bottom-color:#464646;border-bottom-width:1px}.x-grid-table .x-grid-row-focused-first .x-grid-td{border-top:1px dotted #464646}.x-grid-row-selected .x-grid-row-summary .x-grid-td{border-bottom-color:#dfe8f6;border-top-width:0}.x-grid-row-focused .x-grid-row-summary .x-grid-td{border-bottom-color:#efefef;border-top-width:0}.x-grid-with-row-lines .x-grid-td{border-bottom-width:1px}.x-grid-with-row-lines .x-grid-table{border-top:1px solid white}.x-grid-with-row-lines .x-grid-table-over-first{border-top-style:solid;border-top-color:#ddd}.x-grid-with-row-lines .x-grid-table-selected-first{border-top-style:dotted;border-top-color:#a3bae9}.x-grid-body .x-grid-table-focused-first{border-top:1px dotted #464646}.x-grid-cell-inner{text-overflow:ellipsis;padding:3px 6px 4px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner{padding-top:2px;padding-bottom:3px}.x-grid-cell-special{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid;border-right-width:1px;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f6f6f6),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:-o-linear-gradient(top,#f6f6f6,#e9e9e9);background-image:linear-gradient(top,#f6f6f6,#e9e9e9)}.x-grid-row-selected .x-grid-cell-special{border-right-color:#ededed #aaccf6;background-image:none;background-color:#dfe8f6;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dfe8f6),color-stop(100%,#cbdaf0));background-image:-webkit-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-moz-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:-o-linear-gradient(left,#dfe8f6,#cbdaf0);background-image:linear-gradient(left,#dfe8f6,#cbdaf0)}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-image:url(images/grid/cell-special-bg.gif)}.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url(images/grid/cell-special-selected-bg.gif)}.x-grid-cell-special .x-grid-cell-special:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-bg.gif)"}.x-grid-cell-special .x-grid-cell-special-selected:after{display:none;content:"x-slicer:bg:url(images/grid/cell-special-selected-bg.gif)"}.x-grid-dirty-cell{background:url(images/grid/dirty.gif) no-repeat 0 0}.x-grid-row .x-grid-cell-selected{color:null;background-color:#b8cfee}.x-grid-with-col-lines .x-grid-cell{border-right-width:1px}.x-grid-resize-marker{width:1px;background-color:#0f0f0f}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0;background-color:#77bc71;overflow:visible;pointer-events:none}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url(images/grid/dd-insert-arrow-right.png);height:16px;width:16px}.x-grid-drop-indicator .x-grid-drop-indicator-right{position:absolute;top:-8px;right:-11px;background-image:url(images/grid/dd-insert-arrow-left.png);height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url(images/grid/dd-insert-arrow-right.gif)}.x-ie6 .x-grid-drop-indicator-right{background-image:url(images/grid/dd-insert-arrow-left.gif)}.col-move-top,.col-move-bottom{width:9px;height:9px}.col-move-top{background-image:url(images/grid/col-move-top.gif)}.col-move-bottom{background-image:url(images/grid/col-move-bottom.gif)}.x-grid-header-ct{border:1px solid #99bce8;border-bottom-color:#c5c5c5;background-color:#c5c5c5;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-accordion-item .x-grid-header-ct{border-width:0 0 1px!important}.x-accordion-item .x-grid-header-ct-hidden{border:0!important}.x-grid-body{border-top-color:#c5c5c5}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url(images/grid/hmenu-asc.gif)}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url(images/grid/hmenu-desc.gif)}.x-cols-icon .x-menu-item-icon{background-image:url(images/grid/columns.gif)}.x-column-header{border-right:1px solid #c5c5c5;color:black;font:normal 11px/13px tahoma,arial,verdana,sans-serif;background-image:none;background-color:#c5c5c5;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f9f9f9),color-stop(100%,#e3e4e6));background-image:-webkit-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-moz-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:-o-linear-gradient(top,#f9f9f9,#e3e4e6);background-image:linear-gradient(top,#f9f9f9,#e3e4e6)}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5}.x-group-sub-header .x-column-header-inner{padding:3px 6px 5px 6px}.x-column-header-inner{padding:4px 6px 5px 6px;text-overflow:ellipsis}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{background-image:none;background-color:#aaccf6;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ebf3fd),color-stop(39%,#ebf3fd),color-stop(40%,#d9e8fb),color-stop(100%,#d9e8fb));background-image:-webkit-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-moz-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:-o-linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb);background-image:linear-gradient(top,#ebf3fd,#ebf3fd 39%,#d9e8fb 40%,#d9e8fb)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background-image:url(images/grid/column-header-bg.gif)}.x-nlg .x-column-header-over,.x-nlg .x-column-header-sort-ASC,.x-nlg .x-column-header-sort-DESC{background-image:url(images/grid/column-header-over-bg.gif)}.x-column-header-open{background-color:transparent}.x-column-header-open .x-column-header-trigger{background-color:transparent}.x-column-header-trigger{width:14px;cursor:pointer;background-color:transparent;background-position:0 center}.x-column-header-align-right .x-column-header-text{margin-right:9px}.x-column-header-sort-ASC .x-column-header-text,.x-column-header-sort-DESC .x-column-header-text{padding-right:12px;background-position:right center}.x-column-header-sort-ASC .x-column-header-text{background-image:url(images/grid/sort_asc.gif)}.x-column-header-sort-DESC .x-column-header-text{background-image:url(images/grid/sort_desc.gif)}.x-column-header:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-bg.gif), stretch:bottom"}.x-column-header-over:after{display:none;content:"x-slicer:bg:url(images/grid/column-header-over-bg.gif), stretch:bottom"}.x-grid-cell-inner-action-col{padding:2px 2px 2px 2px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-action-col{padding-top:1px;padding-bottom:1px}.x-action-col-cell .x-item-disabled{filter:alpha(opacity=30);opacity:.3}.x-action-col-icon{height:16px;width:16px;cursor:pointer}.x-grid-cell-inner-checkcolumn{padding:4px 6px 3px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-checkcolumn{padding-top:3px;padding-bottom:2px}.x-grid-checkcolumn{width:13px;height:13px;background:url(images/form/checkbox.gif) 0 0 no-repeat}.x-item-disabled .x-grid-checkcolumn{filter:alpha(opacity=30);opacity:.3}.x-grid-checkcolumn-checked{background-position:0 -13px}.x-grid-cell-inner-row-numberer{padding:3px 5px 4px 3px}.x-grid-group-hd{border-width:0 0 2px 0;border-style:solid;border-color:#99bbe8;padding:10px 4px 4px 4px;background:white;cursor:pointer}.x-grid-group-hd-not-collapsible{cursor:default}.x-grid-group-hd-collapsible .x-grid-group-title{background-repeat:no-repeat;background-position:left center;background-image:url(images/grid/group-collapse.gif);padding:0 0 0 14px}.x-grid-group-title{color:#3764a0;font:bold 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-grid-group-collapsed .x-grid-group-title{background-image:url(images/grid/group-expand.gif)}.x-group-by-icon{background-image:url(images/grid/group-by.gif)}.x-show-groups-icon{background-image:url(images/grid/group-by.gif)}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:5px 6px 5px 6px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-rowbody{padding-top:6px;padding-bottom:4px}.x-grid-rowwrap{border-color:#ededed #d0d0d0 #ededed #d0d0d0;border-style:solid}.x-summary-bottom{border-bottom-color:#c5c5c5}.x-docked-summary{border-width:1px;border-color:#99bce8;border-style:solid}.x-docked-summary .x-grid-table{width:100%}.x-grid-row-summary .x-grid-cell,.x-grid-row-summary .x-grid-rowwrap,.x-grid-row-summary .x-grid-cell-rowbody{border-color:#ededed #d0d0d0 #ededed #d0d0d0;background-color:transparent!important;border-top-width:0;font:normal 11px/13px tahoma,arial,verdana,sans-serif}.x-grid-with-row-lines .x-grid-table-summary{border:0}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0;border-style:solid}.x-grid-inner-locked .x-column-header-last,.x-grid-inner-locked .x-grid-cell-last{border-right-width:0!important}.x-hmenu-lock .x-menu-item-icon{background-image:url(images/grid/hmenu-lock.gif)}.x-hmenu-unlock .x-menu-item-icon{background-image:url(images/grid/hmenu-unlock.gif)}.x-grid-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:1px 5px 2px 5px;height:20px}.x-content-box .x-grid-editor .x-form-text{height:15px}.x-gecko .x-grid-editor .x-form-text{padding-left:4px;padding-right:4px}.x-grid-editor .x-form-trigger{height:20px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{height:10px}.x-grid-editor .x-form-cb{margin-top:4px}.x-grid-editor .x-form-cb-wrap{height:20px}.x-grid-editor .x-form-display-field-body{height:20px}.x-grid-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding:2px 6px 3px 6px;text-overflow:ellipsis}.x-grid-editor .x-form-action-col-field{padding:2px 2px 2px 2px}.x-tree-cell-editor .x-form-text{padding-left:2px;padding-right:2px}.x-gecko .x-tree-cell-editor .x-form-text{padding-left:1px;padding-right:1px}.x-grid-row-editor .x-field{margin:0 1px 0 1px}.x-grid-row-editor .x-form-display-field{padding:2px 5px 3px 5px}.x-grid-row-editor .x-form-action-col-field{padding:2px 1px 2px 1px}.x-grid-row-editor .x-form-text{padding:1px 4px 2px 4px}.x-gecko .x-grid-row-editor .x-form-text{padding-left:3px;padding-right:3px}.x-grid-row-editor .x-panel-body{border-top:1px solid #99bce8!important;border-bottom:1px solid #99bce8!important;padding:4px 0 4px 0;background-color:#eaf1fb}.x-grid-with-col-lines .x-grid-row-editor .x-form-cb{margin-right:1px}.x-grid-row-editor-buttons-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;padding:4px 4px 4px 4px;border-width:0 1px 1px 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-bottom-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-bottom-frameInfo{font-family:th-0-0-5-5-0-1-1-1-4-4-4-4}.x-grid-row-editor-buttons-default-bottom-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-bottom-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-bottom-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-bottom-br{background-position:right -25px}.x-grid-row-editor-buttons-default-bottom-ml{background-position:0 top}.x-grid-row-editor-buttons-default-bottom-mr{background-position:right top}.x-grid-row-editor-buttons-default-bottom-tc{background-position:0 0}.x-grid-row-editor-buttons-default-bottom-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-mr{padding-right:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-ml{padding-left:5px}.x-grid-row-editor-buttons-default-bottom-tc{height:0}.x-grid-row-editor-buttons-default-bottom-bc{height:5px}.x-grid-row-editor-buttons-default-bottom-tl,.x-grid-row-editor-buttons-default-bottom-bl,.x-grid-row-editor-buttons-default-bottom-tr,.x-grid-row-editor-buttons-default-bottom-br,.x-grid-row-editor-buttons-default-bottom-tc,.x-grid-row-editor-buttons-default-bottom-bc,.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif)}.x-grid-row-editor-buttons-default-bottom-ml,.x-grid-row-editor-buttons-default-bottom-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-bottom-mc{padding:4px 0 0 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-bottom-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-bottom:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif)"}.x-grid-row-editor-buttons-default-top{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:4px 4px 4px 4px;border-width:1px 1px 0 1px;border-style:solid;background-color:#eaf1fb}.x-grid-row-editor-buttons-default-top-mc{background-color:#eaf1fb}.x-nbr .x-grid-row-editor-buttons-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent}body.x-nbr .x-grid-row-editor-buttons-default-top-frameInfo{font-family:th-5-5-0-0-1-1-0-1-4-4-4-4}.x-grid-row-editor-buttons-default-top-tl{background-position:0 -10px}.x-grid-row-editor-buttons-default-top-tr{background-position:right -15px}.x-grid-row-editor-buttons-default-top-bl{background-position:0 -20px}.x-grid-row-editor-buttons-default-top-br{background-position:right -25px}.x-grid-row-editor-buttons-default-top-ml{background-position:0 top}.x-grid-row-editor-buttons-default-top-mr{background-position:right top}.x-grid-row-editor-buttons-default-top-tc{background-position:0 0}.x-grid-row-editor-buttons-default-top-bc{background-position:0 -5px}.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-mr{padding-right:5px}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-ml{padding-left:5px}.x-grid-row-editor-buttons-default-top-tc{height:5px}.x-grid-row-editor-buttons-default-top-bc{height:0}.x-grid-row-editor-buttons-default-top-tl,.x-grid-row-editor-buttons-default-top-bl,.x-grid-row-editor-buttons-default-top-tr,.x-grid-row-editor-buttons-default-top-br,.x-grid-row-editor-buttons-default-top-tc,.x-grid-row-editor-buttons-default-top-bc,.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif)}.x-grid-row-editor-buttons-default-top-ml,.x-grid-row-editor-buttons-default-top-mr{zoom:1;background-image:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif);background-repeat:repeat-y}.x-grid-row-editor-buttons-default-top-mc{padding:0 0 4px 0}.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-tl,.x-strict .x-ie7 .x-grid-row-editor-buttons-default-top-bl{position:relative;right:0}.x-grid-row-editor-buttons-default-top:after{display:none;content:"x-slicer:corners:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif), sides:url(images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif)"}.x-grid-row-editor-buttons-default-bottom{top:29px}.x-grid-row-editor-buttons-default-top{bottom:29px}.x-grid-row-editor-buttons{border-color:#99bce8}.x-row-editor-update-button{margin-right:2px}.x-row-editor-cancel-button{margin-left:2px}.x-grid-row-editor-errors .x-tip-body{padding:5px}.x-grid-row-editor-errors-item{list-style:disc;margin-left:15px}.x-grid-cell-inner-row-expander{padding:6px 7px 5px 7px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-inner-row-expander{padding-top:5px;padding-bottom:4px}.x-grid-row-expander{width:9px;height:9px;cursor:pointer;background-image:url(images/grid/group-collapse.gif)}.x-grid-row-collapsed .x-grid-row-expander{background-image:url(images/grid/group-expand.gif)}.x-grid-cell-inner-property-name{background-image:url(images/grid/property-cell-bg.gif);background-repeat:no-repeat;background-position:-16px 2px;padding-left:12px}.x-accordion-layout-ct{background-color:white;padding:0}.x-accordion-hd .x-panel-header-text-container{color:black;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;text-transform:none}.x-accordion-item{margin:0}.x-accordion-item .x-accordion-hd{background:#d9e7f8;border-top-color:#f3f7fb;padding:4px 5px 5px 5px}.x-accordion-item .x-accordion-hd-sibling-expanded{border-top-color:#99bce8}.x-accordion-item .x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8}.x-accordion-item .x-accordion-body{border-width:0}.x-accordion-hd .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-bottom{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-bottom{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-bottom{background-position:-15px -240px}.x-accordion-hd .x-tool-img{background-color:#d9e7f8}.x-collapse-el{cursor:pointer}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-18px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-18px}.x-layout-split-left{background-image:url(images/util/splitter/mini-left.gif)}.x-layout-split-right{background-image:url(images/util/splitter/mini-right.gif)}.x-layout-split-top{background-image:url(images/util/splitter/mini-top.gif)}.x-layout-split-bottom{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-left{background-image:url(images/util/splitter/mini-right.gif)}.x-splitter-collapsed .x-layout-split-right{background-image:url(images/util/splitter/mini-left.gif)}.x-splitter-collapsed .x-layout-split-top{background-image:url(images/util/splitter/mini-bottom.gif)}.x-splitter-collapsed .x-layout-split-bottom{background-image:url(images/util/splitter/mini-top.gif)}.x-splitter-active{background-color:#b4b4b4;filter:alpha(opacity=80);opacity:.8}.x-splitter-active .x-collapse-el{filter:alpha(opacity=30);opacity:.3}.x-border-layout-ct{background-color:#dfe8f6}.x-menu-body{background:#f0f0f0;padding:2px}.x-menu-icon-separator{left:24px;border-left:solid 1px #e0e0e0;background-color:white;width:2px}.x-menu-item{padding:1px;cursor:pointer}.x-menu-item-indent{margin-left:30px}.x-menu-item-active{background-image:none;background-color:#d9e8fb;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e7f0fc),color-stop(100%,#c7ddf9));background-image:-webkit-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-moz-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:-o-linear-gradient(top,#e7f0fc,#c7ddf9);background-image:linear-gradient(top,#e7f0fc,#c7ddf9);border-color:#a9cbf5;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:0}.x-nlg .x-menu-item-active{background:#d9e8fb repeat-x left top;background-image:url(images/menu/menu-item-active-bg.gif)}.x-menu-item-link{line-height:22px;padding:0 0 0 30px;display:inline-block}.x-right-check-item-text{padding-right:22px}.x-menu-item-icon{width:16px;height:16px;top:4px;left:3px;background-position:center center}.x-menu-item-glyph{font-size:16px;line-height:16px;color:#222;opacity:.5}.x-ie8m .x-menu-item-glyph{color:#898989}.x-gecko .x-menu-item-active .x-menu-item-icon,.x-quirks .x-menu-item-active .x-menu-item-icon,.x-ie9m .x-menu-item-active .x-menu-item-icon{top:3px;left:2px}.x-menu-item-icon-right{width:16px;height:16px;top:3px;right:3px;background-position:center center}.x-menu-item-text{font-size:11px;color:#222;cursor:pointer;margin-right:16px}.x-menu-item-checked .x-menu-item-icon,.x-menu-item-checked .x-menu-item-icon-right{background-image:url(images/menu/checked.gif)}.x-menu-item-checked .x-menu-group-icon{background-image:url(images/menu/group-checked.gif)}.x-menu-item-unchecked .x-menu-item-icon,.x-menu-item-unchecked .x-menu-item-icon-right{background-image:url(images/menu/unchecked.gif)}.x-menu-item-unchecked .x-menu-group-icon{background-image:none}.x-menu-item-separator{height:2px;border-top:solid 1px #e0e0e0;background-color:white;margin:2px 0;padding:0}.x-menu-item-arrow{width:12px;height:9px;top:7px;right:0;background-image:url(images/menu/menu-parent.gif)}.x-gecko .x-menu-item-active .x-menu-item-arrow,.x-quirks .x-menu-item-active .x-menu-item-arrow,.x-ie9m .x-menu-item-active .x-menu-item-arrow{top:6px;right:-1px}.x-menu-item-disabled{filter:alpha(opacity=50);opacity:.5}.x-content-box .x-menu-icon-separator{width:1px}.x-content-box .x-menu-item-separator{height:1px}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:alpha(opacity=50);opacity:.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-menu-date-item{border-color:#99bbe8}.x-menu-item .x-form-item-label{font-size:11px;color:#222}.x-menu-scroll-top{height:8px;background-image:url(images/menu/scroll-top.gif)}.x-menu-scroll-bottom{height:8px;background-image:url(images/menu/scroll-bottom.gif)}.x-menu-scroll-top,.x-menu-scroll-bottom{background-color:#f0f0f0}.x-menu-item-link:after{display:none;content:"x-slicer:bg:url(images/menu/menu-item-active-bg.gif)"}.x-tool{cursor:pointer}.x-tool-img{overflow:hidden;width:15px;height:15px;background-image:url(images/tools/tool-sprites.gif);margin:0}.x-tool-placeholder{visibility:hidden}.x-tool-close{background-position:0 0}.x-tool-minimize{background-position:0 -15px}.x-tool-maximize{background-position:0 -30px}.x-tool-restore{background-position:0 -45px}.x-tool-toggle{background-position:0 -60px}.x-panel-collapsed .x-tool-toggle{background-position:0 -75px}.x-tool-gear{background-position:0 -90px}.x-tool-prev{background-position:0 -105px}.x-tool-next{background-position:0 -120px}.x-tool-pin{background-position:0 -135px}.x-tool-unpin{background-position:0 -150px}.x-tool-right{background-position:0 -165px}.x-tool-left{background-position:0 -180px}.x-tool-down{background-position:0 -195px}.x-tool-up{background-position:0 -210px}.x-tool-refresh{background-position:0 -225px}.x-tool-plus{background-position:0 -240px}.x-tool-minus{background-position:0 -255px}.x-tool-search{background-position:0 -270px}.x-tool-save{background-position:0 -285px}.x-tool-help{background-position:0 -300px}.x-tool-print{background-position:0 -315px}.x-tool-expand{background-position:0 -330px}.x-tool-collapse{background-position:0 -345px}.x-tool-resize{background-position:0 -360px}.x-tool-move{background-position:0 -375px}.x-tool-expand-bottom,.x-tool-collapse-bottom{background-position:0 -195px}.x-tool-expand-top,.x-tool-collapse-top{background-position:0 -210px}.x-tool-expand-left,.x-tool-collapse-left{background-position:0 -180px}.x-tool-expand-right,.x-tool-collapse-right{background-position:0 -165px}.x-tool-over .x-tool-close{background-position:-15px 0}.x-tool-over .x-tool-minimize{background-position:-15px -15px}.x-tool-over .x-tool-maximize{background-position:-15px -30px}.x-tool-over .x-tool-restore{background-position:-15px -45px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.x-tool-over .x-tool-gear{background-position:-15px -90px}.x-tool-over .x-tool-prev{background-position:-15px -105px}.x-tool-over .x-tool-next{background-position:-15px -120px}.x-tool-over .x-tool-pin{background-position:-15px -135px}.x-tool-over .x-tool-unpin{background-position:-15px -150px}.x-tool-over .x-tool-right{background-position:-15px -165px}.x-tool-over .x-tool-left{background-position:-15px -180px}.x-tool-over .x-tool-down{background-position:-15px -195px}.x-tool-over .x-tool-up{background-position:-15px -210px}.x-tool-over .x-tool-refresh{background-position:-15px -225px}.x-tool-over .x-tool-plus{background-position:-15px -240px}.x-tool-over .x-tool-minus{background-position:-15px -255px}.x-tool-over .x-tool-search{background-position:-15px -270px}.x-tool-over .x-tool-save{background-position:-15px -285px}.x-tool-over .x-tool-help{background-position:-15px -300px}.x-tool-over .x-tool-print{background-position:-15px -315px}.x-tool-over .x-tool-expand{background-position:-15px -330px}.x-tool-over .x-tool-collapse{background-position:-15px -345px}.x-tool-over .x-tool-resize{background-position:-15px -360px}.x-tool-over .x-tool-move{background-position:-15px -375px}.x-tool-over .x-tool-expand-bottom,.x-tool-over .x-tool-collapse-bottom{background-position:-15px -195px}.x-tool-over .x-tool-expand-top,.x-tool-over .x-tool-collapse-top{background-position:-15px -210px}.x-tool-over .x-tool-expand-left,.x-tool-over .x-tool-collapse-left{background-position:-15px -180px}.x-tool-over .x-tool-expand-right,.x-tool-over .x-tool-collapse-right{background-position:-15px -165px}.x-resizable-handle{position:absolute;z-index:100;font-size:1px;line-height:6px;overflow:hidden;zoom:1;filter:alpha(opacity=0);opacity:0;background-color:#fff}.x-collapsed .x-resizable-handle{display:none}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-pinned .x-resizable-handle,.x-resizable-over .x-resizable-handle{filter:alpha(opacity=100);opacity:1}.x-window .x-window-handle{filter:alpha(opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;overflow:hidden;z-index:50000}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-image:url(images/sizer/e-handle.gif)}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-north{background-image:url(images/sizer/s-handle.gif)}.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast{background-position:top left;background-image:url(images/sizer/se-handle.gif)}.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{background-position:bottom right;background-image:url(images/sizer/nw-handle.gif)}.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{background-position:bottom left;background-image:url(images/sizer/ne-handle.gif)}.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{background-position:top right;background-image:url(images/sizer/sw-handle.gif)}.x-slider-horz{padding-left:7px;background:no-repeat 0 -15px}.x-slider-horz .x-slider-end{padding-right:7px;background:no-repeat right -30px}.x-slider-horz .x-slider-inner{height:15px}.x-ie6 .x-form-item .x-slider-horz,.x-ie7 .x-form-item .x-slider-horz,.x-quirks .x-ie .x-form-item .x-slider-horz{margin-top:4px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;background-image:url(images/slider/slider-thumb.png)}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:no-repeat -30px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;background:no-repeat -15px bottom;width:15px}.x-slider-vert .x-slider-inner{width:15px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;background-image:url(images/slider/slider-v-thumb.png)}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.png)}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.png)}.x-tab-default-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-top-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-top{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-top{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-top-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-top-tl{background-position:0 -8px}.x-tab-default-top-tr{background-position:right -12px}.x-tab-default-top-bl{background-position:0 -16px}.x-tab-default-top-br{background-position:right -20px}.x-tab-default-top-ml{background-position:0 top}.x-tab-default-top-mr{background-position:right top}.x-tab-default-top-tc{background-position:0 0}.x-tab-default-top-bc{background-position:0 -4px}.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-mr{padding-right:4px}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-ml{padding-left:4px}.x-tab-default-top-tc{height:4px}.x-tab-default-top-bc{height:0}.x-tab-default-top-tl,.x-tab-default-top-bl,.x-tab-default-top-tr,.x-tab-default-top-br,.x-tab-default-top-tc,.x-tab-default-top-bc,.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-top-ml,.x-tab-default-top-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-top-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-top-tl,.x-strict .x-ie7 .x-tab-default-top-bl{position:relative;right:0}.x-tab-default-top:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-bottom{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;padding:3px 9px 3px 9px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-bottom-mc{background-image:url(images/tab/tab-default-bottom-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif);background-position:0 top}.x-nbr .x-tab-default-bottom{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-bottom-frameInfo{font-family:th-0-0-4-4-0-1-1-1-3-9-3-9}.x-tab-default-bottom-tl{background-position:0 -8px}.x-tab-default-bottom-tr{background-position:right -12px}.x-tab-default-bottom-bl{background-position:0 -16px}.x-tab-default-bottom-br{background-position:right -20px}.x-tab-default-bottom-ml{background-position:0 top}.x-tab-default-bottom-mr{background-position:right top}.x-tab-default-bottom-tc{background-position:0 0}.x-tab-default-bottom-bc{background-position:0 -4px}.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-mr{padding-right:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-ml{padding-left:4px}.x-tab-default-bottom-tc{height:0}.x-tab-default-bottom-bc{height:4px}.x-tab-default-bottom-tl,.x-tab-default-bottom-bl,.x-tab-default-bottom-tr,.x-tab-default-bottom-br,.x-tab-default-bottom-tc,.x-tab-default-bottom-bc,.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-corners.gif)}.x-tab-default-bottom-ml,.x-tab-default-bottom-mr{zoom:1;background-image:url(images/tab/tab-default-bottom-sides.gif)}.x-tab-default-bottom-mc{padding:3px 6px 0 6px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab-default-bottom:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-bottom-fbg.gif), bg:url(images/tab/tab-default-bottom-bg.gif), corners:url(images/tab/tab-default-bottom-corners.gif), sides:url(images/tab/tab-default-bottom-sides.gif)"}.x-tab-default-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-left-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-left{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-left{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-left-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-left-tl{background-position:0 -8px}.x-tab-default-left-tr{background-position:right -12px}.x-tab-default-left-bl{background-position:0 -16px}.x-tab-default-left-br{background-position:right -20px}.x-tab-default-left-ml{background-position:0 top}.x-tab-default-left-mr{background-position:right top}.x-tab-default-left-tc{background-position:0 0}.x-tab-default-left-bc{background-position:0 -4px}.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-mr{padding-right:4px}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-ml{padding-left:4px}.x-tab-default-left-tc{height:4px}.x-tab-default-left-bc{height:0}.x-tab-default-left-tl,.x-tab-default-left-bl,.x-tab-default-left-tr,.x-tab-default-left-br,.x-tab-default-left-tc,.x-tab-default-left-bc,.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-left-ml,.x-tab-default-left-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-left-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-left-tl,.x-strict .x-ie7 .x-tab-default-left-bl{position:relative;right:0}.x-tab-default-left:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default-right{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;padding:3px 9px 3px 9px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%)}.x-tab-default-right-mc{background-image:url(images/tab/tab-default-top-fbg.gif);background-position:0 top;background-color:#deecfd}.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif);background-position:0 top}.x-nbr .x-tab-default-right{padding:0!important;border-width:0!important;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;background-color:transparent;background-image:none}body.x-nbr .x-tab-default-right-frameInfo{font-family:th-4-4-0-0-1-1-0-1-3-9-3-9}.x-tab-default-right-tl{background-position:0 -8px}.x-tab-default-right-tr{background-position:right -12px}.x-tab-default-right-bl{background-position:0 -16px}.x-tab-default-right-br{background-position:right -20px}.x-tab-default-right-ml{background-position:0 top}.x-tab-default-right-mr{background-position:right top}.x-tab-default-right-tc{background-position:0 0}.x-tab-default-right-bc{background-position:0 -4px}.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-mr{padding-right:4px}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-ml{padding-left:4px}.x-tab-default-right-tc{height:4px}.x-tab-default-right-bc{height:0}.x-tab-default-right-tl,.x-tab-default-right-bl,.x-tab-default-right-tr,.x-tab-default-right-br,.x-tab-default-right-tc,.x-tab-default-right-bc,.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-corners.gif)}.x-tab-default-right-ml,.x-tab-default-right-mr{zoom:1;background-image:url(images/tab/tab-default-top-sides.gif)}.x-tab-default-right-mc{padding:0 6px 3px 6px}.x-strict .x-ie7 .x-tab-default-right-tl,.x-strict .x-ie7 .x-tab-default-right-bl{position:relative;right:0}.x-tab-default-right:after{display:none;content:"x-slicer:stretch:bottom, frame-bg:url(images/tab/tab-default-top-fbg.gif), bg:url(images/tab/tab-default-top-bg.gif), corners:url(images/tab/tab-default-top-corners.gif), sides:url(images/tab/tab-default-top-sides.gif)"}.x-tab-default{border-color:#8db3e3;margin:0 0 0 2px;cursor:pointer}.x-tab-default .x-tab-inner{font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#416da3;line-height:13px}.x-tab-default .x-tab-icon-el{width:16px;height:16px;line-height:16px;background-position:center center}.x-tab-default .x-tab-glyph{font-size:16px;color:#416da3;opacity:.5}.x-ie8m .x-tab-default .x-tab-glyph{color:#8facd0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default{padding-left:0}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-button{padding-left:9px}.x-strict .x-ie9 .x-tab-bar-vertical .x-tab-default .x-tab-icon-el{left:9px}.x-tab-default-icon .x-tab-inner{width:16px}.x-tab-default-left{margin:0 2px 0 0}.x-tab-default-top,.x-tab-default-left,.x-tab-default-right{border-bottom:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(top,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-top,.x-nlg .x-tab-default-left,.x-nlg .x-tab-default-right{background-image:url(images/tab/tab-default-top-bg.gif)}.x-tab-default-bottom{border-top:1px solid #99bce8;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#ccdef6),color-stop(25%,#d6e6fa),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);background-image:linear-gradient(bottom,#ccdef6,#d6e6fa 25%,#deecfd 45%);-webkit-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;-moz-box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset;box-shadow:white 0 -1px 0 0 inset,white -1px 0 0 0 inset,white 1px 0 0 0 inset}.x-nlg .x-tab-default-bottom{background-image:url(images/tab/tab-default-bottom-bg.gif)}.x-tab-default-left{-webkit-transform:rotate(270deg);-webkit-transform-origin:100% 0;-moz-transform:rotate(270deg);-moz-transform-origin:100% 0;-o-transform:rotate(270deg);-o-transform-origin:100% 0;transform:rotate(270deg);transform-origin:100% 0}.x-ie9m .x-tab-default-left{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.x-tab-default-right{-webkit-transform:rotate(90deg);-webkit-transform-origin:0 0;-moz-transform:rotate(90deg);-moz-transform-origin:0 0;-o-transform:rotate(90deg);-o-transform-origin:0 0;transform:rotate(90deg);transform-origin:0 0}.x-ie9m .x-tab-default-right{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.x-tab-default-icon-text-left .x-tab-inner{padding-left:20px}.x-tab-default-over{background-color:#e8f2ff}.x-tab-default-over .x-tab-glyph{color:#416da3}.x-ie8m .x-tab-default-over .x-tab-glyph{color:#94afd1}.x-tab-default-top-over,.x-tab-default-left-over,.x-tab-default-right-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(top,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-top-over,.x-nlg .x-tab-default-left-over,.x-nlg .x-tab-default-right-over{background-image:url(images/tab/tab-default-top-over-bg.gif)}.x-tab-default-bottom-over{background-image:none;background-color:#e8f2ff;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#d7e5fd),color-stop(25%,#e0edff),color-stop(45%,#e8f2ff));background-image:-webkit-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-moz-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:-o-linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%);background-image:linear-gradient(bottom,#d7e5fd,#e0edff 25%,#e8f2ff 45%)}.x-nlg .x-tab-default-bottom-over{background-image:url(images/tab/tab-default-bottom-over-bg.gif)}.x-tab-default-active{background-color:#deecfd}.x-tab-default-active .x-tab-inner{color:#15498b}.x-tab-default-active .x-tab-glyph{color:#15498b}.x-ie8m .x-tab-default-active .x-tab-glyph{color:#799ac4}.x-tab-default-top-active,.x-tab-default-left-active,.x-tab-default-right-active{border-bottom:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(top,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-top-active,.x-nlg .x-tab-default-left-active,.x-nlg .x-tab-default-right-active{background-image:url(images/tab/tab-default-top-active-bg.gif)}.x-tab-default-bottom-active{border-top:1px solid #deecfd;background-image:none;background-color:#deecfd;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#fff),color-stop(25%,#f5f9fe),color-stop(45%,#deecfd));background-image:-webkit-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-moz-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:-o-linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%);background-image:linear-gradient(bottom,#fff,#f5f9fe 25%,#deecfd 45%)}.x-nlg .x-tab-default-bottom-active{background-image:url(images/tab/tab-default-bottom-active-bg.gif)}.x-tab-default-disabled{border-color:#bbd2ef;cursor:default}.x-tab-default-disabled .x-tab-inner{color:#c3b3b3}.x-tab-default-disabled .x-tab-icon-el{filter:alpha(opacity=50);opacity:.5}.x-tab-default-disabled .x-tab-glyph{color:#c3b3b3;opacity:.3;filter:none}.x-ie8m .x-tab-default-disabled .x-tab-glyph{color:#d8dae4}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{border-color:#bbd2ef #bbd2ef #99bce8}.x-tab-default-bottom-disabled{border-color:#99bce8 #bbd2ef #bbd2ef #bbd2ef}.x-tab-default-top-disabled,.x-tab-default-left-disabled,.x-tab-default-right-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(top,#e1ecfa,#ecf4fe);background-image:linear-gradient(top,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-top-disabled,.x-nlg .x-tab-default-left-disabled,.x-nlg .x-tab-default-right-disabled{background-image:url(images/tab/tab-default-top-disabled-bg.gif)}.x-tab-default-bottom-disabled{background-image:none;background-color:#e1ecfa;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#e1ecfa),color-stop(100%,#ecf4fe));background-image:-webkit-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-moz-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:-o-linear-gradient(bottom,#e1ecfa,#ecf4fe);background-image:linear-gradient(bottom,#e1ecfa,#ecf4fe)}.x-nlg .x-tab-default-bottom-disabled{background-image:url(images/tab/tab-default-bottom-disabled-bg.gif)}.x-nbr .x-tab-default{background-image:none}.x-tab-default-top-over .x-frame-tl,.x-tab-default-top-over .x-frame-bl,.x-tab-default-top-over .x-frame-tr,.x-tab-default-top-over .x-frame-br,.x-tab-default-top-over .x-frame-tc,.x-tab-default-top-over .x-frame-bc,.x-tab-default-left-over .x-frame-tl,.x-tab-default-left-over .x-frame-bl,.x-tab-default-left-over .x-frame-tr,.x-tab-default-left-over .x-frame-br,.x-tab-default-left-over .x-frame-tc,.x-tab-default-left-over .x-frame-bc,.x-tab-default-right-over .x-frame-tl,.x-tab-default-right-over .x-frame-bl,.x-tab-default-right-over .x-frame-tr,.x-tab-default-right-over .x-frame-br,.x-tab-default-right-over .x-frame-tc,.x-tab-default-right-over .x-frame-bc{background-image:url(images/tab/tab-default-top-over-corners.gif)}.x-tab-default-top-over .x-frame-ml,.x-tab-default-top-over .x-frame-mr,.x-tab-default-left-over .x-frame-ml,.x-tab-default-left-over .x-frame-mr,.x-tab-default-right-over .x-frame-ml,.x-tab-default-right-over .x-frame-mr{background-image:url(images/tab/tab-default-top-over-sides.gif)}.x-tab-default-top-over .x-frame-mc,.x-tab-default-left-over .x-frame-mc,.x-tab-default-right-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-over-fbg.gif)}.x-tab-default-bottom-over .x-frame-tl,.x-tab-default-bottom-over .x-frame-bl,.x-tab-default-bottom-over .x-frame-tr,.x-tab-default-bottom-over .x-frame-br,.x-tab-default-bottom-over .x-frame-tc,.x-tab-default-bottom-over .x-frame-bc{background-image:url(images/tab/tab-default-bottom-over-corners.gif)}.x-tab-default-bottom-over .x-frame-ml,.x-tab-default-bottom-over .x-frame-mr{background-image:url(images/tab/tab-default-bottom-over-sides.gif)}.x-tab-default-bottom-over .x-frame-mc{background-color:#e8f2ff;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-over-fbg.gif)}.x-tab-default-top-active .x-frame-tl,.x-tab-default-top-active .x-frame-bl,.x-tab-default-top-active .x-frame-tr,.x-tab-default-top-active .x-frame-br,.x-tab-default-top-active .x-frame-tc,.x-tab-default-top-active .x-frame-bc,.x-tab-default-left-active .x-frame-tl,.x-tab-default-left-active .x-frame-bl,.x-tab-default-left-active .x-frame-tr,.x-tab-default-left-active .x-frame-br,.x-tab-default-left-active .x-frame-tc,.x-tab-default-left-active .x-frame-bc,.x-tab-default-right-active .x-frame-tl,.x-tab-default-right-active .x-frame-bl,.x-tab-default-right-active .x-frame-tr,.x-tab-default-right-active .x-frame-br,.x-tab-default-right-active .x-frame-tc,.x-tab-default-right-active .x-frame-bc{background-image:url(images/tab/tab-default-top-active-corners.gif)}.x-tab-default-top-active .x-frame-ml,.x-tab-default-top-active .x-frame-mr,.x-tab-default-left-active .x-frame-ml,.x-tab-default-left-active .x-frame-mr,.x-tab-default-right-active .x-frame-ml,.x-tab-default-right-active .x-frame-mr{background-image:url(images/tab/tab-default-top-active-sides.gif)}.x-tab-default-top-active .x-frame-mc,.x-tab-default-left-active .x-frame-mc,.x-tab-default-right-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-active-fbg.gif)}.x-tab-default-bottom-active .x-frame-tl,.x-tab-default-bottom-active .x-frame-bl,.x-tab-default-bottom-active .x-frame-tr,.x-tab-default-bottom-active .x-frame-br,.x-tab-default-bottom-active .x-frame-tc,.x-tab-default-bottom-active .x-frame-bc{background-image:url(images/tab/tab-default-bottom-active-corners.gif)}.x-tab-default-bottom-active .x-frame-ml,.x-tab-default-bottom-active .x-frame-mr{background-image:url(images/tab/tab-default-bottom-active-sides.gif)}.x-tab-default-bottom-active .x-frame-mc{background-color:#deecfd;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-active-fbg.gif)}.x-tab-default-top-disabled .x-frame-tl,.x-tab-default-top-disabled .x-frame-bl,.x-tab-default-top-disabled .x-frame-tr,.x-tab-default-top-disabled .x-frame-br,.x-tab-default-top-disabled .x-frame-tc,.x-tab-default-top-disabled .x-frame-bc,.x-tab-default-left-disabled .x-frame-tl,.x-tab-default-left-disabled .x-frame-bl,.x-tab-default-left-disabled .x-frame-tr,.x-tab-default-left-disabled .x-frame-br,.x-tab-default-left-disabled .x-frame-tc,.x-tab-default-left-disabled .x-frame-bc,.x-tab-default-right-disabled .x-frame-tl,.x-tab-default-right-disabled .x-frame-bl,.x-tab-default-right-disabled .x-frame-tr,.x-tab-default-right-disabled .x-frame-br,.x-tab-default-right-disabled .x-frame-tc,.x-tab-default-right-disabled .x-frame-bc{background-image:url(images/tab/tab-default-top-disabled-corners.gif)}.x-tab-default-top-disabled .x-frame-ml,.x-tab-default-top-disabled .x-frame-mr,.x-tab-default-left-disabled .x-frame-ml,.x-tab-default-left-disabled .x-frame-mr,.x-tab-default-right-disabled .x-frame-ml,.x-tab-default-right-disabled .x-frame-mr{background-image:url(images/tab/tab-default-top-disabled-sides.gif)}.x-tab-default-top-disabled .x-frame-mc,.x-tab-default-left-disabled .x-frame-mc,.x-tab-default-right-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-top-disabled-fbg.gif)}.x-tab-default-bottom-disabled .x-frame-tl,.x-tab-default-bottom-disabled .x-frame-bl,.x-tab-default-bottom-disabled .x-frame-tr,.x-tab-default-bottom-disabled .x-frame-br,.x-tab-default-bottom-disabled .x-frame-tc,.x-tab-default-bottom-disabled .x-frame-bc{background-image:url(images/tab/tab-default-bottom-disabled-corners.gif)}.x-tab-default-bottom-disabled .x-frame-ml,.x-tab-default-bottom-disabled .x-frame-mr{background-image:url(images/tab/tab-default-bottom-disabled-sides.gif)}.x-tab-default-bottom-disabled .x-frame-mc{background-color:#e1ecfa;background-repeat:repeat-x;background-image:url(images/tab/tab-default-bottom-disabled-fbg.gif)}.x-nbr .x-tab-default-top,.x-nbr .x-tab-default-left,.x-nbr .x-tab-default-right{border-bottom-width:1px!important}.x-nbr .x-tab-default-bottom{border-top-width:1px!important}.x-tab-default .x-tab-close-btn{width:11px;height:11px;background-image:url(images/tab/tab-default-close.gif);filter:alpha(opacity=60);opacity:.6}.x-tab-default .x-tab-close-btn-over{filter:alpha(opacity=100);opacity:1}.x-tab-default .x-tab-close-btn{top:2px;right:2px}.x-tab-default-disabled .x-tab-close-btn{filter:alpha(opacity=30);opacity:.3}.x-tab-default-closable .x-tab-wrap{padding-right:14px}.x-tab-default-top-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-over-bg.gif), corners:url(images/tab/tab-default-top-over-corners.gif), sides:url(images/tab/tab-default-top-over-sides.gif), frame-bg:url(images/tab/tab-default-top-over-fbg.gif)"}.x-tab-default-bottom-over:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-over-bg.gif), corners:url(images/tab/tab-default-bottom-over-corners.gif), sides:url(images/tab/tab-default-bottom-over-sides.gif), frame-bg:url(images/tab/tab-default-bottom-over-fbg.gif)"}.x-tab-default-top-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-active-bg.gif), corners:url(images/tab/tab-default-top-active-corners.gif), sides:url(images/tab/tab-default-top-active-sides.gif), frame-bg:url(images/tab/tab-default-top-active-fbg.gif)"}.x-tab-default-bottom-active:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-active-bg.gif), corners:url(images/tab/tab-default-bottom-active-corners.gif), sides:url(images/tab/tab-default-bottom-active-sides.gif), frame-bg:url(images/tab/tab-default-bottom-active-fbg.gif)"}.x-tab-default-top-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-top-disabled-bg.gif), corners:url(images/tab/tab-default-top-disabled-corners.gif), sides:url(images/tab/tab-default-top-disabled-sides.gif), frame-bg:url(images/tab/tab-default-top-disabled-fbg.gif)"}.x-tab-default-bottom-disabled:after{display:none;content:"x-slicer:bg:url(images/tab/tab-default-bottom-disabled-bg.gif), corners:url(images/tab/tab-default-bottom-disabled-corners.gif), sides:url(images/tab/tab-default-bottom-disabled-sides.gif), frame-bg:url(images/tab/tab-default-bottom-disabled-fbg.gif)"}.x-tab-bar-default{border-style:solid;border-color:#99bce8}.x-tab-bar-default-top{padding:1px 0 0;border-width:1px 1px 0}.x-tab-bar-default-bottom{padding:0 0 1px 0;border-width:0 1px 1px 1px}.x-tab-bar-default-left{padding:0 0 0 1px;border-width:1px 0 1px 1px}.x-tab-bar-default-right{padding:0 1px 0 0;border-width:1px 1px 1px 0}.x-tab-bar-default-horizontal{height:25px}.x-content-box .x-tab-bar-default-horizontal{height:23px}.x-tab-bar-default-vertical{width:25px}.x-content-box .x-tab-bar-default-vertical{width:23px}.x-tab-bar-body-default-top{padding-bottom:2px}.x-tab-bar-body-default-bottom{padding-top:2px}.x-tab-bar-body-default-left{padding-right:2px}.x-tab-bar-body-default-right{padding-left:2px}.x-tab-bar-strip-default{border-style:solid;border-color:#99bce8;background-color:#deecfd}.x-content-box .x-tab-bar-strip-default-horizontal{height:2px}.x-content-box .x-tab-bar-strip-default-vertical{width:2px}.x-tab-bar-strip-default-top{border-width:1px 0 0 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-top{border-width:1px 1px 0}.x-tab-bar-strip-default-bottom{border-width:0 0 1px 0;height:3px}.x-tab-bar-plain .x-tab-bar-strip-default-bottom{border-width:0 1px 1px 1px}.x-tab-bar-strip-default-left{border-width:0 0 0 1px;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-left{border-width:1px 0 1px 1px}.x-tab-bar-strip-default-right{border-width:0 1px 0 0;width:3px}.x-tab-bar-plain .x-tab-bar-strip-default-right{border-width:1px 1px 1px 0}.x-tab-bar-default{background-color:#cbdbef}.x-tab-bar-default-top{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(top,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(top,#dde8f5,#cbdbef);background-image:-o-linear-gradient(top,#dde8f5,#cbdbef);background-image:linear-gradient(top,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-top{background:url(images/tab-bar/tab-bar-default-top-bg.gif)}.x-tab-bar-default-bottom{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,50% 100%,50% 0,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:-o-linear-gradient(bottom,#dde8f5,#cbdbef);background-image:linear-gradient(bottom,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-bottom{background:url(images/tab-bar/tab-bar-default-bottom-bg.gif) bottom 0}.x-tab-bar-default-left{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,0% 50%,100% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(left,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(left,#dde8f5,#cbdbef);background-image:-o-linear-gradient(left,#dde8f5,#cbdbef);background-image:linear-gradient(left,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-left{background:url(images/tab-bar/tab-bar-default-left-bg.gif)}.x-tab-bar-default-right{background-image:none;background-color:#cbdbef;background-image:-webkit-gradient(linear,100% 50%,0% 50%,color-stop(0%,#dde8f5),color-stop(100%,#cbdbef));background-image:-webkit-linear-gradient(right,#dde8f5,#cbdbef);background-image:-moz-linear-gradient(right,#dde8f5,#cbdbef);background-image:-o-linear-gradient(right,#dde8f5,#cbdbef);background-image:linear-gradient(right,#dde8f5,#cbdbef)}.x-nlg .x-tab-bar-default-right{background:url(images/tab-bar/tab-bar-default-right-bg.gif) 0 right}.x-tab-bar-default .x-box-scroller{cursor:pointer}.x-tab-bar-default .x-tabbar-scroll-left,.x-tab-bar-default .x-tabbar-scroll-right{height:20px;width:18px}.x-tab-bar-default .x-tabbar-scroll-top,.x-tab-bar-default .x-tabbar-scroll-bottom{width:20px;height:18px}.x-tab-bar-default-bottom .x-box-scroller{margin-top:1px}.x-tab-bar-default-right .x-box-scroller{margin-left:1px}.x-tab-bar-default-top .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-top.gif)}.x-tab-bar-default-top .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-top.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-left{background-image:url(images/tab-bar/default-scroll-left-bottom.gif)}.x-tab-bar-default-bottom .x-tabbar-scroll-right{background-image:url(images/tab-bar/default-scroll-right-bottom.gif)}.x-tab-bar-default-left .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-left.gif)}.x-tab-bar-default-left .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-left.gif)}.x-tab-bar-default-right .x-tabbar-scroll-top{background-image:url(images/tab-bar/default-scroll-top-right.gif)}.x-tab-bar-default-right .x-tabbar-scroll-bottom{background-image:url(images/tab-bar/default-scroll-bottom-right.gif)}.x-tab-bar-default .x-tabbar-scroll-left-hover,.x-tab-bar-default .x-tabbar-scroll-right-hover{background-position:-18px 0}.x-tab-bar-default .x-tabbar-scroll-top-hover,.x-tab-bar-default .x-tabbar-scroll-bottom-hover{background-position:0 -18px}.x-tab-bar-default .x-box-scroller-disabled{filter:alpha(opacity=50);opacity:.5;cursor:default}.x-tab-bar-default-top:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-top-bg.gif), stretch:bottom"}.x-tab-bar-default-bottom:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-bottom-bg.gif), stretch:top"}.x-tab-bar-default-left:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-left-bg.gif), stretch:right"}.x-tab-bar-default-right:after{display:none;content:"x-slicer:bg:url(images/tab-bar/tab-bar-default-right-bg.gif), stretch:left"}.x-tab-bar-plain{border-width:0;padding:0;height:23px}.x-column-header-checkbox{border-color:#c5c5c5}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:13px;width:13px;background-image:url(images/form/checkbox.gif);line-height:13px}.x-column-header-checkbox .x-column-header-inner{padding:5px 5px 4px 5px}.x-grid-cell-row-checker .x-grid-cell-inner{padding:4px 5px 3px 5px}.x-grid-no-row-lines .x-grid-row-focused .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px;padding-bottom:2px}.x-grid-hd-checker-on .x-column-header-text,.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-position:0 -13px}.x-tree-expander{cursor:pointer}.x-tree-arrows .x-tree-expander{background-image:url(images/tree/arrows.gif)}.x-tree-arrows .x-tree-expander-over .x-tree-expander{background-position:-32px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander{background-position:-16px center}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-expander{background-position:-48px center}.x-tree-lines .x-tree-elbow{background-image:url(images/tree/elbow.gif)}.x-tree-lines .x-tree-elbow-end{background-image:url(images/tree/elbow-end.gif)}.x-tree-lines .x-tree-elbow-plus{background-image:url(images/tree/elbow-plus.gif)}.x-tree-lines .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-plus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url(images/tree/elbow-minus.gif)}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url(images/tree/elbow-end-minus.gif)}.x-tree-lines .x-tree-elbow-line{background-image:url(images/tree/elbow-line.gif)}.x-tree-no-row-lines .x-tree-expander{background-image:url(images/tree/elbow-plus-nl.gif)}.x-tree-no-row-lines .x-grid-tree-node-expanded .x-tree-expander{background-image:url(images/tree/elbow-minus-nl.gif)}.x-tree-icon{width:16px;height:20px}.x-tree-elbow-img{width:16px;height:20px;margin-right:0}.x-tree-icon,.x-tree-elbow-img,.x-tree-checkbox{margin-top:-3px;margin-bottom:-4px}.x-tree-icon-leaf{background-image:url(images/tree/leaf.gif)}.x-tree-icon-parent{background-image:url(images/tree/folder.gif)}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url(images/tree/folder-open.gif)}.x-tree-checkbox{margin-right:3px;top:4px;width:13px;height:13px;background-image:url(images/form/checkbox.gif)}.x-tree-checkbox-checked{background-position:0 -13px}.x-grid-tree-loading .x-tree-icon{background-image:url(images/tree/loading.gif)}.x-grid-cell-inner-treecolumn{font-size:1px;line-height:0}.x-tree-node-text{font-size:11px;line-height:13px;padding-left:3px}.x-grid-cell-inner-treecolumn{padding:3px 6px 4px 0}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url(images/tree/drop-append.gif)}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url(images/tree/drop-above.gif)}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url(images/tree/drop-below.gif)}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url(images/tree/drop-between.gif)}.x-tree-ddindicator{height:1px;border-width:1px 0 0;border-style:dotted;border-color:green}.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-box-tl{background-image:url(images/box/corners.gif)}.x-box-tc{background-image:url(images/box/tb.gif)}.x-box-tr{background-image:url(images/box/corners.gif)}.x-box-ml{background-image:url(images/box/l.gif)}.x-box-mc{background-color:#eee;background-image:url(images/box/tb.gif);font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url(images/box/r.gif)}.x-box-bl{background-image:url(images/box/corners.gif)}.x-box-bc{background-image:url(images/box/tb.gif)}.x-box-br{background-image:url(images/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/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/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/box/l-blue.gif)}.x-box-blue .x-box-mr{background-image:url(images/box/r-blue.gif)}.x-message-box .x-msg-box-wait{background-image:url(images/shared/blue-loading.gif)}.x-form-trigger{height:22px}.x-content-box .x-form-trigger{height:21px}.x-field-toolbar .x-form-trigger{height:20px}.x-content-box .x-field-toolbar .x-form-trigger{height:19px}.x-content-box div.x-form-spinner-up,.x-content-box div.x-form-spinner-down{height:10px}.x-content-box .x-toolbar-item div.x-form-spinner-up,.x-content-box .x-toolbar-item div.x-form-spinner-down{height:9px}.x-html-editor-wrap .x-toolbar{border-left-color:#b5b8c8;border-top-color:#b5b8c8;border-right-color:#b5b8c8}.x-html-editor-input{border:1px solid #b5b8c8;border-top-width:0}.x-column-header-trigger{background-color:#c5c5c5;background-image:url(images/grid/grid3-hd-btn.gif)}.x-content-box .x-grid-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-spinner-up,.x-grid-editor .x-form-spinner-down{background-image:url(images/form/spinner-small.gif)}.x-content-box .x-grid-editor .x-form-spinner-up,.x-content-box .x-grid-editor .x-form-spinner-down{height:9px}.x-accordion-hd{border-width:1px 0!important;-webkit-box-shadow:inset 0 0 0 0 #d9e7f8;-moz-box-shadow:inset 0 0 0 0 #d9e7f8;box-shadow:inset 0 0 0 0 #d9e7f8}.x-accordion-hd-sibling-expanded{-webkit-box-shadow:inset 0 1px 0 0 #f3f7fb;-moz-box-shadow:inset 0 1px 0 0 #f3f7fb;box-shadow:inset 0 1px 0 0 #f3f7fb}.x-resizable-over .x-resizable-handle-east,.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-west{background-position:left}.x-resizable-over .x-resizable-handle-south,.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-south,.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-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url(images/slider/slider-bg.gif)}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url(images/slider/slider-thumb.gif)}.x-ie6 .x-slider-vert,.x-ie6 .x-slider-vert .x-slider-end,.x-ie6 .x-slider-vert .x-slider-inner{background-image:url(images/slider/slider-v-bg.gif)}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url(images/slider/slider-v-thumb.gif)}.x-tab-icon-el{top:-1px}.x-tab-noicon .x-tab-icon{display:none} \ No newline at end of file diff --git a/resources/ext-theme-classic/images/boundlist/trigger-arrow.png b/resources/ext-theme-classic/images/boundlist/trigger-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..11daac3da8202dec764b68145cb16d1693090e1a GIT binary patch literal 2869 zcmV-53(E9~P)<h;3K|Lk000e1NJLTq000R9000IE1^@s65y!N}00009a7bBm001+P z001+P0XgJu`v3q6PiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_ zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0 zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc= zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001BNkl<Zc-nN%tqp@v07c=CA76pQL&5+|(Pd!)5*Pr-2AGPXNYgYW7{n8g>(0p$ zH$jWa{q`I)8WfS>k0HemJ-(4>#F}03!G<~r7EF)@@{JrNUg&VdP9}Kb5z2D_2FMT` TCTt#-00000NkvXXu0mjfpUP1v literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/corners-blue.gif b/resources/ext-theme-classic/images/box/corners-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa419b50abe5030db04492578d5dfd39c02fb6ab GIT binary patch literal 1010 zcmZ?wbhEHb<X})>XlGzpbnMH9^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~LwoUdG4CQ1IlzMJEOhS<kFl3=FKEQ(0NVE-)-&ab#eW ziV-j@ILgStrqLpBqA|IFNz@}l>7<|o6TkONJB|cJt&_qGY8j_CFdSfKOOVXz5IAt4 zV}p{G0>c6amIz;I6#<3?kJdQw@UbxnC^#-)=MmtuQ0WM8YMvo$(vtdt@jw$#qNfCh wKq7O5AQyweiU(yaTnsEKITutM85$V*3^<NdGBB~Nm?h;g!*hr8nFa=H05=J^^Z)<= literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/corners.gif b/resources/ext-theme-classic/images/box/corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aa8cae5c83d8f17aefadb93aa9a6f95d6069c40 GIT binary patch literal 1005 zcmZ?wbhEHb<X})>XlGzJaNxk<!-tO?Idb&q(PPJsojiH+^y$-Q&YU@S?%etF=Pz8i zaPi{BOP4NPzI^%W)vMR8UAun$`i&bmZr;3k=gytGckkZ2ckjW22M-@UeDvti<HwJm zJbCi;>C<P=o;`p5{N>A+uU@@+{rdHrH*em)ef#d+yZ7(kfB5j><HwJmK7IQ9`SX`A zU%r0*`t94d@87@w`0?ZC&!4}4|Nism&)>g)|NZ;-|Nno6kqR9CJB(DX)7#&QKUtU= zfEhstWHBgDFmRk=;OCU_C{XAUlw(`PkjU7?)Tn7;V<Dh;L{Usm#$v|7j{%*WToz@2 z4k$FAkZiY*XeiwDz=2;mKqQ3WAQOiuv$KoEhXu}DjY_6f3573GnmE<Ex{e%p&>YmK z&r@KbvglBQu=1upg@ud<n?<8SD<&v3G<B_M_sGd$a5%;#z~megA;55utx?S>rDMSY z2FDg@ogF$0O<!{|iMnK@eq?B56N(HC5KuUH_>ia(gUJntM;F*w7{y{XRIF%d;*fMw Ru}w*2KC@pnhK+^68UTSX)nNbt literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/l-blue.gif b/resources/ext-theme-classic/images/box/l-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ed7f0043b6b0f956076e02583ca7d18a150e8f6 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-NGaC=| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/l.gif b/resources/ext-theme-classic/images/box/l.gif new file mode 100644 index 0000000000000000000000000000000000000000..0160f97fe75409f17ab6c3c91f7cbdc58afa8f8f GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-N<)RPU literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/r-blue.gif b/resources/ext-theme-classic/images/box/r-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ea5cae3b7b571ec41ac2b5d38c8a675a1f66efc GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-NJSY$C literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/r.gif b/resources/ext-theme-classic/images/box/r.gif new file mode 100644 index 0000000000000000000000000000000000000000..34237f6292a7da6ac5d1b95d13ce76a7194dd596 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-N?ynEj literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/tb-blue.gif b/resources/ext-theme-classic/images/box/tb-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..562fecca87176274af7bf13c419daaf93f169249 GIT binary patch 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<M)4F zeERe4+qb`e|1yk%(GVC4A)xq^1?bHG3_2jkg7O3dhXI3m48sA(W=CE=A*&k<3mDmW lC3Qj;I3zZ;a0tj*FbFstU|?e9k#U&daFB_OkBN!F8UTdQTXg^c literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/box/tb.gif b/resources/ext-theme-classic/images/box/tb.gif new file mode 100644 index 0000000000000000000000000000000000000000..435889bffe0a3a4f92b1cb5e781be0d1e9e355f0 GIT binary patch literal 839 zcmZ?wbhEHbWMoiaXlGzJc<|tf6DMxpzWwCMlQ(bPynFZV{rmSHK79E2@#E*upTB(h z^7ZT2Z{NOs|Ni~Qj~_pO{`~dp*PlOs{{H>@@87@w|Nk?Lg3%Bd$|0cmlLhGf{|q`H xPk{0S1BVKOBoBu|W0NBntB_a%g98I2m#~UU!-oTo%xv5uDh>q)92y%KtN|VsNKya* literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-corners.gif b/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5f0b13b4f7853cee25ae60a9fcf487e9ddcc756 GIT binary patch literal 110 zcmZ?wbhEHbWMbf9_{_kt{lxWMr*7^(b92wB8+*>&xbgVi%}4JZzyA8{&By0&KfZYT z>Hq)#Ks9ir_>+Z^fq|PrhXDvcW;k<5GcYnp1TZ)@Ftf9%7$`6-Jix%lCE(%U(9qPt GU=097crvm8 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-corners.gif b/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5f0b13b4f7853cee25ae60a9fcf487e9ddcc756 GIT binary patch literal 110 zcmZ?wbhEHbWMbf9_{_kt{lxWMr*7^(b92wB8+*>&xbgVi%}4JZzyA8{&By0&KfZYT z>Hq)#Ks9ir_>+Z^fq|PrhXDvcW;k<5GcYnp1TZ)@Ftf9%7$`6-Jix%lCE(%U(9qPt GU=097crvm8 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-sides.gif b/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-notitle-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c23814f6b87ab1a582ed9d4182b56e366ef58390 GIT binary patch literal 99 zcmZ?wbhEHbWMOb(_{hMp{lxXhufP8P{~yRu{K>+|z`(?y!vF*zc}ETt21XVR1_uSl zW>$7Jn-u~J54Q<Odc}BreCX0Gs+_iGh2Y}jeF~OccRW5l_L!{dyv$~$kphD?0H-P< AmjD0& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-sides.gif b/resources/ext-theme-classic/images/btn-group/btn-group-default-framed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aee7e98153fa0b637ce619c8e9b95fba32123e3 GIT binary patch literal 106 zcmZ?wbhEHbWMK$l_{hMp{lxXhufP8P{~yRu{K>+|z`(?y!vF*zc}EUw21XVR1_uSl zW>$7Jn-u~J54Q<Odc}BreCX0Gs+_iGh2Y}jeF~OccRW5l_L!{dyv$~$(9+Y>3?ln@ HI2fz}yAUO_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c070109f6f88825cfe5c52093de8e51ccd41947b GIT binary patch literal 166 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r_Y`}`}+0k&!0bk{rdI$_wPS{{`~#> z_us#N|Ns97DuV#UpDc_F3_J`v3_t)f!<i$PL0rW^Ac3K=nL}7B=ER1DhuZ~|y?j<Y z04fkR&bo6VaIpgmI~M~-!^XuYCu;<+ia9Cth>4X;NP!{qz=4K|Dy%#PH#RLlKi{F5 POV(@4ii`6Z85yhr>f}#& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-large-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..153748be236af68ce53daa27146e5c0c898a9686 GIT binary patch literal 133 zcmZ?wbhEHbWM&Xz_{_j?@#4kHmoHzxe*OOa`wt#Gc>MVBlP6D}J$v@+*ROy7{{8>| zp8>1}s0;!Wf3h$#FmN&G0L2+VW;k;gF)(tlG$=GOGP3b$uuL#$bY^Ac;4@foz=5Hi dQ$$W8qJe>lfmKAsL0|#HA!ae=03HqoYXH58H9!CW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-disabled-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-disabled-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a82764dfda07068d42e0a2dccb3e8c0539afefac GIT binary patch literal 166 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyZ7$hd;9k7$B!RBefsqI^XD&LzI^@q z_1m{^|Ns97DuV#UpDc_F3_J`v3_t)f!<i$PL0rW^Ac3K=nL}7B=ER1DhuZ~|y?j<Y z04fkR&bo6VaIpgmI~M~-!^XuYCu;<+ia9Cth>4X;NP!{qz=4K|Dy%#PH#RLlKi{F5 POV(@4ii`6Z85yhrGlWhM literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-large-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..71ce63917e6b47d74af780685f876c3881d8fc53 GIT binary patch literal 134 zcmZ?wbhEHbWM&Xz_{_j?@7}%p_wPS=@ZjOYhmRgTdj9<Rix)56ym|BX?b|P3zI^@q z_1m{^|NsAI0ILKlR{Y7r$iTqEpaT?P0GZ*;Va&kJAu=I>k%5teK|@7=;XqS64<AQB j00Sd43yYjoh(^HyMrKZqh!_E(Mut`fj*b)o0S0RTcRDt; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-disabled-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-disabled-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..792449f28cc043f7dd4c39976668bd4b3c8d213a GIT binary patch literal 162 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyZ7$hd;9k7$B!RBefsqI^XD&LzI^@q z_1m{^|Ns97DuV#UpDc_F3_J`v3_t)f!<oaML0myYprPSlGl#HN%!v&P54Q^_tN9c# zG%$2Z7-!v?5y<Gu%)rDUabV+;lan=qSH*A!HoCKL@JSdLC@eWKQ6=)#os*lFpP%p0 M%q4rvSb@PB00}ls=>Px# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-large-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5bcfdf9ec796162803fa446c736517fe99d5443 GIT binary patch literal 457 zcmV;)0XF_eNk%w1VFmyo1M>g?+S=ON+uPjS+}+*X-rnBf;o<G=?eX#P^78WY^Yird z^!4@i_V)Jw|Nq+B+S=OMA^8LW000dDEC2ui00sac149V^01Ge}$e=)h1PButG{De+ z!2l2g7$iWEz{H9dDQ2`-pdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*b zlV{GAKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)H&uU=<idKo)^P0B8Xi z6u?%1*R5~6KAme-Zr!+e>0-@$S1(+@cJ~72E4Z)W!ifJKR-8C6<HtW2NM2wttk?o& z%@#Po`M}w<4<oK^YjA++0fZr^cFcOU>%p)Ww~pQTwQSq9X{**f`!;XfyL}7KJv=z^ z<HnQsM!sA*@aE8;OaD#1c=YPICsQt<y>eKC2^Ai8OgOfz!OosHcP@SUGuqG);Y%#g z)-8R~1x};R-yXYj|JPYJoqzxi$ee-y5vbsS1va=~f($+wV1yJxXyJqxB8cIJ8g}Sl zg&cmEp@<<$=%I-uo(Q6fBckZyiYdnUVv8`&SYnMh(x~H&JF>{*k3I&uQa}JZ>qX^m literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5dbfc680b13df35d91fd3f2d664fae8c9db61b08 GIT binary patch literal 162 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r_Y`}`}+0k&!0bk{rdI$_wPS{{`~#> z_us#N|Ns97DuV#UpDc_F3_J`v3_t)f!<oaML0myYprPSlGl#HN%!v&P54Q^_tN9c# zG%$2Z7-!v?5y<Gu%)rDUabV+;lan=qSH*A!HoCKL@JSdLC@eWKQ6=)#os*lFpP%p0 M%q4rvSb@PB0J`>0Q2+n{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b357a182432aa4e70e5fb027b7d0a17868a60b01 GIT binary patch literal 212 zcmZ?wbhEHbWMoia{=&d;=*FkRH$NY__2uYoAo_as<)52x|KEE1|Mt88ci#QK`~Lqu zAo}qC{)hh$fav4@hadkx`t<+tr~g0z)JqU4{$ycfU=U`|VE_V<oh}@K45|he0uBs~ z%^bp7F()=GJlrmz?B&Cu$k@OjY@BuHL|`%tJC}gSj*Jb9PfpedUKMjvXb}qszmyI~ e<$(hX4C36=a!zhuety0~GncH_mKEn47_0#XICl8} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-large-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..f72f1c76f18c0bbc0e5b457f737232f98a82570c GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#d^J&ZZPunhh-gfcx{u|#8-1v6*=GViwz8<~( z^}_vc7ao4U`0)Fshu`nL|M&RQe;{B0YXs^gh!lUaFfuR*GUx!cFo5iI;V@-j<PiD5 zz{JGFC!)bK!GW=*T~JKG<br}zGXuY(Mu>vIfhJ~tCW8(JMU`eIUO^s-2MSIO4AuaH CAzm5) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..deb2b01152f67a7775bd7b20c98c1807d7de2b50 GIT binary patch literal 212 zcmZ?wbhEHbWMoia{=&d;=*FkRH$NY__2uYoAo_as<)52x|KEE1|Mt88ci#QK`~Lqu zAo}qC{)hh$fav4@hadkx`t%<NfEtNGia%Kx85o2ZbQpjDWTy*9AcL}ohCoBZ!DbF& zt(X%V79MUFP*y8xU}#|IlrYY^GeeN6nT4H!g`;5N;**m#f>*_y{G`~z&MT(jP;lS? b1A~(1w49Thm!F^S(99+4wdKY61_o;YMVolb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-large-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e5c06abdb9a3f0f1dc49f826c3bd632b64073ef GIT binary patch literal 517 zcmZ?wbhEHbWMfcZ{=&ep;moH)H$EM{`T5ALFGp_!(bual|J;20|JK|8x8ME0^X~uM z_y6w!(TD%{Km30HL?8b@{P_RTr~g0z)JqU4{$ycfU=U`|VE_V<oh}^z85lhzG#D8g zSUJQcOb%RVaAXu<mC$k6c;HBvxMtcGjs;5Y{nE~5M=XMpPxh-g&J$U=DfQHJwb)}V zokh#e&a#NSbft1~`njnNssBV?ZO*tb*S%Uzwrk3Zpv8WR&E~EO$qHTNvp(zWDN(JH z><RJ`J`QG$2N^P$C1ehiHC$htzuRtZc4*$+9ThK=&Q^!($Lufr&h$)s$NGndI{wRr z&9N|eeB55yqc34Y<5M;^(TuPJfyQ)}^viZV7E+IHZEI0nUUsHx>+6FX#JBg|{joLY z_SVeR*KB{A<=@#|%YEL~#^U4SW0SwT?TfMe@a)2T@BhAgE55wisUFP6u+W;NneUKw zlfj7vHq6bOqD&guVh7SMFz}tQPngh9%e3&~vv6*OMMwTEVZ1OcnrTtn++y~)^t&b8 zY9|zm`IT-wXc4f=P;3<n>sZ(%RW{>cyG)ZrVuwm!#-mobX&s9?v{&tT*r~sbBe~0X nlf>g*lT#~{`^=u5Sln&LcJuKB2cgL1i5_w*p9C{9GFSruwq*#t literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b357a182432aa4e70e5fb027b7d0a17868a60b01 GIT binary patch literal 212 zcmZ?wbhEHbWMoia{=&d;=*FkRH$NY__2uYoAo_as<)52x|KEE1|Mt88ci#QK`~Lqu zAo}qC{)hh$fav4@hadkx`t<+tr~g0z)JqU4{$ycfU=U`|VE_V<oh}@K45|he0uBs~ z%^bp7F()=GJlrmz?B&Cu$k@OjY@BuHL|`%tJC}gSj*Jb9PfpedUKMjvXb}qszmyI~ e<$(hX4C36=a!zhuety0~GncH_mKEn47_0#XICl8} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-large-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..f72f1c76f18c0bbc0e5b457f737232f98a82570c GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#d^J&ZZPunhh-gfcx{u|#8-1v6*=GViwz8<~( z^}_vc7ao4U`0)Fshu`nL|M&RQe;{B0YXs^gh!lUaFfuR*GUx!cFo5iI;V@-j<PiD5 zz{JGFC!)bK!GW=*T~JKG<br}zGXuY(Mu>vIfhJ~tCW8(JMU`eIUO^s-2MSIO4AuaH CAzm5) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..deb2b01152f67a7775bd7b20c98c1807d7de2b50 GIT binary patch literal 212 zcmZ?wbhEHbWMoia{=&d;=*FkRH$NY__2uYoAo_as<)52x|KEE1|Mt88ci#QK`~Lqu zAo}qC{)hh$fav4@hadkx`t%<NfEtNGia%Kx85o2ZbQpjDWTy*9AcL}ohCoBZ!DbF& zt(X%V79MUFP*y8xU}#|IlrYY^GeeN6nT4H!g`;5N;**m#f>*_y{G`~z&MT(jP;lS? b1A~(1w49Thm!F^S(99+4wdKY61_o;YMVolb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-large-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e5c06abdb9a3f0f1dc49f826c3bd632b64073ef GIT binary patch literal 517 zcmZ?wbhEHbWMfcZ{=&ep;moH)H$EM{`T5ALFGp_!(bual|J;20|JK|8x8ME0^X~uM z_y6w!(TD%{Km30HL?8b@{P_RTr~g0z)JqU4{$ycfU=U`|VE_V<oh}^z85lhzG#D8g zSUJQcOb%RVaAXu<mC$k6c;HBvxMtcGjs;5Y{nE~5M=XMpPxh-g&J$U=DfQHJwb)}V zokh#e&a#NSbft1~`njnNssBV?ZO*tb*S%Uzwrk3Zpv8WR&E~EO$qHTNvp(zWDN(JH z><RJ`J`QG$2N^P$C1ehiHC$htzuRtZc4*$+9ThK=&Q^!($Lufr&h$)s$NGndI{wRr z&9N|eeB55yqc34Y<5M;^(TuPJfyQ)}^viZV7E+IHZEI0nUUsHx>+6FX#JBg|{joLY z_SVeR*KB{A<=@#|%YEL~#^U4SW0SwT?TfMe@a)2T@BhAgE55wisUFP6u+W;NneUKw zlfj7vHq6bOqD&guVh7SMFz}tQPngh9%e3&~vv6*OMMwTEVZ1OcnrTtn++y~)^t&b8 zY9|zm`IT-wXc4f=P;3<n>sZ(%RW{>cyG)ZrVuwm!#-mobX&s9?v{&tT*r~sbBe~0X nlf>g*lT#~{`^=u5Sln&LcJuKB2cgL1i5_w*p9C{9GFSruwq*#t literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..bac8935691de638d784a40f73030f195034372ac GIT binary patch literal 220 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#bs`WQ`a0>**U5*zPC5K_>fujQf#i{| z(~f+de&p-6(@(aYd$IlWlkI1o>;R&(Pj;Stvg;fWJ>7l&=^h}u@O1Bmr~58G{r~?z z&{zmk{K>+|z#zk*!vF*zJ6$*;8Dv9lC@?rSH**MU#hlo%@Nm0;vX_qrBQpcDuyNL% z6M@PsT;e7+91af-H1%l&uZlUjX{mPypOVjlgojRSywXA}0tO2j7+JU^_Q-f`S#fc( O$7HS8Q(H0|7_0$UnQt-x literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-large-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..d78802090d1d591bf0f586492bbab684242a537f GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<+2{qX1MN50ND{CURVFLU-jpSSDb!o80c?S8Om@1w<g9xdJf zXxaWpTTVXSa`MTx(@&0GeRJ&E+Y{H{{{R1<0iqYE9WPS+$->A0v`Po4o&jX13x@>* zH;2uE1B?tzf=n7N1_}+$?Lu-g84DPiSUA|^tO6t)5*pdLB@{NiXlP{QU}0fln4sXu K!pX?UU=0A&2w7+V literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-large-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e4e716cc21c264c7aa97ad8c2eb386577207241 GIT binary patch literal 216 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#bs`WQ`a0>**U5*zPC5K_>fujQf#i{| z(~f-IcJ9UY(@(aad9nkD&OX_B_Q|euK=gF?`KNn;=)%*z7oP6B`1Jq(|3Cwgk>XDl zMg|5c1|0?<0NLrn5y~JNlHriR*xbw^tQB)&!@|Su0?J-K8jQ{j%)-W5cTNN<w{VIX zF$g3uI3Ay@5xgqq<fhak?1Cx*D+(B$+gKP`cr*fn8c)x6Xy%gj+Op!}Vvlw<76xko Dj9F~J literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-large-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..06fe649315a6af895d7710888d2bd9e4c5bc9e41 GIT binary patch literal 535 zcmV+y0_gomNk%w1VFmyo1M~m@jllJe!1a&8^^n2!k-_zm!u68E^^?N&l*9Fv!}68G z^_9f+mc;d*y5Y9Y=(o${x6I_Y%;dPu<hjk{y3XXf&gHw$<-E`3ywK&n(B;0-<^TWx zjllJd!1ay5^^L&wA^8LW000{REC2ui00sac14Ib_02@3Q_@F@p3kWS3bimMoK>`p7 z7+gScfk6fs8C=Y`5o1S<4Kjih`LSe3jwd~)9Ep<TN|P>Qww$R_W=)zbZ|cm+6DCfd zJAw9mNz~?0qe7Dw{kb$~)1yq0K2<8UYSgPvt!Bjvb*tB|V3kf7JHcRvvl$EqSR26L zfwu>!a+Uj)ZrG`Kwcgchw{PCLf9nR`3z+X<zlIYRUMyH~W5$FZOTHVSas-1EGE*>k zq4NcU8bWI@2%t0og91_uFleB)0fPu)BR~w9_GH_UbK~B9xVK~7zH0}+JskLN-p7k0 z7oNO1^XJ5!M~7~l`ts@6t7pHiy*u~s%EL>P_uc@4c?bq2sFz@nY}p1C;#V-3P+<cM z_%WD83tF_n1OO(W7F(#PX3zi#4q#9L3>LteYp}^?kOCAc0N!{PS|^@{7;d<ohvaoA zB8Mb?IHHLqhL~c8D7L7gi!8n<V~jL{SmTK^+NdLrH?Fv&k39YeqmVfUX(W(H4tb=K ZNfy~;k4#4Cq?AxjX=RmI5{YF%06W>R1b_el literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-large-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-large-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..efa95bb4aa43913be5d3da1b6dd1a8ce0bde6b79 GIT binary patch literal 457 zcmV;)0XF_eNk%w1VFmyo1M>g?(b3W3;^O1u<K*Pz<>lq(=H~VF_4)bv`uh6&`}_R- z{Qdp?{{H^||Nqg^(b3V-A^8LW000dDEC2ui00sac149V^00A%<$N&I<1PButG{De+ zK>-j27%V`sz{H9dDQ2_?pdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*b zlV{GAKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)H&uU=<idKo)_)0B8dk z9Kd#f*R5~6KAme-Zr!+e>0-@$S1(+@cJ~72E4Z)W!ifJKR-8C6<HtW2NM2wttXKeL z%>p>U`M}w<4<oK^Ymk6x0)!!_cFcOU>%p)Ww~pQTwQSq9X{**f`!;XfyL}7KJv=z^ z<HnQsM!sA*@aE8;OaD#1c=YPICsPKXy>eKC2^Ai8OgOfz!OosHcP@SUGuqG);Y$S2 z)-8R~08XRM-yXYj|JPYJoqzxi$ee-y5vbsS1va=~f($+wV1yJxXyJqxB8cIJ8g}Sl zg&cmEp@<<$=%I-uo(Q6fBckZyiYdnUVv8`&SYnMh(x~H&JF>{*k3I&uQa}JZubkuf literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab1e21e7b245d5089d55527f4d7df8c72b05bc11 GIT binary patch literal 158 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r_Y`}`~Lm=&!0bk{rdI$_wPS{{`~#> z_us#N|Ns97DuV#UpDc_F3_J`v3_t)f!<oaIL0o~sprPSlGl#HN%!v&P54Q^_tA!*e zG#u%cFwQ!&Lg8Q|6C;br9gj^*PEOVcUe&T=fie>dyA~6NX3^5Kvn`5W-8s2=`T6;_ I%uEc{0P;akV*mgE literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..153748be236af68ce53daa27146e5c0c898a9686 GIT binary patch literal 133 zcmZ?wbhEHbWM&Xz_{_j?@#4kHmoHzxe*OOa`wt#Gc>MVBlP6D}J$v@+*ROy7{{8>| zp8>1}s0;!Wf3h$#FmN&G0L2+VW;k;gF)(tlG$=GOGP3b$uuL#$bY^Ac;4@foz=5Hi dQ$$W8qJe>lfmKAsL0|#HA!ae=03HqoYXH58H9!CW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7def1f8ecff5e33adff9fece48edaaf7c2b2d0cb GIT binary patch literal 158 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyZ7$hd;k9Z$B!RBefsqI^XD&LzI^@q z_1m{^|Ns97DuV#UpDc_F3_J`v3_t)f!<oaIL0o~sprPSlGl#HN%!v&P54Q^_tA!*e zG#u%cFwQ!&Lg8Q|6C;br9gj^*PEOVcUe&T=fie>dyA~6NX3^5Kvn`5W-8s2=`T6;_ I%uEc{07fBA`v3p{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..71ce63917e6b47d74af780685f876c3881d8fc53 GIT binary patch literal 134 zcmZ?wbhEHbWM&Xz_{_j?@7}%p_wPS=@ZjOYhmRgTdj9<Rix)56ym|BX?b|P3zI^@q z_1m{^|NsAI0ILKlR{Y7r$iTqEpaT?P0GZ*;Va&kJAu=I>k%5teK|@7=;XqS64<AQB j00Sd43yYjoh(^HyMrKZqh!_E(Mut`fj*b)o0S0RTcRDt; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a501f9a76fd124d2eedce5d26ccb4775f37101f9 GIT binary patch literal 158 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyZ7$hd;k9Z$B!RBefsqI^XD&LzI^@q z_5c6>Ks9in_>+Z^fq|PrhXDvcW;k<rGl<G?7&J5-Y~~QwiaD`i;o)`xWi_7whlV5F z62@6)RxmU&GO(C;$#`yBa&oeUs+LCs!$C%7Mh7l|0E4AxXIm7%x^r^#^7Hd;nVA@@ E0ot-lng9R* literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7f2f13caa981835ec48ac34e4a247abe2cd3b38 GIT binary patch literal 435 zcmV;k0Zjf!Nk%w1VFmyo1M>g?+S=ON+uPjS+}+*X-rnBf;o<M^@A2{R^78WY^Yird z^!4@i|NsBm+S=OM+S=OMA^8LW000aCEC2ui00sac149V^01GS_xS&7*1PBor48Sme z!2u8l7$iWEz{H9dDQ2`-pdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*b zlV{GAKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)H&uU=<iNK-Pdk0cZty z-MY5x)3;XL#%)U%F4nqp?XuM?_by+&e)9?rOnC2L!-e}IUhI}&!2$^)Cop)R@&SVY zG6PuH@L@#2j6o|NExPpI(}zi;PHZ}LYu2kn$5!on_G{U-bHmn+d$;f2z-j*$9{e`( z<HnQQUd|gi^Wh>L8w@KJvSfpjCm&2m*)nH_m^FW3cUT~;+VW{VLsZ_JJ@n_r;X7|H z-+g@g_}}NhufIS4|MU45Ab|D_XkdW|)~Dcp2QDaJf(%0Vpo0Wb*kFVfN?0L=98TEb dh8~6p;)oZDSR#oUo~UAqEN1B9hol7r06VUN*I)nu literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..73573ea9b8690d6458f72cebcb3950c124107349 GIT binary patch literal 158 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r_Y`}`~Lm=&!0bk{rdI$_wPS{{`~#> z_y7O@Ks9in_>+Z^fq|PrhXDvcW;k<rGl<G?7&J5-Y~~QwiaD`i;o)`xWi_7whlV5F z62@6)RxmU&GO(C;$#`yBa&oeUs+LCs!$C%7Mh7l|0E4AxXIm7%x^r^#^7Hd;nVA@@ E0fw1P0ssI2 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c430378071ad6887a54936f913098e78300a819f GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&d;=*FkRH-YH$ky~Gm-u`<1^}m~M|KEE1|Mt88ci#WM`~LsE z_y6yI`2XPJ|A!y{KLVmp{~v$)4+KDs#303=EQ|~cLJT?#KmfASg~OLYS%bl#q2XXN zhp<-6i46-6w+kq%<rFwH9O;%Y&N}m>fw75+K_^efbJLQOlQn|fS{^hUY+~WyVd2nB ZaB!SzQT*!8$<52p&v$74#lyj14FJ(oc@F>p literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2d9d1609e004bb9fd7ef4eb40cc831f4e3071a0 GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#d^J&ZZPunhh-gfcx{u|#8-1v6*=GViwz8<~( z^}_vc7ao4U`0)Fshu`nL|M%$A|Hq&H0|5hAFHk#vr1+DCkpXCx4p2P<$W9jyQwBy3 zkq-<^OiX+t8axvm7+czf!~{$(I5;&k2pVaHC<q*AV&-Qun82W@(#*sw$RqK<!O4Na F8UVkPUfuuz literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee5eca9d395d574aac04558082f31508c54d5fb1 GIT binary patch literal 205 zcmZ?wbhEHbWMoia{=&d;=*FkRH-YH$ky~Gm-u`<1^}m~M|KEE1|Mt88ci#WM`~LsE z_y6yI`2XPJ|A!y{Kl=C|2!L9MM~XjL7#SD@7<3qb0A!~NhZlpq0)xYX1qYisgtcN$ zY*=`>T|n4KLqTED(QXOjq?`p0fGU|yx@0^zEjc+^L)j`}g90NHGoxJ-&&*BB&d#<d Qes$;M=H>qL7#SI?0n>|hQvd(} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c27e5d69286a217c5735b237a7f821e483723ef3 GIT binary patch literal 492 zcmZ?wbhEHbWMfcZ{=&ep;moH)H$EM{2}GZd-1>6#_SfsL|J{81|JK|8x8ME0^Zx(c z_y6y`|9}6({|6ucKm7Rr(Z~Nl0Mtb!QvAun$iN`Tpu+$JAUj<+{xdK-NN_MRG_Y_8 zOYj^pXgJ6uz-`lGA(-Ua$)J>UrD9{UTbI0U+Z~Qck3IU;f~Uo32BmsWQ;9#-<0-7_ zGuycEn$5|}PyOawHGkV<X_9_%zDuK==&CK5mzKNDb!+V^S#@<)#7v>w16vy%nG<*= zWE{#GuB}ertQV^tntOXo!OfuF-(h-DyYrquTDp4sy8HVY-v1MovCw~bI7?QeETN$B zF)N#(huek?4{vN@<IGSyAYPb$c!7QQJ@2Z57nfSyXNS#|+M0fSdHCV9zfs%XUfZ7i z_}<#x<vI8E*IwrHtJ(4K=80l)f4)19o1gRZlzruDXe?!86U_)uFj(lsz<x+R(?Dav zo`zFA`jbQR#SWyMduJ{mZnxjE_~G~Im(Rz`|Nr;@8{>=k1{S`I1$C@S6$$lRW+xsr z|8dn=&@80J@vucaD&k?2bWlfPyJXRihaFOrG?F?s=B-%NuDNMPQit9#j>kO;*D{ha I7#SI?0r&y@FaQ7m literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c430378071ad6887a54936f913098e78300a819f GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&d;=*FkRH-YH$ky~Gm-u`<1^}m~M|KEE1|Mt88ci#WM`~LsE z_y6yI`2XPJ|A!y{KLVmp{~v$)4+KDs#303=EQ|~cLJT?#KmfASg~OLYS%bl#q2XXN zhp<-6i46-6w+kq%<rFwH9O;%Y&N}m>fw75+K_^efbJLQOlQn|fS{^hUY+~WyVd2nB ZaB!SzQT*!8$<52p&v$74#lyj14FJ(oc@F>p literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2d9d1609e004bb9fd7ef4eb40cc831f4e3071a0 GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#d^J&ZZPunhh-gfcx{u|#8-1v6*=GViwz8<~( z^}_vc7ao4U`0)Fshu`nL|M%$A|Hq&H0|5hAFHk#vr1+DCkpXCx4p2P<$W9jyQwBy3 zkq-<^OiX+t8axvm7+czf!~{$(I5;&k2pVaHC<q*AV&-Qun82W@(#*sw$RqK<!O4Na F8UVkPUfuuz literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee5eca9d395d574aac04558082f31508c54d5fb1 GIT binary patch literal 205 zcmZ?wbhEHbWMoia{=&d;=*FkRH-YH$ky~Gm-u`<1^}m~M|KEE1|Mt88ci#WM`~LsE z_y6yI`2XPJ|A!y{Kl=C|2!L9MM~XjL7#SD@7<3qb0A!~NhZlpq0)xYX1qYisgtcN$ zY*=`>T|n4KLqTED(QXOjq?`p0fGU|yx@0^zEjc+^L)j`}g90NHGoxJ-&&*BB&d#<d Qes$;M=H>qL7#SI?0n>|hQvd(} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c27e5d69286a217c5735b237a7f821e483723ef3 GIT binary patch literal 492 zcmZ?wbhEHbWMfcZ{=&ep;moH)H$EM{2}GZd-1>6#_SfsL|J{81|JK|8x8ME0^Zx(c z_y6y`|9}6({|6ucKm7Rr(Z~Nl0Mtb!QvAun$iN`Tpu+$JAUj<+{xdK-NN_MRG_Y_8 zOYj^pXgJ6uz-`lGA(-Ua$)J>UrD9{UTbI0U+Z~Qck3IU;f~Uo32BmsWQ;9#-<0-7_ zGuycEn$5|}PyOawHGkV<X_9_%zDuK==&CK5mzKNDb!+V^S#@<)#7v>w16vy%nG<*= zWE{#GuB}ertQV^tntOXo!OfuF-(h-DyYrquTDp4sy8HVY-v1MovCw~bI7?QeETN$B zF)N#(huek?4{vN@<IGSyAYPb$c!7QQJ@2Z57nfSyXNS#|+M0fSdHCV9zfs%XUfZ7i z_}<#x<vI8E*IwrHtJ(4K=80l)f4)19o1gRZlzruDXe?!86U_)uFj(lsz<x+R(?Dav zo`zFA`jbQR#SWyMduJ{mZnxjE_~G~Im(Rz`|Nr;@8{>=k1{S`I1$C@S6$$lRW+xsr z|8dn=&@80J@vucaD&k?2bWlfPyJXRihaFOrG?F?s=B-%NuDNMPQit9#j>kO;*D{ha I7#SI?0r&y@FaQ7m literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4e6b5077cae399531b1737e9bf4bcb7b33c9f26 GIT binary patch literal 212 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#dBVZ36Ayizbm;43AUgbY%Hgk54}YC@ z<m>b!U$>opvi;1H9YA#U$<DJ+cAW#Fr@PNT-F@Nto(oU+0@1~%`z}8H|NlSGKxCx& zlZBCiL5e|#0SG{Lx^M(CNCz-9G&CM;<`CA3Ik92k;dTLKwU&m)15BL~##wh}Tx?|F z7G;qLIIwZa$;leQt70TKg4AlnoG?&mXkcO&ib*-SdHMPI4$WM$URyFQG%#2L0KhzO A(EtDd literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..f06546a37e00d2ac09652143c14d668ebbe18bdf GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<+2?eOPmN4`!!{CWD}FVl~FopJc{oW0NI?RvOy@1sS#A1vDY zXz`v$OZPuow*S$VlaIHYe6sEIlcQJP9J}`R#PzrT|Nm!zm;f{c2U7gW!pOiN!k`0G z$pEs`g~Nh@pTp+?LlXnDFo#BnfdWHIyNHrX#Q_H<R!$B%CyoPw4;ndmWi&Q$9AsqT SWaDCC*pP6Lg^Q7q!5RS4=2^u6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..45a7aeb07c7d8319aaae68249d14d7d303c5796c GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#dBVZ36Ayizbm;43AUgbY%Hgk54}YC@ z<m>h`Pj&#&*(W>CKG}5+h@S2~|8)0-=X)+Z-3vq)pYFT(^#A|=K%+2`;!hSv1_lWR z9R?r(+3CXJ%ODvbuppuFU^9oXR?LYF3lFyoD66#?9Beq!En%E>=7mEOD+7x_j*RD~ rB_}6q1bgLtP-tr55@%x(2zcPYG}WT`)t!@@m!F^S(9Fck!C(yl>@jY7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a3ca516a074b2f22d24ab2022bb38460228e1ee GIT binary patch literal 510 zcmV<a0RjF;Nk%w1VFmyo1M~m@jllJe!1a&8^^n2ykiqql!u68E^^?N&lf(6t!}XQJ z^_Il-p1R?;%;dPt<hae`xy|Id&g8nz<-5=2yU^#n(B-|*<-O76zR~6X|No7^^^L&w zjllJd!1ay5^^L&wA^8LW000>PEC2ui00sac14Ib_02wqG*nk0p3J5D06u?k`K?M*M z7+gSc!NiIeDQ2|Dpdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*blV{GA zKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)MRHU?Ui$K$e0*185C+-MY5x z)3;XL#%)U%F4nqp?XuM?_by+&e)9?rOnC2L!-e}IUhMXP;|B&ONS<Kug5?Va0cZwb zkbq|b1`&ux0GM%U#i&oK{>%Ds>eh)@yOtdrwrSh1XXB=QTet7pzk358F1&bd;>V5i zPR@L}^WD&cH;;~7q=V}Y3_{or!Jvfi5+YA~HfW)|1%nvUV=y?N{Q!dj;s;pR&|rc4 z1q>e8f52dZ{|P)Noq*L*r<{S)4TvCt2P)`bfe$ta;e--am>`80TF79A9B%00f*?lN zVTc%hD58lalBl7IBc8}2iYvM(V~R7zNaKw*=GY>RJL(8yk3jw?<cmbsm|8#pJ5nwJ ATL1t6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-medium-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-medium-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1b42516f50ee2083e25328b43c92876afee4e25 GIT binary patch literal 435 zcmV;k0Zjf!Nk%w1VFmyo1M>g?(b3W3;^O1u<K*Pz<>lq(=H~bJ_xbtx`uh6&`}_R- z{Qdp?|NsBd(b3V-(b3V-A^8LW000aCEC2ui00sac149V^00Ar*xBvhE1PBor6u?k` zK>`p77%V`sz{H9dDQ2_?pdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*b zlV{GAKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)H&uU=<iNK-Pf40cZz! z-MY5x)3;XL#%)U%F4nqp?XuM?_by+&e)9?rOnC2L!-e}IUhI}&K>!INCop)R@&SVZ zG6z`L@L@#2j6o|NExPpI(}zi;PHZ}LYu2kn$5!on_G{U-bHmn+d$;f2z-j*$9{e`( z<HnQQUd|gi^Wh>L8w@KJvSfpjCm&2m*)nH_m^FW3cL*S@+VW{VLsZ_JJ@n_r;X7|H z-+g@g_}}NhufIS4|MU45Ab|D_XkdW|)~Dcp2QDaJf(%0Vpo0Wb*kFVfN?0L=98TEb dh8~6p;)oZDSR#oUo~UAqEN1B9hol7r06U`8)-(VB literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecd90b1bfca0da2f46259285d52e79f5abf17a3d GIT binary patch literal 152 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r_Y`}`}y<duV24@|Ni~w&!4}4|Ni^; z@Bjb*Ks9in_>+Z^fq|PrhXDvcW;k=WGKh*uI4oFju$e<xE9S(8g@@Y(gq1i1HZD5a yEn%o;z~JC;tY5*oOU8545?59ZJ_!v5g$9Nuwd7NCJU1^pJKLi8)g4Iz25SJglu91} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-small-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..baccd0704a1ed913f51ed9ae8576265767b2a607 GIT binary patch literal 131 zcmZ?wbhEHbWM&Xz_{_j?@#4kHmoHzxe*OOa`wt#Gc>MVBlP6D}J$v@+*ROy7{{8>| zp8>1}s0;!Wf3h$#FmN&G0L2+VW;k;gFfekkG$=GOGP3b$uuL#$bY^Ac;4@foz=5Hi bQ$$W8qJe>_jY~*@qrhOH>m)8FCI)K&Tm&`0 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-disabled-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-disabled-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd28b4de71511b25e9182e81309c813638b9f8b4 GIT binary patch literal 152 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyZ7$h`}pzWr%#_gfByXC%a^ZTzkd7n z?f?J(Ks9in_>+Z^fq|PrhXDvcW;k=WGKh*uI4oFju$e<xE9S(8g@@Y(gq1i1HZD5a yEn%o;z~JC;tY5*oOU8545?59ZJ_!v5g$9Nuwd7NCJU1^pJKLi8)g4Iz25SHnEJ(Ki literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-small-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..71ce63917e6b47d74af780685f876c3881d8fc53 GIT binary patch literal 134 zcmZ?wbhEHbWM&Xz_{_j?@7}%p_wPS=@ZjOYhmRgTdj9<Rix)56ym|BX?b|P3zI^@q z_1m{^|NsAI0ILKlR{Y7r$iTqEpaT?P0GZ*;Va&kJAu=I>k%5teK|@7=;XqS64<AQB j00Sd43yYjoh(^HyMrKZqh!_E(Mut`fj*b)o0S0RTcRDt; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-disabled-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-disabled-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b31a7c4c122af6ab468b244ca2a7ac3d3b7dd28 GIT binary patch literal 149 zcmZ?wbhEHbWMoia{>;E|>(;H?w{PFMbLZ~eyB|M({PgM5=g*(NeEIVA>(~GP{{v;w zfZ|UUMg|5>1|0?<0GZ*;;lv=wAmOlK!NFz@VXc@G8x|gJ=j7&S@YuNMXty}O07t{d p#mD;<oV#Q)KQ=Tnu`saA@YuBU^mK#dQ*%5wFFQM%g_()L8UTAQN!tJb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-small-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..19d9646d3d87b154f46791354544b0f5437e1434 GIT binary patch literal 405 zcmV;G0c!q7Nk%w1VFmyo1M>g?+S=ON+uPjS+}+*X;o;%&@$vHV^7Hfa^z`)g_4WV% z|JvHx+S=OM+S=OM+S=OMA^8LW000UAEC2ui00sac149V^00|@*n1BEQ00;pX9KdkE z!iEnSMs!G^Aw`Q5GggGSQDVo795H^>D6(Y8lO9c`L<w@G%a$-nvXuFfX3UW|Ro>KT zvuDnkKWhfv36$qhpGK1wT`E**Q>H|pN{vbtDO7_7vKlZbpsN6@Q^8g}O4jLEvtrYh zy}CAR+p}!ZzEvx?Zrr<W?dHV`cdy^RfYl-xjKE-l!vzcmSR8;ZU&ntT2cAn=?_|r8 zGgp4RIdbRAoH2jaEV^{))1FPIMh$wk>(;PIvzGmucI?r(Ro~WayEj?Fg$W!OegLah z!-x$gR7ikvV**~k=AJ#hcJ<xVd0+Rfy?gfW*1d;92akQc`SR$wlUIM9efsV2#lM&D zzJC1m_uJ>6kDva2`~C&k-+=lFSRjG?9jIV}3<8Ltg9}2~;C~bvIH83Z1q1*)BI?ih literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0eae5007fe605b2462670f79c71e90b054b7946 GIT binary patch literal 149 zcmZ?wbhEHbWMoia{>;Ge=+UFcj~_pI^5p5$r$2xG{PpYC@87@w{Q2|u@8AFb{{v;w zfZ|UUMg|5>1|0?<0GZ*;;lv=wAmOlK!NFz@VXc@G8x|gJ=j7&S@YuNMXty}O07t{d p#mD;<oV#Q)KQ=Tnu`saA@YuBU^mK#dQ*%5wFFQM%g_()L8UPvIOG5wv literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..58aad9976adf5492791c7c2dcfc5ab00f016c603 GIT binary patch literal 151 zcmV;I0BHY5Nk%w1VF3Uj1M>g?!r1b|+4IEO^u^ot+3o+@?f={E|J?5X-S7Y2@c-cO z|Kaif;`0CF^8f$;|H9bvA^8LW000gEEC2ui0096X149Tz02>q#Frc8pg9sBUT*$DY z!-o(PCIAqzqQ#3CF)la&AV9{CAVZ2ANwTCx1_}@uAka|&L6b0J%A85Frp=o;bLtET F06PQUNeTb} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-small-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..303a4e0c16c55873a8f7036205e516b87552d211 GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#Y|7qKW&)Y73-hboUfg9fr-~4*`*4LxAzg~Fo z?ZU(F7axAV^zi$=_x~P!`v3UTe;{B0YXs^gh!lUaFfuR*GUx!cFo5iI;V@-j<luSm z;9w&ouaE{$gTle)c0myVodXI?%?tuYT0RN_4NS~@Od&N791bus@$z#BTu^XwV6X-N DDac_H literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8bd959a034a027d0f7425f21c8d748030f3efc9 GIT binary patch literal 148 zcmZ?wbhEHbWMoia{>;E|=*FkRH$NY__2uT<|F_=$zy0q2op=B5zW;yk!~X{#{y+Tq z9|(YI;7IW&3nK#qH-ioX5P-~Z=5S;XWe{-Ku;5@bhp<-6i46-6w{!BcG<a-WbhKMs tP(Y$%<KpA}3eH_Jk%k8wnV1=TR8DSMdV0D+@~JtVo0pw!Vq|2n1^`K$N$UUr literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-small-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..261415846781cc1392de26abdf9df2fbe3fde0c4 GIT binary patch literal 404 zcmV;F0c-w8Nk%w1VFmyo1M>g?u*~wp*z&{K^TgWp+3o+@?f={E|J?5X-S7Y2@c-cO z|Kaif|NsB6%<{0z^03VEA^8LW000aCEC2ui00sac149V^00Ar*xBviv00;vZ9KdkE z!iEnSMsx_EAw`Q5GggGSQDVo795H^>D6(Y8lO9c`L<w@G%a$-nvXuFfX3UW|Ro>KT zvuDnkKWhfv36$qhpGK1wT`E**Q>H|pN{vbtDO7_8vK}xfpsN6@Q^8g}O4jLEvtrYh zy}CAR+p}!ZzEvx?Zrr<W?dHV`cdy^RfYl}#oWNj#!vzc`R5-V>-oTFe(v=+f?_|rB zAwRyXneyh$oI`^i{kgQ~)0j=CM%{U}>(;PEtBy^YwQSq9U*Fc98?u7m3Jf9`j=-RS z;|2^8SWZB3LattS)1EE8dT;C0uWQfF9d~!$-=}*)9}k|q`10t_tH*AheR}unx3`!7 yo__rB@blZ(kAJ`a{s7JwV0{DLC*XkuB4}WO3@+#(e+oj_po9<p7vV?&0RTHcQPEcb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..58aad9976adf5492791c7c2dcfc5ab00f016c603 GIT binary patch literal 151 zcmV;I0BHY5Nk%w1VF3Uj1M>g?!r1b|+4IEO^u^ot+3o+@?f={E|J?5X-S7Y2@c-cO z|Kaif;`0CF^8f$;|H9bvA^8LW000gEEC2ui0096X149Tz02>q#Frc8pg9sBUT*$DY z!-o(PCIAqzqQ#3CF)la&AV9{CAVZ2ANwTCx1_}@uAka|&L6b0J%A85Frp=o;bLtET F06PQUNeTb} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-small-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf99f208386a4390083e99ca970e6208a9419e78 GIT binary patch literal 184 zcmZ?wbhEHbWM&Xz_`<-j;moH^=RR#Y|7qKW&)Y73-hboUfg9fr-~4*`*4LxAzg~Fo z?c&4lmmYq<_x|6bPyZi(`VRyQU|m3s#303=EQ|~c0t`ApT?`;QT{uh`7&&+@95~p> z$Rnh|)1c7U+%6y@ptFJD5ECQ6k(Q5wKm!vqFH=a#1&0GnOuYOY0tXnJ92l$t^;}>q literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8bd959a034a027d0f7425f21c8d748030f3efc9 GIT binary patch literal 148 zcmZ?wbhEHbWMoia{>;E|=*FkRH$NY__2uT<|F_=$zy0q2op=B5zW;yk!~X{#{y+Tq z9|(YI;7IW&3nK#qH-ioX5P-~Z=5S;XWe{-Ku;5@bhp<-6i46-6w{!BcG<a-WbhKMs tP(Y$%<KpA}3eH_Jk%k8wnV1=TR8DSMdV0D+@~JtVo0pw!Vq|2n1^`K$N$UUr literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-small-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..261415846781cc1392de26abdf9df2fbe3fde0c4 GIT binary patch literal 404 zcmV;F0c-w8Nk%w1VFmyo1M>g?u*~wp*z&{K^TgWp+3o+@?f={E|J?5X-S7Y2@c-cO z|Kaif|NsB6%<{0z^03VEA^8LW000aCEC2ui00sac149V^00Ar*xBviv00;vZ9KdkE z!iEnSMsx_EAw`Q5GggGSQDVo795H^>D6(Y8lO9c`L<w@G%a$-nvXuFfX3UW|Ro>KT zvuDnkKWhfv36$qhpGK1wT`E**Q>H|pN{vbtDO7_8vK}xfpsN6@Q^8g}O4jLEvtrYh zy}CAR+p}!ZzEvx?Zrr<W?dHV`cdy^RfYl}#oWNj#!vzc`R5-V>-oTFe(v=+f?_|rB zAwRyXneyh$oI`^i{kgQ~)0j=CM%{U}>(;PEtBy^YwQSq9U*Fc98?u7m3Jf9`j=-RS z;|2^8SWZB3LattS)1EE8dT;C0uWQfF9d~!$-=}*)9}k|q`10t_tH*AheR}unx3`!7 yo__rB@blZ(kAJ`a{s7JwV0{DLC*XkuB4}WO3@+#(e+oj_po9<p7vV?&0RTHcQPEcb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d51c9458a14bab0d8eac46ae3633a1e26e129ad3 GIT binary patch literal 202 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#b>g9~lMa2Ia`@}i!(XQz`8xf`*KMbt zY(Mj4$C)QP&pz38?#b@+PxqXEy7$7<y%(SEyZH3~|NlVk_>tmI7DfgJ5e6LwAOP9v z!r{&!>R~Wp!GeR$9Ku>LCpIiR+%6z&B_ObI(a~-RL!$<U28N~{1?Mgq&rM5Cc5zGD fbQmZeXkcRZJ2l61^RlzEEs9^=Ice<Zz+epkFN|z> literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-small-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..d40320d40fac664eaead3240022dcc4941531fc2 GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<+2?eOPmN4`!!{CWD}FVl~FopJc{oW0NI?RvOy@1sS#A1vDY zXz`v$OZPuow*S$VlaIHYe6sb_<87y(Y(Mkl=+!sJuDv~R{q6t%{}~|W0FA;xia%Kx z85qPEbbx9YKz6!tSTOK&_%Jv&F))jAXoMIjG_<sfsi{;PXlP>P;!w)qIS}}uk&{<O YV}k}G6B8F37YoCN1V>hGMn(o}0QQDiwEzGB literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-small-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4cdfef0e621ea33fd78dc59ba8313847d727946 GIT binary patch literal 198 zcmZ?wbhEHbWMoia{=&e}d*Ex|fv^1szfL&#b>g9~lMa2Ia`@}i!(Vrtd9w5DlU?VY z>^}c=&-tf&FFf6Q@#(&cPyhe_57a_DQvAun$iN`Lpu+$JAUj<+oEZceEF3m0IM~b~ ztQB)&!@|SuoRR_!9vc@O?G_ic5J+HHe7s-5xl6`#Q&JNvuN;d+z=9>GryC@nn&Y{7 N+1c3^+-xii)&M`IXqo^3 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-small-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7613e5bdaecd25f6063a06c11ada56955c1dcd4 GIT binary patch literal 468 zcmZ?wbhEHbWMfcZ{=&e}d*Ex|fv^1szfL&#b>g9~lMa2Ia`@}i!(Zp^dbs1vlbvUu z>^k>k_xY!L&OhCI;pyIsPxoDX`v3obpe`bj;!hSv1_nU}9R?r(+3CXZpFvPXVg>^v z69WgMgw25u2M)FIOS+YGEKqdq7B&uR*%6p@yj#Yw?uy2yloONXe3!X!7A-wJ&A@Zh zl%JE*&P=ojy>}&ZbNacN_StNAIj1}inC~`OELJNdGkBTHe6L<FQO%HM-c4o(9t*S? zR|g*qv-P_6GGcSm<!O6&ndRKxoO5wssP^`}JG=AVK0C@?zW)BchO2rKdk#EkKFrU< z6`^xrLE~|@7oVp7nO^i@=Zvp$*K&3iKRY>JyZs)|tj`(emjzFc(~T<4zP2R(bf2%Z zDbU2i>vm^vf6cqUtNC$=LrkM1+X+dDk^^@d9XT#2O7J+?HXLNU!7ib5U~faggT49f zf#+@iZLj$7;{0m$`Sbo(eSY`&@cjROYioage>wg9`TG6;zx`soF~8ye&2WV}cD4+K pMjpKv3QfFDKNd6zg?T(|W%iq~uvI!~Mnbznokmg%A1e!kH2^?G^`8I$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-small-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-small-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..32d753ab4021f06d0f08883e395931261b354a3b GIT binary patch literal 405 zcmV;G0c!q7Nk%w1VFmyo1M>g?(b3W3;^O1u<K*Pz<>lr1`T6?#`uqF){QUg={r&&{ z|IyLW(b3V-(b3V-(b3V-A^8LW000UAEC2ui00sac149V^00ATzm;eBP00;vZB*2is z!iEnSMsx_EAw`Q5GggGSQDVo795H^>D6(Y8lO9c`L<w@G%a$-nvXuFfX3UW|Ro>KT zvuDnkKWhfv36$qhpGK1wT`E**Q>H|pN{vbtDO7_7vKlZrpz8puQ^8g}O4jLEvtrYh zy}CAR+p}!ZzEvx?Zrr<W?dHV`cdy^RfYl-xjKE-l!vzcqSS)}pU&ntT2cAn=?_|r8 zGgp4RIdbRAoH2jaEV^{))1FPIMh$wk>(;PIvzGmucI?r(Ro~WayEj?Fg#jEGegLah z!-x$gR0x1^V*p;i=AJ#hcJ<xVd0+Rfy?gfW*1d;92akQc`SR$wlUIM9efsV2#lM&D zzJC1m_uJ>6kDva2`~C&k-+=lFSRjG?9jIV}3<8Ltg9}2~;C~bvIH83Z1q1*)ZuQU< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbab9b32ad0bb56e98e3f4529d532d96824a9ca3 GIT binary patch literal 124 zcmZ?wbhEHbWM&Xz_{_lY;K7534<9~y^yuZwm#<#Edh_PZ+qZB3|NqYbmIBJ60mYvz zj0_Cy3_3ss3?MU{IW!rVIamr7JYZmE<rnaY*uZeGnVp9tAtE55fr&*#Nk`+rfrb_) KD>)7h25SIZkT*~O literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..47d16c7b838bb6c2336c1fd13fb6454aef11204f GIT binary patch literal 315 zcmV-B0mS}CNk%w1VFmyo1MvU=;o;%`|Nj600O8@`A^8LW00031EC2ui00sac13?J? z009IT7yy7kf(8i|JUB2RLWT<!I&27WV#J3MD{9Qh5u-<n9YKD)D6%BUlNM8M9H}xS z%9SQtvV{54rOcQ#Z`Pb?GpEm<KzRzq8I<VIoko))U8=L`&!bL@GJUEvDpaadrCP0u zb!*nETDyu3OBSqIu4U1l{i?Pt+qYihj$JD^E!??o>(a%0*RI~YeE;^{>o>6B!iWhg z2Ar7j;=zt1L!K<S^5Msp8&ke4IWuO?n>Bmx40?3v&!S7KPR$y%YtpS@zdkLyHtpM{ zbFZGQJ2vj!wtMpi{@b_k;KYv?A8tIk^XAZ*OGh4^`t;@2vt!?`y!-R(-m7yA|E@he Nc=F@Ln{OBp06Q~vm@WVS literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..79d4a9bc02111a45bb515e1f6179bb527805355f GIT binary patch literal 217 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mkW#83LXCD8#@cjQp zAbRot(u@C>U;e-H^8eLW|F6CNfBp6U8*l#KeEa{_+y6iSHVSAO3R3*Z!pOiN!Jxwc z1Ry(IIKmk8Ju(y?I5ahL2y4Zh*s$<$yMVHnPXr?q1Cy|E)}0f9i&?n@<#ZSf7C0QA xtP#8_=H#Z-Biy1IJ`)5kF*36<FmWgZ9AIFY?$FF7>$PRY#l;?z`FJ@PtN{Z5bRhr$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..88445cb9f38e30530a58a5ca91e44c306cf36945 GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30HvI}j?FHPQbd&=fJb9ddJyZio@6OXo@dc5t_;~l4; z?6~-G@6|7tp8vl5{P(T5|ABx3tP7}-7^L`<g^__lfI$bSiveV(3x@>*BL~lg2M3!N zxg<1rHZ&Y;ZWrKVDF{$tY++%NvkN%kpwPg~CdJ~w@X(Q&k%Pk|M!}(hiGz`m!5RP- ClU4Bm literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7af8d4acc366307f99a3df392f6865f60f8f437 GIT binary patch literal 215 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mkW#83LXCD8#@cjQp zAbRot(u@C>U;e-H^8eLW|F6CNfBp6U8*l#KeES~=z~%srLPv@}Sr{1@#2IuLfB<Bt z3r7fpu1kc0LgT?^4q>gB6B`yDZWmBiTk?Uyfw5D<IP1=gjZG{ZybK%)1r3W&PSyxs s6?0N3iIq!O#iimwLn9LdqnnsP!-A#f=Q}iW$$D*BadEK|GZTX~09gWdH2?qr literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e65528d5805e1a7de3419ae5b80a27dc2822030 GIT binary patch literal 529 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$2}nQY0niP`n(s2t^(1QeOEu7dHm<X z^Zyrt=*9m_FaBSC`Txqx|5soAzxMk7_1FJzy!n6g?SCKu8ik1zf3h$#Fi0@yFaQC_ zP8W{<42&@n6+lr=4poVi0}~n@nFKf`LL34Q9_bR-Oxwb-K*_yd+PUnAMNsm|eig@g zA}cqgo|>)}d#t6iXxZ6W7Lk{(R8CGmH`O8apUA7t85icdSF6c(O?eTt*l)4f+*Ki2 zp{sn>XPrGIs&$epL0h85L9FQ@Lk6>i$$@JP*VpFnwws$Bns;|c#ml6#)#3Uv`^&yF zJ=5N?{^6mH|8ik-EDRnWx7YR9mQc|2l#@+4qc7n?V>)~KWhohls)mD1E4U?G4oER3 zo>(t?y3e<I!`q{q^Uc@w&i<ZvcSGazce;1V3m%=QSGQlc$MW;@!*ku+^J;c|eRZQd zJHD>=_xqDm7+d;8xf_})xu)t%`>YUfh}_H|ccMOFL*rjIHt`qn0#a)o85y_?qB55+ z-4+(jCcEGPBb(}j1g4vX;tNZJgPzZA6^gqN+a?pVBC%Dv>V{&Q(ln1por;S%9(BoY zvq<VP*z{vjkJ_;pNxdekDi-${zspGOcX;$7xzC<UQl;Nbt@FtwS0m3SlbzivQznPB Ji3l)Q0|1Y02V(#L literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..79d4a9bc02111a45bb515e1f6179bb527805355f GIT binary patch literal 217 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mkW#83LXCD8#@cjQp zAbRot(u@C>U;e-H^8eLW|F6CNfBp6U8*l#KeEa{_+y6iSHVSAO3R3*Z!pOiN!Jxwc z1Ry(IIKmk8Ju(y?I5ahL2y4Zh*s$<$yMVHnPXr?q1Cy|E)}0f9i&?n@<#ZSf7C0QA xtP#8_=H#Z-Biy1IJ`)5kF*36<FmWgZ9AIFY?$FF7>$PRY#l;?z`FJ@PtN{Z5bRhr$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..88445cb9f38e30530a58a5ca91e44c306cf36945 GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30HvI}j?FHPQbd&=fJb9ddJyZio@6OXo@dc5t_;~l4; z?6~-G@6|7tp8vl5{P(T5|ABx3tP7}-7^L`<g^__lfI$bSiveV(3x@>*BL~lg2M3!N zxg<1rHZ&Y;ZWrKVDF{$tY++%NvkN%kpwPg~CdJ~w@X(Q&k%Pk|M!}(hiGz`m!5RP- ClU4Bm literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7af8d4acc366307f99a3df392f6865f60f8f437 GIT binary patch literal 215 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mkW#83LXCD8#@cjQp zAbRot(u@C>U;e-H^8eLW|F6CNfBp6U8*l#KeES~=z~%srLPv@}Sr{1@#2IuLfB<Bt z3r7fpu1kc0LgT?^4q>gB6B`yDZWmBiTk?Uyfw5D<IP1=gjZG{ZybK%)1r3W&PSyxs s6?0N3iIq!O#iimwLn9LdqnnsP!-A#f=Q}iW$$D*BadEK|GZTX~09gWdH2?qr literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e65528d5805e1a7de3419ae5b80a27dc2822030 GIT binary patch literal 529 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$2}nQY0niP`n(s2t^(1QeOEu7dHm<X z^Zyrt=*9m_FaBSC`Txqx|5soAzxMk7_1FJzy!n6g?SCKu8ik1zf3h$#Fi0@yFaQC_ zP8W{<42&@n6+lr=4poVi0}~n@nFKf`LL34Q9_bR-Oxwb-K*_yd+PUnAMNsm|eig@g zA}cqgo|>)}d#t6iXxZ6W7Lk{(R8CGmH`O8apUA7t85icdSF6c(O?eTt*l)4f+*Ki2 zp{sn>XPrGIs&$epL0h85L9FQ@Lk6>i$$@JP*VpFnwws$Bns;|c#ml6#)#3Uv`^&yF zJ=5N?{^6mH|8ik-EDRnWx7YR9mQc|2l#@+4qc7n?V>)~KWhohls)mD1E4U?G4oER3 zo>(t?y3e<I!`q{q^Uc@w&i<ZvcSGazce;1V3m%=QSGQlc$MW;@!*ku+^J;c|eRZQd zJHD>=_xqDm7+d;8xf_})xu)t%`>YUfh}_H|ccMOFL*rjIHt`qn0#a)o85y_?qB55+ z-4+(jCcEGPBb(}j1g4vX;tNZJgPzZA6^gqN+a?pVBC%Dv>V{&Q(ln1por;S%9(BoY zvq<VP*z{vjkJ_;pNxdekDi-${zspGOcX;$7xzC<UQl;Nbt@FtwS0m3SlbzivQznPB Ji3l)Q0|1Y02V(#L literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b40f97f82c1b563f45b3f8a4dab31596a983472a GIT binary patch literal 220 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^FEfvQnRV>T?BieN9RD)+_{X^?zRWxE zWzYGidoI1)d;aO(3s3g}(Z#3xFFrkR35cE@y!`AC5M6n8_{y^*SD*d={~u@?8dChp z!pOiN$)Ljk1Ry(II3gLuJq{=wXlQEY5Y~!0v0>rib^&ECpC1dD7?^~Ov+kS-Om5~7 z(KFyMSm4mqrxCm==H#ZO-W}XB4jl%KO|9G#0t^BM4GxUV?0)-Xytb^kxY%Q|R_v)M I84e8A0Mt}+D*ylh literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..1aa7e497e7ed65db64aa7c818f701e7264be4918 GIT binary patch literal 188 zcmZ?wbhEHbWM&Xz_`<+YHS0*-ykm{?kF_qp+`8g&->P%{tIy9q@?rMT5A#lZ*>L#w z#v^w&9l5jR*xl`?9&JDUXwUhl|NsAI0BZ#5C5RM%vM@3*2r}pZwJ?C}bm6dMVC3L= zz;LLMkyl8Ar$K?SrCm^jr6Qogk%f&(&M9Dqg8~C9n+!{Y0Amv~BR7YPM}b2_1DhZd H6N5DXCQ48E literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ee0bf6cf9095bb7b90e82509a2d8d9675043567 GIT binary patch literal 215 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^FEfvQnRV>T?BieN9RD)+_{X^?zU;a5 za_{-4doMiQ2SgX2?!Wl-z$GAhcJT7ELqK%p+2JeCj$D2A|NnoWIarb6PZmZ725|-* z1|R_0>B14hAnp-hpwM`*nL}7B=ER1DhuZ~|)oKD19T+<$jI-{{*vQzzDaOE|kkGLB x<YbNDRWT=pl$hE1l{^*%9Asje$jl*PP_SU>`S}jbT(VwUR$N@{#LUEC4FDdzZa4q{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-large-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbcdae1b46d09fe6bc649d37cbe70d2df16db50c GIT binary patch literal 527 zcmV+q0`UDuNk%w1VFmyo1M~m@dYZ(Q#PpWL^q0l-n8oy&#`K!T^qa@@oX7N?$MK!W z^t{sPz0c*n(B;0+<-XD7ztQEu(&fO?=E2kE!qeu$)aJv~=ET+J|NsAbn#6jV#Cn>< zdYZ&~n#6jV#Cn><A^8LW000;OEC2ui00sac14Ib_00A%<$N&I<2?!?`T)=RFK>`p7 z7*s$}!NiIeDQ2_?pdv?)8$)))I8tNDk0e2!6sfXh%9kcx#)OG-rp=l-S<=*blV{GA zKxO_E>a%Fjokx2n9g39bQln0zHl3<eYE`OCuWHT86)H&xU?CW^K-Pjm0cZsnG{Dw? z*R5~6KAme-Zr!+e>0-@$S1(+@cJ~72E4Z)W!ifJKR-8C6<HtW8NOoW_g5?MXDQKo( z@Pg+H1_Ou=U~qux0R{`GE@1G0>jQ)#$97D6w(Y^V7uU|+__l7}y?M(PzWX<E;KPk8 z557D(^XJZ^7l%GwI`Zn+uWLWfy?OTT!5fH-Z(#6&`3DBWiUlB{y##{^6#}S0zrxtE zoj)5)z&}Cg(WRaCP(-P%wpLrMy=D*s3?i_dcMnn*p>^O<2w{caU8tdi7*3cWhZ|Z5 z;)o)a_@Rj&rr6<%A)e@>iY>xO;)^WKC?kqB;uvF&H16o5jXd7iBalDpNaT@5COM>% RLN*!XlSM8mWk>-506U>Q2CD!7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..29b3997e4e14a3f41ee27a0ac775c6a48324387b GIT binary patch literal 124 zcmZ?wbhEHbWM&Xz_{_lY;K7534<9~y^yuZwm#<#Edh_PZ+qZB3|NqYbmIBJ60mYvz zj0_Cy3_3ss3?MU{IW!rVIamr7JYZmE<rnaY*uZeGnVp9tAtE55fr*8W!y%&JaYGA} KnH&cPgEatK<TpbA literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..47d16c7b838bb6c2336c1fd13fb6454aef11204f GIT binary patch literal 315 zcmV-B0mS}CNk%w1VFmyo1MvU=;o;%`|Nj600O8@`A^8LW00031EC2ui00sac13?J? z009IT7yy7kf(8i|JUB2RLWT<!I&27WV#J3MD{9Qh5u-<n9YKD)D6%BUlNM8M9H}xS z%9SQtvV{54rOcQ#Z`Pb?GpEm<KzRzq8I<VIoko))U8=L`&!bL@GJUEvDpaadrCP0u zb!*nETDyu3OBSqIu4U1l{i?Pt+qYihj$JD^E!??o>(a%0*RI~YeE;^{>o>6B!iWhg z2Ar7j;=zt1L!K<S^5Msp8&ke4IWuO?n>Bmx40?3v&!S7KPR$y%YtpS@zdkLyHtpM{ zbFZGQJ2vj!wtMpi{@b_k;KYv?A8tIk^XAZ*OGh4^`t;@2vt!?`y!-R(-m7yA|E@he Nc=F@Ln{OBp06Q~vm@WVS literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..04e734986ad670e4d16d07ff181b483d232b9c62 GIT binary patch literal 210 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mk<=oT17oPvW`27E+ z7ymE6{D0-;|EsV5Ujw4o|F6IPf8)*nn?UsT|E;(GfdFh2&@>dJ_>+Z^fkA>nhXDvc zcDiu*Gw9neBq%f<Y~~QwiaD`i;o)`xWwkj65*m(lOBiRJiBNQ6W@Y41xZ$yB$;rtY o!K->Q8k<-+_@s0s7#tWHnb^Z#-8s2=`T6+{&0MllCJGGJ0Ck#mEC2ui literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..83b339ae7c254997c22898ac19f1aefb98c2a61c GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30XiVJPaF0?Jb)V|`<<W0AyY`!yh*ZsM>?{7KrXzQuR z+fF^+e)`Fdiy!x1{c`d7?@P~rUw;1k=G*_b-u?#y2CxZ0LvSI*pDc_F3?d9VK$Q$2 zJ6$*|7#KN3J~%ivGx5l1@LV|1*wQW{#L-cZz}U*lqLvZz!a<>dg+qZQz`^klGZPn& PNsd7R12Y#RBZD;nwq#eT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..57e732a36a5280f1c01795cf4abacdc8f75718f7 GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mk<=oT17oPvW`27E+ z7ymE6{D0-;|EsV5Ujw4o|F6IPf8)*nn{WOD0oV|rIarY5PZmZ71~CR51|R_0>B8a5 zpl!m@pwM`*nL}7B=ER1DhuZ~|)p`~*G#u%cFwQz-@sN?3fte>q#&gq>lan=qy_P62 iHZ`+xvoQ!bEI7b8)uQ;-os*lFpP%p0%*4yVU=09JOmz7G literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..83f9bd331e35b906bdc43e68f60dc5f53b1f8829 GIT binary patch literal 507 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$2}nQY0niP`n(s2t^(1Qb5H+Xc>e$5 z^Z%D#{J;G2|CN{jufF<!4TxU<zyA9FjW_>qzWEOXKy$Dn#h)yU3=HB7It)MnveSj* zKLcZgL<UflokLba<Ul~fK^6gFi4cdtgGai=HPg0mEKqXqmv$~YViA;lvR}n<p2*5g zsi&r^#U5+vELwJUmPO>HE0vSe&rNkm{U`EjbH;_a?$v6tT~l5JE%sY%Hg{D>R_H39 z^;u_6iE4RrCa6lpIFvOWWXj;KxVvlH>&x52?jFna7T3GBtN87vtJ>f7;`h{j=Hm0I zc%N{%^|w;on`uqSTx^OSZ3!D1pR%zrXYeIVXh>&b<L|Izm{FK{bcO%wf2V&Hyt>vI zzI&Ri^tQ~~>(d`EtBv0N{?`6#W_i6m6?u=2_kQ*}SF`i;-3!g;{e3Yht*=FS{BGDC zOlWy8$YWO_@&7=AQ!9hSiu4OVi=UlkV?QBZV7Atg`3J9r%K`a=#V`Mdy3Z|Q_G3?I zWE84+(8Of4BB5EpPGe!CV30*(lUQ2E!#0kx7Yo|t!cIJFSMHK{)T-X(k<_KSXvd>& iwL>qGdQ8q`EbcOWRFT|m_3gytejPT=<Sa%;25SJ^UjDoQ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..04e734986ad670e4d16d07ff181b483d232b9c62 GIT binary patch literal 210 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mk<=oT17oPvW`27E+ z7ymE6{D0-;|EsV5Ujw4o|F6IPf8)*nn?UsT|E;(GfdFh2&@>dJ_>+Z^fkA>nhXDvc zcDiu*Gw9neBq%f<Y~~QwiaD`i;o)`xWwkj65*m(lOBiRJiBNQ6W@Y41xZ$yB$;rtY o!K->Q8k<-+_@s0s7#tWHnb^Z#-8s2=`T6+{&0MllCJGGJ0Ck#mEC2ui literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..83b339ae7c254997c22898ac19f1aefb98c2a61c GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30XiVJPaF0?Jb)V|`<<W0AyY`!yh*ZsM>?{7KrXzQuR z+fF^+e)`Fdiy!x1{c`d7?@P~rUw;1k=G*_b-u?#y2CxZ0LvSI*pDc_F3?d9VK$Q$2 zJ6$*|7#KN3J~%ivGx5l1@LV|1*wQW{#L-cZz}U*lqLvZz!a<>dg+qZQz`^klGZPn& PNsd7R12Y#RBZD;nwq#eT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..57e732a36a5280f1c01795cf4abacdc8f75718f7 GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{BaKmecE#ch(7NHqN_mk<=oT17oPvW`27E+ z7ymE6{D0-;|EsV5Ujw4o|F6IPf8)*nn{WOD0oV|rIarY5PZmZ71~CR51|R_0>B8a5 zpl!m@pwM`*nL}7B=ER1DhuZ~|)p`~*G#u%cFwQz-@sN?3fte>q#&gq>lan=qy_P62 iHZ`+xvoQ!bEI7b8)uQ;-os*lFpP%p0%*4yVU=09JOmz7G literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..83f9bd331e35b906bdc43e68f60dc5f53b1f8829 GIT binary patch literal 507 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$2}nQY0niP`n(s2t^(1Qb5H+Xc>e$5 z^Z%D#{J;G2|CN{jufF<!4TxU<zyA9FjW_>qzWEOXKy$Dn#h)yU3=HB7It)MnveSj* zKLcZgL<UflokLba<Ul~fK^6gFi4cdtgGai=HPg0mEKqXqmv$~YViA;lvR}n<p2*5g zsi&r^#U5+vELwJUmPO>HE0vSe&rNkm{U`EjbH;_a?$v6tT~l5JE%sY%Hg{D>R_H39 z^;u_6iE4RrCa6lpIFvOWWXj;KxVvlH>&x52?jFna7T3GBtN87vtJ>f7;`h{j=Hm0I zc%N{%^|w;on`uqSTx^OSZ3!D1pR%zrXYeIVXh>&b<L|Izm{FK{bcO%wf2V&Hyt>vI zzI&Ri^tQ~~>(d`EtBv0N{?`6#W_i6m6?u=2_kQ*}SF`i;-3!g;{e3Yht*=FS{BGDC zOlWy8$YWO_@&7=AQ!9hSiu4OVi=UlkV?QBZV7Atg`3J9r%K`a=#V`Mdy3Z|Q_G3?I zWE84+(8Of4BB5EpPGe!CV30*(lUQ2E!#0kx7Yo|t!cIJFSMHK{)T-X(k<_KSXvd>& iwL>qGdQ8q`EbcOWRFT|m_3gytejPT=<Sa%;25SJ^UjDoQ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..df711b4b0dd5ad51014e3ceaa64b9ccb92b7656c GIT binary patch literal 211 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^&ohpGnR)EXtYcqhAOAAv_?NjSzRWxE zWzYGidoMiQ2SgX2?!Wl-z$GAhcJT7EgIAs(y7KHW5M6zC<m$8k|NjGx!bFNcSr{1@ zBp7rUfB<Bt3r7HhxCcXlL*v0_4q>gB6B`yDZWmBiD@kZ{VCs}G&bl*WA|nfzFpG%8 wfsIQ}PSyxs6(d>b*vu}d60*ZUp}~WhU2oH!lbe^HpYPDjCF>=U;lN-G0Gg(5PXGV_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae567b7d0622b7fd04a24679de8ed1b6f80654cf GIT binary patch literal 188 zcmZ?wbhEHbWM&Xz_`<+YHS0*-ykqtAk2cIb+BpAM>+;L3D=zn~I@iDY{H!A%W*z-7 z`^bm6C%()(@nyr|+Z&JE*>vR2=A(DFpL(?Y^rJoJpZ@><p8;$L&>XBt@h1x-1A{1o z4p12b$W9jyO9n;`9)-q3O-zDP8ZrwS7+c##WmskuFgUStFv$fa90*ikVCPWbsR(Fn VVqxUx(Mg!lz|hDc%EZKA4FIhtQknn& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cca18e92e3c279158c1b03862de45df5a9e1ae9d GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^&ohpGnR)EXtYcqhAOAAv_?NjSzU;m5 zbRQ61e7gVQ(*u`)=-I)`&kkOBe(1`x!$5TP*^#Ty{{R0EGz1q?{K>+|z#zt;!vF*z zJ6$+@8ALq<8Wb82HggDT#hlo%@Nm0;vRaA2!iFQ=62@6)PB1XBGO+OF$arpAa&odp nuvg552aGM8qHHVz0S6j9rdkxgx^r^#^7Hc@n*Z@|FjxZsX<~1P literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-medium-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef38051b23ec3af5de86f8a16c107e01e8ed8c5d GIT binary patch literal 505 zcmZ?wbhEHbWMfcZ{=&deHS5UKBVVQ+`7-_Jml;Pt&p7&J=CLocj(wSZ{L7r<U*?|p zviHK%eL!^a>HdpP4_pGGX9q7oJ9y>!p)1c01JTuIN3K5m|NlSG9IQz3CkrD3gE)f@ z0}z1hbm92Vz^Eg!gMp!elS5rX=0HKiK^6gFi4cdtgGai=HPg0mEKqXqmv$~YViA;l zvR}n<p2*5gsi&r^#U5+vELwJUmPO>HE0vSe&rNkm{U`EjbH;_a?$v6tT~l5JE%sY% zHg{D>R_H39^;u_6iE5o>Pmq_G;t<y4$eh7jad+3Y*O#}4-947;Ev|QMSMl3TSGB+E z#qX*6%*E$Z@jl^j>u;sFH`^K?v#}|A^d)R)ddkJdoWYl{q2W0bn_!0<!;HerqbvMZ z|2zGw;MKLx@ZHm7rMG3?UZ4JWS#9+8_qX;}Gt2AksmObDy!W%;xtg7y?_Ov&@9&FI zX@1SaV|C-*0fm<L0!sd6W*!S|SewNzMH_f5uw`s!dc+-Z<3mnVGy5lb4%=TlOa5OC zTt27a@?Up_24<-h2@Tw8CmuBOxkV_n2zzxTv`WOSc-SaoHY2fJB=5z-4#lR7g`M(! p9ZH?*t6n5^>TlzC++%cYhElKjtrJOoHt$|M?s7ObBg%on8UVHd`|<z) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..b482112e28d5cc52754fe7300d16276ef05927fb GIT binary patch literal 124 zcmZ?wbhEHbWM&Xz_{_lY;K7534<9~y^ytNl7cXDFeD&(pn>TOXzJ2@u|9=LsEKmV5 zQ2fcl$iTqCpaYa;0GZ*;p~=9^!P2ncK?5_ZAcx0{3k;4-9Q-;d9S#W$%&a0xIvNic N8e5pGlsGsTtN~{IHh};D literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..47d16c7b838bb6c2336c1fd13fb6454aef11204f GIT binary patch literal 315 zcmV-B0mS}CNk%w1VFmyo1MvU=;o;%`|Nj600O8@`A^8LW00031EC2ui00sac13?J? z009IT7yy7kf(8i|JUB2RLWT<!I&27WV#J3MD{9Qh5u-<n9YKD)D6%BUlNM8M9H}xS z%9SQtvV{54rOcQ#Z`Pb?GpEm<KzRzq8I<VIoko))U8=L`&!bL@GJUEvDpaadrCP0u zb!*nETDyu3OBSqIu4U1l{i?Pt+qYihj$JD^E!??o>(a%0*RI~YeE;^{>o>6B!iWhg z2Ar7j;=zt1L!K<S^5Msp8&ke4IWuO?n>Bmx40?3v&!S7KPR$y%YtpS@zdkLyHtpM{ zbFZGQJ2vj!wtMpi{@b_k;KYv?A8tIk^XAZ*OGh4^`t;@2vt!?`y!-R(-m7yA|E@he Nc=F@Ln{OBp06Q~vm@WVS literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..35926bee463be28f9e7302a1252983e5283bf658 GIT binary patch literal 201 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{Bh6aPkXKa(dWHDboI-H=l?H0|9|Pl|I07` zUwQfe>Z||PU;n@H=Ksw%|8Kqh4+LP1K)nQz;!hSv1_mJp9R?r(+3CXJ#-OaCQLtda z!DbF&t(X%V79MUF5H{lw*tqCuw}hcx1Ve(uv3>>TE*Z~FOI$hlBs3ft92gjx)sj!m T@!Y)Z>}-qTS9dBE6d0@l;z)53 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..450a36c799af93023e6935390ee2f2682d46bd79 GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30XiVJPaF0?Jb)V|`<<W0AyY`!yh*ZsM>?{7KrXzQuR z+fF^+e)`Fdiy!x1{c`cy?@P~rUw;1k=9~Yw-u?#y2CxZ0LvSI*pDc_F3?d9VK$Q$2 zJ6$*|7#KN3J~%ivGx5l1@LV|1*wQW{#L-cZz}U*lqLvZz!a<>dg+qZQz`^klGZPn& PNsd7R12Y#RBZD;nwQX0Z literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..804c747e66d0379475a5d0f1327489505a551437 GIT binary patch literal 150 zcmV;H0BQe6Nk%w1VF3Uj1M>g?yVCHx((${~@x0UWywvi%)bqX6^U&x2(dYlt=>OB{ z|J3RK)$0G(>;Ks7|NsC0A^8LW000jFEC2ui0096X149Ty0384@K(L^}g9sBUT*$DY z!-okK41h?nqQ#3B86XHy0Heo`AVZ2ANwQ*t1qluS5I~@$%a<@?%A85Frp=o;3kC!L EJ4CBU4FCWD literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-focus-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7a36f62665a4b842317583733184ce6d97c21fe GIT binary patch literal 467 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$32%n?YRO(pZ8w*eBt^3i_iaGdh!4A z%l}ti{=fR_|Ml1ZZ@l>r1VAmsBgLOAj0_9{3_1)z0J77C<39tVjl>TIh6V->W(k`E z9}XO9<Ck<R;aH&P+AVAx*0Lio>3Fw{VcivtO(`cP%lR&I;VfEudYXafrYS!srJb2* z5qj@R=H~QsGwrk4?s86f9x&f+vRJHENM`Udm-$}3UZR>I&D@*x3_KQSGp-Ik7-s8r z?PbK~q|4Lx?lQ}{y*cONzEJJ$d3Sc_y?u6+yL|oqeGOO5B<>tYXgbWv!xf=(U_s+? zwilnK{+V9%VCRglao2Ko7C$>VU%UMt&#ccG=a&UfkJF7R&AzrI{&b(Ov?<WU!s~Wt zZ-33ZzpMFiiNl>nN467^5+Mg-8XZ|K2uk>@5IE5AnwdxJMx2AihkM%(J`WK4Z~f={ z=VzDu-S@}U{`~gg{^{@U=GE2w{(SQB{q_6pfB*UaQG7xDSHX(;jSONI51P2lDioUe ht!5;&i1=kJY!FI{SlA}6bmC#VTpPziXGTT_YXDWu^*jIo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..35926bee463be28f9e7302a1252983e5283bf658 GIT binary patch literal 201 zcmZ?wbhEHbWMoia{=&ep`_hNqmp<;k{Bh6aPkXKa(dWHDboI-H=l?H0|9|Pl|I07` zUwQfe>Z||PU;n@H=Ksw%|8Kqh4+LP1K)nQz;!hSv1_mJp9R?r(+3CXJ#-OaCQLtda z!DbF&t(X%V79MUF5H{lw*tqCuw}hcx1Ve(uv3>>TE*Z~FOI$hlBs3ft92gjx)sj!m T@!Y)Z>}-qTS9dBE6d0@l;z)53 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..450a36c799af93023e6935390ee2f2682d46bd79 GIT binary patch literal 187 zcmZ?wbhEHbWM&Xz_`<-@xa30XiVJPaF0?Jb)V|`<<W0AyY`!yh*ZsM>?{7KrXzQuR z+fF^+e)`Fdiy!x1{c`cy?@P~rUw;1k=9~Yw-u?#y2CxZ0LvSI*pDc_F3?d9VK$Q$2 zJ6$*|7#KN3J~%ivGx5l1@LV|1*wQW{#L-cZz}U*lqLvZz!a<>dg+qZQz`^klGZPn& PNsd7R12Y#RBZD;nwQX0Z literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..804c747e66d0379475a5d0f1327489505a551437 GIT binary patch literal 150 zcmV;H0BQe6Nk%w1VF3Uj1M>g?yVCHx((${~@x0UWywvi%)bqX6^U&x2(dYlt=>OB{ z|J3RK)$0G(>;Ks7|NsC0A^8LW000jFEC2ui0096X149Ty0384@K(L^}g9sBUT*$DY z!-okK41h?nqQ#3B86XHy0Heo`AVZ2ANwQ*t1qluS5I~@$%a<@?%A85Frp=o;3kC!L EJ4CBU4FCWD literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7a36f62665a4b842317583733184ce6d97c21fe GIT binary patch literal 467 zcmZ?wbhEHbWMfcZ{=&e}xa7j_OCNS$`ndb@$32%n?YRO(pZ8w*eBt^3i_iaGdh!4A z%l}ti{=fR_|Ml1ZZ@l>r1VAmsBgLOAj0_9{3_1)z0J77C<39tVjl>TIh6V->W(k`E z9}XO9<Ck<R;aH&P+AVAx*0Lio>3Fw{VcivtO(`cP%lR&I;VfEudYXafrYS!srJb2* z5qj@R=H~QsGwrk4?s86f9x&f+vRJHENM`Udm-$}3UZR>I&D@*x3_KQSGp-Ik7-s8r z?PbK~q|4Lx?lQ}{y*cONzEJJ$d3Sc_y?u6+yL|oqeGOO5B<>tYXgbWv!xf=(U_s+? zwilnK{+V9%VCRglao2Ko7C$>VU%UMt&#ccG=a&UfkJF7R&AzrI{&b(Ov?<WU!s~Wt zZ-33ZzpMFiiNl>nN467^5+Mg-8XZ|K2uk>@5IE5AnwdxJMx2AihkM%(J`WK4Z~f={ z=VzDu-S@}U{`~gg{^{@U=GE2w{(SQB{q_6pfB*UaQG7xDSHX(;jSONI51P2lDioUe ht!5;&i1=kJY!FI{SlA}6bmC#VTpPziXGTT_YXDWu^*jIo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-bg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..47bdc8e52f99b822bc28bbef22d1cea767ce6db5 GIT binary patch literal 202 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^FEfvQnRV>T?BieN9RD)+#Fu#|zU(>w zbnk_y`z}1)fAQ&oOHU78es<{cv%^=O9lrYP$kk{6|NjSS$Bz_$vM@3*h%o3d00GEO z7Y=s@Q4fO&3l<z~<`CA3Ik92k;dTLGD*=Ixi;i|n7#cM&G%z&vC^&b?cy3y9vWr{F fro%w-Km!xI->EsCo0pxPZBhK{&PiiO2L@{Z>hW#K literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-corners.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..3607a2c239eae802f97c19390a67d49df207ea0f GIT binary patch literal 188 zcmZ?wbhEHbWM&Xz_`<+YHS0*-ykqtAk2cIb+BpAM>+;L3D=zn~I@iDY{H!A%W*z-7 z`^bm6C%()(@nyr|+Z&JE*>vR2=A(DFpL(?Y^rIc8AMH8+bnk_y|NsAI02>7~4Gk&& zWMO1r5NFT<DqsNF>B3>jz{tVlaPUwQlc1D_%z}o-)^>3jmKg;Mhgdn7v@%i-1S&AF cbExoC6dYt?W#s44Ntn>U(8wXq#Kd3?0B>GZE&u=k literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-fbg.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..840e97c16e0656825f98784ed8221f33006dc086 GIT binary patch literal 198 zcmZ?wbhEHbWMoia{=&d8^~jfLN4`uy`enw^FEfvQnRV>T?BieN9RITK!qfd1pB}jM z^x)-Zhb})meC65UtIv*HefIzVf1noPk>XDlMg|4}1|0?<0NLrn;mjb&VBxS~!NFz@ zVXc@G8x|gJ=adv^@YuNMXt%hig+Kzs;^X}a&RsH|o06JXdF5Cn0v0SeJ>4Mr)Ev*v O%g)ZW;AUfCum%A3ifQct literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-sides.gif b/resources/ext-theme-classic/images/btn/btn-default-toolbar-small-pressed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4f22bf7328a62261c08cdea723dcdcdb1999473 GIT binary patch literal 468 zcmZ?wbhEHbWMfcZ{=&deHS5UKBVVQ+`7-_Jml;RD%slpG*0C?MkAInS{L8)zPxoJZ zdf?L2gO{Hjy8P_$m1l>qK09*t+5i9lfx3u9ia%Kx85jf^bQpjDWTy+qe+EVsi5UzG z4GbL25-tY>4jyXbmvk%PSfJ?IEo>atvLi6*c(;sU-4%^ZDJLe&`7U$eELwVcnt|u0 zDL*HrotbD6dhbf+=Jazj?X%hLa!z?3FyC#mSgck^X7DnX`Ch$VqM9MiyqnAnA{Jyb zt`0sJX6tqBWyI#B%hUGmGRwKWIp^ZOQ0?t`cXsE!eRh<)eEt1>4OjIf_8fT7e3+ky zFT&=)gT~|RFFsBEGrj1+&KY0huI213es*%ccKbb^S)Vh`FAJU?ryEt8eQinn={{d+ zQ=o~3*X_>U{+f4xSM%c#hnPl3wiA*PB?s;_I&xf4ln`-<ZE$3|!6{*K;BG^~gT49f zf#+@iZLj$7;{0m$`Sbo(eSY`&@cjROYioage>wg9`TG6;zx`soF~8ye&2WV}cD4+K pMjpKv3QfFDKNd6zg?T(|W%iq~uvI!~Mnbznokmg%A1e!kH2`g4@2~&> literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/arrow.gif b/resources/ext-theme-classic/images/button/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ab4f71ac115188898fa2701b6b11561d0461e4d GIT binary patch literal 828 zcmZ?wbhEHb<YM4rXlDR{|NsAk=}}@d1V&s4DE?$&WME)q&;j`zlqVQCBpH}FWIQ%3 ZIM~d=%M`IAAn|ZBgOJyp2m=KMYXEYD4!!^Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/btn.gif b/resources/ext-theme-classic/images/button/btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..06b404dd7a101dcaf185a48d8e7272ed975a307a GIT binary patch literal 4298 zcmbtW_dDB*!$q~F!|YX~x7CGet5#c4?L}2pt)jg~^{Ou2uB%t1t{SlkVkNO<h=|xE zu|sV_tRzP5O|3){<nz7v{TJTzoag*<p6C2@&hwo656lff&*emzGCLyw0RRB+#5$kk zhQE^Pzoaz!B-Q_&(g;R0`KHnWbLoD_W<O*T1l1gxHxPpD3&!;RlhNv*-V#9=4$mJ7 z!w>$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!qnn<qvfvTQKubE9LXCo^|u+7U= z16;}=x4eC-vU8^Whv54N_xlK^nZ4b_+M+QxduD*Hsr}B$y^bG(wsBtT*iOqRx0$s? zp9OlRh28&J6T7XW+}>HBeT<vZ%t3tTpjtTiZVsV`L!@&_z1)&MZW)7H(a*&;jMWTt z>zLdI7MI56R&~u#dS=PpGkx<w4Slw*Z?3j?HnxEi*T_kragv%i8Eu@bc1}(Q2i?iR zc5$fmS;hh|un5#M<_4F5hW@$1=?%srFtiK|uK=u7U}Oy#`w0xK0L)c@wFa=)fYG18 z{5CMQ4$N!;v)jM|2Uy|)^XohF9AJ?PEbjnIJHQGLSQ7xN0$^<y__+(L?*SY8z~;Xc z0$W002LSf>_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=*3<ixx=jP^SXJ=<+Wo2e&W@KdiTiX9C@BdfM^2J3(L>5G@{1^1! zCPX9vk-lH=hOH<X`dE7Q+Ih#f$0%8eYaW#`W|cru`d43iW31E8TdCDS9w&t1ER*$5 zzonJ7%f2e|?1NxeBy#UX%l!JMC{A7RWUD*Fs6{rxM(x!12+>R0&blEB2vrj~ouz>Y z@v?Vggyh`eBKLaOsfU$UoI^eP3D#+Z!jUSkF&EUsDv}#jdTVK{U>N<QJ`kupWkoLT zYKo9Qf1{I3>~D=ff4AiUrF6E#S8v3cMk$-8XZ#a&+S(<5u^(@1>())Z{{Dlgd*hM7 z!o!+Lc!<B^o{4LqQ;C@8v{y$0+ToOLo3oaBQ{|7wsxR8t-@@~yWEVX1<a1QEMaH!4 zfGU^?Eq&{+3;st{A3h2EEM<B9onwc|0TbTA>mse=x5>X^EzUi-bW7X4HRx|`Rhw_3 z5s3#biNWD_#lVgc_r+$kEns38GdamiM^1RPM);nvvk@ulk~0Pw#M30sV<y~<&+039 zG=MY+V4LG;W3hIP>k?jV@!=AI(>kr<#nT!NR-zaYKQm;w$eg%)jE*ScMU#fTg-+CQ z@rARv)8a3|uS8}>RXY@1BfOhLzBW@@MW)5=taL<U&<8XgnTbY89bP}Hapv$9i(@*+ zO=XUpu!D-3h`lf~G#8r`*Y465g>D&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<w~(E1SM}fBz-JD_c}`T`bq+24QbAT9Xyn+kWy7A2HKILE@(@ z4l#*S(bo#x^@7!(I8C-os36XkD5*Rxv%FSI^zN3<bbJ)5{u|h<rR@#az5Bb8>-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<><ZsadkOJou<qp>Y#UE#z3K<WY?)&-rp1M$;WvtH_&HvPl=<5*P2` zCt4Oi;U~K0GH$&PzX+8vjg-Aq^L$t3lKynm)k-qM>R76xN83dmqDbq87qKDca>c;Z z5k2jvxe@158+uJoF<bj+x;owEF~?GjHX|<T)~q-4ZEG58t&0552zj&UETLdL<k}tn z9J(lAXLUsSn{a;Q%<iafJ#R5CVE^kG;f#8N;8Jg(sF|uL&}u9x_#AY2=7+eBqRH`R zGQnG069+^UX`%t~(BoF_qK`ZqWuMqVFZ<_6x*-~sT8hJ@YMvkdXkl`SP#k`%>#Pj$ zP{T}0ZX?{>YVwc?zFEGbIKt{fj#M1kOo8SVVU2k%lc4zhvf864C-Lc%waj~`VSO>L zpt-;Fk<G8)Nr?UkomMF@xUVjVhxwLID{PSO-?s0Ib58eAZL(-F*xZP7F~g{SN0@`= zbP__0&?;vrZKgxA@EH9Is(OCymZc?$(7g*6?}FOzcrf7TB+Pm1#ddp5cv68sR#RH3 z-JAhW%rBo+d(>{}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*;%4W<N_Vc+6RPk`Hkxu}Q|iy1nGor#y&LOD=S| z{r*X}V2DC^OmeGz@3y5mSR3}Z$Z58~^}z0Mo!pJWu!EO94i_*h1Cog_w*oi$qb#!E zOG#YlWjARR=Ng5SlH{=uFRpevGhk23a}KV&eVpdf@h+vJ=*#L$6BSoB&~u}#Dw*j1 zXSM5CKuT3T=j!Xw5mu){RXM)!s#o~3^PKW<d11xJ&uL#r2Rr_z(yc#z%0KEhD_2!L z(yjHODSC9nqpD{3xR!6l*JsO?zt>J#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)<tNcT`G0JmJm=|sQZn^aL@wOD9*!(E9pYI^*3 zv#`zhyel)Bhxr}GJ)3b=E7Mv#yiOyjEm$jYTDJ+&_2$N3u>P*O>(xp?tJj^<M6}f# z%@@c{ck`{Z*(<Luzh`xNJozg<_34}6ra`?QPj9EM?#&w=MbSg+^s+g`g*y+~eUV}M zXld)W)+!K2oZ2?dB;)O)Z_52&Z*Z`(8B6!FP=m=ZAN2Fp#mBxbgJpFU1s{K1a+{|P zrwG5~|I_`}y_3pplDbjqTKK_UZ<pBv<KQ1%UHyHT${HY56ldN3=rRpq4bFWj&B<8( zeBX6s!hDC)?e@u|Xk=`)rLt=B_GiC8(ndKgJGIrdpWmyf)R#(<8xCuEO(^b7NZ68T zCwtbzs^%wU;>gYFHXBi{dsFhZ2`x8!Heg@(rpt`sZTD?96aHA7(Ew~I9l!T@zZhMd z)s6#oN#EN-jnvGgc2IhJd$uxn{S_;YP<z9*d|oK+FIfC0s7UGA#@*Uqv^yMDi?iVn z9QNIv=+vPySPALt{<6DtHS=pwS!vq-%4=H`d$@;N@qTsHE3SHU-p1E$VRa2mzcqfc zb*FB(_GkLhnu)`<JerD7q2^)D)X5^=97wnk|E<PD&6eNcD%?cSYvyj!`8{8STiMdJ z3-@gWj5Ogk-nMq>ce-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?5L<A|5gHADnPV<6P6@$+i1Yd9pRs#oXAc8f?!B?2UTD)Lw#SmSC5PheR8{iNF zM2I0d#E2PkhZkb32sJf;nmIwu!B7hX)RGLfathYifZ8dB+IgOGbP9dq6grp?>Ou~E z$_#yGAh{(Q=3x-#p`rR39Oj7#dq)m~Pn`Y43-jWIUDFNsaSHcYI1fgILlEKCjPL+n zcmVTaut5aWAmW2}L<Axtf~g+EjDP{mh#0v@xIrYGc_{@Pi2z4pN+QuEmos^h*}TXu z-6)Jx6oz>fkBA~5qLvv^BwiG$?OLfpbh$zF@xP+Uh-mVHP7O1<jv0MbK89uxLtD^m z0mrm~V{FS}x|lIt5;uAkV;PFEpB-X{z_CLT25fTdC^<G^D|SK=HlblS;{=;?f|Vq~ zmdLOr4Wl(4Y@G+|*NfYBirdz>!$ZUg$Z>njI3X`iL@8bj6ff=^f5<Oh0vUgV5`T;p zFU60SQA&^lC7f_hQ1DAoL?$Rx5>BxaPV*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#eZl<Aq%26adQf zw$GgN%M5{ME>SY!jLbEDCR#3Q6O>hKpT+gdYJ_JAC|L|fmXMz{Etf53n7v`2eF%~* zmY98nnl0a-EhWglAfF>=n4{;AqX5Y<OUzNG<~;7tIW5R}EuVYNF!zf?t{NmaEHPJ; znw#36t0l<A%cFG-(NzxU8xV9`BHECOX7!`*2++pL7*j)xnG41og0VnhEU6ePHpWJP zu~Wv{8)6+@uumXZCluC&ihat)J`-Twm2n=1xR)-t*ASd13ipnR`@qJ165za)^Sll7 zd|dMWhU9@!c@S!zKRYi#kQb<o4>rU@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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/group-cs.gif b/resources/ext-theme-classic/images/button/group-cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1dca8f05ca550917346830a5a0ae4e16665181 GIT binary patch literal 2459 zcmeH`i9ZvH1HdQ!yk5P2p?H)dxpp{mJU@!;<t2MW&L?4AmUD};pIjrki_8^5x!UaB zY@<zcL^C23UC!kiHk;&bzt8(OexLXK55C{e=X)OJY-@LQUeQD$699n9p(*kdHh;AL z(_F`gmA7B!=fvytl68@Eb4j)({<bAq+me3YUR~eb*xmvB!#@T7zY6GW?o|W;6aXfF zYyJHMV4obIctja`5t@>=?=U!!Pkq*zsjUC!6Bk-dSFVOt_!mB{_I3VoryMO9y{@Ma z=-n9DL$B{GJqcGoa`AW@KtU<yXjTv7`9L)^ZNK)PO}N2YmqKum;7EhJ;vVFz0hEb< zPw;1ij|rHBQOcFh95q-m)cu~4KvkocMf%LXB@|S;vdLqa;m@Xh64;apUW(!Y9k*uc zdv56F(cr#jn(*}_eb?EXIMm0U$5s*JeJzZe{Nmx@A8s$27KU-&1cYXQR5VJx-dlCy z*quwQHH4AzHypNPqAj1Lqs?uW3i*W)xNYFNZ0>EXYxS9y%>dB{M#Mz_E@4eP*_kWX z^$4C>m(33o-~&JGx7SyMz30WrFL$>$RxxA>k0+M{zIVY>_Ns?Yre=<nXhiR`nV(Ek zW?5gkf5b0zDqZD5)>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}<QmzeIgyq!vKq8!i5d6xb}91ooYQEH?$8b6sYBundV}eL+LsvBonX zWY@{O2yu%+ajy8qQg|Jbv(kNFkRuz3Kmopu6U;fA;zddG?hnXGw!)#vm8O5`5~=i` z&6ifF2OUkK$toU^76dgoQHs+<EzugZF(xr}dijy`8pCR0%u^6$$+F6nXL9?A#XzK0 z`EL`%)lxgjl2wU=+~iKt?}wtSvFCJ2cOJpamz(k~IGV0K@brjc=J>)%Ygw02%fDp? zVNB8KSM#G-X(81lbZQu7nT3hsnXV^A4@CVZF?NFV-}t){`7%2$Np8A<PCbO&xRb6+ z-iXOI7dJ;gbTn&06?h=+qKe_<&4@CTcr&aLWA@_avwUPcqQ07Z>IR-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!SNBq<NgJ*u;6 z%XE-Q!;*J|Lwi8{S{3>ur_%-}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*BvVzNy<VVASv!@09T!ghD6CeJ_^r<bb{LDQ#STtTVMz zTzA}Fc(?uTkaya5?#-W8@p2Dk8KYW%#~6A6_%^kH`cx@I@9g2Nj&w_(jDIJE9@GbW zYI!x)oaO?ZlW>C%m1wm(h9_K{;$IbDeX@-l!VY^kdI9N8_1=jfHxh8T3_)wKnK|Kp zd#kHb=JVjpZkT2o*vDFxiHooYdyV1V)pyhI?)CaUwehd<UcUK$t>L<iMqg+QlaRIp z_CE+3p&8MMh!BH-;VnLs?u$hxMHmXff4L1Y$rW5kumgUyHG@t`HZ;7Vm>_6Z^()SB zh=d#_`1@P3XpBUY8&RN-J+pLr$&4YwYP<JMjNjv`-AD^3NWcv&tEt!CG`tf3>Af?9 zNv=0?zgF??W86>)p4GbSeVcF@FJrNNcTI26z+a}2%;xSja7^K`kr~TUVt<nOQY|Ei z>BW8#)oO;GY8+ecXL81wkhso@Q7N{RGV36L4-<mh>Fn0@B=bZS$i$`@>*e=Y6L&Ng dUQu}td}@Irs8Us{==-D1xS|KJM_Czg`hV^ynJEAO literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/group-lr.gif b/resources/ext-theme-classic/images/button/group-lr.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c549f96d6064d4b0cc022671fd823c13df36d8c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/group-tb.gif b/resources/ext-theme-classic/images/button/group-tb.gif new file mode 100644 index 0000000000000000000000000000000000000000..adeb0a4cf54bdfb626ab6f3c070f6e2919f374c0 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-b-noline.gif b/resources/ext-theme-classic/images/button/s-arrow-b-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4220ee9066357ea2270a842ed244bbaadb23de4 GIT binary patch literal 898 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo<VS{$ychU|?d<0r?q}Cm1;5 z8CW@FJT@#i*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv$NLqWyJS2!Ejc+^BY0KJ z$xTa7Pd7+DHOF)FGT%0aqGx+fZdP}nYuC)RmLp-s#l;?zwPH_gS$TPRz~V9<4hCxg D_B%R6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-b.gif b/resources/ext-theme-classic/images/button/s-arrow-b.gif new file mode 100644 index 0000000000000000000000000000000000000000..84b64703006ca6d86d335b89f8d40b9fa3883c48 GIT binary patch literal 937 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo<VS{$ychU|?d<0r?q}Cm1-| z7+5)EJT@#i*vuiU6?0<4!o%$X%3gC;7&IL1mN3q`b7JG-<NXTGT{51VmYkd{$G#%w z<ff&kryC@nn&Y{7+1c3^#joyYPF{3=zC$yYtk;$m7Z-a>)`~r~W##4N0gJundTm{G tbu}Af#?`K^tFNzT+TJAVU8dErDdY00*wfqA-ripD_|#nQ={XJz)&S^DQ3wD4 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-bo.gif b/resources/ext-theme-classic/images/button/s-arrow-bo.gif new file mode 100644 index 0000000000000000000000000000000000000000..548700bf45a4766e4633a2ad21cdd03a907e191c GIT binary patch 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${ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-light-rtl.gif b/resources/ext-theme-classic/images/button/s-arrow-light-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfa5ca3b1dceb8f085aac678642772d2d78fdb7e GIT binary patch literal 96 zcmZ?wbhEHb<YVw)IK;vL1Se0PJap^Z*RNmyBLT&qER0+XObj|86(F??%&Ho@?))=2 n<+*yV#p|=X|0ihlrDRTWp5>)wI;TMAd`a&8igoY3nHa1AV}UEm literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-light.gif b/resources/ext-theme-classic/images/button/s-arrow-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..08783c9d2f269eeb9799f2591ef41ddd2b14695b GIT binary patch literal 116 zcmZ?wbhEHb<YVw)IK%(~Cr_R{bnDyKuV2ADD53aI(77lzu_QG`p**uBL&4qCH-JI$ zCkrD30~3P|ND;^Y24)qFU3dN&obp_~*W&fr-TxCb`cg9IInVOaGM!VPbG{_^e#N@? HoD9|g{um~p literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-noline-rtl.gif b/resources/ext-theme-classic/images/button/s-arrow-noline-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..c242ef2f0e1e303eb7a47589871d4ffe02ba4a00 GIT binary patch literal 76 zcmZ?wbhEHb<YVw)XkcUjg8%>jEB<6*<YHiC&;jv5G7L=0J^d?BzvW*%XUnbb&G+{F c=5JHtn6fn4>A;C?@3@bD^11%4R)oPC0AF1j>i_@% literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-noline.gif b/resources/ext-theme-classic/images/button/s-arrow-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..0953eab5c875fcb0f3b40babd89052b064bf9fec GIT binary patch literal 863 zcmZ?wbhEHb<YVw)XlDR{lP6Cey7ler*RNpSC@~rWBPawEf3h$$FfcLbfcy-~6AT<S z46Gb79vc=MY~~QwiaD`i;o)`xWv@9N8y6kzmN3q`b7JG-<NXXyZ6O+y6dU?Af>*_y R+_d!cbc5tmb0h^AtO41(Cb0kj literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-o-rtl.gif b/resources/ext-theme-classic/images/button/s-arrow-o-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..612dc902b7c37fde9d8ec822f2e364170da4294a GIT binary patch literal 151 zcmZ?wbhEHb<YVw)IK;vL1glPbJap^Zt#|*Cf#OdVMlJ>>1|5(JkXi=j7>!*z!n#%( zH&;)4wDaoQ`(jDSp<d}z%(AZ)E^s@g)_Y6q+^f7l+qf6Bi>vU}yUozh3^_M}ry(RN s$EW(D?3LrOd3*1s@AxL#eEyk9WsUawi}|Iq=N6xTSYCN|Is=0>0AmS8Z2$lO literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-o.gif b/resources/ext-theme-classic/images/button/s-arrow-o.gif new file mode 100644 index 0000000000000000000000000000000000000000..89c70f36fa653684087485ab673043ecbf615cdd GIT binary patch literal 937 zcmZ?wbhEHb<YVw)XlDR{RVO|ky7leWyZ>O`C@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5<mQxmXA#x%H{rE@Rml zl;S-}-#2bc#l|N`W|*hnI<i7o{roJu%q*T=!5XLLd2lmD><U@txXeJ1sbFSF#?{3R r>sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-NOpiu@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow-rtl.gif b/resources/ext-theme-classic/images/button/s-arrow-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f556c5206a41c69592c5abbf0fbaefb2c235aec GIT binary patch literal 151 zcmZ?wbhEHb<YVw)IK;vL1Se0PJap^Z*RNmyBLT&qER0+XObj|86(F??%rP3fbcA)S zG;Xe*_GstTxA(=8l0&`Hr<i45D_r1qO0D;n*11=Cf3|TiXct%Et9P5Bp&4>+0#8Fo tRE|&eMcFIIWApajP2cfNwE6rqlgb+H^%wI?XU{D@|FFFB?sNtQYXECSMtuMP literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/button/s-arrow.gif b/resources/ext-theme-classic/images/button/s-arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8940774785c25d4467b239aa608a9eee40e273d1 GIT binary patch literal 937 zcmZ?wbhEHb<YVw)XlDR{lP6Cey7ler*RNpSC@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5<mQxmXA#x%H{rE@Rml zl;S-}-#2bc#l|N`W|*hnI<i7o{roJu%q*T=!5XLLd2lmD><U@txXeJ1sbFSF#?{3R r>sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-Nh3iI; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/datepicker/datepicker-footer-bg.gif b/resources/ext-theme-classic/images/datepicker/datepicker-footer-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f199a61a791d68c729158c835af7d8ff00b046b2 GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&d;{Knf8H{PDS`S#S!w-@h!xCBHGK3snA@yf%GS08=6_UO~~ z$DeLI{&e%n=UY!d-+uPx&hsyKpMUxP|36S8F-Y+z3nK%A5Q7c_5P<A-;qYZp)?iRb zXgJu+A*>a1V#C72?E=bbB?$@*N4h19v(EfzU}R!q(8-hW+_dE6WQ}0AmIn(CHnFgC dF>pvaI5<wVD1LS4<mTn)=Q}k2;^APh1^}dxc8UN1 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/datepicker/datepicker-header-bg.gif b/resources/ext-theme-classic/images/datepicker/datepicker-header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..87d0582b10dfa42f30db1dd7e0b546b37a60a8c9 GIT binary patch literal 208 zcmZ?wbhEHbWMoia{=&c@Z<Q-=ou^=(uV7Q4U{k1QTcl`LtY}xFXkV&iU#8?xuH;am z<XENbSgq_-qwG|x>|CefT(9ENpyJx7>e{60)~xE*qUzqN=H8~}(eeNPe~^JlNbx5N zBLjmJgAM}_fb4YP@MSP|@ep8WIM~b~tQB)&!@|Su0?KM@E-Yv`(k)?}b*3WmP%|q# wTaJw9rX?pQYXo~8NoZ_h;oy_da7buqV3=xA{OZoh&CAcvcW7qf<zTP|06q9X;s5{u literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/dd/drop-add.gif b/resources/ext-theme-classic/images/dd/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/dd/drop-no.gif b/resources/ext-theme-classic/images/dd/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d083355ff1b4e99b9ef8139f28ede1485b50cf GIT binary patch literal 949 zcmZ?wbhEHb6krfwXlGzJz`$^jh2@BVz)=yA<1#WQRaDNJn4Gt<xe^d?H6-L_O3JN_ zj5`GdcS}m1OqlR|&YYJ^mb~7u;q8tc@Am9@f8fA}BS$`-IPvMsnXfl)e1GuZ$CD>N zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0ZXGcd?A=z!b^$`cG6lNjtdWNtJvwem3w z^YtV!G#qAN*V6d2fsv7ciC4iUL4l!xsfAfr@4<wCW@k2TMw1yY1RNT;nRrDQEH^A| zW8}0eVR+z>=-tS}R<nR1!RgR^CV7Sv3JWuQ+c~EuJvb1oaH-KT`P?3@4{7K41*4c| p%y^LM(XPUt<-x%4^gx%mao(FBg-VB~38?z1XdG;6?*v+G4FKH^bqD|e literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/dd/drop-yes.gif b/resources/ext-theme-classic/images/dd/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aacb307e89d690f46853e01f5c4726bd5d94e31 GIT binary patch literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiY<wYKlJw(qsJ zpJ`*gP~B&`t<yqdmxacj8`J~0>xFJMjooS=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<K5+3ZZ6$&YuTpTE4JQVvE}ZnE%(=Ky}xGL zg{|8zZry%!>#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<M3iU>%{1g;@!G-s^!P$| z8==@$A<sHwn3<HXM1D%Sr0N;HdqRStdV>R3<{5^GPA?~^>Pma%d|c$9FpH<AXHEf= zXAc{n;-`omMgmU4wi-S?A1*Mq%oSth;IcZ9;y*)FYu^J;Muvcc4jg(7m5<rFnVITk U%ua1eXlP&wOL?s(A;4e_0Qp#8fdBvi literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/editor/tb-sprite.gif b/resources/ext-theme-classic/images/editor/tb-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb70577617cb872bb13241af464385904942d91b GIT binary patch literal 2072 zcmV+z2<P`lNk%w1Vc-A|0EYko0000G2oMkx5E~;MAQ&JZAP_J#5FsQZFElzZC?GH@ zG%+$WJUT}pIA9<&a5+IcDM4r=KyffgU_dx9T}B#EP%uM7L`h9kO;$`vQ&~_*Ku}0f zQBqSvS8`KaWKDHTQDRV6a93VtYg}!0U|3*bepGO1P-SLiZg*&Qer|MhbRal@AV7d1 zNRTi{fHY8pF;kH+SfD^ykU&_VKwyAHVV6>Am`7%#KxME@aH3dttWa>UZFhuVaFB3! zhG2N0V0f@VXuwc#z)*P5V0gegf;T_WcR+?bMT0_5oJdiWOi;X8SE+kokyvAkVPuJR zYnf<gqgr6FR&1<gYrkN5rDk`oa(ujUO4Vmw(`-QhKx*4|bjE0Y%X4?uc3+5}On|LN zg0NqyuXllldWM!}fUjqRw{D8Rb%msMjJapLyi=LRP=w%Jr^sHg(`1FhaEQQum&kmV z(`lu_YqrU6!-8zlkaOOGan_n`#I#`8rhmn~deN_S$;+2*HIQ*PyLT~%YEu6I0FZ!S zguQ;Iig2KqaI}|dpr}x=uuz7@b&<z<$dM_>mRr%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!?)<v$f}9YxQWKK zk<zY+*|dk)z=+t!lhD|Jz{sG&+ojORpv~v6&F8b$?6=(TzU|G8?8lno)tmOuru5pl z@Zf;@=%WAdu*Js3&C=4@+RNA2*uc*2!O-Wx(D2IX(9`YC*Y4EX^26oy#`NIA{p{TE z_`vAs=<)IKA^8LY003G5EC2ui0N?-+000R80JR7lNU)&6g9sBUT*$DY!-o(fI(&BK z;HHZg3t-$NG2yK)TteRJNU~%>I3`o7T*(m54vQN#Vic$<R2q`MxFjQIZJMxPRBEvt zn(z$_A`IWW0kR{;z#$G>!HGq*s=^&RZWu&Vpa7yxUA=Ntg@)BC8d~D0UCUOj)`7Ns z>BD!A8ntN9pv}5sbtSA51C7FH!Ghrq7=;D05i$^f<HwH$!eO&QAY{mmFKc#ed9&uu zo-rGYb7lq%Rs}I-1iOhVrd9vwb?6}>?Z4Z&bI*IL1(z>#`S96`7OfexWx^H_A}FA_ z^8ub1E?A&o`a$Ocv|vxT;lV4Ci3j5UXw^{G3RQj657e3iMva1r!m<YY?e@G-wQbMa zUGGM{{{HdCg*nO~W6d?rI70^=x!^KR5(L3=zy{fsa=-%7Eo8w13Bj@f2e4=X3kMs7 zh|mKYt`vj}FjN&900_MpV`v7kqJtK)zyJez1IeV3Mu=3<&p-35lAnJ5{g<SY0^I@( zImc9E4>QcTp#~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?v<W7Z3<J+Rr5q{Hq5Lr#&pGJuvrZ!e(y|3F(6ph3E_xV&#S&ADbA*=* z2rz&E9!R55DJPV&5C#|w1TaFPc%Vfo)A_3q4**=CP%ATl_L&xwRaWd~b#`P%4zaMp zN-Qo!pr=3^VPc3o;B<iBXhiPD-#h8F1FkyU4A_MoytLuQ8g%fHhZsymF-{Q#1wcRm z2L~X4sR<E407FU-BmmL}k#Hsg3mB{r0t}mIkSjQ##!xFO+{BQK2cd0{+ISXJh652C zbh10_m;z=&+%8%VJTYtkVhJSNXmQ0jw&=3Q7o3nX1{h(CK?*0MAW`%IR0lA?m;@8R zv_b(;twrYtNwdHOq(7j*0Qw@diU+X(zym@;%<w|Sv>T+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<l1N?#Y#RAi<qopS{8MPeK>*<kHE%$c%y|WlmG=Dw15Rx zrAiQ-uuhT`2rOn9p;<mKB64UELs;Q}P|UF-mb7FhGntm;{Xrd(07M{?M@lU~0Rx>l z#VJ0a0u_8hnx6p7FKZXOUv1MW!K~ykF<B4__@NQnSO_XGaDsMzzzHfqK|8e&5CA)q C=E|M` literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/checkbox.gif b/resources/ext-theme-classic/images/form/checkbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..835b346cc9e0e8e9089a03e4b0058653e99f765e GIT binary patch literal 2061 zcmV+o2=ezwNk%w1VKe|I0EYko0001h0001h0Dyo1004l10Du61fWW}Oz}&#5%J35t z6DleyE-o%IGBPzaH90vsJv}`HB5^`OLPkbLNJvObOiWTzQdLz|Sy@?KU0q^gVq|1w zX=!O~ZEbRLa&>iedU|?(etsf6f+s<RDny4ZMu;p_l`u()Fjto|SeG_gm_JsMI$M}M zT$wCli$z<LNnVyfWS>i5mrP-pS8AO_YNJeWr&4gHRCB0Sc&uG;qG5BSVs)lucBN-{ zr)YYrYkjM3f2vi6qg#TrcZREXlf8SEzf`8xUbgpty4+{E<!HU>W4iZg!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+~4BB<MzVj_QvJ+!{+?M=={j%_sZz^%<1>Y>io~@_|EM8-r?ij;px)l^493{)9m@t z?)}v4`PA<H+U)k*@A};D`ql9M+426}@cP~I{@(fe;Njxo;^pJy<>ck%;pOh<=jiC@ z>Few4>+J09?d|I9^6l>N<MaFA^Zw!V{^j!d<@NsI`TFGg`{?)n?DhNT`}^$p{_Onx z@bK{R^Y!%f^!E4q^ZWks{r&j(`T6?%{QUg@0095{@SvcifPjGi000300RR6000960 z0RI60|NsC0A^8LV00930EC2ui05kw6000R80I3KZNN}K#g9sBMbiuHp!-lRRN}MQ> 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)_sFLlg3<A zZAqCp1zScP(r4f8+$FZi$C|co*)LN6yGp26uw>H6srOVndaq^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<<d1W)pW`mMBtKFPoB7;gE!@bb;O-_ z4zk7&mF(g|nM-NN5}Hm$#mYA{yZ}gKTg@Xv1b?JsXA+dQaZC&*$RW(1Y-y9tpfW+l zN;P-9&_gziUh)ha5u9+&Wk*#1`bZom*w6`?OLdctHlR8MOEs{xqr(f1%#s%`&v-)5 z2oc!9o}Gt0G6*v@n4kwDxW43RH@%j!3LV`z0z(h-uvViascb<`9TAW~4{c%1(Fhxz z<dMP+;|P*%H{7t(jW)dYN=y(h*y4i>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^<Ru)fdp9a4#xLjw6cH#SV&sD6zEHV1_cjP zv8nUWKmSP|)LVbO8CFP;!2#ZX56Tn@aKI@p(}DDLfeH_>fEaKUKU0XJ51*)?MW`SK zGl&5d7??m8#=tu>fI<weV1NRwFa`oz;eZFIzyqvs1qQ}%exi_|JG$@%Du|*B6v#j; zz;Ko8h2RubP(TCfT;YYwOrZ-=0D~1EaDh=&fq|k3g#$kkK^dB10}~KK1}K09RB*6H zqmY0CzR&;#OaT>QxXc$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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/clear-trigger-rtl.gif b/resources/ext-theme-classic/images/form/clear-trigger-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..13be03108e2b5911ae72c110e0befd8cc09120ed GIT binary patch literal 1958 zcmdthi&xTz0taw>5k4mP$X8Z~&y{QF?cr>mi`ERwnl`88SeZJl-04bl)^zKFna`un zS7+8vLb=LxiKS-F8l(njCLk&x@0Wn62;u{k-(~;C{hrVHp6@^KJ&_O}b>w0W$Okm{ z5`?@##uSmy6?dl>laYAJ#dc=qKUg>a<Pqx0g!*nm3z^W;jVDqFRwOGb{s{$7W)ixs zSoQtP`d3!gA*p{Q>FuXKW6Gbg<XucFMGr&P%aHYrDPE1M$V>&9rRcUcThYr=^>I|M znX12-nn5d;=5MxokgH~~SZp?Xa&nTx;Y?3Y&&<qlxm+HP$LI3}0)bE{6p2Js_8gTn zPvb5O3$>%Osxg7;J%3?Bq#hA&(8QYz;p&*kG%8vh7q3hT<Wm9#OQ2;5wUZ*<lt?=( zl5)lBNwHx{Y?u}sXGDex$;y~?`@L*)LT(;c03VdVq*OaAS>h@egxW=x)X0_@CuIh< z%rq%CP05#MltzwXjj7mX&jB;4^=b9;v<BeG*7&kjp2{SU=!G()SZ)%{8D{6q0+pGo zHVD*fBDG1NTjguavuZO>V-Z{F%p#pdXaqz?K)eFT<#L@)x3I9VxVX5qv?Nuo%9JZo z-I`*4MK-@K*P5j|vqH0>nBP_`nUzasm2P`(!7{f5s2A7OOMqt4qFvmQngIDKpww?G z^}w8dTVdU+fXZqO&@7v^2CMCP!`8fUTeAYpn}7x5*5WF#v<9d*0PQ-UH3NFRetCJ> zU@#bsM*YgxvT18`%d)j?0semz4zlK-FMuEx&>@IFnoLC5Lp=6j>15JSIV|wx_fM#I zMyh@O#g9wscu1>*=LM|CK5t_*{yVA+%S#R(`!z6mG^pL?&iK8kAKu2H9zC9DMKOkd zuWZO=K8$hePao}R|0?ZR<=xKq7f(+=MBj>UKIxt}-FmXM>f3?lj<U2%EPmo&hd(Jn z=1cE<>~a070Qub?Z(ir69T4_IFpge>1^H6yPnB1Y!`!6s^!Cip&U|qyGRyu#<bQEl zPaAh3uSU0Ad-ziaEFk#Hd&8YAFLId=5_02VPYa)<b|m!<)LfZb<UdMoO!@ZgF_OG1 z$CsXTGPT_Wobx)mmRMzqXmiToX6Jg8*|xp2VCn|GOKJNA)py*l_m6DTJn!XoV9(9L zN1LRS-SqsYQ|&H0p16<xqG&0<U!>c49UIV<k!fS&g*6ZzeoIV)*rKz;-UaT2B~gQR zr|K(wd|iV}!}zgmhahn!!oSS#nmV9jPc0@hB&sNm;b4!=aIEuAk~!9fJg6X4g?mX5 zr%Mke(Dzp*g7EgBL?V6v8AQhLo%r8y<xMGP^2>d(cj@SghEh7c8e6!bZ2G$PTn@Yd zY)C+OQW9bjt(?mtcds}-rov0zotzPF_Ana+*)tkq`^E9}VYkb}^_T2%ZMf1l1;Zw% z`C89Rb6aC-(d9??;;SfoJ1sVlFiSbM2oi?x;cFgyl%``{2UYNjK&U+v1%gH)&|Q$9 ziQ$l=Oevmh6NRF=!o#X5VE^pA5@<fwsT>-TJr?_X?C_?J%s!j90Moe=9QMLc&Nh27 zJ;i_a&lYy5UrKX2s2_pm$aGtqaEU$DIlRG+0x6Z`I~5^eAiGoO_xL>@NBz72-c=xZ z>rZvvr1&2wpx}m}CqBoGcw}`(xFIh{%STRQbhMqw{|J_80UoEGGj?6d7-B}HM51iJ zgc#y&?NUmHn2-wikIpp^BHleViG&B$^uT*RgeopZczDg>-ZIWsqk5+>dE>n^2zbVb zAU8krkY{mE_aRGY?)#7WxE_r$-8}z1)R6R`TH@dx%^})(pI76fZ1<(SiG%)_$g*>e zNlZQg-JjxGxHmOaddu^hHQXw=>6_YDs^5!U2h`^{_ecD0kh{yg^2h|5UtisMv!=c4 z8P$az2+cQ)g^CB1pX*^}Csz4^Xxh;Zx7*G^{jl49!L8WOR@fb=Up9JX?>qQi;(mBz zjxO$uSrgrY_JAW5U4Uh4Ouw}bav?euOh<SUDcQS`a3&^{0<MMHXse0#FHjWwJ!HIh zIM(Gbo$6YI1Oq?7L0w9M`(1r$m<tIqd4%fN0K1JmNCIb|hWz;YGGvm}sq0Y59<#o@ z4#gos0=RMBS3wo%EfV-VWjG{yx$;xk1G}!TOZKHNS7Dkm?J6<Dkh5;p89g$05;{KQ zN;3X}OQ6q$59&Z+#Eo4^Sw1vOeAshbDXuBYE3M+)k)nvYBG0Vdj2pBawvoREhXpxr uqp8Qh4Yjwve}LGbM#r3C*W64DL<IOU!VKLt%}w%PU&j;2(<9)ZqyGa3rL0l_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/clear-trigger.gif b/resources/ext-theme-classic/images/form/clear-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..da78d45b3214480842c62514af524f4aebb66124 GIT binary patch literal 1988 zcmdth=~t5n8U^q-VGC;mBm0hsV8ubLEt_Ll8<8_(J7+8+GN29vjM%!ALxG`*vV;<r z)Z&alg+Q?^3W)^@3d$mq1eGKNl0XRA_dTp(c_;oG^PJzg=YG8(p3l!FM@D7m03JXU z07MiK(uxTeONi+ugb37lb~p9P2eh)MY&4F5#u3pE3FwDJRNFY(3~x4p>KaE8sA!@Y z4L3~1jhLAW4>!Ua947Tqg?%((Kh;b$Ko$&=1w*r<k#`aTRYahPh~}h=1{snehGdK? zc|nzrn$hI1=(16kj7Fo;>Gb*ec?N^AxVXq<GFdDZo6TNYTH<gxD=RBpE_Z@1onR<u zSnAg+3d*u%mLqw)q@Lr-rdPISR(HrN8?)SX3U}k(>e@U<xWEz7I11W|VxFs7;3}56 zeAcRLe$}wBYFJz~GP#C1-r6jG@2y~GPH1{30^f_ldA?$qr)7!ND+&#bZ=?&1^8y21 zus$zbUl8h<Vk1MeNfqtUr65zXwJ6gs%0aeZb4jqlmaKDlx)p(ORk+TT8kVIdj>N>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@<p9 zUdy7yRs&tMN3e{r%anockMRlT=x@&sO5S%Q<CA}`KGi$le{S$blCDS9+mu6V`gdm_ zb~)l7l+oIq#iy(;n1cT8i_LK81=Phb$Joe--WLhZ9_c<c7kbhvuXMIseMby*{QHR) z#}~+s9-sZ3Izn#o?12Xc|D`z*QG8oEhyVP3GQ6j-_itV475NqUjhZEVYKLEUdOkkB zKgW}FKIKBUgLTeWbS5&P@yJ!A>o|e@KE%NaSqqM2CdnRrfg1wYE_n>MZsu=aYxhs@ zZYg1(<k@v95S4#@+VbNBq^G>SHAI5{)vrY3S>+Sr2G5!}<eZKo-<ionS-M<_{SpFk zO*Ld&)nkZ(E)lkYl){EP5Zj`5hbnrdZ(V2*=FlSyBIIFFJlV=JBg?kI{k*`o{^2jf zLDu0f(-7F;Km_Th{?HQ;zy*jv2lb~$by_Ev=e_a$Dko~fH>cb)=Lak{l#IcWFsP=h z54sOE<$IwK0i|U>!mQGuh`69u9r<wcjma=+0M-d=ALMKahXfHmp>$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?<S`ye6K7&!b8HJzL%_0t8C?^Ck5l`^IuO zG=WiL<qyxWhxn&4E@^+~*Im+#$oopB9HWjtLjd-XL>;t7^o`EZs~jG0R~!KcEY9V= zMfruL`9PuG*Qsdx+dj=Ii`&E0II=PwOPulj+Tj@q29JB~T2{m<pDD}0pL7mx#y+D^ zhIVg}VXQ0*r$&c{aqqjaxN)G7#~X0;!UV+I*TUKW*SJtT3aB064Z@OI8>(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+)<D8$4srC^udm8u;$<<O{|V*vg6zQv6Otc*SW$zco<&c zb&R<ey)CHE+*cCLv|4%P#?HOkzZjZsT4cW5oUYG1foy}ilMtSzAAJum&!VMPLJy2S zv2e|3(gcy>_z>Mape4XM92w`b7;YV!insg9<DO07`MZ7?yu&|{Q{Rp?+?%q%J2@k! z{N8_aIRe%W$5$Z}J%)9alip~T|BzmXEWxX{X7NsEFsP7pT(z<o?e;rq`q)bz2APPk zeS>^+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&$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/date-trigger-rtl.gif b/resources/ext-theme-classic/images/form/date-trigger-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..07c5bec477ef3be11155234877a6f896aa3ba164 GIT binary patch literal 988 zcmV<210(!LNk%w1VP*gr0Hr$sK>t8@lDB@X*@OT9wYbQx#O|)p<F3);uh8VQ$>O%l z<hjk}xzFdY(B!eu<h#)6(b3V;($dq@)6~?|*4Eb7*VotC-`UyO+S=OP-QC{a-pbqN z#ohVG-}}kk_RHS&&ENFT;PlJk{mtb6(c$yc;_}tw@!j+P-}L|N?CkCB?e6aG@9*#7 z_5b7c|K;)d=J)^T`Ty$r|M2ke@$vEW_4W4l_WJtz`}_O*{Qms?{{R2~|NsC0|NsC0 z|NsC0A^8LW3IIO<EC2ui0A>If000L5z#m~qEE)+vfpW=g3X;yK5-N34tIR7_NwDa? z;ILT0$eGXRG<m~ryWixr937v}*YA9r@TK|xfPex!IwppPh=>Auj2nZ6iIIkbJ2IA+ zn3#)=c?30qpn^M+q??>>gQSv!nXQ_qZv;3q1p&6VxCJvagC(`Nzy&2Grm&7XzQDo5 zgE7C#wgoXU#jvt0(7-G#gCyCwBqW>9&;@MW-?!m|FzL21Fyraw8?q|_8aq4r8vXqN zD^?5&flnVle;NXW2(igsfO9(t=G(Uqp+bf`Toj~;Frf<<4c)P^hi|}uj{gD<0#WiL z$^alhG@N+Q-@{`pHJC)1Fy{WC7A<)OXwhP(!HPCV;!qJ_fIg=*cLY$OV$g@CPbpFi z@ZrPEoi8C?b-DxUQLbKhpuk#IYrX&|P<(aS@g{*ADcG9bnj*y@4|?57_28i)*}ZQe z0zND_0O3I=0!IyS;)LO>lSkUf5cFk+3<6#x=v+5J0s#gNNIrYuK<Lpr=~^@$ngeNz z95|p>&3JNa0yZ#g<aZVWhR_OzH&&nkwSn6<4H!VKd@}RU9jc%0(7`$Mf6{?p(7yG; zh0qJgzg@7vd(_F&(W{rrKD3DW0Yr#!e-yp};1%G*(?1nd5ZVI*4j8}#5Aes)S@FGq z;DG-y7}^L43N^wA4*L?fRd_Z~fFA`E9EhKV(q;HkgcJ66mW3~1_}*C?x<_FEAWq=W z1QVF(4vNps_~CRCIs_wz?$nr~kZ*w~!IMx%Ddm9-R%zvxs3G7G0tirf<(EfpDCU@C zX1OH-z(t_unryb|C74(m(7>E@)@kRPa8`LCnS6?gnw@~w2^<837Ha6Bc;?xl0S+|k z=%bJ(n&+N<@`)Oxm_9n_p_~>fDV&#Pn(3!tQd;Slp^6IWrk!$1>X)gi>gcOj#&~L( zjLNF14Xt)ctCg|p`m3I{-s)$rx;DycubxV%D6q&TJ8YQ7Dw(XK%Q6eWw2NNbD7U5> K8?3BB002AM4i^>x literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/date-trigger.gif b/resources/ext-theme-classic/images/form/date-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..25ef7b3ae73c0918e97b5fd9c3e0cc5c69bcc14b GIT binary patch literal 1603 zcmeH`>o?nX0EfSlh?LXSh6Gchb&K0_)}2tjEVIrf*mT-cZDZJ(tUK<OE@x*Op+wGH zw^i-9Ofr|!&LvnZ9do}^i3E*F<c86ZL?VXrTm27v+2_Uc^7G<3=Mx+n<bOV%0&GD( z07QsL`>`vtS)2>N?|+Q73~jaWl`R5gD__+)uHa6pc+;!AnYA{)io;j^$zK-;1hccV zLZMJ363x%gFT6y&EEbCw7Z)WGiBu|`_<MC&vNyVXFfK7pN_VE04Kp&sr2KGN1qtMO zp<;VZsgvlTWdo#Et2Z|{x3;!48jXAhQW~KZ-QMah^v@o&u@7mrTAfa3*x4}}jr;ri z2QPVX^y2Ucf*|mUR|Wp30?vB~`0<qYv5r3hP!KqQatLX|ngG}vp5(DeFu<_1x?K1y z?aXi<`Yn>EpHn+pf<~!qL)+^@kuX9ddA!|~^b<bpuR=Skgvm<ptFzC>J3jxY7!i&- zO}gJ$d>WVTX%pGG&aZ`i7E(<r+jy;xRKCBo*bx-@@IwxzXWTj|s_we*Rz$#qdb-^? zbHvYKT`Adi{;2yN&Rs3bFxMe&3@$D;wwG#hw&-;wUI9!$MLBlA2Q1JfhwWowIagMn zxC{jZk%{&6r#0&gG=K+f@bFh2`o?@c{5`PGSd+5lj~Kvfn}N!{P18ub;klLv0rYkG z@Lj#J*`dh-BcPpyHgon8h1`zkkRx73OM_vF%$bNIKh)|-Nt9o8W)H(?BDJ_97`S|d z*4p{SWHdCf0s-7e=(`R_umV4E`j#&H>VkK4Ja9tTI%PI|;LlFAd7J6{u?I^lr=khW z9L7j`^i6YIRU?auTO!iU9LH=Gd5-vUS@FpVMr|<;$*%?ORm3```@bRaKQttiW@oLK zmS&$sxRipjURP}nFmq^A<(b)H=?}<ASv_z_D|IuAWt^wnOE9OKAOlh`02%GcBK{)6 zY3ogpb)k(Q6IM~hf>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#<qF48){CauNRS9W{>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><CBI>>5 g-MOq(pFXLdRU~2PX6q%R;{Do7>GCKGOG|L!Kl0xUxBvhE literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/error-tip-corners.gif b/resources/ext-theme-classic/images/form/error-tip-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ea4c3838768c0ec3b5dab8e789333593295c15c GIT binary patch literal 4183 zcmeH}_dgVl1I8&X?ax;wEh=1RMP;viDraOgjRrE#*;$v2>~rQ>H*ka74rd%^oRx7Y ziHJ0e$T?(`a8~#IeEyE__xa)Z{dvD$&+~fBEx~&FPkxK*?M@aGGZmQ@Uy}b|4;~4E zjHV@xj*c!aE{a4VvH$D;1pWsIoZFDt{clXQf9>B+h)IdW#HA!mP21WMq>iXO>aHyA zNd8N~3TIJ8>PnNn;`6n;iu?+B_B!mSscCVnnD`Cmqu15c9*m~@8=NJZb}bKZm~i@O z8?BFMny~MTRSn~P+#Y~L_g>c-@!jTRE4)=LbEs7QpyFdIO)<OOl9j1vZgR>#u~qj& z??2FN8{B35{tf<S9qTc3&j&fjh+qC+xv{(V%UR31JD1<w8y@|zzG~`K*8H63m(WWe zy0KS$#}0(5JH*-Qr^(qg*6_-$|0ZkoHrCD$>m8Gcvf*+Tc#4NfUwgTAOXF<``{iw$ z>VHmk=c>BAYid}T=_lVL+BP??&NuIYj=yW>t}jh=q>1G1TADUi1cRk6eJ#yf>&sI; zM7!3Oovp721>=3Kt^bSz05lORAp@O=lL9g(;t%KuCKCPvgT5smwTFI7+CEnF4SpIX z_?CPY4w^(LqM?&1AR1#bRgEK<Ow;6nrqZ>Bp;H;B-567uMr(p8q$xo8d)5t^*>Q0T zV9EC!Yn|EexwpW|(|Pyoy{A!*kdkTiBiQUT#ucv2$9kZ>`T0;<3BSOPGs`c0%2U3O z2OjpG!H4rpW(ZMhpX4)R0V;x`L>V7JF#^aGkmNRJ1>`KS$}A<%4KYr|LYT8O9Bgiu zUIbTRJ{v*#%#|=`%sFNmXKt>v@{dSI%rRuxXTH3i&zxs9%`wq;oZo+*uk4iZ{ZZ8o ze8{f=_3pz|_k&dzYChPP0@*K3d>1%hVe<=huifU=>c69X7aIg{Wme@ZXMT~p9M5HO zeh&LCH47&V0$aA%=9gOMPKy1g7d!5^{8CC@N0Yl(_s4R_%;Nr^oktzi$~$Ge%6{_d z+}{3tbvC)FtgZL5+OO9jx;6EcO5Km(9<^4rmA9u}S+Df!>H3AdGg^PU^v-0DdMMZQ zu>bG(qcR!42dq^~LkDk}H_s2=aq!p1-E%2l9fm-9S3kOj%!ZA4VAQ8aAoOyb9B9P? zY{b7+y>2+D&;Qwnu<>%;f#*x2g=hWIB6YoYafbthJxTH`y*DWui^5kKS1&enW!nX8 zbf8>V8!z(%7aLmfF&8(Ri;)4FTq=<j(W&Ug-JCy4KeYAZ%NyIRh2wR$nu|^AzL869 zN46rDJGYqJ*IgF^7nk4YB3FO@HqbDxdutcClRxBA(Tx2RxD<^UjnObce?tcT$(trt zwB*iKEWOBCXkB`-{j1b2W`{qHY!z-UEk%p|49bb^hBk{!---Yjxvoev+P+_^jO&a% zD-n0$<=$Vcc$ua%fGc|3gTc#Ta@$37*Fe_>vnvxxhUfMf)7y{vu#zs;oIc<VYB({_ zAEeV%JQ>Wm-tn_CIezQhU!omg=efCZ1i0pubS|h)>GFGj+bGg!63C2wyDHU#dtT-x ztxG+)Jk6PM>UX=Wsb)@<55!1ejK|<@QmZnoBNa|>@Ob(xyG+>WlX5Fk^#;F!q9V5y z`gSQ>v~N^peNj+6??vl2JHMEfiE~y^D5<u*lM|HHMERvw@;WQ1Iyb9F5tOk0`nFG5 z9*u$n-AysPR~_ueic;d+E8iUHsz&eSDqYk!?|DqH#k5GsY9{P$be3KT=`ez{<dj$s zoM7i;+<{tCO1<8s#r)x@N80RsmVa<=*#5LJT^B@e&}Jo$f8e~qpk-%R^$KD!iY`5+ z+y@+B6K*wKFrhO<ebEo9h=1OmH{JcFD^B`%8o-z#+fmZr@tj?3dlPhny4If}S4xsm zmjPcfD9Z@WbCBC%{FGH0c%D;3Su;|$S}7So{bExu?p&~TSLx3ms43EER=yU(985x6 z<BUgV?GhevvZPTqVB@)3MdrPHrP`7aca?ijfI}s;A0_r@j@YwLY7&BnpbvMLn06KW zs{6HNrxjEmuqnf}&L!mm<<gI)Qd`&q+AvtNYA2uh@xssA3Y$$;SB&Dw%XW<l_%zkw z$V1D{%l6pJXunIxRh_br=~Q8~{UCd|PHiww1#!q1x@7R65v{|bhxz(^Y<y6|;gnSz z^Yv>rc*qhB>y*~j`UKD$A2QZBC9U^;o+1q%kz{lkuNJ(6!y3O9>R@Pn8Q!6f4MtJ+ z$EhFHy<ujJqevKrJl+cpS2q|-K_4g0_(LO(HI5~4FhxrTp;0^f<I%&%iR<NFFQyyD zpRHl=A{(#RUj2z68DZfbJ|v#q;OeUrUT_!=Ni5WV;%P6$9tT3;2@OwNVBr{fo+rXr z-^~dvL|uS*rrvFEyUPjB(*Ss;8|u5;3=4B~X&#vh4esV^;n`Qg9$EYKJ^q&2K$`R2 zb5`m-40WDo+QHrPzUX;s+i#>h0Nv3Y^`08A=V>lHH*BdML>ax2;stRl$gPJcaGr}0 zfdDsLq@LHA;SKmR+7p6%z1Q)z=SeZ(Cq*~)p#PECOi1RtlCIQ4_v=K&BjK);Q+nQ# z_M5R7pewCM_S2h->_Gwy=y@G)e=E13fM&9)ZC>tkzq)ZKJX*VKy<pBMA%wv(`9#~P zo8MVI8Pf`LFAuR{x%TvpEL~sQhTHrIRNl&b8vq+1sV{uK&HX$S!P#MDEO>iwMUB6c zuj8I6f4V#P>-S7X+2Dd<D0_>v_@WLxrM{Foz#Ti=tlMIqIv+i6J^p7=wr#hwYRF39 zgajt{WozBC=$z5FzK6P<+>Pawx{_}xW%XSj6NAKkqNcp(gsV54+mH!HOli^8h9+xP z@a61BIckCW>uwiAG@DPyX;o}EhOk1|w5FL)eEt4UD!+?cYXxA8>OijZN8**oqdPA) z%O76|3myIX+`(mHp!8i!c?jOpX`J%0l|`vEeEP$~>(uALfVIh5<9Oc-TVE_stXK5m z<HKe)M<eUj_w$?Qq64SLsdC{55B-@<qCcKA3=gMijG;5^HmClUeNMJ}5r&a}GM!A= za0!qT;B~*vM9OWxN0}s%KW@xs=WiBN5R%F<8}qulk--MW3(d@EE%))@(VnbzmGzzP zi7wYCh&bVAEtBqS<n`%5+(uf$pF{Y-pjpGb%_DVx^aGJwB~RohKg&N735Q<qEYA3B z$6Svw><N4k$8Oz`6uoF4YSrEBSlL;2sNdcjAmXl$Q*L8o#yBzJ>oFnjvC79{cR2<~ z2m+;qI)}UO?5mHxWgd1EYbbmcXE7AJB@^d66{n#ccM__07OSHKx_e$PzP%$(2#YuC zieKf&Yop>-u#uXez{^s)y21c`#9b}NgfUE<>4>&rcYv`_+Z=RHMlW#%m}t$oZ-x!9 ztk=FPxO-EWs3S;pgofO<2)G}v?E=+)f&f1r@prel?TPUBss}%)Pcr-n4-kZ0l}!$+ zhTn2ewn<11%7YKll5b8Whe{-eT7<^yA<P{Ra7HKsi?Gp6P8W3tMS=Wd!?kjy?6XJw zPz-a7g<n2M3qN9>CPdu&m11%|)!02Xp(dpPo~qxG3O|}k8VReEO>?EEa`>sb329p7 zv~-U&HZRR~I;|3rj?_x4afG#x_;d;`_gLKLg{S+hr}vMfXDDU7vdC~ir8D6fSdWaF z?u<rS1|5)zR?4J+GYKA<#qi9t9ht@7GpYocQ~;6$LTZyU2@oVb5s9KAPfQ_Md_=z> zcpKy-=5%S#3Ey4%Sy#-FNNiT+y)2|;b`3u(-6EUqk)49bKGcydqGiJc*$s->=}I|L z?m4NoSqEMxoz+KxyfrnPG%xLSQnyULvZ0|X(sxp6$O){^HBwG?5axnra<5q;ZaC#7 zhv!+8AgmhlGGy~?Ki#)Efg)SvU_DU<Nhll@Md(5mO`}MXXo?b=W`<^XqM1qPGAf$Y zg|3`NS4(1QlrS7KOuZ+jF$vQ|#k6!`+NLq>lGsiqEYA$v?TLMpgndiJzU#vFPh$rp z^FJu%51ZwWc;<gj%Ku8uAM47Wn9iS+EcmWez&9%pcoxhh75tzUEOr$vPZ#`>Ec~rh zxMo%;^eo&=D%_?P{^=?d;}`A%;3R-J02n6)!R>?N4$yFic(}j#IB5X>C=f3L#>+zR zC*k<hG`t)Sf0mCw4<IOtfCM0z0D=%y-~=@q;UbTq$tPR}5Ve3r9WYT3LNtIAjc7y@ z9?_Ifyap(`0W1Q8i!2~TR`4QgT9GZU=oY`|4xsoRu-G14><B4-055(-D|Y4;yYh?O z03;6}2?8cTAtWC-$&W?~;E|s4Nx=YeD3A;Tlfxn82sk;4Mt;E~$MVVX07@c|0tZtN z5K1bXl1`&!@+et+N)CXU2c)9G|GZgh0i24n&ke%nF7T)U0_s&VwFyjXfzaCEv~~dP zA&5rg(HsRd;dweq2X#+54HiMKm7?2O(AOsEtGgHs9^D$mSaxHSqUjN->4{nfiHNz2 zNGmO$2*2C{KUAY%#=gXCtDyV`357mkn0@|uW<1d#jLT-Y++p?{VSb?<6&DvX{4ddD BA5{PV literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/exclamation.gif b/resources/ext-theme-classic/images/form/exclamation.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea31a3060a36a625cb5cfdf4fdc5cb4fa5c3b239 GIT binary patch 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<Fx1} z=`qi9VqauNyvm7uofq{oKmK7!%+sRCS7otp3ZmZ?$Gk6#{ZJAAu`2#Sal*Um#Fw=h zpKB66*CoDe%6i+F`KB@FU31>!meOY(6|dTBUw78N>aBj$UH@iM{ilZ1FAYgw8<V~^ zC4Xs2|JsuEy)EZkXZDY_+|RvbU;E0x_muwXEB`g6=H9}oPy3pmPiT2QvGvWQj<=IK z-^}QIJAdlO$xR=oH-DVo@?~brhxvUU=T3OIWcuUfv)(P3`eR|ok42q77I%GKHu1}{ zNgtQa{J3KF#})HGt(^aQ{i4t7mwj2Y@au-f-#0J#zIn-qEh~O(S@2`q!XI0g{@l6j z*Pa!>_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<r+xY?)2sA{G&K0hV<Ej~5?3J4Mx@hU24Zqk~Xd$paI`^mFX| zQdSk33LjXfYPvdxNG?`nW|Q_7<8WF0s3(M9(=cX(z_G@uje;3dGH<tZwsIwENNAi$ qV3U-QF}uQGtk`gvjekl)<s=qH#&)Ll8WIW*7=$jY;ACTAum%9yIwySq literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/radio.gif b/resources/ext-theme-classic/images/form/radio.gif new file mode 100644 index 0000000000000000000000000000000000000000..db3a5305e176b4e1f7af2c7ed5acfe82648d8b00 GIT binary patch literal 1744 zcmd_pi8~Vt008ir&9Se!nkbQDW>$G6Nyo<;c1f8xCGlBuH1UeBRNnVqViR*sZ8i5c zo4Yc3IYPsjN!oI}TxDgIQf{$_z24vPe*eP{N5HxrK7RnP1Muk)0P1=c>K<b1jN9gn zH*+DHAHbO(z?-`ejokt*-OpIM2g1<7R_Gw8XOt;6+!`GS_X^qP6Kap8An;*MM2agZ z@}U1kY<MF6!VO(=ivDSu;aQqtXx6q68Z0bpdqkE~7~{Z&G;B;NF*c19mwt>^X_z84 zpmm!uq~;t2l)GrcU$CrNv})7X=5$*ZDUf^xs&)Y>(Kz>N0%^r)dJQh)5ivt_g4uAI z&O5_u@aMDy6|_dsInk*PsHvPkvN)HDnqu;s{uH)^@VhURNFz)8Vt8U|b$_C;Jzg|? z^~sxSe~l(SSB3OXP&)>1ef)k^qhVxZWMpR2@0FxK;AiIxath0G^Z5@-YdE~JywYku zpI=tnR9WBhsPTDyQ(IGWb5d1j=HssHC$gM|p4__b+(sFvp|`NP?^#<%VTZg}GM@5c z?QY*UPVW?RNR>A*%NkU(N7nO()rBK#T<P1^_O7;0S>@~L$D`i_<La7;jfTI!v`(l* zWAjfZ7Dewip1qxKo1CpzuD2-{TU6_<pZ^i9s5?75rBbQ5OV-uX*Yl$P<;$0{{(*kQ zkX$Yw{AqY(cw~HZbaecuw@T@U@9k47?Vs0WGwZMB)rxN$?>?^#EUAa*H{L9*jLdJ0 zt*lP0s+CHmN~M~fp8h&BGdnx?VR>`<$L9R}{L<2r=6}g%4WtDDXaIWvKmB(CptlLo z=ubHdCt*&&t&qX@b~uAwK`?{_0|e=r1i~RK3CSN$FcH!!C5!;!K7aTM@<Y@h(jy`f zzte{1%frObGMVPGLC2Dc6W&Cmy)g<)5xZd6NTJy3lKT*Kpsc_Apfi|(w`Eri!EH^j zYHDxP$giGFw8P+!{iV3f?_5ZVpU?J_u~TzO&vIzFv$05T?cVjvp=gXV5%qNuRwebY zCx|3^uk7$Fr?`67>pQ!STm^z{!!N$F@^IhGrDzAaPzPf0>lS0HaVT=Oo$q<D&TF_& zmYpbn;TLIzYblf(bTW#ZeajkR<IozswFqOqNjRc<lOU7cP1vmFk-w0u7VrBTA9|ZA zkN4wyfg#@7%~yZqPrfjNVUAuWe_~5|W0hy$7u<YUpIl%s*_gyx{vHElpsLd9(sy}O zMC#H^{4eq>>%5cCp@2_2AW69ubcUT!5N3<2kuT?Li@IWa$A(XSBSS`k5FqPAACW|d zJh-ccAJD)YhW8fvGfp|VvW>_kJNX0$E;Bg*b1vX!#C=No^1JJeP<tkx4Zo;QL=`D@ z9R;g#*wewoECS*%UFdfTQ0&0+0-3_Wm>v74jJ$Sic;<SW+kY{}?XpKr3s|S4sa&uz zDwk*IEl}{yA_OFO7Hc#u&nt`knsCxrcGqWfpTg0|*HtOF=fxl=6O${*d_5Aj@;KNu zp0GwH{{|z`EY2vJOs$FIS2|6SXpT(V^4fT!ql)@Zbx=9kMoY)^7^N%t+C+o|WELn+ zGQPF8DutQ^``re*S>GqY;p_zxd`~`179NeJq#{o3VJ6uXZhXkIFcOF$FaxBKZgiE1 zC(-uoJFg9dxEPOl`0yf#D52Z?o(owsI$oeFZd%$9o#6e!aiw!cTDGJ<ak3W9Eh-cW zGa_~9TIg}L6W|SDvOpo(Uq9nveILXW+&G7UIG8i(iEfJ&^cLs(+GH(){7^l>@`m`f zjy9-0bimPP?=|t>b9MMypcaRM0T>2$OnMkJ^OCf8SICoqDU=GEtq=hBxDEix)J@YM z@Af*P-nGV~7!{4)K;4~8vDyCN06P;1>k)d#F|}TgfxZzM4UB{}U4D+Ljv?-5Zy6H6 zLvF+oc6V=j3a!Gqx6|+UBS<|KVVMdXVmPum*3Y3KzV~rdwg6E8S)N1`#`mgo^b+1X l(u(y}&DF_mz-T!)J)ZHo+?1Y=tSrN@g*te&4;TbE`Y$}h!}I_E literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/search-trigger-rtl.gif b/resources/ext-theme-classic/images/form/search-trigger-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..601ad721eb3273f563239fb1ce4da424160fb1be GIT binary patch literal 2201 zcmV;K2xj+3Nk%w1VP*gr0O$VzEJ<@NQiwHQoj7N%J7}#uYOy_Uvp;aNK5(==bhkcs zxIKKjMQ4^tXq8B5nnG@~LT|K7aj8Ubv`KTcN_DkNb+$}*xK4PsPkFgecC=A=wo!Sw zK>t8HguXn4zdVe>M}xgcgTG6KzFdO4U4p!9gP(DOo^FGnaD}3FjIVQxuy&Nac$K|H zio!~Uz)6h4NR7lrk;O-p$4HaKN|eS*mB>+x!BLFCT9?RLn8{$2#$%nzWSz=<oXKpW z&2Xg7cCFHQuGD_5*?zLre6-i2uD-FgyMUj|im1<luiB2c*NnN>kG$KLt-_nF#FMer zk-6KOx!0e#*PFiDow?ejw7{XW%Bi%$uDZyexY(h;-KD+Sq`uy$z1g+6$eF;~n8Dwc z!{C|J=bqK)oYv~9!QHgM*R{jhxXa(D$KkBQ;;+l&q1fx9-R`8?>ZjiBuF&JJ(B!Gx z>$J(?w#($V%;dSs;JC}=xy|Ca&gQ+&;k?h~u+ZeS)8@6*<-XD3z0l^n(CN9{>b}|N zzTfM;-|xiD-N?_^$<W!z(caJ1-O|$1*V*6M+1cIQ-N4W0!qDQu)8xa|=Ec(G$JXb- z(&@p}>crFNz}e}--0H;L>&VsT&DZA2+vdyM=E~UX$=U47-08^Q?9AHh&fe(F-0sEQ z`O4k(%-{6L-}}(k;L+IQ(AnnK+~d&Q>d@Wo)!*&e-sIfg;nCml!s749<?qho?#}1$ z#_06U;PlGi`OD$`%;Nja;{DC!|I6$3(%|gW;_KGo?b+k++2!rs<LTb!?ceC{(&6&Z z;q=ww@zvw>*5vZh=Kj>=_}A(G*yZxs=Jwp>@Yv?~+UWM)>G0j?^xy6F*y#J&>i*m8 z|J>^P-0S|`?f>2L|KIfg;o;%q<mct(<>2J$<>%_==<DU^?dj?1?d|R2>G9y|_2TUI z<m&U~?)KsA`RVTS;r0LJ@%iQU|LgJg?(p;P^Y`lW`RV!p?fU=m@$vQb_3-=u@%;b# z`uh9){{8;`A^8LW3IOi_EC2ui0A>If000R70N;5TNU)$mFYkmXT*$DYkc18+DugJ} zA;pReFJe^ag^|CH{{Dd+2~tQNk|;--?8LIA%a<lo%8V%!<;s^hTYCAJuV+4eKz#}o zB2t+$Xx7xJvj&Zs(WgRQdYbAfCsBV!kt${C^r<qU|L)zxM|K~+v0~FkbxE}<PA~d= z>boV!O|76q|7BfAiw&7V?U;I9+sPBDV8Vz6BjvUw(Y<~DwyOqhaM-c@e!Xdfiyzsv z_XrzCteEjjFa3Jz`$FTxhZ#eT#q~)P88mfFWVntIMA<rK$bzpmOpMSNF@mZsc3Jy& z?%lnA2S-L!?7lEHT+1MG?W|gs#Et$VS5C?$YIORhyuguW4UY~#=;cF4pXf4mP+G8G zv!jC#cGMt~40SA#Ld+5|>;?od#FWR9efa6uUVr}uIAC@7fB{1e?eXBj5BA(6&xmUo zh@gTDI@k$n`4}U@4fDhjOFcR)5XpS?{R0g$A=nV(j5X##O)|OU5|x2UNXVam#{}aR zQ9JhdBaI6PNu-fsQR4!PGE!-Yi15gBBr!?uM`4q0v8aavPmFWOA+3~=z!o^7LliZ1 zB+%xYaV9_oHMyXIiV&Uz;|d5q#?lIvco6gCKX~ftCY*Bq8R(#40m9}uh)|k<7Wcp- zDxroV8snlhHkxK?kQjgjIsU335=#~abWtZ!)6n56tg_Nd#Wbj#a!ORh%pobCaz^3k zga72ZYpk;x@N2M`$^!@juR=>J7xH}LEwRS#>8Y}-=3|Zq5(s0CIq6hT04MXEW9L84 zFk?Zw>$Y3KCBT|8tS7>t@vN*;7$C*6oe)*;z3Q^-F2BMK`;R==V1Tc~1$-ipHyjfh z@W8PYd~lljIC9Pz6Fktv5f2RT04wK!<A@_d#B;|eTS%ZX%Pw#7${usfAp{?TghIi^ z`tG3#A8^1?^UXQ$-0}lH11)qsx?rP*&MUVJ!6)13Vu~q47kzZYNiW?rT#Yy)ju{yc zAomCaXt0Vnjx<s;{vCjn(nSSw6EMO67fezLAaw`<haaLu-L=b<*y2aid-wf!;DZ-_ zI2|>o!i&}y6d*SV18gu#HoT;wIOC4<{6OTB!@+jj;*67sA;qA>f&dYyf_Ke%<Wb2h zu;^h2EbOen`y{VaqBtCVG)@8Lgi9jI<iHD0yz$5@9|7~u$Fs{Wy>MgAC67Qe&+ZX? z!c8yFN594Nb5}1)AF}Jy$o`Fh<3Bj!AV&%U&;UiyEFOVKpd~<2ic-8n8PZTe02lxX zP$Z#g&=Z9%^neCnq{DlWxLy(vs6Ylf5P}k<ASi0)ixxKH8QRE3H@dM72|C~t&v;%2 zH`u`s@-Bq_eSpg%8ZpEn@-KiU06-DIF~S5o(TSFrg)~k804J2<f*AC}ATp5&P1u4M zDg47An)pO0N|B0I9AOLBxW;C5!yPC9fEBW#!^Lf}i(d@mAcVMxKKikb{R@W?WZ?)h zmQjJT7{(P`VL=QwjSrCI1LKHM0su526NWrw6cx!xHL{V7Zd3;rqLD*K!Xc896a^(M znF&7r@sDlGTO%^5Nd|(#d2on>E_bO*K144VRS3l(YIevcF0d50^yDYo_>62kqZx|h zB`<v`3SbJ;3;B4ZHvdS>Vir?zs0^nsF`)@e^r4&HEF%k-$xdH@Q=F0P13As<%5A<9 zo#}gY;yd9PPe|f3pMh9sJ3qNke)<xU*tF+1|C!H%8q}X81ZV;UI?y#b^r7`sXdfAx z&Wjq9qu!)wMd5eKhoUl}8s%n0CF)Urg7lm5s3<{8YEp#iBc&>ps6J_0)0ZAnqyr^s bO(Tg?oG!wr>g1_Ok@`fS4z#843<v-_y+zkp literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/search-trigger.gif b/resources/ext-theme-classic/images/form/search-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..db8802beb370d7554d5319c0e0d5c4ecb8da2c5b GIT binary patch literal 2182 zcmV;12zmEMNk%w1VP*gr0EYkoEJ<@NQiwHQoj7N%J7}#uYOy_Uvp;aNK5(==bhkcs zxIKKjMQ4^tXq8B5nnG@~LT|K7aj8Ubv`KTcN_DkNb+$}*xK4PsPkFgecC=A=wo!Sw zK>t8HguXn4zdVe>M}xgcgTG6KzFdO4U4p!9gP(DOo^FGnaD}3FjIVQxuy&Nac$K|H zio!~Uz)6h4NR7lrk;O-p$4HaKN|eS*mB>+x!BLFCT9?RLn8{$2#$%nzWSz=<oXKpW z&2Xg7cCFHQuGD_5*?zLre6-i2uD-FgyMUj|im1<luiB2c*NnN>kG$KLt-_nF#FMer zk-6KOx!0e#*PFiDow?ejw7{XW%Bi%$uDZyexY(h;-KD+Sq`uy$z1g+6$eF;~n8Dwc z!{C|J=bqK)oYv~9!QHgM*R{jhxXa(D$KkBQ;;+l&q1fx9-R`8?>ZjiBuF&JJ(B!Gx z>$J(?w#($V%;dSs;JC}=xy|Ca&gQ+&;k?h~u+ZeS)8@6*<-XD3z0l^n(CN9{>b}|N zzTfM;-|xiD-N?_^$<W!z(caJ1-O|$1*V*6M+1cIQ-N4W0!qDQu)8xa|=Ec(G$JXb- z(&@p}>crFNz}e}--0H;L>&VsT&DZA2+vdyM=E~UX$=U47-08^Q?9AHh&fe(F-0sEQ z`O4k(%-{6L-}}(k;L+IQ(AnnK+~d&Q>d@Wo)!*&e-sIfg;nCml!s749<?qho?#}1$ z#_06U;PlGi`OD$`%;Nja;{DC!|I6$3(%|gW;_KGo?b+k++2!rs<LTb!?ceC{(&6&Z z;q=ww@zvw>*5vZh=Kj>=_}A(G*yZxs=Jwp>@Yv?~+UWM)>G0j?^xy6F*y#J&>i*m8 z|J>^P-0S|`?f>2L|KIfg;o;%q<mct(<>2J$<>%_==<DU^?dj?1?d|R2>G9y|_2TUI z<m&U~?)KsA`RVTS;r0LJ@%iQU|LgJg?(p;P^Y`lW`RV!p?fU=m@$vQb_3-=u@%;b# z`uh9){{8;`A^8LW000~SEC2ui0A>If000R80KEttNU)$64nh(tT*y!e!iEqNK8)CK zBE^LkFG}>sv7^U-9vOM@NU~%eA)QjHT*>le$(I~m!ZeAJrA?J5^Xc4~PoGbo9K9$T zI+PhSYwFZlgErLPznUyPN%h212+^WPlP+!g^qyC*`0nA`hp(*He@|~trMglG&z|~f zxsh{A-%fo(i5_iNhzuKA>zFD_yV4V>V8nz4BgM9pRlU{t`UNbw>({dUaJ6~!i(lA# zgjE_wteCM%w|9>XnepKRjW2fd_49(PHnVlgg2ZSogNZt5$U=8ITuqReF@%Vjc3d0T z?cBRR^!^=O$XBt~h{$MNBh0?DP=^QqD}Frrav|u_=cD(d1CKRnaJ-nJ58Z5J$&gWF z=cB_8_&Brxg*wZGMhY>&01;gbODLC;5cuiGpML-fNZ?cQWO$D~KX~w78acoKMpy<S zs9<XhI_Ow>=;Ra00y@+aODyx;Ac8Tnd67#l$xxFAj55+_LkP$~LzpMQ9Mj)_@wK3Y zgF@`s<Bu`UIM0wpVhE2s_gDg?l{dIR4QMqXsU(F>K1s@o>TQug8Lb?0$T&|Zphu3V zpppwURJ<AIoKGY`2Q^0$g9nhU2nm8K!FVD>o_qEQr<`;ON~jR<WO|Plejb7doeBU# zW=ftIim0NDI?7@`T^Nu>EQqN8LJkrJK$7Drr=T(o6|TZ6E3I@)Q)m>O0-C@a#5jgZ zuDkXc>#PO@`_wno%EN`TzajvLJi``SDY7e`(;_DYRFIB2<_IH!2IkyqimsQGdv3ZC zSip=kg-T(76uv@>hA@ueddf8Mnv1Tw_TnpqHw?@3iM$6(fWbA~mPw4h{60(Tzm7WM z2sr1k^1uKO9MQuA6P$65BY4d*#~!b2GIGf$OR&W#cf=zE9B}ZV$sQ2XOF<}u@F9fD zFw0D`$q(3!v(BcNqRTd)K(KVpYG9*_&OG}Jw826XZFD1!h_i|Y1dKqy+8LN3jw6lW zRR<uYOme{hYOh^E7o`CILI>Ay_+bkrGc#?oD1N{p1RZqSjrZCF?A`a@LZre=Hlu7X z010asa6#6*qyo6$gkRnC7Kkfewki<_zydnO7?Q|1Z#NRR7nQs+N$V@H1B)Gc!178Z zdE~*hAEHQdcise0fO;Q13z7To0`&fS@WU6cb1&R{(mD(CK=a5Y)^O9yF1v8uNAk-< z?z||_tFA}`0i-~VIN;<Dj_tPN1qvh#2!INtp^R6Qq7<O8L?9NZGvq~rcj*8I8uVZb z`0)%5N%&s?2Ux%ZCUAj)h({8h@d*bAa2?&~MmDtZjAr=ag*sc`1FILo305$EiUUUx z0APaq@vjk!03s0o@lpyW0N@1Dn1upC$V3qi;tv}nhAlLaiA)S4aTiQN5s#R}B{GqL zNyvs30DuB_bi;)&Od|}F@Wd!iv5Hr`pz35{gmCO{5qQjF9{uNvD-1)4Uu<F$GSLJ8 zlz<qB<AWmkAV&;>qK|*{VjxBMjA&p%9cNUdCPhd{Ln6`-i)5r6g<w060a1^r#7iYW zfj~)4l8vFLLNMURhd9{smbO&fDq9)ICJLb$&&Wm#HMvPx%9572#HHd;$xJ=w!wbEP zW(+Z*2~6}Ml-OjX5Te;joe}e!Fcd-`sA<h?hH{zBY$jf~IY}WX@|xy6=Qi2tOK^Tu zXYY)sJk!}@%xBWmm-@`6;{FLjZ`yN{?hNQY`I$;+5;TMfRj48d`q1qiRE_wQ=tPCU zP*nP}q7juSMG0!qi-uF98||nb*9lUTYV)BG?S)BCic)l{bP*pVX-E}1(tnoJq#4zy I;sOEyJ7fCEIsgCw literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/spinner-rtl.gif b/resources/ext-theme-classic/images/form/spinner-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff14c0665389762bc90daffb63c54754ae482b5a GIT binary patch literal 1975 zcmeH``BRg39><?>BwR{15Kt%(5D{7q5y1m?C5V7WyWmoxRhFYDg3PFlAZ?LLG*UnV zTA)&G%wn~2g^C?q)S7Ts5W-O*z~+FEgoGpKljBLA@4_FkzwK+@^P1PspP5hW(U|=Q z($7Iokhlg4j<4F2P#uy`z4sqAp&LuAxz@@lZsU}+aZ1}cUEPB(x`$qliF?@M*W;3R zb4%~$M8k8UX%25>UNrh2F=viH%9V_9CBt0JFc)TXB_mw*d!Blfr=H+1kMY%PzKYFP zPY9%w0x4UdW(zb^0_lW6J}yvA2$bUj&7?p+wIH2bP);o<CKus97dNb(7Os2{YNnSo zGaD0WI3o3|NXZewvm*7JNHr@~&x+xBv1)a7b!}~JeG~b*d=r^M!&3vk8Z4-RLZJ|7 zz=8%WYJgIy6mA3zR4UaH48$;yz(Ax0a*a-`1qzK$vT0;l3)C8oSO*j^qJ#}n9gyh3 zvL0R51F0UUw1`X(RyNvzN)13}0BW6K#Q-!q!|J9@8odeD8)3akt2Y`91{eW)#HdG1 zdIU8fM%V}t1Ti3}&Ik-f6fv3*BWg4nbtYgmqIwfBm;kcTCe*YEilD%V0uu^Q6#Sq6 z(FHv978n}{K>pAMn?C_rp%4hz7RR75Ex}e&@(|-uZw1clSOhhV-dC|TB&_dg!j9-F z8?t+ReAzhtuCMd<V_#2{n#bJAco*$`{@e-kEk2U@Z2B$AgYXnq*U`IA<Lh@N{n}@p zxU1?DpZlLBrw!THwj?!;WS0|VWibV(ZV{_`ZEtseWgk)cw!Y0O%zWn7`C<4%a@W~0 zdWs^yw(<82R;zU;c6Zu~E1s`v!W-7g15zsYVxl4ZbbIRGyJuE1C_iHI3NCSrNQyZK zGGlBf?^B&0qaC?}+6*v$h_bLDhMl>;wmjA1CbN!;h$BRrK~~Vc=0a+RAN@%;2A2=* z-`D&^^1i^rbqXp)pSRD&h3Cs=UX(1c9u9Ad`oj|c@#I6>t5#fQ)y1Ajdn$;Q)Sf9c zlaTvLB8x0p<)Mkr|IE2G#UNSDFEzNhf3U=rmD?TM#?2=L>OOb$&cX1mE3?TNj>O`t z={FZO+FpCiz}2`S?5OT@oZASVl7B7PdC)Ebjv*7xp<UOj%oEAXn>BLD4r&yE!%RBv z@7YgM_z`%dlbPAxb;tHBdt2-=3&vsIE!S3*LipV{{Gp;3WUDW{x4(5g@TzPU`l5n? zx$5;af#T9i{6<n(u<*;SpNh?(r?gbJG7Gm{o83c>X9kYq2(kDaU;1}7E{h+9*gP8a zJg~Jh=Qf%jR!7DLcVDKs2D5WMX@BmHXLkJM49TD2eEt%Kk^25iS=-CN;S1Q*?dcT` zMUE_r!{n)N+q&Km!dE)_-I12+5U>4<_9E%b5O$@WAK2r1j}~Pu=Qhl|j%UdNU$2gy zzPKaSqS}IR+#=V{!4j7n^yapka5vfOh`*xGF)3HkkE2$tm56_KZF#c}53kegLUOZu zJO^b#J>T1$U@+rIxpLOdfBh0W_)$ZXYS8zN|N7A0hN8Sze!v(s5@hTDoE6GD-u|qW zpt#<W&{BoL26d-XT!YfuLZ_2>Sxif(uFwLGFy(>fLrTY%Fzoob3jx1PjlK^^$!hvE z3@t$|JI^(J`qnQCZym<MSf@nH9&R?jLN>$E1HXJGjCX%nm~+t|eX>a1N4IeJI`g2F z(*pt(=Ws0gvuE_?Sv%5?X7e+mvKu9G%$7qxJ7wlvW~U*I-~8Gs{3)yWZ1`HDat*<y z{#8*yd|<<WoOeB05FtNH0GTEIZu@9?BSbCHMmWd!tO%ptiK_aL-tBQu+SI|zU%m^7 zL|w^cud<4wvO~m`Z^seC<oAE{4en{oj<$80F>@PY9?auo%uiqPu)P*{IQ~A(+|!qg zoxs|W{Cg{fcd__#MtR`B`GxGR8{XaQ8}T$d5=|cETx^Nm-}lJ=Z#!@vLOi7rHq_*t zvU=>nN~6#e0{h>~Z~BCFZmIN*^qS@O`C!M79KKTRX_wIJ9Z9y|yRwjEmmcjwC08DQ zHJu@>YYeVeRL4{>lUx$|L%P!OiLG8PPQMKd$Yae;+hvjfX(+(G6jKt{?B(#1a>PeT x)w+<0#+mxV2T#`4Txs4Jq^Fz+B-B;bdhg^Y87DKUGl&Nsf1G4pR|-Ml{{>h=-nRe% literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/spinner-small-rtl.gif b/resources/ext-theme-classic/images/form/spinner-small-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..70c536e6af8cbc1ccd067f82becc59b15dd89ca1 GIT binary patch literal 747 zcmV<H0u=p6Nk%w1VP*gn0E8U?F;I(stl5CB*|fOFwYbQ+&*!_)=e^PB%G>43-t^Ai z=+EHv(BA0M;px)h^4Qwn+UE1$^#9`Y|L6Gs>G%KX`Tp(g?d|aK@9*&N@bK~V`Stkw z`~3a?|NsC0|NsC0A^8LW3IHDfEC2ui0A>Ib000I4;75#PX%b(cu525mZXm>POxt#i zv%|yvz@RX25E_F417gW+TpCO!@kpIgjmhY;p@C`%zl?ay8Jhz?hguEMK-TMk7SY%M zHeP8O-hRU!XdD%Tgo1>Ga$0qFc}oOlWB_H5XnzoP8-8($b^we~m3)|*YG{Xp9FnIM ziA|lKOkftX78$9YWwaKdY_FMct#q%RczU9qccf?&%o7#2s?8I@i^#ADva`0<k{PtT zm)yUluE@~E2;jrXaU2rw6wtU7?-H%mlE~=U+qmZ5yEr6B;NaCc2LtbI;83g%Loa9s z7Br_1VFEPuplPh9@S!k|*f`9>0L0sclC%CI5?r_eVL^r#gDIHFWTpZ=5?Q*`nUF(- z2oiuu04nsSOqxp+Fu3VRq^_q=RT5M)aH_?NQEb*+ic=z0uU9eF8%y@xQKkr#qCLU3 z#E!Rc<I0`8BOBDaQrA?~n{bZbu2%Pcz38s2VS9i7+Pxc9AXvd+vm#A9IqzV;gby1& zTXS+Yl3^^I3>`2h%$29Hc1EjpiOQEPQO73yGw6?@w%r+(%$jRcZ5scj<gj4DM1RB_ z6z|xOB}C%J4OU!UI4DJ299?;IxX)=VdELHoSQF0LI6&o)!%`<slUNDQxCzR>MLIDr zU?6FvG@iUKWl`XBpE3UFql_Vim}+whHS3^*4J2ZuGRYbJ6?h&w0s7JiFTJn>41x)Q zI7l$U=+g)o6OsX827y@O#vkZ$a*b<ykoV#rfvh6ph;uCBpd&t9F+>4E4%uTDa|A$S dkw7TPWRnFP*@z=;wMEwsGhC_VmMeq+06Usvc^Loz literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/spinner-small.gif b/resources/ext-theme-classic/images/form/spinner-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..e70f8d80aa3ea21c7f94594b3fdb06b8e9680e87 GIT binary patch literal 743 zcmV<D0vP>ANk%w1VP*gn0K@<QF;I(stl5CB*|fOFwYbQ+&*!_)=e^PB%G>43-t^Ai z=+EHv(BA0M;px)h^4Qwn+UE1$^#9`Y|L6Gs>G%KX`Tp(g?d|aK@9*&N@bK~V`Stkw z`~3X?0000000000A^8Le0012TEC2ui0A>Ib000I5AR&%qNpwM~u55s|LYuy_OxNs< zs~zY6z~EyLECLS!gmT%qG?q(4z(_?>jYz1np?PYhnXov+8HarYhk6asK-Ows657}R zHeP4|u5Q2KautGu6&!?ua$0qFc}oFiWB_H5X>bsB8-HsYb6a)*j9Pn^n3{0`hlP@< zoOGX|dKR)4k)UO>795p*ubF_Ii=d!*dZfa>n*kHc6RNfq%oDAi!o!ULv$evvvbt=q z!<y5<lE-<Y4wuz;;sFxx6ddau6z>w_ukzN8vfBER8M+ZjkibE{V-5)7<3Owq!*c`; zZbPWh-MfDn?JaD$;UPa-KQ4gufk9xzjvEsH8f2I-!88O4VlIiPK+j2*1yQ!-6d}Sr z9};~22pZv~0tPje(2RwvX;WPU3#y5_CaO`SGi5rWIyGWfmlo}b9ec0S(WEf7DhXhs zEr}g)<I0^&cZbuvCcU<ly7#4)ziYYfty+<+;ftLB|HX#aDOA0Jt(sN4bSvb`U=JHM zN?9!e#$<em49%fru7Npmu1r}mE85C|Q?p*ZGeFOu9D?E|diAwu&=|J`JiTCnL|X`p zZ+zmA*xKU9%MEj&JZx}V8s{`;j`Cc#f3}97{<aR81AG(rttDU0JSTh3wpGYZ4Y~Ty zW-#X8m9Cemm*m{{nK9w~atKBT0s{_YENej`&m?B>*B?84_(hI$j_{$5d8e?lN`kJK zBMKyBIOvUrZdB+O0*hdnA&RD)$4M%Mu(D!{jjVM=5f2csV-N)-wnZ0z1^FWoMjq)y ZkbiNJBLYFXC1qVT#6abhSh5fT06W`UZ>azP literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/spinner.gif b/resources/ext-theme-classic/images/form/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e323bf0b68433bf86df2bd885c11a607a0c8b9b GIT binary patch literal 1975 zcmeH``%_bQ8i!8^kRZ?+paC^F0TB@qxoJ}n8&DxEbjIiwT<^AsG*V28QY%%#&=3#{ zREOe<Hq@#Vfq@kjR@8)Bk&A|lLO>x2AqnAPZYLx;C+EBHN9=EX<}=ScKfg0?d_o-U zv*T$H8Cry(&^=een8o4D;)s1$w=V6US1;5`F4jpd)k$*eB~8tLJ!<Z5d98XXRy`X~ z_l!^Xj4OM`l_QeLzIV!3?^Tj<>8lC#>j`!51l&7e5>Kf6CXD@)##fWZLFvqEsZlI7 zh^59snPy0)5zCBX89Xf049c_vGQ*%uKOlpLWZGf5W=O6dmg|P5OmC)^yf~tmd#iv) zrs2`0DPf7yIHuG~l%_GIaa?H_QyIrprgtjC{QUgF!or7Tv>&v~%<AAtBaj+_+z50! zoeTzY7)-%Huh%P<!UPNk!?X#gOh9b{%0-}s&8kJ9gU#w?BQuM@2*WBf(3udu$*M5} zwFS&ruo(-`Sb$*>nYDnqrM6-kE10zcquDxV1+dvVzib<9v6(EW$zofypjNBZga8YI zS`eEB!K?^sLIHvxRs=Jnz=~oBYC}*AMNzX2peSas0jmulOKrn!%U}owPz=~GfMMWo z{!bV1vDo7v2tYy563agU5dq{$q%az!moE|B0uOa-g)i_c*R5qxnZB_+uTLWTx(AN$ z<`Z|sqED*-NZ9GWFRVrYmG%C5`AAQyLMY6?NsIOf&2vAA$A=y6aw+29%e%gw>3cY} zN%e($%6{4{?KS?J2VW>7T3ByNsvI`86?MuS3Pu~US9|9Q%j<~S@T2_nUXv*A;qjOM zj=pKit$2~!Z-2nuv7ur&YbN&Gn(u=TKRr|!f!hU%lj{$Xn@3xJD5%7Jm(9-R_;SWc z8Fmnnnxe}a2;R;m_qQ}1ZBJW43P|k=@fyltK1iEyp3kFpbNz6BP%cDI_=Pa=kopts z@u}3MAZzOU3TYdT4^Bp3Uch~jJo)}befgD~;1k5Hp7iv-oM7p`D@Xh9wQ{JCTUC6P z+(|$nL3T0TM3=XM_ZM+OCZ0>JARmFwxs3eA@rbM*JLk5yI@!aI<uiHF_)W}L9%M~H z6%UJH3qSsxNSpLAcr(_W^*$4_lhO`{9-@RBE4&=ObP@jMVs+i);E>@ho+^p?=wGP> z*5<~14{qQ6?jN~~s_C+XV2R=y6N5S^_O$!)Zg@MokU~f4?;U+ot5TuU3N4R?PbIZE zl53a+tFx{i3;4ZD_NR(<0dt}YxHV_(-Oe;^6jJw{*|@=*L1C(^3WE>4E8eQ%@YnAA z<G(d4BVK_<y5p)2X_t3q$DY}`mcg22d*Km*$Uzv#7BzOpv7x%h@|sf*pQQ=PNpUn$ zyw8s`=KLecUgT6mJ2@w)vGeyD|J;b%2UR~iXGk-h0<TLK9M=y=ZDAKpubFPu_8|4o z77m>6ASH&7G{QtGr=j}P%&ZpYxI3wo;gOP|>-0KV+t}iCZ#?uV+SR*7n7?g~{hW|L zx8<3ib5er{?_SI9GvCgr{7XG(ZoD=Be3Smgrjd+?#epRhBQDglmEGp-{B3xRUHuqq z_`I+u+|jF5%Ja@_Ers76{@S(D!E?WuEJ<5a@aXNKoc`=lucW7&ACDbKeDcKq&V_7= z5(h~3H#4`9RFyFS%@D!wOrvT|G$WGk>BkNUyi@cGiy|-DIYtwdCSJ^SOHx$LQ1_qv z2Yqc)K<E#DmdCF;R%s_y`(Nf=(&Aj{_5KPLM|>>mM$UgkeuDI#^r(d|^$Q4r6|Kwv z<n{{f-7M~Y*>-K3+sAi{Uv7>UWQo_ud#_N8YpMKgr6sXf+D~*JEhbc-#tI&Y%63>- z%qrlyfz0UkwBE5plBag)y$Uv6yHRqYIrbKr*5I(cw4JRGa0!p8pBuvkoFFfeQ?fRX zh2s)Mr9Ah6`!4Iyt1sKaZ@aGA;1rVY;}L)-26U|C-N?)P=&YLix?4nu8uod9J$QJv z!Jgz8ZST60TTPCj4HSOM*oAW&;BAQH@Ph;8&ZjHv1Jokkrx6_~Kl68m1#t>^)vLa4 zN~eTbg~jnnQ@C1UXH1jKB{?I1wXCfxpio!BGvleajd>2Jtd#!_@9SwHI9Akd_N|UB t9+NZTu$Z#)3<WNzFd;EA>}Xk~-$Ba8#=V)fUwM3XH!vlkF&BcO{s)2W<pcl# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/text-bg.gif b/resources/ext-theme-classic/images/form/text-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4179607cc1e9486dd6fcc8467c79b5b41dbf4f76 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger-rtl.gif b/resources/ext-theme-classic/images/form/trigger-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4037892bfdedfd19b381c8fb8332a8ee7b87fb36 GIT binary patch literal 1817 zcmeIx{Xf$Q0KoB09*Tv=MUuAkpp~ae4^$XMNqM@u%Io5KT`$)I!j<G|o~oCJN?n($ z?o4tiVJg~67$J>pHe;(j*@Ka>&Awmze)sUb`XlbQd;bZa*Xt9pXZO}^$tO^*sBtIM z8|K7^Pl`+Rye6h>K!!9hr7RX}SgP@lDKQw$at+i>eZMiTRHM;Qm@@X5wvj1gNoFTu z<SWG-(#Vt=O=h)PJt)@A%*?3gVA_CUdV0EbRJkFpR0$zNLqlvfo5SI7xm*wg0mw8m zGSb43@pwFj#1s%;CIyiJkq$B;Mx(J;WME4sIZ|LysMLaRp8(|Z`5R+P0X_V(Z>(DY z!A7${ATSsVw88O4mUK`8ssa7$0Yw8#IyE&Vm_@j9kUlj2QK-}aa4U17dw5c>*Fy%Q z1~dYYxp!0rKyY*4*rxchR-Td}1YR*@AY_sN$dFXemI6jIGNV?TOePqH#{i^@GePHk z(Hl%tT1ccrL?ZE^aH5klF)RmFD%GGAh9F1^Aj2|HK8Jutgg34ii^YSYiGYObjL(V* z?cAtb)y$E96zf13;V4W(p-?K71|*aXE0OUzL<ayGJrWRqohdVFwOW<}Vabi$31oyP z(&=>H694Z%E`WzD(Y7cAwI21=w<l2Z%_zj%HIhQ6TOpQSiSH>@q(Xa7LZKH6-(8IH z{V9PezFBkw7gp@d^vvtK?G=9u)A789ad&0>hwvqtivByknJtOxro6$*kUZOpBngRC z9a(P6?Az4Ae7L9DZCPMw{&3w7O+IJtWzs9jNk#i_?mf5e(A}`Uz02-3*K=R^x~Qok zuNnkz!j>xqj8~0^sr%RHmi3=kUhTT(w9agIDD_J3P0uI~x2orIM#YlKno`;ed6hG< z#3TC1#zQpsxHMh{KEQ@sAMel|5)@VH`qF>2C;C$so7bE+F8u4FvRHbCxcpf8gU$@m zzSztZaehgOHM{QE-5q&WcAHmanSb}n7~iMY2$2t7p4By_TUCec0s9}fUzi2i2dEiE zL_2Tq7;({MR9r`8&J@i?w0}F99_o^d>mb<`P&-f-xmk3yTUe|n%!v@0(!KOxVlB}r zI3{^9W{cn1d6-O!as@^kEyiD4aVup-F=4;o6_?ca_+-0FFVm~sQ?vbhioM%hkKf*8 zO$l)c!<6S0VKdH33YR2ob6&V9DYo;Ez|)5<7AK|tYUzmIfZDYzreglPMR|E^SO0n9 z;hwITaL1-A<=B%=Kii$sJz0Gp+qPtl1)+cKss%yeudlkftiV;dT?~I+fU*^n!kl;G zk_&3)kCF-(#by&i&_umok+s<aCk}OO$|2L8ch09jc}y<e`}9fe)2AW!@BWd5*I)z7 zt(&$z<4@K#4-vl9(|kgR3rD%AUhGjHbVN%)dQK<x`wIWA+RgpyUEfLnrkq4uB{0#? z9`X61R_fxY2Ac9IW19M)4X3utcfWrcKd)V#+B(~F^2uBM;v{cd=lFd+Si<_y-QCWa zuj#!@Evw#P;`+(qj<__6Uzd)ENke-Stl!YLx*D_L@mkq~Opk2K{0NW0@z&?9-lx)M z7~Feg-B1qhVee2>rfml&AsFA|v?pc<@L_#aa@ISDKn6GmkMG$0*z!?*3!bE_YT+k3 zsQ^~wZNE-I_6-sd5@tv3IEPIteG4#r8BsO@UqgL>IDZ}q{Pc^H#RY!i#@wx=>Lcqq z6%Wo&)5gjwqq8OFl042S%Yt`8lXrTL!b<FI$IhvjBdI~kS_gajbnD!7&@`>CEl^em zr{>OZ^T|eS{}zYslXZbOla6x;$yIhbIGjfhpFi-n*}Blztd||D%t6n4)M$pM?)zqg zd?yOQplfv43F%8_+LXXtdplRn78>D*c7xpEGE&V)EugkprbeSRo*uAkN-);l@3MW? zXUnw}Z5ZqHY&#hl?OPk%B)2Cmm62`mu5{JenBP2CR-w075N#VMMLxL_l!XN<=wI)! Bs@DJj literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger-square-rtl.gif b/resources/ext-theme-classic/images/form/trigger-square-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b23d1838b617143cb18439a173af5d83498f627 GIT binary patch literal 1798 zcmeH``#X~h0D!;Un31HL$~mnl73r#+r#KTLr$U_4lQP|@SXWXxOmdexrHjg>Q<0c* zkDAFd*S6W*+s!v)!iIgb%eQ^!oWJ7ya^64TeV^B7&u-W4;imx`V1x>M;>g<uW%2L( z%Q@0cDN@P-xm<2HIHiY;n*uT_Yg(qJrnVf&9Md6O$qa93x{M>GbEL9aq>KZy#VVyz zIXOA0P$+6UWqdv#HW<6Qx_CUEa#lC0MK&MEtnVA`>FKFzm-hDdLRv$Ae}B8g0IHEr zk*Zaou4o-%iSz>l11>>X(`p@0G6uu&mcUG{0bvVA`5**obj<>-Kp@b;#&#hjfe^tA zGCn>IX^l!qGX?2Nx!{x<hP1lsc4=eRh(@E~fsk5j=owbmbL3h*T-Pbv8kAMvKl)8L z%IceF?jGv`HDz3|vUP|pQ4c|gLaCgXm@pU&un`fdkiOvwwGI)9#N*T2M*fd(shSPy zD*3}8gtUK`iN#{JQ0@|(^-Zi&!-z|8wnlGg;>+10xmK$ko<%?q>>gI@bUG$q-an$@ z%M3!HP(D4|J&JH;$jB_>5|rH|N2aHzRVvk#2H_6F94U<a&wpgV3HXP9UjXn%U?JYt zmrf(0@blM&w$KZjQmpL!&c7ukHD}mtiL^?f6|(LU=i%|B53gGPM7iDx?GIelo?{o- zW?w{3?96k$>}*A$y<z8*=6-#acK-~g&<(dWq^+WeXX2Umw4~@`@xDUeq}>nwtk3o2 z`{kz}t$X;6N;u0aK6=E1kyK3q+inFMEFP?l6%mw->N3%npU13!rxeg7O{p936h=)s z$g;$;LoI4IpFmk}J}2xrOg;I8;FMZLZuU#&zV^>pL@IE>*=;>rb7%c0Xyj#S80$sD zpgK+DAUtW}9Ew&BI(TLr12E>9xJ8e5q(pfD=|9N6Vqzk8pY6o=GNaG)@YB0nmt5$G zX~<rwS5JyW8ND81)J&(%_QB<M!_bDQ;pdNz?IDC-OvYV$b`QX8RG}~!vu7((aEI_Y zo|eH_E|coRxrn{J9_!(4>DdsFWbIN<x|6o%Gp9RwNmL6dW%+8Wp;YwQ0`G+pZ_8;G zaV<c>(um*!?=*+kHOKEeo6vx{0mqbLY6z)Cj0+&-FmnTQ$g3<5-nVMb-SmqjDRbBP z71&gF*Lz*LYp-ZeJwEZ8$gqsfULmC(4q4k|6PtToMvW+qIFYwsNE@9)sX>LK&FfIC zm*}@-`2sK43iHbBs}eIWC}bT8Me^l(nJ%|iHZCoS=XlIF9smO6e?5sJ6uqIPM>dsi zyUlGXG*?@hlojU2MZPO3)<u>O=;D%(rxt{tns;hvI~7=Y(vfL(xrQEL;Y{CjyQ*+e z00T>;wH3W1?j<`{4P5$h;f*9a?>*os&5I^}F)>g5?D*hDR9(@ow$e|yH33YfMNFWV zx%ZVuB@<01mpA`LlAz~1lghs~+u(Q7>rC^GkeZ2S>MydEhdCvfZDfU-F1|qt^y%1` zk?Gv}Q^mOtXglnB75<tgoW=1l2N+#@G0NME{q4D1ft7bVyx90JJD@IqAGb>2pCsE* zH{nE9U-+ShnQnK)mN`iIa&*^sietl7>#+0tDkoc47vAt0Ts`RKB8*GQy4H8yc0Z{b zgFLUSC7dK`r4J6hNEF9KcWP>n?<~D4OLlbD4c(j-T$h_&rs>8?s=uLRv@LGyuob;g z`UyH~KQx-oj@K(H9qEnAuZyE$lUkO0B(`I_0-kA2igHz)*nq%Lrz4r6{vM-fKylBw zj{(w0(MGK#W&bS*_e}9wJMhN_L@hrjH0l+-2&5Yak$8AU|HAlmn>$kAAEO7u1}4ui zrcoOc1j}gSHhm0~FC~HphM^o?6HIsI#N+LWxMi`8g0(qUZ0+++e+^;IIY>`-@Cqkj I(7=wr0UtuAbN~PV literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger-square.gif b/resources/ext-theme-classic/images/form/trigger-square.gif new file mode 100644 index 0000000000000000000000000000000000000000..3004ec589026c038e7d056e2b99e3a877d1ecd50 GIT binary patch literal 1810 zcmeH`=~I#k0Eb@@(r`m7uUt*s$}CGwv#`U(3p3rqV|JbGJ~p>wuw%A$t1UBIwalz( z+{&#$%ZT+L@5&Oi)(njo!2=aJUO-TkLqNb6-<{omV!!O~!}Il-d1iizNhCtlp<{qI zFbe>0K=r2)<>eaTOHke`M`}Tc$K&-w`Z;)h1NmlC>qos_ACXo(VMBP*8NSR=2g;eC zTse!>fe=?>)ai87)6-h5_EoP^AP~Uz`M$nBKA*3fwW+K~cv^AWkZNFHpqV2d92_)R z?LwiDBeg?jq*rY07MUBnWnJRA;o;%P^jikAjW3;mVK^eS*lI_(V=4h;GFfaNL{^bV zWP|59V<xEy5zQbPjmBi1*O@GOldYBq>CLdoYHQ)h*?r>{i-ixF%vSq=!rTU`t#k0} zUggI0TWvzs=P^~+(A0<ii9X0u$Ag->Wn8IQW<s<&-PF{S-EN2H5wQ^&QcRg`h*&Jq z7_4l;WWU_Zg=|d%1!O`vqe_WH!W~mbX59KLF`8i{GNZ&YXYUlKxni}|YE{f45Crur z%r={?L!cIpTLen`*w~obFx#&}cuHh^7KuzR8BikzgTZJt>MaOQ0fTZF_<#RVfdDJ| zU-P<u_|GQ*X9VzY_T9mx5*?hEuHE~QN$V_dTe0&LomTPTrgvlzk@d2&>$Wo*?VVKr zv>QMX8JhcNpY6P}`bdd8lUmhVPVfpMuo|9opEw=-v~3MQ=RHRG1nv9Oc-)Z|m)zHr z)TI1eNurS+6-EBZuS;&Cc#vt;!iFD%gK}8SH6tyq?@1m&3uTYPa>Im(Gk9&3h6-_B zp3<trU~o%<_xB934?IBmB!9b(n5W>}k4Vn(P0zi~{h{VkGnsuu#lr^Ct719}PhhL} zwJTGMKb;z>Igsvlx}rs~`R#5PcR8;)iR<afVxf-27!<v!mBg$0Xxx%BU`9Lc*cL1; zVz>vvM|Jk(+(lJoch!ov6ixFnDlj01<hg7KL(m?2=p9ZcyOZ@e<GW0J*Rq9SK%9SA zSSf4S+04@)Jg{<Ng4_C)IcUE`!ceSRhP>1<B~(C-UldxJDk}=5W(EA_b5<2l_!X9# z;BlOOhx)~Zj}ofS@eJB^&y^1gD{hdQ2}@nK?FA3!WfJHTOp1X@#IA{t$-76`kreBm zS%ts5H2UbrT(>>WQkv_op8RKJdoL^uEJJCSo!-%b_pjdzFFrJmJ5u%l|L{a0h$@c| zQG<Lbg!{xi3X4Xsz|yH5?(wi&XXV28I>*K7nT$MuxPuq(<iAqK_IYs`j9HonAgQ@P z*<r?-=a2K&GJs7+AChZH;82|RTk}rF3p(QygHiX_mS7jKo=jSt=9x-r1lQs_n&X(# zj;al<VO?$`lwhI*CIyJCzx^89fmVI~p3)*dzc%ER0?X`p7Yv}PnOAjhw6D~)<tN_w zwS8F!tlBtw+AE=v9PfqOS`94lKEg!1hlEK{?#V}sH?T3QCqvp?ZnmB2@-J9d4+OsV zJ?FPq!%pxE=cLrX4qROv{u)(`H-hIahq}NW!2qi-d9^;@Yj@cC$nI4U(sOOZ<VCrB z^2xW206KsDrsY?30cK&w%&Df1Oc%F~k<$g_*wHh=QzoyZoJBxCMyzF@AGrY4Y#z!g zc$6qTJX2FE{yOvzHdLAz^2>trliLXcs$F;z<g$knB`qx21&Gy@k|@ykX{~Ld`W*Sy zczPUuPSZFT9jw`ZE#!g}C79ki)j+|+y7yk~?8#QGAKTEgSqo2fN7T$s7j4b{b*90G zYB!JmoDCRSUBXxv`S01$MxOSY?J`-pHrgt@7}{=@bdJr>O;`Hcjg#WrSFHN-C$kgd zQHVYJk}Y{TLeFA3E+FTQu8@r5a-tocYEMo=ei(-!z!|5@yEuY}*X6J=)3sNTi&Up} Wr&xDc=v65PKOA33bU>qlt$zauvnrPW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger-tpl-rtl.gif b/resources/ext-theme-classic/images/form/trigger-tpl-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e766e47c7680779ccec37cfc72bf33c9d48cec1 GIT binary patch literal 845 zcmV-T1G4-_Nk%v~VP*gr0HrqoK>t8~t=YA>$ga@iuF>PK(B!nq;<n4=xy|Oe&*!kv z<gw7?yU^*;(b3Y<($mw^)YR10*4Ee8*VozK+1c6J+S=XS-OAhM#ohVG-}}kk_RHS& z&ENFT;PlJk{mtb6(c$yc;_}tw@!j+P-}L|N?CkCB?e6aG@9*#7_5b7c|K;)d=J)^T z`Ty$r|M2ke@$vEW_4W4l_WJtz`}_O*{Qms?{{R2~|NsC0|NsC0|NsC0|NsC0|NsC0 z|NsC0EC2ui0A>If000L5K!9LKEE)xXfO5%f29nOG5-N34tIR7_DVW&4;IKH5sF}~` zH2K1AyWixr937v}*YA8=@P+yRfPeuvHX??Hh=>7tj2DB2iIIkbH!hZ!n3#)=c>*zk zpn^A&q??>>gQSv!nXQ_qZvr$gw6(UkgCV-RyuGHdjyJu-yn`*r$jQpTu(Bx6(9zO^ zAl25_*vzNY*xlBHEaBqg<l3CFC+X_z?1LTe@bU8IjqdXI@PjJ*{Qds)jL@+gsBRF4 zg9sBU1gOWL!iNY4rI<*uqD6+CXqec@v7^U98$ya4NfINR8zfVX97Lj}%a<@sx)Cs= zgw2~ca}LtLv#0*gpEBF*{7JOupb<!uDqR|sjQ|-IqDq}gHNXl3ShH%~8ejl{uVBN9 zwYs&eR;w7&s$I*rtJt?;pH`Slx2|2Q2lDFO%eU)*zkmY^#>=;`UaJ`rD_+dlui(dk zpHi4ixw2)e2r_Hl%-J#I$Cx>b)@;>->C>oFd;T2wsf5?CW6QS6ptkMXxL33OOB=Uu z+g3jaA5Ofu?%hu#C|}OJdGFu8kF$Ob{dVx;*oRC1{1k%s@8H8zuU>mQ<niRMXUA^- z@zV$J<IA6qzIxXJ`19-EUmv>q^~Bw`-+=i&<-mamCa7S4zjdX+gAhh2A%oGa03dq< zNT^|iPjofl;fElGNMUXREMVe^D5f}~brxP2V2LTlcw&bk*7)Iyz`-bEj5wCpqKm?H zwWEwQ+E`<c3<x=-iYt(p+mAphx#Wy87-=JtQck%5mQcEw<&;HQd1I4K=BVX~Tmq?` Xj#`E(W&>EVIc1t^e(>dzK>z?dfe8T< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger-tpl.gif b/resources/ext-theme-classic/images/form/trigger-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3701a383107e090fe25d3fb8d63aaa9290435e9 GIT binary patch literal 1487 zcmeH`{ZrC+0DwPCBIojs3o|_0?P^-#Ox&%!R?e}@xx}{YYR;I~>N*jn-Qn&=-p-KA zeA(%=S((N$6_|l9fQC+Hxi9#N<V0|!DDo;QATLuW@#Q=FBlcU*AMpI}+&y2UrJnrw z8U<iMIRHeM$n2Qu?j04Wt)fY*SZ$LkEj=omY}_uJSd^%3ooZX3dU<kkQlrsmwc4qv zDV<LDVuu;y%*>2luQwPBW3%=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_<oc^QKjK^PfQl2RzZd~MlttEeXsxF7MpKcxFq@N*H^cAi; z_RTVKz%$nBq3=KIm6!*LHm-!SxSiIKyUyG7=VV<AgSSGm=Ch;ll@m>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(DJsR0TJCw1<X|aBKI;1$bYY=wBotd_9!AJDN!$cTw6yH)*_Oc9Ifp=W6Od)S?yU+ zyHuA?E0-vQxx!z^@||KSV+oQBM$%kuJhA}ldY<Tv6Um0d@Zw^W$<;m1n1*`h7|vr| z9C9zzYpbKhOJ#1-u|~@yXS_`R(+7k<OsDkjJ~#KBwm+RrI-!4I__X+`|8S51SsiSb zbSsDhibYg{_vx-r!wMj7i;Di&?)T%ogKJ^v4(a{@wyz&2p8XJduVjumbW>C%R+wAP Mbv*YluxN1lKj3usvH$=8 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/form/trigger.gif b/resources/ext-theme-classic/images/form/trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6cba375ae3a96c87639a5b3034d204953d1db14 GIT binary patch literal 1816 zcmeH`_ft~`0DvC>l)V*M8qq2uh!jyON)b6kq!482iD+?8gcdhyFlbZ|=|RDBw1|nK zYy=g-LKp%@NJ7F0kj2X&VI?8&k(c$_{t^AH-#_r(eRtok-4Q`Qq@Dnl0SotmX1et2 znD}NDyN)jG6Qb30kilRKf(n0Ju2yFdDUimGJpp_36beNxUC5kJ*3g9v!Msd^{)2b{ zt)YWDy+JOQ)A*{nxjFfQrm0UnJ3HGlGWq@9yh#Kd7#LtOnJgA-XlMwAVF=L=4-dbm z3fXKnRiF=ye+a^8A5VqoQJqfL&C@akG8PEYxRXj))60QJM@IwV@*uUQp?9K-gJ^UH z4u_-FYMW@18U{!cz;a0asZU(Z0H>#?IrHd{2&N23`ni(|NYg@>b`8qZYBi$ODPSFh z7`jJhAVkyHJFzMLVGDbb%7s2qg)pKQK<EIdW`dB;fX>O~dc9tw(M&*S2TMv}O{ul| zX(hr_p*$X+#+A0Sq=O=OW@d&4Y7hhgA#_j(ixyB=hq5JVKA%tHNdpt|spDd)a$!U? z)5sF_^Hs10Wr_7%E*AvBz=Vf`lc;0?RY8zKjRwZ&(}g;vQppgb43Ta~iVm}RDwPWO zpZ~tVO2otn0PX`m|Em6d0x&}XXEXQ6TK?^DjDz>V9vskq*Um8{ZzSEb>&{ZYsD`$> zm)(zuOII)3T~F#=j=_{4?5+PUs&M0;zw%rhk5ixe#BCnweRnc8-_pj+BdVzUj`_L_ z?<KefDg7m8b>#D?-(@DGs1nWi=zJ{hbxhrf&%I9P;z^0j13zsoCgUyB!LQG$M=6Bn zEAz4?W0%OlXZ*aUKJ;U)pd(AW$gbc;9oStk74bN_sb181!*oCQpv$^Dw9=iqU&fOF zA~XHNGjV!qu8eunzbD^*Rqi>fhV#@l+mqU6##_(wB0iO=C7ZkUxySYgSDd!7KA4`t z06t~PYMpC;jw9vdJDi-&MA7~e!G~Qkj#U=LMSSMXfRx;YLuK16N&BjCr(TdvP5rdc zt{pce<PV3gr@f%;aL&TE;VlUt+W<^fCdJ70Vw_^9qj%7$F1MuU@-W9AaVwWvZP}P% zZ1rntxu@05(>*VU*awki_c3{bJ8r)Ojoe=08|_7OJCv7k<iYy)_g3e5n{Vv2bBUb9 zIy;6urWB_5gc@7#FT#;+5{vO&#rr*s!iiR)af_WiF&W{7$(NAhkB<)Eo$SLa?MZ|K z3G8;)E5%n|5zf@#$6KUrZt5tzUhcmVWAnDIyDYe%7O)8lPc?Da9Qpun9l6Zj^p%Af zHpe#p6yFH5Jg4sMV%KO?K(I44!@qg;?3%^fa*{<sN6qOVML8jcq&RCs{^N<PqPpI7 zs<Lqid)_+TCr;#$9-T}eugy&Eat_Em(_wWYfiYuFUWyAf^(dFEtMo`HO{<dJbenxG zd@^?ajh{*zwzAz}{k>K{Qgd2!MVLiRi_8Mw-eFr<mt(P~z(~<ioK~t>w8P7v;1u9x z-}%LDSypYcB`tY<ug5KSWsh6QllE@`lI&gBE5aS~-`2d#tzV>g>w`BBcdlCOdCe)M zfedWoWIDv&Q{*sXo@UiMg$8V^0TPUXMplY3&fDl%31>0(Zc)nn!H}aK4fIu=z6)kv z-+Z?)QwhI?k0h;tqPxe!h}L*+mSyQBc8+_@CEm253L5eZ-+%~<K;J6@?~3GXk4G17 zH1UtF->}u_Mh*3<*qT_XkyU<3LnMio0A;#iIPH2>?PU+mB(da-cCK;QqFvtUd_gzW zR3d9re%ms)ZMLbqzj@+o@P+O3jjpA7c>MCCZPR2MtU)a-vAv->;ui9GR8TT!P_r-l zp)l_j*PxyKbA^6(s&E5fn9Jqqg!@{l99z5`bkz(Dw>Ii+vxSa)plM$yeY@T53FcuX yYq-rg40qd+b;#6`NHN(^kZr9xY#!i+x4U-1Xsrs12{a3_fn)Cim5HGM5d1gxR!0f| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif b/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..42719a0b230eedd79fb8eb271b0f149b0cf06359 GIT binary patch literal 207 zcmZ?wbhEHbWMz<J_`<+2bI*&Jdtc1j^J31P7fX-4T6X01x|6ThpMJCP^xLC1KOVpN z>EeU0cVB$J_wxJGcfX#!|MlwQ@Bjb*Ge9%~^%6pgKUo+V7z7z~fLa(pcDiu*Feq}! zcuY`e;1HCO5eN`qILN@yW*6b$;Mmf{%bO&^(cs9)&MK~O!()?T!(?^Syb_BEs_x9( cY;GP7363s}{A?U04hs%4u<#17u`pNz0D7ch761SM literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif b/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5dc9f3532f4909423780fb403aff42ae8cfaf50 GIT binary patch literal 100 zcmZ?wbhEHb<YEwI_{hL8bI*%cAAkS<{~yRu{K>+|z`(?y!vF*zc}EUY21XVMj{*gT zMpjNapA`a%hg*4=9co?}Jap+6<&L{DV`HLArz~$9%g@5a$2-(qr^(C=N^)SZ1^|$M BAy5DS literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif b/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f617211106a61dc94009a1c140df0231646bb02 GIT binary patch literal 206 zcmZ?wbhEHbWMz<J_`<+2bI*&Jdtc1j^J3Z2*XvHcUVrNK`qOWY-1u<x=EsW<zFvIz z_0q$ycVB$J`||s}m*1bh`}OSoujlW7z54k3|Ns9C5bZz{a3jT^EQ|~c!VEe<#S9=j zT{yfM7&$~V7A73z;AT^p!Ej)~;U-=-8;u(u6kWUd)O|7n6dV{h#6%@lWK2{!Hd#Vl jMq&bkQzHu-vp~XvjSrd``FPv}5-u${JkOq)iNP8G{F7(} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif b/resources/ext-theme-classic/images/grid-row-editor-buttons/grid-row-editor-buttons-default-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5dc9f3532f4909423780fb403aff42ae8cfaf50 GIT binary patch literal 100 zcmZ?wbhEHb<YEwI_{hL8bI*%cAAkS<{~yRu{K>+|z`(?y!vF*zc}EUY21XVMj{*gT zMpjNapA`a%hg*4=9co?}Jap+6<&L{DV`HLArz~$9%g@5a$2-(qr^(C=N^)SZ1^|$M BAy5DS literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/arrow-left-white.gif b/resources/ext-theme-classic/images/grid/arrow-left-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..63088f56e1c33fd23437ab00ef3e10570c4a57fa GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVC0bDXlQU?ViVMIiI|XhxRH&WjfKG)0LI-8@c;k- literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/arrow-right-white.gif b/resources/ext-theme-classic/images/grid/arrow-right-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9e06789044eacb8a695cd1df46449bcb2b9aa07 GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVB}zNNKj~OV&PY_IbpESp@o^1jfKG)0Ls}94FCWD literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/cell-special-bg.gif b/resources/ext-theme-classic/images/grid/cell-special-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d76ffbccdc66ff52433560c893ae9f3130152a2c GIT binary patch literal 1636 zcmZ?wbhEHbG-qaH`2L^a#fulOUcLJA<;$l}pFVu}@b2BaH*enj9|fZ!Ffu|w@h1x- z0|PsQ4g(N?@<jV+ju;s+Kk7^DA;96tz{(+FvETs%69>13PQn3)hIR%euQ?tY7ai@E uFwVMjV&mfD{R+-qGM<~3oSdu?yej78rlqH+8zi5a<GFd+*-4Cy4Aub5ZW*Ki literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/cell-special-bg.png b/resources/ext-theme-classic/images/grid/cell-special-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcc23679b745859c922462279904c807ab05582 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#E!3HEvmzt^pDVAa<&kznEsNqQI0P;BtJR*x3 z7`TN&n2}-D90{PHw5N+>2*=FiKfk`du4iLoYy1EIzwv>L6f@N#hBdp@_pFUkiUlfT N@O1TaS?83{1OR1r9kKub literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/cell-special-selected-bg.gif b/resources/ext-theme-classic/images/grid/cell-special-selected-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1da867ded3e87e53d6ac3823dd7fec84e4f3bd5 GIT binary patch literal 1640 zcmZ?wbhEHbG-qaH`2L^a)U6K}?tQrT?8}{JUv545as!ASeYy7N)0GFGF5UZd1}J;y z!?`;j{*Qvu5Ezajp!k!8k%57iL5BedKzX8lG)D}_cpmi=u_3_W%D~DY;V^-rk%^5@ z!=*vNv7wzuLL-1-!J?zx62@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!cbc5tmb38XM PJ3HH=_?3&K0E0CEWa1PZ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/cell-special-selected-bg.png b/resources/ext-theme-classic/images/grid/cell-special-selected-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..500c3bddb2ff42b2235619190fe461989f81559b GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#E!3HEvmzt^pDVAa<&kznEsNqQI0P;BtJR*x3 z7`TN&n2}-D90{PHmZytj2*=FiJ>UPl{{Nqchv)x)X9MQL^&HZA-{jAwB{Y0`_-RGf d!>WZz3|BlfrsWsL2Lg35c)I$ztaD0e0sylZCIkQg literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/col-move-bottom.gif b/resources/ext-theme-classic/images/grid/col-move-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc1e473ecc1a48f6d33d935f226588c495da4e05 GIT binary patch literal 868 zcmZ?wbhEHb<YeGvXlGzh@R*?Bu|OeUfdLRj0MQ16j0+A02OJ76I8<B+sJOuJpCO>( 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| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/col-move-top.gif b/resources/ext-theme-classic/images/grid/col-move-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..58ff32cc8fa2aa1be310b03bb2af77c1b77abe93 GIT binary patch literal 869 zcmZ?wbhEHb<YeGvXlGzB2v}ec0Yn=d5;izw0MUVff&&2+Ky)FX;sL{dhJc0#0Ubc} zA)(_!!h{bA6aE)Wcu+6{h&~i70HXg5EB-fZ_&))NcKly(;6KAC7!84;69S4qS(q6Z zxEORmP6p)(1`a0%QH=!(icQSyOsrlPCNMTPws0wBZ1~W?;KDAhU?QO~A%Uffn}KIT gMS>G68wVGIhem=U(^LUb4h;c?We$u2%uEc{03e(}^8f$< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/column-header-bg.gif b/resources/ext-theme-classic/images/grid/column-header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..dec6733f3f536a36239e9a3347128f486da6ae50 GIT binary patch literal 203 zcmZ?wbhEHbWMoia{=&fU<jJ$APoF=1_Tu^Tm(O3kdinD8%U5q+zkc)j&D*zc-@SeJ z{{8z8?>~I}`0>-nPoF{H%a^Y}@a@}oAo%g)=g*)2|NjRXf(t4BWMO1r5M$6`00NMm zE*u^V+9nzd3l<z~<`CA3Ik92k;dTLGHxB`YMMt|OjFaYkNI2NYDCOKG<GE?c$;o1x h9t{r~8ktzwI5-?UH!nLo+oJf@os*lFpKoBW1^`NKd!_&Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/column-header-over-bg.gif b/resources/ext-theme-classic/images/grid/column-header-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e15218db379dbf3a9ea9c3f5b4d132e56d807128 GIT binary patch literal 104 zcmZ?wbhEHbWMoia{>Z>^^TqGipa1^<{~yRu{K>+|z`(?y!vF*zc}EUQ24)rphYbr3 zHggDT#hlo%@NhdPyVD$xjf-5nne?;noY=Vdc)x-n*A$6OOHNMK2woL)a?{e&)7hAr G7_0#rkSHVo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/columns.gif b/resources/ext-theme-classic/images/grid/columns.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a82393e31768c22869778698613b2f5f2174a GIT binary patch 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<NJ!eeb~?@rosZ_>^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%)1K<H#MD=Q;qtN z@j#iWbGlaKqc0a5o;M5H6+Ku{x!EOf9*+xysMVGg{HzK!cQzc{!sI7rU90fGAaup) z>8vI{DjqJ<J}0Ub@<XCwq0Z^e8q7y_Bs4a$aBz#LSR^zwFfcMCDY!@oFjxZsc&oc! literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dd-insert-arrow-left.gif b/resources/ext-theme-classic/images/grid/dd-insert-arrow-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d923b2814e84f99e25731e3670ddca44b57ea4c GIT binary patch literal 299 zcmZ?wbh9u|6krfwxXQqwp0B1;qGMcTXw_iu)M4v6!8LHYPsIG7_+^o4>*BN5r{ru+ zE8dX<L=^`Mn)cVUo~iEM-`;Z^iYA@zoql#Q5KX((JLk$22wHSyE)cE0z7&o&-(Iuh z-p1RnZ~gxBi-D>@@h1x-1A`ia4#-rHpBUIY93~fd=t%XSSW=X!RXD?mhh^5u1eqRJ zra}V|4(7yC6`@KS8NXveD>;rxe2zT3&O@bf;od_Jstz(SGPv+_sRXDB26XrI_Bk?G F0|2KMVH*Gd literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dd-insert-arrow-left.png b/resources/ext-theme-classic/images/grid/dd-insert-arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc696781e6135d37b5bf2e98e46fd94f020c48d GIT binary patch literal 345 zcmV-f0jB<mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy>q$gGR5;6H z{Qv(y10{fofkH6I3@AO3$p*x`Nil#0jeqs;pT9Ds7{CaN1)$9r#n~kE{`~pF@bLXZ zhF?E_GyM7i!oL`P0x_8Wj$ni2F7#hzWPxfvDaI<Ur@*bm@aNwj1{rQSF#Y@QUm*U? z@cSPS|NR3M1JS=3R<B%(@B+};zyC1)Vfgj;7g*6BprYSk#lI0W)Bup&pZ`FyUw=@& zkhwGNyfB-H0S7ZD!^4*k8D77CgVos}uYolG`Td9C{=!F$jL0c5c2&qtph7vI2FDF) rJ5G=sjX=%1K+Ok<)r{hW5u6tQ<Dt8}dRo)T00000NkvXXu0mjf%~_cN literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dd-insert-arrow-right.gif b/resources/ext-theme-classic/images/grid/dd-insert-arrow-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d154db706aed7ec585f92f6f35743d47c5f5168 GIT binary patch literal 301 zcmZ?wbh9u|6krfwxXQp_QETSi;q5uWHKZ>naJo<A%uoo5TM_|83G-u8W+$hui_ck^ z0YY2TineD1QPq*6rZbft`&xUCcTPOjH~s8nAewh^=Auh;S6^QWN1Jc2*?Di%<;RzQ z{{G3pz))OST#}j#WB`F^wH=sd0g_@swg-bQ14nXxu3ln6K~Ab(N@7W3N@_`Ja!Gzs zadLi9s$Ozpaz?6NW^!VV9<n)#KUo+V7?c@wK&FBG#K7itU}AxXj#U4NB}Frrbj)ya zX|`DDr80q?Ik3S*>@X+Cm!COivwWT<1&XvJeYQNiErjd+Mbq870xT@Ntjs=&42%KF O-2R=tef=(u4AuZIk#dp% literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dd-insert-arrow-right.png b/resources/ext-theme-classic/images/grid/dd-insert-arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a1819238c6de8f9e50988f4151261fa6ba64ea GIT binary patch literal 349 zcmV-j0iyniP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy?@2^KR5;6H z{Qv(y10{fofkH6E3<#LzvD<5s6C2qE{QB|B=I8fcSCPdSL9tMJA`=`HfB*bt`1AV@ z!|z{z7=Hcy4b%X_zZiZ3F^HBFl4SVx>o>#A+qW*AYQLZl(!&BX$x7Ik;qO170ssEM z@$bKXf%rGW?|(r27bf<H;men=dRkd(C$CMrWzGV#8Ke-d8K~$tSn+QJ{TCtk>-TSv zD}TdX0CM*JhkLO)8|Y^+n~Q^sK~hqR;q|N647YFGy>NTZJsWr!5CaSfwJm@a><8NX v2&h?|<XE`SfAs`V^Fg3%bunULgy#hS2<N~z-E6GT00000NkvXXu0mjfI|-VZ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dirty-rtl.gif b/resources/ext-theme-classic/images/grid/dirty-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..22fa12a11471ac70de3795f02264edfe5e77e8c7 GIT binary patch literal 56 zcmZ?wbhEHb<YM4rXkcVGz`*eT|9{1wER0+Xj0`#qKmd|qVB+uLomtLxN6aN(seALi I4Gav{0Cuqr_W%F@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/dirty.gif b/resources/ext-theme-classic/images/grid/dirty.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f217a47959965037bdaacf23dbcbe800a59273f GIT binary patch literal 832 zcmZ?wbhEHb<YM4rXlGzJz`*eT|9^&2Fd70QG6WQVvM@6+Ff!<Xd=JVK3>>lyj2t2o f3la`CGVn;rtSCr4)W)vpHOFJ)qNAORj11NQ63h`c literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/done.gif b/resources/ext-theme-classic/images/grid/done.gif new file mode 100644 index 0000000000000000000000000000000000000000..a937cb22c84a2ac6ecfc12ae9681ab72ed83ca78 GIT binary patch literal 133 zcmZ?wbhEHb6krfwXl7towPL}<zP7ouCvV@ncJAy++qbTn(BHOd#r(qucV0Mmw7fK@ zrK$4&|Njgyp!k!8nSp_aK?fuNGJ}D|Xu`>p0*huu%~roJzC1V7qiQ)z(xVq;t8Q*e g@TwP&*%vbDj%DY0^FxMh_Sd^OqF)Bg<zTP|06#!B1^@s6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/drop-no.gif b/resources/ext-theme-classic/images/grid/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..31a332bf78624b183261a82046f3e09d10af2c12 GIT binary patch literal 947 zcmZ?wbhEHb6krfwXlGzp!@#nRoqGc}|3-e{&EnEqrRBHDEALd-+G}jK&)jOiwcSB` zr$f$ehuyu7`3Iefjysc_dLh5?W_R!H{)u;|&%8H#?vvGPp03~U`tXr=r_X%8edpWb z$3I@b{`LO-zu&+A|NqZ03PwX<5Ql)`PZpr-{xj%++z84O3>*^}7&&A#5)LvkG7IyS zOnBJr%r7CL!Q$}XP&==XoWqO@51m<Cn013BCTwVE<rfyKn_%#92`fJbOWFm7q6Md! zWONt=J}5RhO=nUsVA$}0xw*xG)#*pVg2uqv@+EvRRS6FMjh^gWQ$3AWJIo1^UDI<* mDD4ElviCe6%MFi?_DEaT%{g)5A$y0Ax=_vpg#$+#7_0#YYj80D literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/drop-yes.gif b/resources/ext-theme-classic/images/grid/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..926010e172a267419e420a4647973b3e1ee28926 GIT binary patch literal 860 zcmZ?wbhEHb6krfwXlGzhTA+OR?cx9b|1*q&(GVDUA)xq^1?cJj3_2jMgYpCehb03e zhm6OD1qYisgtc@e91b`&^2+M<NHi!qGcsuj<*X27aBY^im+R>;T<kPSR=B8!W8%`& K)AgB|7_0#`bsP-< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/footer-bg.gif b/resources/ext-theme-classic/images/grid/footer-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..126120f71eef89987818dcf64e6510ae83c8e18e GIT binary patch literal 834 zcmZ?wbhEHbWMq(JXlGz}`|9@lH+SE^x%d9<y$^36e0cZp)BDGtK0N*W@!6M;&%b_t z`StVbZ(rVg`||et*LUB)z5fA3-#`5P{_*GcPd|Tr{`K?A?_Xbk|N6!-3PwX<2!?>- zPZpr7|1;=-+z!eU3>@+d`VlJv8V|8>3M$wXTxdAR#L6ikV-V2L(7?dJ#=^p24FK}3 BP__U7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-blue-hd.gif b/resources/ext-theme-classic/images/grid/grid-blue-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..862094e6803f522712e4d193c7becd8e9b857dd3 GIT binary patch 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<p~B3DF#iS2?C6VnAv$HbOI(Y9Aso><=_zzU~q6?um%8<;zWG_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-blue-split.gif b/resources/ext-theme-classic/images/grid/grid-blue-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..5286f58f6f798184c3eeacba1352cfd39b9ae03e GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlG!Ub?iS7FpPrH5Ezjmp!kyo=<ojwIw0SJ@&p419|I$cfJecC NgH0U#Y#ba6)&Nl04Iuyk literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-hrow.gif b/resources/ext-theme-classic/images/grid/grid-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..637410420736482e521957d51d44f9da47f519de GIT binary patch literal 855 zcmZ?wbhEHbWMU9wXlG!^UvU5W_3L-<-o1D4-u?UcA3S*Q@ZrNpj~+dK{P@X}Cr_U~ zefI3x^XJcBym;~Q<;z#EUcG+(`pug+Z{NOs_wL>M_wPS^_`om<Mnho8hJfNv7NFbz zGw6VP0Ll{#93~8`91;c%42?{zJQ5ZK42(@IoFW<#8yXm!*?46vDn2kUwQvZkc+4<p QWNPISWda(Ypuk`a031t6sQ>@~ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-loading.gif b/resources/ext-theme-classic/images/grid/grid-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d112c54013e1e4c2f606e848352f08958134c46f GIT binary patch literal 701 zcmZ?wbhEHb6krfw_{6~Q|NsBg$>(oA`P8%SHjuGk&%@0ppYOTwO7TCppKD04vtxj( zk)8oFBLf42;y+oZ(#)I^h4Rdj3<Y;jHwEAPvdmNk_teB91rt33paN0f#FSKpq)G+H zti%eR{KOQ!%)GRG2F0H&oLoQ?bbuIWtpEc9voXi6JO2z$d1ebIb69am&SCePk;dt| z(eThNk(md#=_MRFRCqx*TEg<~GImP|9(J$n=N>>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<R%kOtz7_w&*nF7ZXl07j{QWH0i~{;CNmcul zQQO2fbHd_VyO(jcD)O)xy0j<C2(EH#+Hg^xIVmXiv#q>=g^pDJi6uprK3M%`#IdVL zUEAw<ipU3v&pwSjYGsELVv<6pw6^S&%ZPN+Jb%hTfLZRPjr?IXusK1Kuo?q&j>4e{ zmg0{~p6|Ie&p`6H%mYO|r)_gjg|As;$iv1hQk=MZgX#CFjEx2xI6HUG&(-w8Y7Wpj zcm93g6udbnG<Fu_yIX|?QxiJwCeFEQGOg9o?WlpsgoN4K7<pL^IS9-)Y&dl7+(g{Q z0Aqf2s?(J@n%CtxI1VfH9WUf#F*I0tYQwq!i9^8X3cIzGNue}JqG?{V-~<K+Yf!=g F0|5M};uQb@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-split.gif b/resources/ext-theme-classic/images/grid/grid-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..c76a16e95997a487ee9cd1675ecdd99bd2f37c17 GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlGzpvts7||Nj|A!DtAK$PiHc$pZBEe+C_p??HKjfrF2Mkww6x PV8OvA4t_Qc4hCxg>zoX) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid-vista-hd.gif b/resources/ext-theme-classic/images/grid/grid-vista-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0972638e8305d32d4a2419b3dd317f3c8fd3fe2 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJe){5xGZ#;uy>#l_<<sY{oVjrI?8R&6FI~TI`NqX7H!oeg zb@}@3`;VSHeDdt^vlq`^yn6BK&8s(W-@JSO{=>(QpFT5;g3%Bd$|0cmlLhGf{|q`H nPk{0S1BVoYrq2Wc#zV~Pyb=r?3JDC2Ol*7#9t#p29T=<uoNGWJ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid3-hd-btn-left.gif b/resources/ext-theme-classic/images/grid/grid3-hd-btn-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..a08458bf70c272f13b1d10844d414c30e4dee667 GIT binary patch literal 596 zcmZ?wbh9u|lwmMpSgOb%YTcsb+J5-f&!hMMAAj)w^rQc$p8Y@j`2U&b|1UiIf8o{t z%P;<4dj0>}%m3Hj{lD?*|E)Lw@4fwh<HP?uAOGL~{Qtp+|BpZYfB5zPv(NvZe*6FY z=l_>q|G)nB|Ml<x@BaM%`2YWx|Fi`<3_t+#3j^CfhY1B9B5f>lmK4pj5u3k2x%gC} zQ)ketOI4;yTfOqkxz};+ayE*n3C+G4U@rP^ivLSjYvKOC(|%^wWv6EZHs!ZuR7H0t zw-@*3_LomAoLoJ%bb62c+<Eiox=Sx!vUIV#+{#s}SGr5A->`ALyX@9&+qb%l?cTF@ zx4YEALx&H#iyl95^0>R?S;g}g6wfgUUcGqX8k4xVBE!A=42pM{1OyZrU%X^ge8wd5 z{_X?C4@~^up1)H3&LsR-_~XMrvY8GW826R3_IpI^*bvRpCe)`h!{TEMM;CXW#f=k& zEXRA@g*s#;la`!N<_TIAGxO7l#_0yh`)n31Sax={X}`#glbfGcom1v$;*yp6!qK?c zW3rrW(t?$jm;3hf%<$U!Dr8x}X0NTMM6<6gkKP&f^_S@?hK*q-r}1`|HQZXCb8+9* zs%>vW8B-5l+iESI6|=GS>#e=BufM#%u7X?IVvbp1;<04e=dC`b8y@b>)txQ-ChSwx TnIhZ6th^B>vFF^I7#OSp)*@_m literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid3-hd-btn.gif b/resources/ext-theme-classic/images/grid/grid3-hd-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..21126075e7397dede53d3032c199cc5dff20d9a1 GIT binary patch literal 1229 zcmZ?wbhEHblwmMpXlGy$wQf;zZ9jbL=h6HBk3aZ-`qBSW&;Fl%{Qu1J{}-P9zwqk+ z<rn`iz5ajg<^OB%{@-}@|JIxT_ul@$@!|iSkN@v~{{P^^|Hq&HKm7Xt+2{XHzx{vy z^Z(1Q|6hOm|N8g;cYpqW{Qv*Ue-L081*0J_C__N;CkxPB{~2^Zt^?%>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<C9XnM|V)86neW<kqqp@8-Sb+HLe@9#S| ztYX){&{+9d@!WjziUoUre}BtrG{b-YznVtYPp|LKk6+OApMmYid<Pbhj0cUZTrCHh zc+7SzaA0=Pc-SJym2#j}BCSHPMWifaVVgqHjfXArO*0mDD2GWjbxJLok<_Up_25y5 z!6u8v?b^q7Bywm@nz6XgJSbvur{k{`kNa%BEK)jb)GQB7(lwi@GDY3%rt(w?v6WBy d4YO80nrIaDQ)#+cm#6Yfmsy?4GZ+~etO4+$8211G literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid3-hrow-over.gif b/resources/ext-theme-classic/images/grid/grid3-hrow-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9c07af1347fc44dcabb1a9d22458deb195fd92b GIT binary patch literal 823 zcmZ?wbhEHbWMU9wXlGzpb>`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@93l*? Z95Nmo7Bnz$2y4ZhC{SczU}R*l1^^j55kLR{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid3-hrow.gif b/resources/ext-theme-classic/images/grid/grid3-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d459a304e0b224f8c28d6b7b585da7019d28cce GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/grid3-rowheader.gif b/resources/ext-theme-classic/images/grid/grid3-rowheader.gif new file mode 100644 index 0000000000000000000000000000000000000000..2799b45c6591f1db05c8c00bd1fd0c5c01f57614 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE79h#MpaUX6G7L;iE{qJ;0LYaF_y7O^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/group-by.gif b/resources/ext-theme-classic/images/grid/group-by.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6075bba2fd87519bce379df01d12cdbe67f255e GIT binary patch literal 917 zcmZ?wbhEHb6krfwXlGz>`0o(b_B3_s=d77u3+H|<U-YeZ`H${ZuUc0B?B4Ke!q(r@ zcK(^Q_wW1z{}vtkf8fA@3lBa#0HPNkz~KLfAOHUY(f|JpqhK@yhF}ON{$ybWIa>!r zfbs+bM-c-fhm6OD1qYj1`88rr6eKb<vdfqxY;bU7VqxPFkWhG_*wCgRT2)f8aEa$+ zQLO-pO2sEmoI3u~d^{bQd>U2cZFVdORzJ@!m~?8+%1KMTTg@3K$aq~=^PX>8{)(q7 acp2+dVHKAK1EYrP>l5}X$w&(@SOWm68Djnb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/group-collapse.gif b/resources/ext-theme-classic/images/grid/group-collapse.gif new file mode 100644 index 0000000000000000000000000000000000000000..c896868f5136d540fff81c50ae506338fc8efd45 GIT binary patch literal 861 zcmZ?wbhEHb<YeGv_|Cv!=#@NW>E1a&wD#E2t=CrWy|wq)v8^W_AG`GY%Ds=z-+zDo z`9BaajDpb+7>*&J1M(CoFEDU8F$nWWXgD}DFtD*1MC>SNWMbfww6b9cT-3zE%D|Dp qups$(52J*I&jbcWMg~T=X*LB$4NNTTTmmyV4>TN~&BnyUU=095_%Mk8 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/group-expand-sprite.gif b/resources/ext-theme-classic/images/grid/group-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c1653b48dbd2d4bb00886c379ba3a66813737c4 GIT binary patch literal 955 zcmZ?wbhEHb<YY);XlGzB^h$R6?=)rU-Z?<D_Sn*`*H-SmwfESuttTEI1A<G>uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$<p~Ck84S!EG9DWiI5u;0Xvi2iG&C@? z$aqY-(ZJZyA;cIGQc$SGz{btPAn|~q!E>?_tHlbAgvKT&29}T*1_wr_8B7v4Oad0D zH!!O=%UO7AS#fc($7HS8Q(IPEULLU6Yp&PURaaMg2<zqi5P0k|EiT;1;le~EkBKVH pOdgtLjox#NWAF8>6lV0F?{M|skyG2(-{0TB%q{1$Bh!Jw8USBOURwYF literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/group-expand.gif b/resources/ext-theme-classic/images/grid/group-expand.gif new file mode 100644 index 0000000000000000000000000000000000000000..26db3c0611f6c7213572a8a2acd260b7586e840e GIT binary patch literal 864 zcmZ?wbhEHb<YeGv_|Cv!=#@NW>E1a&wD#E2t=CrWy|wq)v8^W_AG`GY%Ds=z-+zDo z`9BaajDpb+7>*&J1M(CoFEDVpG6?fXXgD}DFtD*1MC>SNWMbeFXDaAmP;zGA5)xrh sXkcvUmp5licp%`w#KOYBQZR#op@~_OS)(Gdp~07d&Eb`afB=Iv0HA#@wg3PC literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hd-pop.gif b/resources/ext-theme-classic/images/grid/hd-pop.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb8ba79679eabb7811c3d9d1c86c43bcf67552cc GIT binary patch literal 839 zcmZ?wbhEHb<YM4tXlGzZOiXn6@4zq$MnhmkhJfNv7G?$pMg|>_??HKjfkTCXkweD9 mfT4kbgI~?WW5NQ*7JhN9o*xBDE*)ahRw)@D7aeL~um%9t9ucMh literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-asc.gif b/resources/ext-theme-classic/images/grid/hmenu-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..15058ff65c77891c87434d9981c0b1db3ac2fcac GIT binary patch literal 929 zcmZ?wbhEHb6krfw_|5<VnueB!mR`k{nodE<LCMuo+0}+YQw*b~SVm3p%AVqsz11sw zYf$ytpyItz)q8`Aj|Ej9tL|A^+_SZK%HHZJTa#OkRZqFrVyM_+sX4{cvd77Cij&h6 zub?SGQFD@$=Oky(DK1`GTs<edWlr^!rPVD<Tjp$SnX|TM>DDQ0x6WC+b?w$EOOH)i zdkpNBQDQU%=o$iwKUo+V82&TpfNTZj2?mZjhX0%`3L6p*GO_)SjX0q6&|Zu|OQPq2 zLZdSy1CvC`hxZOn9SjUU0zVEgwzBZ@NKFu!*x=B|WUIy!aDk~w?7xsqfWhU3{*5Nw zvlJSeSU5y&xu*%dNNhg5fXzQ4;^URXc7D5sTrv+$Rv#3Rneb0|V#tCvMn$_6j=*ov J&o?kw0|4Ucboc-O literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-desc.gif b/resources/ext-theme-classic/images/grid/hmenu-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f26b7c2fc5836850958f7f2b1fafd3988a988d7a GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-lock.gif b/resources/ext-theme-classic/images/grid/hmenu-lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..1596126108fd99fc56226b412c6749c55ad5402b GIT binary patch literal 955 zcmZ?wbhEHb6krfwXlG#X4~ou+bjZoeOV2FG$|=q-C@C(jDlf0eD{N@b6W`Inv#*zP ze=o<1{(yu1+=nJ`ADhB`dOG8|nG9#<aGjhbetACQiFpQR7qXvQ#&dTS!@boE_t!Ao zTE%s5tK^NX=J$4*KU&A|ax25jZ47UAFg(~S@_4({!~Mz+_p3eFrEz|l%Z&}5mo|hy zKP3M8nEd<GQr`|U{5-<&|1!h>s|^2dGCVn`{Pc*@>k~$=Pg%ddVgCO)!~fR||KBnE z|HJVAKg0iLR{x*dJ-;0I|GC%y_pblnMF0Qq{Qtk(|NlOXjV)~*Jzd>>6DCZaK7IO( z88c?ioVjUP%kt&RSFKvLYv;<HJGSoIw{OqhLoY7&{QtlD+O=ypZ{ECp`}V#2&;I{E z{Qv*a|NoEu|9|T7<Hv8_y!rp{$>-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( literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-lock.png b/resources/ext-theme-classic/images/grid/hmenu-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..8b81e7ff284100752e155dff383c18bd00107eee GIT binary patch literal 648 zcmV;30(bq1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000hbVXQnLvm$d zbZKvHAXI5>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^nd8hi<Tl$@MsV`dGb;Z+LM%m zQWYucK}8ROc#x`i@=(yMNUG4TnKb)rvb!_mGhUju+aL}zyvH~1ee>S;2Kdj#HUllo z8f~>&*KFH9Nwz?Ckui3oR;%3`NI(gPUDtho|G}f2_3e8bT8ASerBbE5)1bTYdcFQ| zZM?C8k+I47`6u~>51*b--<sMnefwrPox%|z#3~VA8rT!({MEUMi{5&CW_IrB`H2gy z_4tMgnoB$#%Z#H#?9mNm^#XG73uH4!x8#dRZ%LpvPFr8!95M^hF1s<>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<<?h2A*h2D^On>dA!cTgY+CR4-a*;u;!NrNF3LWTlP5a1_; iES|Z7@j-3=)A|j?vD&^)Yn&Va0000<MNUMnLSTaKlp4(d literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-unlock.gif b/resources/ext-theme-classic/images/grid/hmenu-unlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..af59cf92a4222e1cb044474c96507343dc07a3a9 GIT binary patch literal 971 zcmeH`YfF;>7>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 zfXC<aySlmr0>Ow7l;j1uOz`;`%xPF|1H(H=TQ-Al80O7c-*kEIp@ZM``Ch}Whn7a@ zE<NXmvCv~a;~T43c@1mtV13v35FUldILw(_{hxCFOv2^|*s{Tn4bYw$oi4yHfG$7} zY%RdHn?P?~*l|AUDckT=#Jr^m-*NODjk`|8zn-Q%)wl{60t~}W1aJp135bBv8cbFr z)*_w_+AeJ^G~jYW$S%Zi3;u3Lyo}h6zd8_ai^XD+Bqb7wR4SFpWPN>o{qiRYg+i%R z4h#&aR4TPvt<h*6D&D?S>$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@#!#g<nic7)16+TaeR~v#+SC^8R%vLv^@wrE}6hS@^iBv3s%Z<STJn V)*dNPl{y+D_hxx>0h@qxe*x=qGVcHY literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/hmenu-unlock.png b/resources/ext-theme-classic/images/grid/hmenu-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd5df34b70b94b708e862053ef4a634246acc8d GIT binary patch literal 697 zcmV;q0!ICbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000hbVXQnLvm$d zbZKvHAXI5>WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*g|-5GqRX(<T4_010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00I$7 zL_t(|+O<+kXcJKsJ#X@vX$DgzRtu)032sWn(2aDZF2s%9x$nx2E(Eh_#cah*ARsmy z7lH^8f(R~zx^@vzP!KFpsnQr*lbO+JW+t8A^S+5z(Aq4-3wPe*-E$A;o;$!l1{(#a z)oK%pqAWR%GdCCv+)k(SkaNCJsZ`cQT^dD@&*vZbzJEd2^*%+SP$<kxlJu-xF7F*l zP_Nf>wr!towOa3bz1}%hRS$Ze*UV<KIZe}Uj3j8cjcmVfu^<Ry)oS%csZ=s)l<S#H z28^*&yAp5?_PHyufh(MfYd_x&!)Ve7oN{WLfWYINvn!k*d(8Rld;YCx;Z5GXe5Sgr zZKjZpZDdw&;e@~@5=o293`v3fOM!Os`OCWps!y)HJ@2lBIRrB)Oiafo52;CQZ5jL1 zAC6iw9tr5;;sOuDP$-C6<Kp9QtmKQcDvE_MKu*Kc*5Erje5;H3nLDry51b(u?VT~+ zXf*E2vb=BmKX6v3L*>Xl27U>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- literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/invalid_line.gif b/resources/ext-theme-classic/images/grid/invalid_line.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb7e0f34d6231868ed2f80b6067be837e70cac44 GIT binary patch literal 815 zcmZ?wbhEHbWMN=tXlGzx_z#4mU^E0qXb33&WMKq(T?a&f@&p4150I4La9D7liGhiU G!5RR1hX@}4 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/loading.gif b/resources/ext-theme-classic/images/grid/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch 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<e5zgOcIlpc`kLa*!o;M_#F$wy(Jnw%^xoO{@do#FR1axvu?^Eg~=WXT$f%h ziRw+0<X~ye?)5wTu<&NHn6>&#9~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><M;PP#XNUM@C2hfJD#O#hF$!^x>+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+@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/mso-hd.gif b/resources/ext-theme-classic/images/grid/mso-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..669f3cf089a61580a9d1c7632a5b1309f8d0439a GIT binary patch literal 875 zcmZ?wbhEHbWMYtKXlGzpd-4Cei~rYO`oH1Q|BaXbZ@T<{^OgTwuKwS8_5ZeO|94#b zzw`S4UDyBbzVUz0&HsCE{@-`&|NdM558VEL<nI6D_y3=I@c-<i|K}h7zx4F~)#v|j zy!e0X)&IM%|37&9|MC0(45MH)1O|5qDE?#tI`BV(4#=6HJi)->!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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/nowait.gif b/resources/ext-theme-classic/images/grid/nowait.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c5862cd554d78f20683709d0b450b67f81bd24d GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-first-disabled.gif b/resources/ext-theme-classic/images/grid/page-first-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e02c419f5e73fc1ba5770df0448d44adf856288 GIT binary patch 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}<kpU%q_BiWMtYu3WWh z)!Mad*RNl{apT4<TefW7x^?^Z?K^ht*tv7(-o1PG?b~<q<jK>gPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L<lJUWMO7tU}ew&Sq{n*3>;Mq+#E6<8x|aFW_O<QBH=@mqkxW# z&>4e+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%( literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-first.gif b/resources/ext-theme-classic/images/grid/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..d84f41a91fca3a0ccc1107a78ffbf7b62c527afb GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7<Dr4v7XWj$&3aLMjUnCUi-QvQIma zcyIxyv@C1ciHD1t4how1q&=9Be5{?5&GAUXPDb}$aUm{=JsX_T+t_q%9262RG;%Fs w;&-VqIH1rh?8~lYpm5*;lVB*P5=VjoBilMwMu{a14myW6XI$pv;b5=^0JnOQ-v9sr literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-last-disabled.gif b/resources/ext-theme-classic/images/grid/page-last-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..869706777ce1e5c8350e0086f6febc18aa2bf814 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6guP*52OU-QC^W+uPUI*Wcei zY0{+0lP6D^GG*q>nX_llo;Ppa!i5VLFJ8Q4$&%&Em#<i{V%4fuYuBz_zkdD3jT^UY z*|K%(*6rK3@7%d_@7}%p_U$`)^5p5$r!QW-c<a`!+qZ8&c<_K>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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-last.gif b/resources/ext-theme-classic/images/grid/page-last.gif new file mode 100644 index 0000000000000000000000000000000000000000..3df5c2ba50b143fca7d168d5acbcc4404b903ee8 GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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<L0_pn}oOmw`!tjYh%+#ts$- tR;vKV0}9Mso~%X|g_|EVtzZ)G5J)g^4Ci4K5NqiQU2}7@Boh;ZH2`<ekBI;P literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-next-disabled.gif b/resources/ext-theme-classic/images/grid/page-next-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..90a7756f6fd77f74fd2b5786dd3586b5c50c8d89 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzZPfxF?sBrl2(B9tO-QC^S*Vo_QKWWmWDO0A*oH=vh!iCG1 zFJG}@#i~`SHg4Rwb?esc+qduBx%1@7lc!IgzIgHC?c28*M!{$Z4A~G+{K>+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-next.gif b/resources/ext-theme-classic/images/grid/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..960163530132545abe690cb8e49c5fef0f923344 GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-prev-disabled.gif b/resources/ext-theme-classic/images/grid/page-prev-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..37154d62406ddc064dba311b95f554e49ad38003 GIT binary patch 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*=uxnS<NUBVxiK<~C;Si~@#@2UvK; zq#UL!V030><xx&KP{7E<)WNG4kl?W3Q6n2STZm4ALSw^BRsog+kqivy=R5GSu`pNz E0Q^5n9{>OV literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/page-prev.gif b/resources/ext-theme-classic/images/grid/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/pick-button.gif b/resources/ext-theme-classic/images/grid/pick-button.gif new file mode 100644 index 0000000000000000000000000000000000000000..6957924a8bf01f24f6930aa0213d794a3f56924d GIT binary patch literal 1036 zcmZ?wbhEHb<Yy3JXlG#XO>A}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<z54p^jaPqey#90J?Vmeu{@!`}_x8vCcR&2Q|KZR5PyZf%`uFJb-^XA6 zKmGRq<*)zm{`~*+@Bg>||Ns8~&oBx`LjW}d6o0ZXGcYhR=zxSld4hrCB?B{ujK>Cr zPF^XagaZi+ome=9<V+k4lA0&0c~8;sY+BMGplDxopkcv6PGMCKE545x7rXOG8K|Y4 zs7UGXRWM0<(Zkq$s8z+Yi$zjO<yg14Zr?AKC>Dmm#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)} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/property-cell-bg.gif b/resources/ext-theme-classic/images/grid/property-cell-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7890cf9f887ca6dcd09f0106c97b44b6bd032304 GIT binary patch literal 155 zcmZ?wbhEHblwc5Gc+AOg;lhR2Z{EFm`~K~_5AWW8eE;FohmW5>e){tB=g<GxfDQu? zfb=r31PGk;Ja4!|#Hfvf(V@4aRZ{ACqmt#!o7ZX={*K$|wcV`e)aqGlTYkTcaDJp| s>daSrM&Udw>$^!;7jFpfiJKq0dh%|O{FRAsr%cJ6cQeymfr-Hy05I5B@&Et; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/property-cell-selected-bg.gif b/resources/ext-theme-classic/images/grid/property-cell-selected-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfe9a69eae133929f3835ffcfd108959539b9e5 GIT binary patch literal 843 zcmZ?wbhEHblwe?DXlGzpb>`cJ$G<K;`E~i}udB~~Uwi)h`t#p6U;MuH^7oxrzwf>N zbN|hshj0HpdiUqa`#(?L|9SS|&x?<LUw-=g`tx6gQ7{?;Lp%f&f3g65@Si~k<PT7u yVBpYTQ0EZQP-JRh=aVvsSfIez#LUJeAfceZ(9p=js}yqLf}%^Oh%OrogEatv6hrX< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/refresh-disabled.gif b/resources/ext-theme-classic/images/grid/refresh-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..607800b85e4dee8c3922d56b8666dff796603d6e GIT binary patch literal 577 zcmZ?wbhEHb6krfwcvj4C^whZzA3s&pwcWgXfA68=hmN0FxncYD+xH?8vYI<5Oq@1n z`rJi%CDj|Z?>Tku;-O<F7c5(yT~fVa+n$wcH?Cg0>Bz~m8F^(Xxn=WLtiN>a=Bx$F zE?m8F;nLL!Q)l&0o9h!C(=%n(wOe=Z-ha4p+phfwkEZ5Vc1)PQY|Z9dx9>(KWnH~~ z>(S$<ljkhix^r(*R&h*9UT#TER&jM{P0RYt+ly;j>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=HV<xo`5!U3(5>7gkm^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~^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/refresh.gif b/resources/ext-theme-classic/images/grid/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..110f6844b63f04ee495cb6260aadccc5c91f3245 GIT binary patch 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-c<TMyLr>Nm zdAaJ$n+2EuFS_`D;g$bOF8yC{^Z%AJuQpuyyy5=;?RWm~z4m$Iga5mp{NMZF|DH$x z_dNZ7<o1^%cfXyx`}x3=|3@GFKlkMOwTEA>J^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<Rq&uh#x<LG2M(8biwJe^@?&{7}f z84X_~A|E{Ep2g0zdriYZrB*IW(<2)iH>;iHZM67s#E^NJN1wTgOT&i;3Ec;TOAjTi zTyP{|exu5jn1!2~IsF{O7w}9FI^s0Dv3!z%j9{}Lqr9=eiw8w24r1-;JbMZ*Iy$pR TTfCj3pwPfLY5NRjCI)K&rUX|l literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/row-check-sprite.gif b/resources/ext-theme-classic/images/grid/row-check-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..610116465e7e34fe6ec137d674a5a65eb44f3313 GIT binary patch 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(fW5<r4ICkRH(UWIS zoj!Bs?AeoNE}TAp_3ZhJC(qwKbK%<Ai$HY!%9X2Eu3o!(_1cBYH!fVcdFkq{E7xyd zy>aL2&AYd5-M(@A-tF6WZr{0c>(2e#ckkc1d++>}M|bZ(ymSA_y$28PKYDua;miAv zUOssE@WI2!4<9{x_~`M2N6#KTe)9Oq(<e`#K79rT&w=0t5WEC|S0L~j2;RJY0|sxw z;N83T@87?A^Wp8gj~_mK_yh!>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**<Z5kz=|l^YF2)ZePkZ?fz)oUwE{E!5RSE C1AUGF literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/row-expand-sprite.gif b/resources/ext-theme-classic/images/grid/row-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f4d874f57b160bf731c057d8bd4f85d846ba4a7 GIT binary patch literal 955 zcmZ?wbhEHbG-BXmXlGzB^h$R6?=)rU-Z?<D_Sn*`*H-SmwfESuttTEI1A<G>uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$<p~Ck84S!EG9DWi9Bk$g)`~f?Vd3F+ z0a-l-hr$C4j7)qEb0R(_xplC}bcoz+U}Tt}>^aLtQ^>)SRb9SKCQ``Jr`=eVAz{OT z183VTy}$iAS<v9e;KBH#CBsDX(o%j_3k}YM#wI2gaWBy<QEeASCq@m22c}xrH>S#R nB^X?DXxtttx-R#(S?*zGzsXrO9p?HCdj*-f<$NLv92l$th`d^G literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/row-over.gif b/resources/ext-theme-classic/images/grid/row-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..b288e38739ad9914b73eb32837303a11a37f354a GIT binary patch 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@<y}iD^zQ4b}z`(%4!NJ19!o$PE#KgqK#l^<P#>dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1<F+1c9K z+S}XP+}zyV-QC{a-rwKf;Nall;o;)q;^X7v<mBY#<>lt)=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@* literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/row-sel.gif b/resources/ext-theme-classic/images/grid/row-sel.gif new file mode 100644 index 0000000000000000000000000000000000000000..98209e6e7f1ea8cf1ae6c1d61c49e775a37a246c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/sort-hd.gif b/resources/ext-theme-classic/images/grid/sort-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..45e545f74423d274d5ba7fd942349e9b6e377787 GIT binary patch literal 1473 zcmeH`Yfn-E06_1O8OuKCZ05?;9y0{yY?;~WgRMsR$~K$2`D~d1@}bQ#*KE^FOzmNr zk4h0m5xA%*2nq<AiYPv3zNRD!UM^e^kkXhH)!%5Ie{jxrZbT6xF5TgyLV!{Lh$~c* zt7jk4=S#RNW$l^<slG`LEyH_=<CoLv1oqi4@Lv}==|uhYa{>5&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-Pm7j<a z@s<UoIc}O-)Sl7;pwRg-;tq{8-(k|I#hq)4LN^b8*@cjz1MX;C`b2M+ZnW}r3_Z55 z`(7)}>o~EXPhgm4T&wVplL(D->;y1<QqqGg^6#qYaZ-_Gr8gJ(Iw=)f*9M9`0&dEB z?K)KzE@Mj8=P=ALW0IaSB;S!GLC)G#zjW8C9jb5z#LHz)2RsL6Ow0TCc5OO!W4uEC zYww2xS({cUTrR*Jqb)@FkhDeUAh!0|;c!@6>`B0^KR=R4S}*a<X0Oxy^5FH-KpJM_ z#hDt?Mj3|1-YCb5;Ejq<B}Vr$Y=NYE6#=nzudnRDx;K&T!TQSUK4kq{Vh~6FE;ih# zuewDD-h6*Mk-S-*oXy#+NzF5E)@IUzp}MRZGW3DO;y@p%A|v$afil=o|8Rk9Xvl{+ z271Ac(a>1vj)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%pzn<YE$B@vTqAH*8U$5XqErmL97bk zAl^2BI!d(-qR;YdpATO&+lD-E;O)allBo6(-}^kf((kd^J{nkx-&UQerEZU5+IZXJ Lcri6I61e;aamu5Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/sort_asc.gif b/resources/ext-theme-classic/images/grid/sort_asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1fc4f566d41cf1334138c658e5d2c002cec3bb1 GIT binary patch literal 59 zcmZ?wbhEHb<YZuFSjfzfIN_|re}~8Ke*gdfU-2gkBNqcRgAM}_faDpNc;>J#KhSlD MXO8oYYHkK=07W+v$p8QV literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/sort_desc.gif b/resources/ext-theme-classic/images/grid/sort_desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..508dbe83f63fa795169ef0f98c29463d07b041ea GIT binary patch literal 59 zcmZ?wbhEHb<YZuFSjfzfIN_|re}~8Ke*gdfU-2gkBNqcRgAM}_faDpNctrXXl6M}y M&|DZ)#?4?206!NJNB{r; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/grid/wait.gif b/resources/ext-theme-classic/images/grid/wait.gif new file mode 100644 index 0000000000000000000000000000000000000000..471c1a4f93f2cabf0b3a85c3ff8e0a8aadefc548 GIT binary patch literal 1100 zcmZwFZA@EL90u^)S14;kcS~P51JcqXyBK7YjR|$m*3qt)1nqFnf*+(nyIT_zZIrbc zP70+hE$ePOAcE2K4FU;V;KM+=xUiQtnG(k(Qx;;(oQVNl47kM11c$9(j7iV=cuw*= z&;L26aeaM*8AVX!4nUmF3luezO5JukyN8Fbj*JY)<FUCpDxJQaNW`ySU!ItlSYBRo zIJ$j4&-(g3kH<YaI+{-3q3Lhu=jVop!?9R2nf#Kb?|Hog`}_OI|CeI_z-zj*Z=BK^ zb+y$sEJo&3@fVweAONY#-poD&;n*S-!7khAH+BmDY(}ZG>E9#Hd|0*@ZIv{eO*Nb# z12yCIrOhLLJlbn33DTB}t(F_b2bV4~y*j=}%v9m90(t13QX1^b_==P$D+H{5*5Mu? z8<YWo;GEBY1&T!BQK0xwXCMqjnAr%YGou4t2y@PyRzL5TthyGfwkF=Of4;|C558C{ z6JT7WWr2j~28PmdD&J;)Tj=1l^nDuHZPJYtZ0{NxO0c1lQ(r$gnrJ9R)_&N{SfHl| z2!-ca0oHja5LD-MyE5*0jKrL?Z>gKY>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`YELYsVW1or<Ji5ibxaAYiy z=gk9rKEVhw2pD`JXUG4J`ezawn{8F=L+M4NSK^3j$#Wa9kJJEJ-c-|b-w~wbz{b|@ z8l-rY)_}?(Xrs~{A%BGk9SDaFM(<Ns_Gi0#G;t%r?qy<5AoWN;>1)YW%;)D$oE>#r zQ3z|D(W$Eg`c?NY^+fD&+nctrc25@u47U__J8-QW7NqK!$T9C@*SpuaHyFRRpIGae rj_Lao#za}+eaj_<`F9!mRdtBiaY8;H<a_dgNJKC%GYNP(1HbeS!vuHT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/layout/mini-bottom.gif b/resources/ext-theme-classic/images/layout/mini-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/layout/mini-left.gif b/resources/ext-theme-classic/images/layout/mini-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f7993f260b374440c5c8baa41a600eca99d74d GIT binary patch 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#$`Jz<zAZ@KEu aiJ--&dkk#zd{zV~IJdAA3h{6-SOWlJm?6yo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/layout/mini-right.gif b/resources/ext-theme-classic/images/layout/mini-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b13c5a8b91b86e33d5def2ed29b4e348a5795a2 GIT binary patch literal 872 zcmZ?wbhEHbWMxohXlGz>c6N36?{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; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/layout/mini-top.gif b/resources/ext-theme-classic/images/layout/mini-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/checked.gif b/resources/ext-theme-classic/images/menu/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..fad5893727ee8a13f428aa777380ae97152adec8 GIT binary patch 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+<Wlw{-dY&9=^Q)=;gylj~+aF1_aNazj*ob)$7-9-n@PL z_T9TzZ$7+z_wm!`FP}bt`|{<>*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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/group-checked.gif b/resources/ext-theme-classic/images/menu/group-checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..d30b3e5a8f138bfbbfea3d1d6d5631a81268fe26 GIT binary patch literal 891 zcmZ?wbhEHb6krfwXlGzxGAUp-FJv++Vzw-1u&!ctt7CJo<?*WL^{!`dYGiO~VsLI^ zaA{_6ZDDY0WpHn2@Mvf7Y-jN5VDRo@@abmo?P2iiVF>DF4C-YI>17M;<p83vUcty- z*_dA0*j~BVUgelBh1gz|m@eI<UZ=DP4yjXI(<eG*PIk+l;*c}PA$N{j;Y|0!nf{e? z{VM1A)GYr0|3AYh7!3isgn;5t7G?$pLk1m?ZJ<2Cz!AZa%pv2kVZp&>4q>erj}J#1 znRLYtaeQ=iW)bC#?NNBB=*-HhDWD|4xae>zCoh|V$$>=XHZB1n7Kal~O{`q}VgeQu b3s{-ixj1G-bT~0I2=PqTialkbz+epkbq-F$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/item-over.gif b/resources/ext-theme-classic/images/menu/item-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..da1f289fc9d80d11f57ea8e69f8f5c738c5c0f71 GIT binary patch literal 47 zcmZ?wbhEHbWMYtFSjfz<>dd#BFMhxN{P+L=|2hmn01{_l;+WFEQt~aovJQha0J+!^ ACIA2c literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/menu-item-active-bg.gif b/resources/ext-theme-classic/images/menu/menu-item-active-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d96fd890d67c1fec66002ae9043883b336981f83 GIT binary patch literal 160 zcmZ?wbhEHbWMmL$_`<-j`NFr|*S;US^YhgGpJyKYJp1t1`A5GlJo<I<@vqBIeqDL` z>)Nwl*Ps8s@%;C#7r$@6{C)S;?|ZL*-+%r4;hW!&-u`*=?$7`K|AB_!LW)0G7#SGE s7<3qb0A!~Nhb#lLjfFwt!3HitDHRO{2PRfd0U3jUh64<YK)_%P07xocUjP6A literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/menu-parent-left.gif b/resources/ext-theme-classic/images/menu/menu-parent-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..21e9683961968052d605a49c955755777dcd54d1 GIT binary patch literal 165 zcmZ?wbhEHb<YC}sXc1x1%-g3^a6qeYzjo;<qtg9WRp%_4u35HRwrRO++i};i^QL?E z$<Qh1f)>09S@1G_!PTTyAG;3!={x*w>goT)0L7myj9d)z3_1)z0J4*TRq26x-;?wy ks*@HxHspP?+(oEIi2uor6$eagL=psDSi4p@aWGf|0ACJRrvLx| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/menu-parent.gif b/resources/ext-theme-classic/images/menu/menu-parent.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e375622ff951a3a3f1ccc668061e81b9c93b411 GIT binary patch literal 854 zcmZ?wbhEHb<YC}sXlG#1%-g3`xZkLBzfQpc?b1_LRp%W3J6JSbvuwF+({kCi<F0%6 zNypBcp;OKUEqD{M;AQ%Pt4XUq_8tD#b@<QJ)BhPp!Dt8!<q%N($->OQz{a2h@&qVP zFmM<%@JmQ|Y*@g^%E=?8;=tJG)Wo9VlknjJLnFJO0!M|%0mo(rQBEC(fQyeBCb4lX KFcA=7um%9T95sFb literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/menu.gif b/resources/ext-theme-classic/images/menu/menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..30a2c4b6c0458751f85126e8bbca6ef2ccc2ff00 GIT binary patch literal 834 zcmZ?wbhEHb{Kde?(9Xc{=<(wZA3ps5|DRzLjE2C-3jxKSEI?2HXV3w89h4^+IOG|a lIb=LGEI8Q6z#<cKV#C72?E=bPb38UKI@&Fv%*MiC4FI5a8gBpq literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/scroll-bottom.gif b/resources/ext-theme-classic/images/menu/scroll-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/scroll-top.gif b/resources/ext-theme-classic/images/menu/scroll-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/menu/unchecked.gif b/resources/ext-theme-classic/images/menu/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..43823e52db80e04017b2bc1e031bef2d82c67e6a GIT binary patch literal 941 zcmZ?wbhEHb6krfwXlGz>`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$<?6Kymv3CSa`V#FTUV~%zIx-%jobHb-@bF} z&i&hW@87w5@9zDF4;}*1<A;wPJ$&@|(c>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@75u<Mhi(bZ$hDWSC5<+#C3@$Vt>5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-bottom-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-bottom-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c87b351de2ff889a31b13627d1409a9b83897ce GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3(|JC|J1QU^9oXR?LYF3lFyo2zzl%P*`-dTf#VL2}9$- x24-%PE*Z~FOHNMKP!5|R@X(Q&fr&%HVS&QZv$HLVU)?#mdHMPI_RLHS)&RtVbW;ET literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..62cdbac0aaa27d804e13e13e4c72674c213fa2dc GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3*u3@z}87U^9oXR?LYF4;|TAWxVEiY*cdPWE6_Hb7JG- x<NXTGR!bNf4>mA!yR3>ixoPR?=?2NC=4fs{)WX3p#US8tfPslsoQa9S8UV6`anJw& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0775fadbbd88229085d7a982c60905a13128fef GIT binary patch literal 210 zcmZ?wbhEHbWMPnC_`<+2bNBO^dw}T0tUWJg?|ZTJ{JZVv-|e{Y_Snsj$8LQ(cKg%u zTc3{K{&eE@r<1onox1b+^qtSwo_xLW^y|%MU!T4E@#gc7x1WE${ru}45PkXe`TOtx z|Nk>Uj0Kv!`?=yz7DfgJX$BpjAOpxw7Y=_0Rt_1Bf(BN04k0y_jsuOXOhQUt7aRhc z8F+=%xpoLNII?ncGo;LLC~|6<EGV@i$Kiw0$!>MeD4WcU4NP1DW(fuk4;Win*g0fQ KY*18Sum%92qH16O literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6f4c76d1bb5bd6ffc3d3b23b1a47f7ba122d473 GIT binary patch literal 200 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDiu5GAMJ% zcx+g3u$e<xE9S(8hX>i2WW45hY)m@J%BGWb=fuXv$NLr3%@`aQ98XNv2woL)a?{e& X(+!f{8Xhz>HZd@B$#@6|FjxZsPfl-# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..0daf906351bf6046443ac552b3c529884adcf08e GIT binary patch literal 569 zcmZ?wbhEHb<X})>{=&d8bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CIeE$CX|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfzhMG!JvtSfr(qn#bU#QgDrfLS~WK&C>-q+Qg+%hW8&jut@8R=Yd9t?@#t5xo_0hc z=;_I+%8|=*Jd2n4&a_B=<uY^fbH5pO%}lbtHmx|l*tA;6wd(Woi%a}wYSrEf(YU%Y zXtC4QSyNwMTN=MUYc1EbH4*F6c28?LAjWi*v4DM!Znx>0TRSV>zuJ1*Joo;tI%Z}$ zn`s77hfBD%?e<t0K0e;3{QU3jicJqrRqH!%>zQGkc1lCCBhBGs!%OCQ=IQVD{Mwv$ za&2gHo2|9!+w0qkkMBFX>s#L4ea(;m`NmYde|RibK7QSvojFe~%(S0=?snzZm)9EI z&&SnRe|vxZaQ3$4cJr!>K0KXo9r3;)so^`LhS-ewhNPz7oR_-a`_0>5`TqA@afOCo zqA%pD*!gbEZ(uW;k<iRyr?IeE#4X}slUQ2E!?yp09S>S%+kPx;Q__l1YLS~|k<_Iz z&qA?NdlyGikIAZx<ZjbP6_2}hK4~cTSf7(nnP4UMGP%#4@8;qOZbmaxCcD^aE}a~b z_T#`*{(vh7rtt=BIWV0&K;^&;rT~`%Gg$&s4$NW;XgM&OBVfsaIb1R#0u0swX=^AB literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e92fcd92a316429011d218e470a87f89262ee84b GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y{7H-#&l;{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3*u3@z}87U^9oXR?LYF4;|TAWxVEiY*cdPWE6_Hb7JG- x<NXTGR!bNf4>mA!yR3>ixoPR?=?2NC=4fs{)WX3p#US8tfPslsoQa9S8UVEWan%3- literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c1aa1b2f742df8369c3d472fd9bb49756847c53 GIT binary patch literal 325 zcmZ?wbhEHbWMPnC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeUhi-g0cJt%0 zo1c!|`gH8}r{lLi9l!nQ#O+TfZ+$v-=kw`1pRYandgCb&eY^SW>&<81?mYi?_vN?y zuf9Eb`~At=AJ5+Xc>ey!n@_*qeE#wF)6ch`f#}yeAo}v_^Y`EX|NmzI+YWR9B}nln z3nK%A27?aJGzO5LTse{$SUE%*m|PkencZ9h4orB+z^oFW(P7Z!(Aq8PmthmA;Mm?R zBPOFD_`tD4kdI-;iGqcyt<yymPP7;VFmNz%n(+K+Xgt)$%IFoaL7}Okkxfo*fkt6N R0}DTofPg~+ldA)RH2_KszW@LL literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6f4c76d1bb5bd6ffc3d3b23b1a47f7ba122d473 GIT binary patch literal 200 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDiu5GAMJ% zcx+g3u$e<xE9S(8hX>i2WW45hY)m@J%BGWb=fuXv$NLr3%@`aQ98XNv2woL)a?{e& X(+!f{8Xhz>HZd@B$#@6|FjxZsPfl-# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..0daf906351bf6046443ac552b3c529884adcf08e GIT binary patch literal 569 zcmZ?wbhEHb<X})>{=&d8bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CIeE$CX|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfzhMG!JvtSfr(qn#bU#QgDrfLS~WK&C>-q+Qg+%hW8&jut@8R=Yd9t?@#t5xo_0hc z=;_I+%8|=*Jd2n4&a_B=<uY^fbH5pO%}lbtHmx|l*tA;6wd(Woi%a}wYSrEf(YU%Y zXtC4QSyNwMTN=MUYc1EbH4*F6c28?LAjWi*v4DM!Znx>0TRSV>zuJ1*Joo;tI%Z}$ zn`s77hfBD%?e<t0K0e;3{QU3jicJqrRqH!%>zQGkc1lCCBhBGs!%OCQ=IQVD{Mwv$ za&2gHo2|9!+w0qkkMBFX>s#L4ea(;m`NmYde|RibK7QSvojFe~%(S0=?snzZm)9EI z&&SnRe|vxZaQ3$4cJr!>K0KXo9r3;)so^`LhS-ewhNPz7oR_-a`_0>5`TqA@afOCo zqA%pD*!gbEZ(uW;k<iRyr?IeE#4X}slUQ2E!?yp09S>S%+kPx;Q__l1YLS~|k<_Iz z&qA?NdlyGikIAZx<ZjbP6_2}hK4~cTSf7(nnP4UMGP%#4@8;qOZbmaxCcD^aE}a~b z_T#`*{(vh7rtt=BIWV0&K;^&;rT~`%Gg$&s4$NW;XgM&OBVfsaIb1R#0u0swX=^AB literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..c089d62da70a14dba747d954b592d732c6cf0020 GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y}^C-#&l;{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9@1|@z}87U^9oXR?LYF3lFyoD0|KE*tqCuw}f%lof8`u uAMaOi?vnA`w8V3gsD{r30mehj?7R{T90~~xjZAEO3LXm*4z@NhSOWlw$8iAw literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2409be0006f01c5743ea402cbc842111364a8f18 GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y}^C-#&l;{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9?hIn80w5k(rf)M?ipqp_z?O&Y?pgk*SqS%qZ*5iH(bo u_bWJe$#`yBa&odp@T!=To0guQZjgLxj_2lOXJ=a!zq)gB^Ye2J4Aua^o^;Xx literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea10459d67d2a2365d0d7d3446e065cc55eac9e8 GIT binary patch literal 351 zcmZ?wbhEHb<Y5qC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeUM{a&R3PPWb z-uiUx=EoDaKApJz>Ex|Xr|y0}edp7ed!Mg8`Fi6i5PiG(?Cb64-|oNq_Tbg`CvUz# zdHem@`ybCg{CM%<$D2>T-hTS|_VcfIK=kF;=kLG&|NqYbwijqM<w)@-3nK%A8iNkd zOa_pjTsdkOd^-#b92nZTM5Jsq6dM}YTG#}&QY;oQa0m+u>xo=YaO!AcH#M?3kkHJ^ zD6Wz><$|Ik;}k8)NemklSbQcjIazQhJbLEBsLXWb%g%`oY#o|~RUQlsEP-vjYBd@& kzNj;?%J_xd&1hm_V)AEoc=6$YLj)7MTf&`F1_}(;0Fsx+00000 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ca24594848dc69a091c47038cbda19c71babf2c GIT binary patch literal 346 zcmZ?wbhEHb<Y5qC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeUM{a&R3PPWb z-uiUx=EoDaKApJz>Ex|Xr|y0}edp7ed!Mg8`Fi6i5PiG(?Cb64-|oNq_Tbg`CvUz# zdHem@`ybCg{CM%<$D2>T-hTS|_VcfIK=kF;=kLG&|NqYbwijqM<w)@-3nK%A8iNkd zOa_pjTsg`ad>b?j92`2?c{M@~C?q&^aPaadg`6m8U=&nSQH#-VSjfgCrOBl+VL@}t z1W`SX4I3H{GEUKQWhoF~TGk-I%`jmDCzAsczZrYY41tdi+@@ME_iR{c!0fS@D^#lD g0%Mb}uri;`+!;lx?5rF)LJkf}%2(DgGBQ{L03zeV!vFvP literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..503873815ec999bd527bfb155054eff06ba062b7 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGbnS& zcx+g3u$e<xE9S(8g@@Y(l)dJ7Y+Q7-Tf#W&&WVkSkM}D$cgc8eT5@tSv!YGGg@%Jn UtPD&X5)KO*8ksqSSXdaW0hvE;CIA2c literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bb55c9a4b2091143e799b6eb3760e67bb5f6953 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGYBhK zBrITPWMpDu2-wiz$jr{K;4;Hw<D#S862@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!c Vbc5tmb38XMJ3HG#lZ}PJ8UP<Ia1H<f literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..3423ce97e11561e1e9b567e5cc2651c45bf93cf2 GIT binary patch literal 396 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CIeE$CX|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfssSTW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh&OU854l9Q7~lvl)@ z+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T@6gO8>$PRY#l;?zwPH_gS$TQ6j-pM$g@%Jo z3`}eS8VL^=npn6Nbjf;eTXS=B#^qJ9r?;)Wy}h8(YiX9~>acZj2fc2b-oF0+{sv}l zIiDRH9v<!x){Z-~W8>rF6O_H@`Rv^E^z;nl?0aW+Zhn4#fpfQ<@2)K`FRut*9d~xu z*4NiJB!BPq-o5SZ?H$Fh@15Pf{r%=*n9Tmk+VSW1?EL)v!s6?EanmjCJ=WNqegE9v X-QV9oINZ%C@4s))&(9jnObpflYK!GT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-left-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa3a90b84d04c38e3e385f7d0703958ed69586f6 GIT binary patch literal 399 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j2to^8x|aF<`CA3Ik92k;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-qGM<~3oSZBo zs^U;^z=4s8nS~|dz=FnRb^#@i8z(m}KR@50nM>Ad%ZiJOJtk|#p4zhV^74SiUUR*+ zuDZH9VsqBrQ(ISGU!PF9D&?inGM`yyg|B!{Z(DnNd%@#VbG^5(ySuyM^Q&5`h3oI{ zZ(!z@^VzZC;o%Np?YJ{LHa<Q+LD_qr&(2LxPtP#UzISHl=I7@ZICsnW?%MM5@`~Wq zac6gJeSLjH^67bh%X3aoH%z~_XJ+yG_xBGpbIbef+41r5iHEoJW=re7-+FSf_k6#- lyS~1@vH890$-TS3zkhJJn@8S%-=3eJUtC`8E-AoZ4FFAu=D`2} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..8646a155b4ede9e8bdf21f3f2f89a87be532c5ab GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJ2SoQjpTGb4!h_G39)7v}=*yMIU#>p+dhN;A8&AJ}{{H*_|NlUvFp=U< z7DfgJ2?iYoAOP9v!r{T7AF;wAv8jbaK+Yn8L7}06k%ddbqCugtiIvwV>&}Udi;wp! sICsf-Zd!73vPST#n3J29o}O-yd}@y8=4EGRTNJ;#b8_?Za}5mE05TYMvj6}9 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae8d3380abe59c22048aaf2c65a338f81f3c2f22 GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJ2SoQjpTGb4!h_G39)7v}=*yMIU#>p+dhN;A8&AJ}{{H*_|NlUvFp=U< z7DfgJ2?iYoAOP9v!r{Rn%^~BlVZp&>4q>gB6B`yDZWmDYn&Yu?(a~-R<E%R;HZDHi sui)Gz<GE>x=Ok_s6^DWY4vb99EG!HM4jg3W5LEG55ODBNYXgHd0FE|tv;Y7A literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ffb03b059579988e2ae5a883c19301548958c20 GIT binary patch literal 348 zcmZ?wbhEHb<Y5qC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeU`>uZ2fAzzm z>mLr^_;Bpz#}l_dow)Pq<gHI9Z+|*<=hNvspU&O;eD(3yYfrvjfAaOlQy}_w^Vzps z&%WJ$@$JrwZ_nTTc>Uq$>yJO*d;+3hZ@&C^`}x<~FF)UX{`Kz5ug~9q|NsA=0qg*v z8^}hAKUo+V7&IAlfJQNZ{N&0}$q+ojz`%ili$_e#Vu3<~11GN-k5b5q0tZGxO%=5m z4Tp!VP3-1IHXj~1v-NVRa?H5k=*T#QFJvCWg9a9#sfuDO8zhaEG6*wf-OI5^ay~N8 vkhQ{t!Qn_itEhvYPnQBy$7GMtWfqMM2Ld=`BqSuf9yE0JM6$B5FjxZstRTl6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..4674ceb2da353b540170b438d6b081a6a375b0ae GIT binary patch literal 351 zcmZ?wbhEHb<Y5qC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeU`>uZ2fAzzm z>mLr^_;Bpz#}l_dow)Pq<gHI9Z+|*<=hNvspU&O;eD(3yYfrvjfAaOlQy}_w^Vzps z&%WJ$@$JrwZ_nTTc>Uq$>yJO*d;+3hZ@&C^`}x<~FF)UX{`Kz5ug~9q|NsA=0qg*v z8^}hAKUo+V7&IAlfJQNZ{N&0}!w}q|Vc@{P%Fe5k;GmdrfVG89P%Fja07IvUps=1u zf}=AhlcYMA#)1WhSr~;>^3HsCc#v_5mgFRk4GJtiy+*PO7KOn}I2br>zTB}`z;tAa y1?z+YfdfYZ+QiIy7&=3iFtW)g*oaOzbcAu0A!`bQAmhO>CJw)ZHM<NI7_0%)X~%~E literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ed031cdc3d9ff510dff5fcdf0889ad9cfb796ac GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGblS$ zJXpZk%*w^UB4E(qz{t!lpfbZ_<D#S862@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!c Vbc5tmb38XMJ3HG#lZ}PJ8UQLsa1a0h literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e50338b46a97a3db767f7ac22e3f9449b83affc8 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGYE6Y zcx+g3u$e<xE9S(8g@@Y(l)dJ7Y+Q7-Tf#W&&WVkSkM}D$cgc8eT5@tSv!IMYK*IqB UMn(pWhyx26o7n}FSXdaW0gK~q9RL6T literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec730ad28a7e9b5d9ca3db873b8fb552c1c7289e GIT binary patch literal 399 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j2to^8x|aF<`CA3Ik92k;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-qGM<~3oSZD8 z>eBGxfFm;-Hxq}1!-9rJW)2~Z8z(m}KR@50nM>Ad%ZiJOJtk|#p4zhV^74SiUUR*+ zuDZH9VsqBrQ(ISGU!PF9D&?inGM`yyg|B!{Z(DnNd%@#VbG^5(ySuyM^Q&5`h3oI{ zZ(!z@^VzZC;o%Np?YJ{LHa<Q+LD_qr&(2LxPtP#UzISHl=I7@ZICsnW?%MM5@`~Wq zac6gJeSLjH^67bh%X3aoH%z~_XJ+yG_xBGpbIbef+41r5iHEoJW=re7-+FSf_k6#- lyS~1@vH890$-TS3zkhJJn@8S%-=3eJUtC`8E-AoZ4FFl$=EDF0 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-right-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..a54f3e3377f0413798d142417eec3fefda6a0b95 GIT binary patch literal 396 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}Kc2n! z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{e*XUZ|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfssSTW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh&OU854l9Q7~gjd9z z+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T@6gO8>$PRY#l;?zwPH_gS$TQ6j-ZS|K*IqB zMn(~xgbN1_GIIzn=#ur`w&v#MjLWNHPj6d$dwW5n*U~J})nV)64tm`<y?y=t{SD0A zay~mYJUrYXtQ~h|$HvFUCn$T*^VzxS>FF89+4s)u-2D9f0_Scy-(6c?US1KrI_~VQ zt*@_dNdDgIy?fi++dGP1-#fc|`}@tsFq!?6wd2q2+4=eTg~iwT;-*{Nd#tfJ`~JDT XyT8AGaJZXO-hbbopPx0DnHa1AG5F-& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..84ecd1c4d512932cc6cd47d31d4ba47c211b7e7d GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYPKd++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3)3MIIv*B!DbF&t(X%V79MUF5ccDkps?s@w}f%h8i9oe x8<@FGx@0^zEjc+^Lpf@J0%H?10~3dY!vck+XJ=a!zq)gB^YZia?U|VvtO3m{bV>jK literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dc5653fb88d616b27e7780fb6b69ba1057a9ddd GIT binary patch literal 326 zcmZ?wbhEHbWMPnC_{zXAWB2o!dw}T0tUWJg?|ZT3?7OY!-)%qtZpVeU2d{lRc>UwC zn;(ze`gr2@r<1onoxJnu)SXXf?|#1a<m<JkU#>s>dIN;M-F)`#_VaHqKKyw7@#pJL zKi+)$`R3EFx1WE${rv0Qr(f@Y<d<KczyJRK|33rRMxdqCLW)0G7#SE;7<7OpGl2Z$ z%8|^#$|2&g$hnb`*}@{?z=Vek%<>*O1qT`(TDwJ+9BxE3G_vuCo7q@=P;6-86cJ(& zFkJMMgVR9OWX8>e1r2-*5-AcB9yYNE@H4ecNI1yM$joJ6q9FK)p^;5ONI{{&fu*y7 G!5RR=m%Ru8 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4add6991557fde1bbf300aece9c688c1d852b89 GIT binary patch literal 200 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDiu5GAJ`R zOjxksU^9oXR?LYF3lFyo2%9MgY+Q7-Tf)#TLg9eJv3>>TE*Z~FOI$hlBs4e-793!l XY><3vj_2lOXJ=a!ztWKqV6X-NCPi;N literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-collapsed-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..f95026ae74e1ee1fface882a29d6bca0beafd860 GIT binary patch literal 574 zcmZ?wbhEHb<X})>{=&d8bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j6M?_0uHe-FfnWJ6a*wRwR1}O1vmsY9_bPj^jlLgaj{#EtY+I84S^@_{i=a^ zB9)U;y{2n>9+UChywqp1e*UT>mY37c&atm%`s!J-B5<KcrPke(BF}=B`<6P*)!LeM zVR=}$T5r|V)nRL5SGJw45_uE8KJ{XrX!W$*sO{M&kI8z6uWsJWry_PEdcnKsooWAn z&AlzQ;nsl`R&lwW9UmVaFOYR_%c<D(^wbQ=;A=HAi=Q1`AlmKc6ZPr&#bvguuW>9i zW$ENeGM-?u;2T3Hdy#xZZ&mS&OZ%$J|IM9MQSjh!>wLF;dv+AvJG0QbKhMVU>+`F# z<>#NP-Ch3r?!o%q*Y)<<{QP|B_;U08a<$*SeYk)6xZnR>e?Po?{kT8gzUe=QkgdW4 zW+Bsr1ZE-K1rL~nI3Fxv5E4{SWE7H2SjZ@(xImHV&)wzsYUDPtKdMu%TQR>=@!9mG zc9nS=i@LS8?MUj>KgXfmt#N8aa-Yq$9gF*Ik4dQXIf!X4ndl<7GG&s_r5#Hq``+Vt zIwdG9^YK)ByUf&Sfk~DsQ{$94)ut!c?OZxDF>7Yp^pts;%VuY7+nF{q{~V|K><lq+ H0S0RTjVUFW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cac97bb3eb8a4e7c77452b6908ff7b1e92a9ed7a GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9@1|@z}87U^9oXR?LYF3lFyoD0|KE*tqCuw}f%lof8`u uAMaOi?vnA`w8V3gsD{r30mehj?7R{T90~~xjZAEO3LXm*4z@NhSOWlu+Hm~< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffc3565aedc572384a4cd02f9753abed059d1a05 GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9?hIn80w5k(rf)M?ipqp_z?O&Y?pgk*SqS%qZ*5iH(bo u_bWJe$#`yBa&odp@T!=To0guQZjgLxj_2lOXJ=a!zq)gB^Ye2J4Aua?v2@M= literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..45d11e4ccbb3a100a13ba3a1a9a0dc97bb7eb63d GIT binary patch literal 232 zcmV<E02lv9Nk%w1VGIBe0Q3L=n7ikhyyuy`=$gFfo4)9@&F;0&?zhkG#M$x2+40EQ z^2por$=dSD-Sf-b^32}z*5vir<@MR-_2%#R=kWOG@c8WV`t9=h?eqHX^ZN7m`~Uy{ z0001(yXTm@=a{?aA^8LW000{REC2ui01N;S07M9700jsXC?Nub1Pe3}G$^3p!Gr<^ z6tJ+Np+STS6EwImz~V!N9z9|d;9vrR0wN&_(7-aK!V3xlU~nmrr9y`zL*j%;0RaFD iG!s0i&~Yb7hcpK+{3w9Igarm@5;%~dqEP_>0RTHneRVDX literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..4286d5dec54ed49b27d9892de63e966c4aa8cde8 GIT binary patch literal 232 zcmV<E02lv9Nk%w1VGIBe0Q3L=n7ikhyyuy`=$gFfo4)9@&F;0&?zhkG#M$x2+40EQ z^2por$=dSD-Sf-b^32}z*5vir<@MR-_2%#R=kWOG@c8WV`t9=h?eqHX^ZN7m`~Uy{ z0001(yXTm@=a{?aA^8LW000{REC2ui01N;S07M9705@1DFhGEY1qmQTkRV{dg$4-> zB2>swfJKW36D|}$5#z*-1rSVdAW<X3jwL%{2%z9X%8eRgdNe7(0ssUQUNRg|;X%ZV i9b;;k*%2ksjRqD>V4zdLh71P?G&TCM;>D%`0RTHz+IK$y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..503873815ec999bd527bfb155054eff06ba062b7 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGbnS& zcx+g3u$e<xE9S(8g@@Y(l)dJ7Y+Q7-Tf#W&&WVkSkM}D$cgc8eT5@tSv!YGGg@%Jn UtPD&X5)KO*8ksqSSXdaW0hvE;CIA2c literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bb55c9a4b2091143e799b6eb3760e67bb5f6953 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGYBhK zBrITPWMpDu2-wiz$jr{K;4;Hw<D#S862@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!c Vbc5tmb38XMJ3HG#lZ}PJ8UP<Ia1H<f literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..3423ce97e11561e1e9b567e5cc2651c45bf93cf2 GIT binary patch literal 396 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CIeE$CX|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfssSTW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh&OU854l9Q7~lvl)@ z+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T@6gO8>$PRY#l;?zwPH_gS$TQ6j-pM$g@%Jo z3`}eS8VL^=npn6Nbjf;eTXS=B#^qJ9r?;)Wy}h8(YiX9~>acZj2fc2b-oF0+{sv}l zIiDRH9v<!x){Z-~W8>rF6O_H@`Rv^E^z;nl?0aW+Zhn4#fpfQ<@2)K`FRut*9d~xu z*4NiJB!BPq-o5SZ?H$Fh@15Pf{r%=*n9Tmk+VSW1?EL)v!s6?EanmjCJ=WNqegE9v X-QV9oINZ%C@4s))&(9jnObpflYK!GT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-left-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa3a90b84d04c38e3e385f7d0703958ed69586f6 GIT binary patch literal 399 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j2to^8x|aF<`CA3Ik92k;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-qGM<~3oSZBo zs^U;^z=4s8nS~|dz=FnRb^#@i8z(m}KR@50nM>Ad%ZiJOJtk|#p4zhV^74SiUUR*+ zuDZH9VsqBrQ(ISGU!PF9D&?inGM`yyg|B!{Z(DnNd%@#VbG^5(ySuyM^Q&5`h3oI{ zZ(!z@^VzZC;o%Np?YJ{LHa<Q+LD_qr&(2LxPtP#UzISHl=I7@ZICsnW?%MM5@`~Wq zac6gJeSLjH^67bh%X3aoH%z~_XJ+yG_xBGpbIbef+41r5iHEoJW=re7-+FSf_k6#- lyS~1@vH890$-TS3zkhJJn@8S%-=3eJUtC`8E-AoZ4FFAu=D`2} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d7c8fc6d7aa65fcdc39326c1c4735018cbbaeff GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9<|P;gHzW!XY4Mk-?zQ(7?#TC1KH^(AdPvW0ZC0#Ky(P u`xTtKWIQ)5IXPJ)cvZ~FO-oNtH%LA;$8+<tv$HLVU)?#m`T4m925SH>s&=yg literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e00f0d097490dc86de20f384617308d2f3fac3b GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV36dH@z}87U^9oXR?LYF3lFyoD0|KE*tqCuw}f%lof8`u uAMaOi?vnA`w8V1~w}^^E!2t(GCT12Eh6@J{GII#3_$&xGc&N33!5RRHb#l7^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba518f0107aa1b1cfb2f2ae43b16c9014362ffb2 GIT binary patch literal 232 zcmZ?wbhEHb<Y5qC_`<+2WB2o!dw}T0tUWJg?|ZTJ{JZVv-|e{Y_SnsjCvJZ_ap%*? z+n-L|`E>2c*BeiP=-bU_-)=qo_WHxm*B^hr`SRoK=U;EX{CxNM*SjyjK7arH|Nnmm zu$e$(AxQBj3nK%A6oU>>oB?E~3r8x0X^4h_g995ouYgK|LPG;92QQCO$ccak*KT%U zJrM`N$47eEL_8`K0+kQ<sahv7OjzJ_s#h|p%0%;lQ^PcUNudP-ib==%42{pc>G<^g d7&Eup1d~$%%x%mpMMZZszCOCp%gD%J4FCm?cbxzL literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd8f82d91d22c92c4ac4c81925963464bea1eacd GIT binary patch literal 229 zcmZ?wbhEHb<Y5qC_`<+2WB2o!dw}T0tUWJg?|ZTJ{JZVv-|e{Y_SnsjCvJZ_ap%*? z+n-L|`E>2c*BeiP=-bU_-)=qo_WHxm*B^hr`SRoK=U;EX{CxNM*SjyjK7arH|Nnmm zu$e$(AxQBj3nK%A6oU>>oB?E~3r7+ID~HGl1;!>eJ|h7WjRg-5wlJ}YtXQycp<@e| zw8I961CN|r<!qBgJ~%WnF)Jx@oj72$^bi*(LqdV(gr!dH%Fd5kIE)Xl&f--Hc(Frx biSsOG@j4aD#Dk2pSojiFM1(jvFjxZsP+)cp literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ed031cdc3d9ff510dff5fcdf0889ad9cfb796ac GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGblS$ zJXpZk%*w^UB4E(qz{t!lpfbZ_<D#S862@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!c Vbc5tmb38XMJ3HG#lZ}PJ8UQLsa1a0h literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e50338b46a97a3db767f7ac22e3f9449b83affc8 GIT binary patch literal 198 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDislGYE6Y zcx+g3u$e<xE9S(8g@@Y(l)dJ7Y+Q7-Tf#W&&WVkSkM}D$cgc8eT5@tSv!IMYK*IqB UMn(pWhyx26o7n}FSXdaW0gK~q9RL6T literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec730ad28a7e9b5d9ca3db873b8fb552c1c7289e GIT binary patch literal 399 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j2to^8x|aF<`CA3Ik92k;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-qGM<~3oSZD8 z>eBGxfFm;-Hxq}1!-9rJW)2~Z8z(m}KR@50nM>Ad%ZiJOJtk|#p4zhV^74SiUUR*+ zuDZH9VsqBrQ(ISGU!PF9D&?inGM`yyg|B!{Z(DnNd%@#VbG^5(ySuyM^Q&5`h3oI{ zZ(!z@^VzZC;o%Np?YJ{LHa<Q+LD_qr&(2LxPtP#UzISHl=I7@ZICsnW?%MM5@`~Wq zac6gJeSLjH^67bh%X3aoH%z~_XJ+yG_xBGpbIbef+41r5iHEoJW=re7-+FSf_k6#- lyS~1@vH890$-TS3zkhJJn@8S%-=3eJUtC`8E-AoZ4FFl$=EDF0 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-right-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..a54f3e3377f0413798d142417eec3fefda6a0b95 GIT binary patch literal 396 zcmZ?wbhEHbRAA;{_`<+2bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}Kc2n! z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{e*XUZ|Ns9$y#$fsPZmZ724Myr1|R_0>B8}! zfssSTW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh&OU854l9Q7~gjd9z z+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T@6gO8>$PRY#l;?zwPH_gS$TQ6j-ZS|K*IqB zMn(~xgbN1_GIIzn=#ur`w&v#MjLWNHPj6d$dwW5n*U~J})nV)64tm`<y?y=t{SD0A zay~mYJUrYXtQ~h|$HvFUCn$T*^VzxS>FF89+4s)u-2D9f0_Scy-(6c?US1KrI_~VQ zt*@_dNdDgIy?fi++dGP1-#fc|`}@tsFq!?6wd2q2+4=eTg~iwT;-*{Nd#tfJ`~JDT XyT8AGaJZXO-hbbopPx0DnHa1AG5F-& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..566cf70a0a613715ab4e63a83697c4e63c792812 GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3)3MIIv*B!DbF&t(X%V79MUF5ccDkps?s@w}f%h8i9oe x8<@FGx@0^zEjc+^Lpf@J0%H?10~3dY!vck+XJ=a!zq)gB^YZia?U|VvtO3d$bVUFF literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-corners.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..39fb5138212d6ed2a0b395eb4ea8f0691f18c2a9 GIT binary patch literal 212 zcmZ?wbhEHbWMPnC_`<+2WB2o!dw}T0tUWJg?|ZT3?7OY!-)%qt?%2(b$8LQ*ar@KB zJD*P7`E>2c*BeiP=-bU_-)=wu_Ts~j*B^hr{`BL`r(bVB|9t!T*Sk-@-hKY{`TOtx z|Nk?9jRl$vM2bII7#SF(8FYYx3?MsQI06}1IYc%rbZTT|GEs;)QP9xHEiINM@L<6r zW;O{)5f1}JCKfJkK9w^k5*D>hmXcbLvtYr}rbZ?$1`mbA1{Mxp109YD3lB1Lvj}Z# Mxml!irh&m40A6lxO#lD@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-fbg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4add6991557fde1bbf300aece9c688c1d852b89 GIT binary patch literal 200 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;KAyez z`P}`_=kI^M@Zj^MhhHu~`f}y*m#a^{{{R0UsF4_?_>+Z^fkB8thXDvccDiu5GAJ`R zOjxksU^9oXR?LYF3lFyo2%9MgY+Q7-Tf)#TLg9eJv3>>TE*Z~FOI$hlBs4e-793!l XY><3vj_2lOXJ=a!ztWKqV6X-NCPi;N literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-sides.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-framed-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..f95026ae74e1ee1fface882a29d6bca0beafd860 GIT binary patch literal 574 zcmZ?wbhEHb<X})>{=&d8bI*&_$KUKY|8CcXce^jX+k5H#zANt!T>Wt9+K0o}KOVjD z@$9|N=k9+#fB*A^2cIuJ{Brrxmn)CITz&HO^Y`EX|NjSS$Bz_$vM@3*h%o3d00GEO z7moi7j6M?_0uHe-FfnWJ6a*wRwR1}O1vmsY9_bPj^jlLgaj{#EtY+I84S^@_{i=a^ zB9)U;y{2n>9+UChywqp1e*UT>mY37c&atm%`s!J-B5<KcrPke(BF}=B`<6P*)!LeM zVR=}$T5r|V)nRL5SGJw45_uE8KJ{XrX!W$*sO{M&kI8z6uWsJWry_PEdcnKsooWAn z&AlzQ;nsl`R&lwW9UmVaFOYR_%c<D(^wbQ=;A=HAi=Q1`AlmKc6ZPr&#bvguuW>9i zW$ENeGM-?u;2T3Hdy#xZZ&mS&OZ%$J|IM9MQSjh!>wLF;dv+AvJG0QbKhMVU>+`F# z<>#NP-Ch3r?!o%q*Y)<<{QP|B_;U08a<$*SeYk)6xZnR>e?Po?{kT8gzUe=QkgdW4 zW+Bsr1ZE-K1rL~nI3Fxv5E4{SWE7H2SjZ@(xImHV&)wzsYUDPtKdMu%TQR>=@!9mG zc9nS=i@LS8?MUj>KgXfmt#N8aa-Yq$9gF*Ik4dQXIf!X4ndl<7GG&s_r5#Hq``+Vt zIwdG9^YK)ByUf&Sfk~DsQ{$94)ut!c?OZxDF>7Yp^pts;%VuY7+nF{q{~V|K><lq+ H0S0RTjVUFW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6d2e980af8bf61eddd7e35e96bfd416b2cfe740 GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9*U&VBqM)!oe?NlE9$Q(7?#TC1KH^(AdN(Zj^QB#Ky(P u`xTtKWIQ)5IXPJ)cvZ~FO-oNtH%LA;$8+<tv$HLVU)?#m`T4m925SKM-F3|X literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5d86ba1a09e2a69ded52c2bb8976ebe5d6ea51d GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<XYYMJcmMPG`=2j7_<ZT%m&=d7TzUNE>XWb6o_xLW^y|%MUq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9@7~@z}87U^9oXR?LYF3lFyoD0|KE*tqCuw}f%lof8`u uAMaOi?vnA`w8V1~w}^^E!2t(GCT12Eh64*4o7n}FJZ3m7Y-(*_um%8~FminW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg-rtl.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d7c8fc6d7aa65fcdc39326c1c4735018cbbaeff GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV9<|P;gHzW!XY4Mk-?zQ(7?#TC1KH^(AdPvW0ZC0#Ky(P u`xTtKWIQ)5IXPJ)cvZ~FO-oNtH%LA;$8+<tv$HLVU)?#m`T4m925SH>s&=yg literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e00f0d097490dc86de20f384617308d2f3fac3b GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<-j`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqV36dH@z}87U^9oXR?LYF3lFyoD0|KE*tqCuw}f%lof8`u uAMaOi?vnA`w8V1~w}^^E!2t(GCT12Eh6@J{GII#3_$&xGc&N33!5RRHb#l7^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel-header/panel-header-default-top-bg.gif b/resources/ext-theme-classic/images/panel-header/panel-header-default-top-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..566cf70a0a613715ab4e63a83697c4e63c792812 GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&ep`uLk2=ilwR@NW0TcY80r-*@HxfvX=5UHfqO`p2U;J|4UI z@x<*<r|x_@d++nP`=8I>|9s)W=SvU2Tz>TB%HuCrpM1Uc<m-*6Uq65U{r~@epi!7e z@h1x-1A_#E4g(N?>~!JqX3)3MIIv*B!DbF&t(X%V79MUF5ccDkps?s@w}f%h8i9oe x8<@FGx@0^zEjc+^Lpf@J0%H?10~3dY!vck+XJ=a!zq)gB^YZia?U|VvtO3d$bVUFF literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel/panel-default-framed-corners.gif b/resources/ext-theme-classic/images/panel/panel-default-framed-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..2939cff02557a68b972bbd03cc60d7d85aee305b GIT binary patch literal 209 zcmZ?wbhEHbWMPnC_`<+2bI*%edtS`m_hRn87xNFi*mCyW*7NVSpMSUG!rOgU-XFO7 z;lQ;I2d{p(@#O2RXJ2oF(6{?9zrFeN>+R=X?||sbumAu5Gl0zj8ik1zf3h$#Fo-ee z0M#&n>~!JqV_@W9NpN&(WMEWqi8x`<(8wt!<|J@nLsAP9r<Re0LE`}?b^#HA6$u+t qS{fNtcswpBI5fBNO9(7b2yAF%<<<?ba4>9QVqp>p*&ramU=08f3}$Qq literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/panel/panel-default-framed-sides.gif b/resources/ext-theme-classic/images/panel/panel-default-framed-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..24e492d18dbbf9782d17cd45cd729a2003107420 GIT binary patch literal 88 zcmZ?wbhEHb<X{kB_{hL8bI*(WFTef&{~yRu{K>+|z`(?y!vF*zc}EUS21XVM4}k`U oCT3nGp9+D6hg$h%&2%g#K0L%As2O)ALoms;N8U1thl9Zy0062Qb^rhX literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/progress/progress-default-bg.gif b/resources/ext-theme-classic/images/progress/progress-default-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d972de81ee2074c7e1fad50ddeeac82a907a0842 GIT binary patch literal 200 zcmZ?wbhEHbWMoia{=&czKkatnjN8dG@1)JXlQHLR_Pl$!^Y7&^ykE5Fe%Gd_{ac?+ z-tm0K?iX|Sy<B+k)v_b6S08_~{?yz5|NjFu5`z?fvM@3*2r=j|00GEO7Y<hjWfcyF z1q%)~a|mn2oY=7NaJzu8nTEi|MMt|O4DBKc5*&{8D>!$_cy3za%E2e0;gHbKz%bb$ V`P3ZG&CAZtwkUq3BO$<G4FEIQUYY;^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/blue-loading.gif b/resources/ext-theme-classic/images/shared/blue-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbf639efae54ae59e83067121a5283ca34fc319 GIT binary patch literal 3236 zcmc(iX;4#H9>pJdFE7h`I{IF)1A#Fh5ut4e3N)(<0RjYM5fB7KViXV+Wf2GhVF?My z8p38kNgy#qTSQzyTbo4$v2makQG0ZNwnY%Pw(PNcy2b&grfRB&4^uT&J@@0STet4{ z{m(g7m+Rx@;26sUn7}&#`1tXo#kRUXJ(#IG{cZ2ar0&XiSo)d6rQJ`SzIs0Y?&jDJ z?r|;aL+gQmEt8MPR?m=a9JfHv4OVPWZ(-l$@5b(F3Hwu-=?SUvOs<a?(?97*!X74f zPi!*N){4DwK;J)Bu!qUdWV-E(&G1W#6<8%4+?xcL`~p#^3pcD^ynXRO05r2=$R{CI zJvTDL=ZVdlyiom?V1k=G<otS)dc(G9OSYZ0^{oS{LngxN-f!6kgcZ(a18k07qZPr& z(&RU9&N{a(E0gq~0+Wr7A$C`y#vClP%OuUadS6{QFQAdqGq|o15H*el6{LIfi;R!J zZmu#mB`m5jO6p7@5W!Y;<4I?=PT{RBQJp^1)M;GLzH~8_Rpp&hd@MP_#XHw34<9JL zTuZqw<9~ziFys#gc*Z$F^|{=LXsaIAM{a)!2x?3zdIroz@%!Vg9OqqA;@;<;*j@T= z&$Kc2z!IytU$hta(qn<ze`=pw)E?0~H*zY%%Z}FMRe4Vp4EM`J_;l_SU-8wR`7?gH zCc%{9o3-MI0~w6x<??=1A7VzKG}@MW157m6tACtHhR#7Y^xxJ77j(#QZ;WcIXA^Yc z`=ep70gE7nj?kdoHT&2SYB_CxDK{>QodXuT<hf7^BUO=-_^J%GlG_GRGuu>cr`jbg zmue$Vu<NcczUE%2VrVsiMZ!jGF#gtc<&FA8VIP)YSa*w@S>8N09Dh_e9xvlQE}RY< zP_^gH0x!E?M8)GXk?rNLfx%X3$@{f6pI0?+Kk?;dhe?AW6T(vRUoFVDuvw5lW5cx* zM2pweD1!&j%R@Gl%J=ydX7%57Vd9aac9Z_J>yuRWsDXvpfXejiTGi@9D0*{1JmRSx z+(o+p5f5SNP%4rK?c7Uak@I(U5Qm-`6W}z|87ByZglu+UID<kh-o^&^q#I{Ki7uo@ z7Ug6>OG|MzrAi}g)n&=PI-@(<rfa>_qGEL$9luJu=GC51YSSlYON&Jk&F!xvE-3Kh z{SG%WO1_bmQiLaOZ7IfzCtMz%2Bv}IgS}6Fcn-8*XUsdior!R1FP+0~smTuSB&VVz zf%;|_uc}RCy~|cE>3~J|x6xH|BXI_vp(~ndnd8mDl300&`-+FH%kin}hc=mCs%hOr zes3miFqML|D9IX68;;&V(T#Fi!L6K$alqGL{i;8&cZ;nd>kOMh(|6kH`LF^XKOrwq zLxNUq+(^h`=fMd!A!05uF5M_In*~Z)=E03kINGd4h?H`1sjE_lYECtsMqAXUHlDb| ztz~t~4_&#&)=(SpPT$}pu^m2C#P+$NIgptsh59o_aB_$=CVOaI1t6Z-IX#`pYbsB< zh|M?7Zc2#JvdYI_9sJexAvXPJ`0xYUJtJTE_q8tV{!in#)Xt5VTX?Dk(KVGgUDF>J zOmQR2olL&^n=o0HU){)0uU^Ko7nyQf*9pubO(n7qz8!z;@rwVd5(Z;2Mi3NOw(Ahf zsISP{-77F^cj&U|Wt&4rQwiIx55Xkv+JICKVr-023Y2NQ-^1L$z5z!Xn+{V-Qg_!k zsS%~BL4)v{RU3|Xc!1TF{ve7v8CP92?CwS?1WGB30QaD9uF95`VuAErtx79^3OqN` zy3iINB2;8>3`l)c`|MfOO^*_@XTAykFI^@hCY?(joWn)+0+(uL03km${3n;g=AW;0 zU%vGC-z^qEaN9xwnEJAqO|_LYrN%R8hpzH0_8s=xParG#>lYDcHPrX<`L&79gOo=_ zg_zw`8g?DEjrib0E6~$F-AsVCF5_=UBxRzsDv6zf`l>fM|7Xe>RwkeE*`}Q=LXvgz z5##-i=6<qj9ImY+Ij=5~IM$tn6^+%+aD%u-u5$!MtTH1af`G>o96LMVCQQrZkV)ML z$+XDb7)0G6xcj0<3SL1Yp(soP@9YeR_GX&}QYO$WzbBgmfngMpD*|i*WMZ_(^X@z7 zN0}n*g&Do;+3-p|0YLB_U1NcX|8OX5WnYikl1=d9-#CaDtiaS)2KVjQT5K6;sdswH zdE6{8%Tm5IzvpF?=V;|mCgfb3(0~n(Jtz$^$@V@!^Qp?#AMf4pt~>5Paj$cxoIhh~ zPS!Q<`2JDqH5uPX#9PBL=Shoku(XVrp1oOGCI_ozyc)0~L1<sn>;z`y^B@=|=DKmT zTGGk2*^arSvoI-D7-dXEqM%D!orfLWIRiwHZk(v?2+9+zL+=BW+eim*J9Zz%h7q{L z-+dB?Z-Y{w3$qyXNb2wU79-tmWu)LArn{~=c*N=z5S6~PU0eLP&{9qK`uEV!719?3 zODi0*g~hTmc}|If6<)|AfS{vsfs;y`$IfnLQHWZQxTqY0-N_xT`{}z;&=7=SlAnqn zln0~eATkC}2H;95@eXP*hG4{j!D8f2AMh9_4RrFrJ5R9ZSl58`DLOy%-RwYy(H(f* zkRovM`0{XlbUk@!_J00RYttpG@Xh~;f!K*mDs;16$Uex)rZXT!qbW*@!r^ul?qm?a z_-wvfgAhIX3?UHgk6!Ic)M#-Mf@t9d4-A2MVHS50gZnT>eN+P99i7IBLyjEq?hn`t zk7vB+NG0$dd-*j_BUYuAQ7&VHmPTxL<+eY9!>LPm;_niK1tSm<w6dyLXh*H8L#yRw z74;=2IbtUYxCjD4h@U{fI^7}&QYS*X%<x>`(58d!0rG%hB#pe<71F7@U|0=K0NXRx zTHJ#TCcg7=l#=e90j9PjaftUw_*}?l-jkcN4{*WvjMucEqCfPyf2r&N@|*3+^wHBE zO9tWj|6~F(dQ+tTsR&lE$s1P@b)E9~@h-eT5!+L@j~R*)kt~i+qR|09Z;fO(uS$lA z94LiZv9cP6hJ%V4dVNE+T9O}D=_Iu#!th}y|2zhj)ZWfX6XgJxyGX@`p7EWDXWL2k z00q1TEK-PR?<fF4`#=}#Q1U}C!rMzW<+vI1?_*J?xVOKZ<xC~M1CD4J58rOGivHD} z*7n9kVzK-)LYVZwNkAz2&laTg)8)QB`#x;lkixUCpmr!w!7-l|q9J_?#DKcO?}7KZ z?Mg0cPazC{#tWxwu!8yK4w;p`N^nlg$RWVO>iCC!G*Vg`DcRbd8Eyv`_&CQD8Kok` zfHj_!tN?{V>KI0XRV|Gt99y)uO(*D(vaPX0QRf_1%dw_{ps3rP&LCgyug|f(hMD&h zOAP&!R(D}nt`bED?+o%+hxdU_SWfikVU{BY^nZj5crlX!W63<=ZRgf4R=}KMOz;bk gbLa4==ILrY&j|BSk=*YeL&$au32<Kg2Yg!p0Pf$shyVZp literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/calendar.gif b/resources/ext-theme-classic/images/shared/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..133cf232b243baf857367233e750477675f3190f GIT binary patch literal 979 zcmZ?wbhEHb6krfw_|Cv!=$UBjnPB3PXyTD<>X~HXm1O3TVD6D*;+bL!L|&=p9%&Yy z$rhfe21!Q^Q_foy-7_zKYFYTes_3C(>0^ho$8NPxd}^OC{AUPgcoyFJG`!<^QvZ{z zDbMnzKTnzZDQo7}(m5|{=DsSP^R0H#i}HnEYgc@4VPKfFc<YpfTP82sId$2tnXC5A zTX(c|*~_-2FFIGh>R$P>d-aR%Rj;~Nz3y50x_9NPmes$yHvFEn<<ImTzi03Lvv||V z#aqrV-+g=a&I@bz-=2T)-?oDnHy^&U`^4P^hyN}<{QvN|`=>75zjyE6rRxuF+<AEa z$(#TG|1*q&(Gb800mYvzj0_AC3_2hgP@Z7m*uY@OA>*-OfrGSB)`bNRn_N2hWXw`F z1SB%CNxF5h++3*4-Y2c*)x+@dA!D0_Ny3>5#Y4>Oyy6-T9SR2-+2lNnp5<Ip;q;&H zBao1>aC62aVf7*|&4xzT^Yd-|U2>IL4xC*cvD9p$mdk;F#a0uwaxaLi_TL;LoDk6{ z_LiSPBA|iw_G1P%(cIo|3A36`3aNVZ2}m*>X-_;{7Al|+pwP(3%EG4-A<%HJk&(@q JpNE6N8UT=&&-wrW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/glass-bg.gif b/resources/ext-theme-classic/images/shared/glass-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..26fbbae3bc6d2510832a5ed709f0cb029c2c1170 GIT binary patch literal 873 zcmZ?wbhEHbWMpt*XlGzJe&g*4AiDYX<juFIZoWNz>)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|DKJ<A0Kq<$Q2+n{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/hd-sprite.gif b/resources/ext-theme-classic/images/shared/hd-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..42da1ea1aa4322c3995eebfbbea9a6e8c3eb77ea GIT binary patch literal 1099 zcmZ?wbhEHbWM-&lXlGy$)C?EYiV)I@6w;0o)`=F@i4oC_714_m)r%L^PY^Rm6f;Z` zH%t~cN|7*5l`u||G)b2<&5$z9lrqbbGS8Ma&ylvsm9fl|vCNmXDv-4<l(R09vniIh zEs?h?Rj?~lurF71s8DpMRC26Ra;jE#s!?{X^(xu(_y2!}Q7{?;104d2KUtU=7&I7k zKn?-r2?mb;4B8<Mg-#1Ng+;xltZ-;@X%$q~>JSK2bm`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{@gtKW<K32lb4s4`7iccTV?wC+Pe6|eY(|V zZ*OhOe|&CjwfXbT+w8s?Iu|Ff91#?Djo_Im$a0)t-nQdSz$E5VyxOKa&IkxIpXD|$ ze0Aq#u~Pu2i?WPH>w+(i!R!IjKB)<%j$y1Z!Zof6-y9;DGq~5NJ}7gDVJu-S5NBXy HWUvMRItY+| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/icon-error.gif b/resources/ext-theme-classic/images/shared/icon-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..397b655ab83e5362fdc7eb0d18cf361c6f86bd9d GIT binary patch literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2<vd8XIx}0dxQWcmV-^003e$G)6^6M@L9WNlH^vR8&+|W>HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0G<H>mN+?~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(FzLN0Rh<y z3)B)4))^Vw78cnV8O|gm!7(z<JUq}eHPJdd;{X8S3=HW20O1rA<QyF86BFti8}kAJ z^9~OD1_u5M3-%BY^BWug6cqj%8saW5>LMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?<jF+(Sd&NlDjGP}W{v+*MY~bamc*ec??_?oUttLqq;d zO!ib&@>f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?<rWMuzpYX5U{|9pJte}RI5go}!e zjf{?ukCBs-m6n#6o0^@RoSvGzyrhAFt%QWGii*31g|m;5qoSp!rm3&4v9PbQwzasq zxxBo)zrMV`zrMkn!NH`#!KKT~s>Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@ln<Fd8?qocvV#KgnLz|73c%FfQs(8Au{)W^!)!^hCi)7RG8 z*w@?H*xcOP-`w2a-Q3{7;o-{U<jd*l)9dTm?d{a~_}ldK;K9Y<+1=pZ<L3GK>i75b 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!<LKeW9Df87NFRK}kq3vz_4D6xoUHK%96+YQgc3<eP)r+cupvhuOb+;l zCG;GaV<%~>;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>&O<bt2^BctaDxpvG*G|{ zq77t*5IgK3aSsG{EcM1c<Ph`?A>e?)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<fd(9W@Bs%JRFJ>`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/icon-info.gif b/resources/ext-theme-classic/images/shared/icon-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..58281c3067b309779f5cf949a7196170c8ca97b9 GIT binary patch literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zE<R*0LT4pIawtoCGeTuINNq7nbTv?ZK2vx=O>anAeNJ0@02_k<8;bxSjRY)#049<E zCz=2%mjEuC0x*vNFq{}Zi2yI73O=SBLyaFtlNw2?8cw|%P`)ckgfUNrJzR!AVvajv zls;jbDPGJ-V243sn^j|iTW5q^Yl~5Bm0oj}O>Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?<mB4$O$!?+6c%a5`qSJAq)pDxee5luhi=m2=ri_!Pi<78`oV}5k ztC5+ml$xxUov)CewuGX;o~5;>tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy<vt;3S8%$csjnXc56vCW#W!<w?olC;#5w%C@q+nBb~p1IYV zyV#Ms;FP}Rrm@4Mx5}ou%c-)%skX?eyUC-x)3LR}wYbH!y~?<{#ksx6p26ju#O$5H z@u$Gnti;>4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV<t_odJIr_uea()zT_<FwD~xX$Ff(&e($^{~|Vw%GBs+5EZJ_PN;gyWRc0 z;{U<J%)-Ubz{b(V%hk!s)6dY>%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<<i~g+uPyW-{#!g;N9Ke#Nz(S<o?a*|J>s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%s<KpG%=IHC_=jZF|?BnY5;qU+B^8Vxc|LXPr?E3%k@b2~X^YQlk^ZWk! z`1bw&{@~x^A^8LW00930EC2ui03ZM$000R70RIUbD3IGbZR6xATsUvrGG_!MN)*UU zn!bGf{At|SFC)KA5GO|L_O4^bjjH<S+sMx&CXoW$Rg0Hz<wk!b001a(QscgT{#=C; zxy@ZXpf{lfK#{`0mYe?g&GTn1kHl*3;3195&)>WQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=<sy`6%*RGsZoFO!*@0+-+T2UcSVPeT9jx1vPJ854=uiX zpSzyr*VkTTdZ^beCb#Yg9dEFtjicMQHohwsbnKWQAP&EJ^wy;tUJqY6a;%CtO9d@3 z<a&@n|5=eBg$e{^_z54L&YU@W<*5Dz3y~*PvvbdZ)052428$Rd%xLfK-TOLn!GcL} zlj;?@d#TZr&N}PV!w(WDz-I<N^p#^yISz&cOfV6&(I0Euac9mt_z00;eE66njyUCv zD2_SU00T^goVa2Qcl3Fejy)bK2%b3MgoC4w*Z49E1Z{W{N-*Wb_@H;})QG|u_Us5w zI8TD}3oDVZ*vTr_ct@g%=CJd_hhwk<B{*b~Y0NCB81Voc&YaRoE8&#5qmJu*3Evp& zkeLiP$RvYIEvG=D0SHzhqKPKHfP*8MIwpyN3krx~4>*1z15PotP*O<}1TX<nG<PhL zNiEonsUtBmyg<VXH4sB-pZ=Im(g+z0a8QR^|6npmB9F{+44LYffj|p5009IJFciXP zFR?(<2pSqZ07Xaw+2MsFk5CeeFv$#KN-?|Of=e>I=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8U<WJTL?wxDw<I9z|er#~_0MA_yUekkU&ok|;t5AX9j- zzy(fxG7U_lP!R+VOL(F39fXupiXmF`@WB8QoZyBsFbxz<A5siKLIxsm(XuUpP|yGe zL$o1EG&x5U&C{QhFv201@WRFgP2{l*(@n#qOb1z5vWprU(D6;zUGK5M6t|p#fgEU~ k4T=eAtWm)mBgftJ5;ITuu)!M%>kZSwRrC?KL;(Q+JJH=Ywg3PC literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/icon-question.gif b/resources/ext-theme-classic/images/shared/icon-question.gif new file mode 100644 index 0000000000000000000000000000000000000000..08abd82ae86c9457172c7a4fdbc527641cf28e48 GIT binary patch literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VM<zTR9j_SUSd^ec~WS9W@c$<XK80_a%FFO zbaZxjdVK&TfB-6n0V|9FFq8*5n+!Xg8a{{=J&+GSp&m(`8%nDpN0KN`nKDzAG+3D+ zPNpPMt142aD^;j6Sfx5&rZHl|J8R2QYlc#7iCb=iUU-v3YOG0Zt6X=gU4Nioe5_i1 zx?yjDZFYfad5Lm+hCy(~Z-SS9fQ4a!qGpS&X@Rb8i>Gais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4g<d!NE_pwDxm(SD=Qg@lHS zi;a(uk&ls;iISd`l$Vy5ot>SZh?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~pu5<szR|V3 z$FRT7zrMki!0DdC=9|LmpTzL3!quw7+qJ>Wy1~n_!_~3H*|^2hyUEtQ&D)~F<D|#w zq{!^5#^S2T=c>!=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<mKV!>*MI`>g(&|>+<34{Oa!W<MRLR^7iWV{p|Yw@$m2R^Yrre`tthz{Qdsm z-{SxP00000A^8LW008{}EC2ui03ZM$000R70Q(6XC~%xNZtmW}Te#32w`kL*5u8ZT z+c<ad@a5CTk0Zx?`R2KM=1d~RiQ~v+)W?yZ%a<<o)tg6-nKN%E`yFftFCWaGKkdzX zM+=rof;-{W18VJ07A=p+!PFPeT`fJ*CURr<&Zo<L{OaxS@B&7G00+|S1KTkjxmbCQ zZky(A-q*GJkPIlHP2LIw2?zk%XAi7BblvFqVW;yMw|8LI>f0xe!3Pge_@yBbqQDAy z^yq<A*R2+rW&O5ABWL%XJ=gZ+DFE?7#=T1jLL^9`&EC3ouFJJ@glAf<)vxU-U%tcz zjV=2K<@TVW+&XpYfSZ$5%8asE&(QwC4ozO2F>LDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7U<G>TBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7<gvpfMp_u}+BKB&j4g*#I+% z5FJQz$}r{#8KQ{i1k-{d>LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$<d@(;!o(rRh=~j`$1u9fD2Cj?fgjT_LI)^+&KYJnUjzU^06Kib z=rN=ovkNJWMDaiw&h*2K8vb!$nkb#fut2~E2rSUcsKpes3nqndApr)cNaRf@YQQl` zF2*$4C^9(|U;+v!_;O6IzuZzuAyr%ufgMLlBgYhOL_&%##Po^`D=`d_i6+PV@(V7W zP%?-VH9Q~&G!sF?MiOca(#R#4*s_Z+zWmZ_FRECQ2)9Q}5J4Eq;53mmc@UvQ6>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@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/icon-warning.gif b/resources/ext-theme-classic/images/shared/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..27ff98b4f787f776e24227da0227bc781e3b11e8 GIT binary patch literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Pt<HYV^Wu5;ym>x;{_9t|N0<T=X5oKG0Ga?a z00RIz07F-s3}6o62!Lq=+W=Nu(y2B}EN$pa03Qw5L?`%~Xl`Wat_9c+aEh#Rc#+O= z3hn4({Ub|AQ6`HHQI{MtpdU11?5EOB>Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<<k-KR6Nydy+EBh2HR+^)8nv+|Ghj)6QS8h;n+P+_EqV^QU z?k_uZxa?TMgT&;A+>?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_<kkn|`f9b#3h1~GZ7-mk2Ol26 zhbkDTf}v`V)xdBq2pSB8LW_|)_@@D6B2d)9Xd@^ZNuTRLDFB5CltL5Pdl=~j#e0JC zosPT*6kU{2vA(j+X#6#dH^6iwj5opbTbOPIl@L_T@J$5stuQHui4K@;Q=8}pRVM+7 z;aj@~-T`<AX|4ypegGs{2od!G>LcSl+NfU}@28A3*bVbNWrHA>f<g`xQW#f&Y7qXF z!JLeU1_2)=BN?C(5|V16K?*L@`Z}tPMgb{EXbf<L7Lw|sQ7V$_qcJK{>Z4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F<GBZSFYV?VZs z%Rih}Dt3GviB?DtejMGS7&whkY-;+$%*?yV$&WI!c-h&NIe$FQ&3$(1QuXEh=LH2% z3JYuQlszrI{qnDx=GsSSRFWz0JumOemi6!y@|*Si_Qu9eVN=Jucimlo_emuE3-ojk z^!5%6^h>3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3<gw}a|eS@P;YIoDS-D!uBL`YrJ0PQh3{wu(7)J-EE(VnximqKMwg=oo%b z**VOEoRwe6HXKncO>YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9<!0u* zVmu>M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3Y<!9AIqLo7BT z47nHcoHHcU8f3d_n&eF#*_6mLRQDyt>Z)%_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&<CYll zZPs3jZk>8Tb?#p4A}<S}RaQB)dL?#MraRt<HvhBesVjI9w1?Tvw{s^ZL>3P=ZzHb8 zU%2?0<TvLwS>08r{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=<wKGo@1m7;PD^3leLoo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/large-loading.gif b/resources/ext-theme-classic/images/shared/large-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b36b555b4ff04f841bb2101514d8f95bcf7358f4 GIT binary patch literal 3236 zcmc(ic~Dc=9>*`aH#f_@`t;sl1A!Wph)@ebAZ1k{K!AWO0)iq)j0$cji$D+vOGrT0 z5H=H(1QJ8EBH{vCEo%WS4Acd+PX*el;9kc*+t+zMu=8f#%;S$Y^Je<apJ&dTIp5Fk z`~A)wp1-fNOFR=`0&fA}!-o$J4i4kv<0_S^zrX*?nKQAmvFYjQj~+dmnVA_L9u5cy z;BYv=zm~-ZWTQ{`Ca!0Q&stkHXf(HP@egyaw8VX>%=E<61SZelml>3FIB_SFw=+JO z>1fNIJ763XFWku#WHLSX#AgI1#S3i{59~?;EPjP3)VUkh%-=r$AOL!@WXL};UOPMT zM8KC=Hu|E*&0z#jMfkZjB<<Qw(>81;JG<finu8Xi>Yi`eCWIw!mIG|Ak;<0fZ)5Sh zA9uCqhNVeHP=SSmOSseJm~m%o{UT}8_MVsL&k1Ry^bDRyG(_D^g9_691V!eDVNVY^ zn-UqLijlcd2t=?&t2*JPH7Nb`C7M&G8#~PF*%vRQva0-2ijO8oyZhzZ=HUaymue~3 z<btp9EvACOV4vNtP<<{hdYf&x$9>O7!J(>@qQ}5&jG!;U*5$cJ%I<f$$9I&z-8pTJ z-L=6g?iB3;zVM!-_Mh5k=e0+-%#NIl_I08)`c~f3gu#7^Z~>inIY4ry`}yfWL!)rY z^z|x9^!^OS({e>0Y78-BP#SGRy$L3s?J+*aBtvH*d;0II!V22uxF1G!G_nsp|NW6j z*n~w8L5FEj?#exEDYcxouavhti=6`&yXU!63b$&uN)xIwv}#@}M9pl~w4Q8}HeamW zdYoN%nei3xd=*2l3n>z*u)&1kYwG^`y`o+$(X?)uoLSy9em&uc=yrmf_n>e(azN9T zHv_!rdKQy_KiS$={t6guk(In#Rr6U@)8^w}TymZ?8L}WOB>&}{d~5qT`A_V5PQq=H z)ivs{!E=i6wWW$ZfrVLpH{F@|)-k8aAlkJ_DtpYtT4F+F26irM@h23$-Y*&P(GPB? zorj1AF>M4D$%A5d(OBgC*mmO3kLCn84Ryl_A`u~*T^PlnP>VOQ!JX;mnb2N$l8Qw+ z5!~EdTurIciCPR<@-I&tj<gzDE;egeU1rCw(60KnC6?OvD%i4Ou~c{CtLXDe{8*oJ ze@4mI@=}WE#PEh<ta!rx!6{%GI5ybx@Q0^B+cm~>=QmHH-P=lMv0*LQ`K|P1j5Ng9 z^1>CZg}i6c(ghtb@BUW0W_Dz^iBH6m##-j>rZ8!|BHU}qy_UuJ)U|`_tS;8H>?FUl zlr^l7fwUOuN*{Z!(E)LPIjvwgXW}*xV6tY}U)OlX*N_dSjS=awjz<2hkOvRRi_?(M zWeyI6EOs88Xdf=&5qGDXWoENL8Oth6)rg}_YJ^BBmy~*_4XEy9<0-URd(z?fMP4nd zOL6e>Rkn`WfOiChB}ts{p(3__zixl#UK!MvF@lrBWpUX<t1AG>MC|l*Ccm*f<pTCx zHM1@;PR}a8{qn$X9`~^6`_~WMb=*1fc~Ec5!tVb#ejEMlh?TXER=BOE5~u6>Lc%DX zWQD86mwy)}%k!&Mg7oS|ERJ{uuVuB+a_b7I{Cz<Cr`^5@Usl3kJjMuxLdv!uWSR9A z*?IYf#O#PzG`(nj_*g1ov)w_M#9I}d>P?J~GfROo&G&g*1=Tm;h^p}rr6hGneWMmp zYZ`Qjph>g#Si3h^T^R(TsH=I^1=FrBq(Z2cu?TQC3g>DZSt-^?_m!%&0;s^pf!2vO z1JMy;lcPZD{o2QmtG@9rv3wkm81%w@GJ4Xj<nCEqTrYI5W(E`TQ=@)%KV<dUQm@4e zkN@p_0fe>A6~KxB7PGOolBU-Agl;iZp25DuUIhx}C4c)o`izeHE+M~m@6%BA5pf~r zG?j*3Lmi{v`_l@Hj88QYppA<Jn-OW5IIT+Rq@=#=NzVU;a+;MXV0^MJmPJUiOFnGA z&&4WGUX8=GbtJdtMN*f#6R=WM-2^vCniU2YP|PYbBO(ZRG|{D_18&6hOfH$!g^*Sh zd6|Q#7X)`*@J_)iXe1PcY2avV6tpYbGK4aLW(7W69|BxQ5rs0?5kMx!x_xfGg?^GN zBcEB)J0D+PY9s^*0b?tzG09&JMlS8`wp_3Yp8XpK$($9K#_F)%EgOq%LTrpqO}X8+ z49T)lY|QU|5#uvf`LhK%*FGY6?E`O0LtHY){}%yO-SX3|e!se7&J?dYH_ExwE3C){ z)t2w?r(Tr{%*6baTr0k;7zazsi0RquWn~JmO3tqVD-uPVk|tL$BcBh!FfrGYtJjlG ztjc!DC7ppusiGKjA`$~#)Em5==x!Mxf^^|TeS2u0a5Z`dpxi*(`J1sjD0UrzOM<*6 zarg!(^FKd>LHA`r9&a$xjTS}<{(idis<U^zQ2|jMK-<0{kOwW)gs=V#{X7wUPOz-P zIa^dLFH_`{C|Oa3d;$o%m>0Ne^m**;78Zr52Z{5_A=r!D-m;Ir0|iY%7$ya31fh8_ ziVh;<0A&EKlo3Z!lW_zi4h$9}qrJcboHWqE2S*=bPqEGc*^lV+C*REsWSEV@tA~^! zlgAcE8KY~+Lo;{skJznPunJ%QpBPA7$)rM0ySeOx+-y1nLUg*Kv=|(2L*Whv0Zhmi zXmtqDyVn!~!M<(FJ%~CzPC^hpJm-NSFfY>jCSr02#;Es8;G1L9IC02@3*P(zd*=O^ z{}ibN-eE7k;_D=uv@*&iY|zGx&92<^DR@0~;ZFQhf-q+UB7#;{6^opxRdr~!qO796 z<OEmZN&)9VAPDgz2-skl2SMsUNS7Esa~xU?Fb5zHm~N$!mwP}4Z6^$C!3kh<#wzPu zu*t-C{w^}ot<%8Nh9oZW773pXU(bK|&CFd~_&wtl?dNUpd%V6-cLVuN95Q|El=p%` zc=|t?fQ)`4HvU)yOW0(GWkf@VBH?x?UZ9NcuG_<mz=%i|*MG0segS`_bO*mmj)|Qq zg<0|P8s~-s${KooL$y|#A6e-tvm?UrA=jWh29?y-#!VCF0GB#R#il+99edBTkvISa zyb8=yh-+&v06|WOyIlnN9vJQCE1z;%j|KIzs8hTf-_CHS_PzxU>lydnth3$r8;92V z+Cpl*_!B~;?7vAs1o}q{Qu^qMfbKo-H?B?Lb1JCqN>q5%e~Ea=*cvgRE(yHrcXqRy zhjJ){>!0wW=sK+6c~iUGmZK4#)iZJku&6rWUN4Q5mPSgp<1nL~-~xZQxFWMugc!Wi zhmsYnRLWc;NwB6_b=;*{@7Q>p4yjvJ?aDg0$Xc!)6$Hgy96E!1rLR86<|<~@M=UW7 zN?P8DUA{sT9~d1JERX61U9p^PpGDe?>^J@iGU3Nf29GE6fj1o+H`oHR%5mYZK+fo) dG2M^L@jNrkTSM}?a}*&v%_YEX{vYsh{Syplxs?C_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/left-btn.gif b/resources/ext-theme-classic/images/shared/left-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0ddd9ee8203b9fc45eb5ee78ae6bcb7e57aed7b GIT binary patch literal 870 zcmZ?wbhEHb<Y(Y#_|Cu}WsoatQLE_Gs_r>SKV^zd-BO3vC604f{{R1<VHAvpz;F)% z9gqh>d4Yk$n}L-<!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8c>sZYVSj)zmI o(Q}fL|Dq=uMNdw3X~iE>$=vYlK$lteqcf2P3=A_Zn3))?0bn93t^fc4 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/loading-balls.gif b/resources/ext-theme-classic/images/shared/loading-balls.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ce214beb5cd4db00666778d371223c605874519 GIT binary patch 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 z<GPD(57UFCz|>1lbx&?h&&9gFi*>!1pzUs7{@wn9`hLm1fx>(Jl7@kz#sNtqbnGu~ zQe16TTxnMP)H3+<{h@2EL)RY+mC2N450&LIW#w<fHy;n*exkbdM0NXj)vr%g)omj+ zZ6kN&&^FrKG2GHI+}fq;?(XjG?Hw2x7#tiN8X8h6mBYisDwS$vWMp)7bZl&Fe0+Rj zVq$V~a%yVo)vH(2)6+9EGqba^Z{EC_o12@TpI=y5SX^8biA0cj>qY$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@)<UAV=k|s&g$+U8&yrr~RC#RuIwcjenwn!;gJ(Dn#<_D#jCax#DV~#dG z&_DsMq49tss>|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;g8A<FUJ<^TgvzoZFQD;_&8IgR`{WUJRlbmA;Sl932_{TT z%sWd@8CVn8Qmhwxe}UI!<BXS3f(1~5(i1pRSDDUEkwP>mhLs23E}Fg8bsA}jW84be zJj3a&!EX+(#)=!^aPHuvE0%9D^z0oWQl`8qV(5Oxp*_o)rkOg&mhP%-u(0<l%wsyu zjEZeHX`!=T-(<BH60-w*Yh5Ncj8gvJDAkNx<%12z`o`PP8s{X$^wlUWpak77d|x74 z$y96KIn2KqM=1qfYYm+IC&8kFgtYSDRJ+nmqYcVvzeMz{HE`Q8heMxy&hAK)pCY!Y z6Z~P{v+~sjhSBOz*w@EPiirBzII}NLCInV0bB$~Orb0vjTXU_iV#SOhnfwYd+vP}; zmk4fUU*vMRqH3~RL*oOI+$y&wq?#d?K2yE4_bJKeZH}x(s=L;(OMP18nPf0|fw~rH zDALLkq8wC4b(I~tp=x{7IUZcG8mV}hGG(2zE-}TXB8Co6LTI6vD9`3Xed=NUhhuna zPUK3YMnQRAj;~9Y?GjRM`O!N<JxvW{f}d|~l{(44GkwT@M1V{n22jb=uTe;EK1dgW z;Q)^haCqUY2o^ME97iGd@L6;&3aMUKOBlxiJUfgDa*hN3EN*xlj~^|tLm^3IAHbW( z6$tsq!h|dy7YG7{0EN$s00jc*l+H#WnL=TV+m0P^ad8;V>XS@f3?_`nfh@f|7!XJ# zk%OqjKq3JM^2G-d4?(;7)p&sb<S^Kfr#P0732gK#x23xGeF0={7zU!?#RE7j78-z{ zkjHfZ_6MMlepnLVh=(qE;{)&nJXH3-4%N4*OqKwE+;Tv!5VFE%16-aEpvT03bUwi1 z0ud}W2o<c%<&sxAzy~8)0wKtU+{c1^^;}@oKLZHDdw+nC;fTS)5ikQBOdF>DCoC_x zFgMyk0aQ)fOAm{tLDLuoh6x2UK0R(bi$jkD1vEB~9?s%M(#YylM@%FuVp#;fssZ~@ e5vO$#&5sswUKi2&Xpx=kB8ZO`!7YivcK-uGv{KRl literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/right-btn.gif b/resources/ext-theme-classic/images/shared/right-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..dee63e2113fcca680699455e8a56ee3eecc81c40 GIT binary patch literal 871 zcmZ?wbhEHb<Y(Y#_|Cu}WsoatQLE_Gs_r>SKV^zd-BO3vC604f{{R1<VHAvpz;F)% z9gqh>d4Yk$hk=zr!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8cxsZYUC>4${T q6OT!%mh)U@eo8sjryPH%CUe8H16^j>kIqCIFfh!NVPs)pum%9ETq}wI literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/shadow-c.png b/resources/ext-theme-classic/images/shared/shadow-c.png new file mode 100644 index 0000000000000000000000000000000000000000..d435f80aeaf38aa37a2afbea4363d7cf8706205b GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G5}q!OAr-fhQW6q2Bsehp@I)}QHZd@=F-Y_=I0esbe+N{< N;OXk;vd$@?2>@aO9`*nL literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/shadow-lr.png b/resources/ext-theme-classic/images/shared/shadow-lr.png new file mode 100644 index 0000000000000000000000000000000000000000..bb88b6f2be887650f28b16726e470c09459b9c86 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/shadow.png b/resources/ext-theme-classic/images/shared/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..75c0eba3e101e3f32cef8bde7bae7383d849e935 GIT binary patch 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;=qQcO<t z`YEW%DrBq}yiq*wP^1Ny_!`AB5sx`7tGjqzT{|n<Be?l>Ogc@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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/shared/warning.gif b/resources/ext-theme-classic/images/shared/warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..806d4bc09385a98ef1ac19d25e30a21310964e7e GIT binary patch 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_<OP8b zH-MzVhZ_nXE*N}xpzz@Z5E(o;5b)uJ!-o$6A3h{}_)yT=($LyJyLal`2{YzRnZ01f zyoIyouUxQd$I=bE)^6RsW!tuGJGX7$yKURvoqP9f-*;r!<#U@poM`y)1BfPk__5%? zfdj`+A3b~J{P`>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~ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/e-handle-dark.gif b/resources/ext-theme-classic/images/sizer/e-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5486c1a95bcc0f39a88c15c10c04ef7c3c561dd GIT binary patch literal 1062 zcmZ?wbhEHb<YKtM-p&95p^ZEL|NjqWjuN9GFtS2G@h1y2$j3S$0+c5hIQ}y*a>#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a<WG7s+g0TmY$w& zkbG*6=jLT+XIm7%x^r^#^7Hc@nz>}Xwye0g*kiI*?5Qm)FE0;R>^0YG>#D1(BQ|H< zJ+*c9_4NsdyJWq$t+}~5<MOK5)7#eG-d^zd)LifF>+bHZ`26bb>Fw+9?{8q{mh;)M z;o;#9VePmxJJK5%IOMq<G!l%C9G}P>VHRPj^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<TfWaC7Jd~Un literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/e-handle.gif b/resources/ext-theme-classic/images/sizer/e-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..00ba83500851702fd0afca2129c5b53004ffd1e3 GIT binary patch literal 1586 zcmZ?wbhEHb<YKtM-p;^Kw&v5}TR%_T`*q>*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<yiYnl$uNFf%+HO_&ds!RzxO86 z<mtr)p6z;PtF~re-4J}*&G+|~+#_2H@6TJa+x-3g`NhoUZ>@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><x{exGFMD%nw7b7N#3kiE0(Xi^{OA37$yX-VcU}8u(s}~l{UkUq7rR4 zQN<<NZd-2M(snwy%4Ch((W)=2S5I}))>?LPQ<U!3%T>FywyoHAYVDT0ajVyEf83S5 zYUk}~v)}G~z3g<}j<=J3>+SdwC9S{f)2`L|`~Ez7{eCaQVeNvw_itHmILNZPy5Jy> z_M8uUINa|T91(v1`~4w4?>U7>|FZqra8xea=i@Pz{v4wd67%mAp3<n_v+1<>VHu<2 zhTV5Ioz;IFV|><ldX4dUo##AT&N#k*v-yI%^x93A?A7mnzT|JtTY522+1B)8#OoN- z%VFMcORpys>wdeI5}aFh%{jYv+pP@iy=AuwcHjMWHRrml`Q7q*+i$mvZu8$Qzn3`O RcKf}i-@V(HGcqz*0{{svxFG-l literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/ne-handle-dark.gif b/resources/ext-theme-classic/images/sizer/ne-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..04e5ecf7d3837aec9510f5467282c10f158a5563 GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq95Nmo l794Em;N}uwNKib;z{ui|Vj-Z!(9Iz$HK#)0@qq>gYXJ2^5-b1! literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/ne-handle.gif b/resources/ext-theme-classic/images/sizer/ne-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..09405c7ac7b321b3eb9170b1584167448819a071 GIT binary patch literal 854 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3V+Ljp8IKJM4mNXe@&zn#U~q0?V9@AT!JyQ@ fD99>c63}qqP#3eHjE2L+1SS?XB|ZfS0S0RTeD^Ni literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/nw-handle-dark.gif b/resources/ext-theme-classic/images/sizer/nw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e49d6967c08db2c02a3aeb9c1f3cacb9c8665f6 GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq95Nmo l794Em5abeINJw;KWMp#S2{2G%=w_Cco6{kn+|a;a4FKuB5a0j+ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/nw-handle.gif b/resources/ext-theme-classic/images/sizer/nw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fcea8a9285dc74626ba9374055b25ab77e53a08 GIT binary patch literal 853 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3BL-#;8IKJM4mNWLY6U1HJY;AB3U_ccEMVwl dR&fe3XmDU;7El$lXlO`qV_*|d;oxAf1^`atE@%J% literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/s-handle-dark.gif b/resources/ext-theme-classic/images/sizer/s-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..4eb5f0fccb6d0e43905f732d10cd41533745c092 GIT binary patch literal 1060 zcmZ?wbhEHbyui-I(9Qq?p^ZEL|NjqWjuN9GFtS2G@h1y2$j3S$0+c5hIQ}y*a>#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a<WG7s+g0TmY$w& zkbG*6=jLT+XIm7%x^r^#^7Hc@nz>}Xwye0g*kiI*?5UEB1_q}2ZmnDnS(jHwY|grS zYU}Fj>k|%l$$D>Fb8~aX<yEn#Kd)?9#dvR5>+fl6@9wVn{Oa!M?d$LFZ(!z@^VzW> zaVFC%HL)EM4v!B{Q1+hZvvbqa(=&{-@15DX`T6+;&fRjpySBW%ydrpY+}T}QUtiyl ze0rYm?rm>x?<jtK@9ggF@9!UI=9c%{v*Y9A6O*;$&+Xay`T2##-t+zT?)v)r#^&t% R=l1UY{{F#qHbxc(YXFYFo9h4o literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/s-handle.gif b/resources/ext-theme-classic/images/sizer/s-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf069c243a3f5c59c4019e832bc571371987f030 GIT binary patch literal 1318 zcmZ?wbhEHbyui-I(9Xb6w&v5}TR%_T`*q>*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfty3dW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh& zOU854l9Q7)f>*_y+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T&eFss>$PRY#l;?zwPH_g zS$TPRz+$htURzgPT^+GG>+Y$otFNz5INT-cy=~3S%^8<h#cGQ%G%Uz_xKCAJ`r5m@ zD?Y!vdwTo&`}-T1x#fIzY)D+kETkQGX2-_I$0sOz&-2;2>FMbi#@YAI?A-kP`~v50 zIp1AdUS3`iygKgeuC1@HZ%95pZ|#k>jf~q0nRm>cz3u(|1I^s>etUL&e0*ZEcKo?L zJ3n7!TI4<7Z||<JuWxM5zJG4-?(gp(9Pa)v@4s))&(AL|uZ};zZ}0E#A0D5c@4tWF z-`_tzzrJsOx1sUHKgJ*P85lpMKWOAoTk)WY$Lz&}W&t;ihb<yu84s%%Q&v1|lPP=g zuw9`|<57pow2Vic8p~EZ>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<<c2xt6nafQ}*iR@&#>LuU0IXmi21oie;-_ty;6~)vMJTjxl$oIxtuR03tF% AKmY&$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/se-handle-dark.gif b/resources/ext-theme-classic/images/sizer/se-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4c1087868afab5b5bfd329f52d9907eb1c0061a GIT binary patch literal 838 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+YZ<YOHW0m>5$9Lfxg96SOJ k3mltSSY>Q9925^Vv52er?AV~l(9La}b>~E3vIB!P0N;ZWjQ{`u literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/se-handle.gif b/resources/ext-theme-classic/images/sizer/se-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..972055e7b297a702ab9aa2d799d133b94ac92315 GIT binary patch literal 853 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3BL-mw0|tfz4GbL23Kjti7Bsam@`xxHI2=6O f!pbfp!f<h+bBCxX#|Dm#OHNMK2%g5n!C(ylO93$s literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/square.gif b/resources/ext-theme-classic/images/sizer/square.gif new file mode 100644 index 0000000000000000000000000000000000000000..14ce6f7251071ecadda2c968ebdcc5047018de50 GIT binary patch literal 864 zcmZ?wbhEHb<YwSzXlGzZoqYb-ou4P~{XBjD*SUwkE<XNs<>{~M&wt%~@%zrJ-wdN* zGz5lq2q^w!0s8MhgAT}-pgh6AVaveCA>$E{(A3N!$mMciL!xsdyOP%wjSCG&yTw_> nZk(97*nvsGxlP1k!4l8OOsp$nb_OLhOgBgro5QJ~z+epkjJq?f literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/sw-handle-dark.gif b/resources/ext-theme-classic/images/sizer/sw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..77224b0c06f1666685286c5322fb02b4cd2204bc GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq93m15 l2M#ndammSOI2<_C%q421Gvk7Sb33nm)}0d@l^YrutN|0L6o3E# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/sizer/sw-handle.gif b/resources/ext-theme-classic/images/sizer/sw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ca0ed96df2059fe283c1d65fa1032a777e1ff97 GIT binary patch literal 855 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B369#4u9s?kknL~(&XTgDlMrIB%tpI}t2S#RY fRtX&rheZe5WZC^h3<?h%nyeALDn?R4fx#L8IQK4b literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-bg.gif b/resources/ext-theme-classic/images/slider/slider-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..39edef415152a462362b04c378b4a927620c21c8 GIT binary patch literal 139 zcmZ?wbhEHbWM|N2c+APLbMuA+dv}~XeiVYvU%Pef;+dP*E<Sm9|35aM_>+Z^i-Dg( zhXDvcW-zc=d^qX3daw8k-md?wN_{Gvbxy0eB3|z+_`@Niz>=OYrK)oNW>If99jWX# UcfSB57B6-g4Fw;`L_r2?0Ce_4R{#J2 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-bg.png b/resources/ext-theme-classic/images/slider/slider-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..10ede26ba6b2609e5871aee4e7fd75d4bc36afc7 GIT binary patch literal 1068 zcmV+{1k?M8P)<h;3K|Lk000e1NJLTq000L7001or1^@s6Vr6lI00092X+uL$Nkc;* zP;zf(X>4Tx065EyRLxHlK@@*2%VGlYA|f`%Y&>XVfGlVfVnkb7ngZ6Qd<ewEY`4>P zWxHKxx8)-o3>R;T#=G$&p8Nxd;oyyvfrOwjA)YlxV}jvgu)f(3c2WG8WOjb@-fw>I z&6}M8sDCKwx*8M!N}5SCiKs9>F)1{>gCHD*MhHQpBpZ4pogM;gj0?ZD?Kco$<9hr4 z{=c@y95G~ozyZYNoFSJG&j8eo$vQOwxHYtQPn$a8dd6v{m>}X~3>R!HGMu$>%;Jn> z`VfyJJ}4KZ9O5G4wye)y@L@X#t2HNxMyMhStQKin&MPYMrTY)}f3}iZapN7r-lUt+ z42~zUf6LSUQ5?fqhtOPc<Qn1@#8JgejyU#lEt|S(^8>f1%7Yn)^E^jlakfvy%SLrL z?sDdeeJO|Y;ifc@MjS%?LpRfoPOw!|Q$x0Xu$LI|Vb`8l`jd`5udCL7fcn9^w31<Y zo<RIkqVa^o-z3_ov$ignlVXF2I}nE<4Fo9UK>-y6$Up+3I401l!AJBcAVV2h6u&O3 zfF9R-3o6KEE5{(Z7^;Lll?8f3kyr11-Ltyvi&C(nkliQ=-`s$yU1mGzp2Eufa;vAY z!7W{1Z(5m$2x_aAVhOuq=@>o*Uk-U~G2|(*49T6;b_y2SJgfLt{48#WkHu%=r$5xF z@Jo#%zWB_uU-kq!6WHAh_h+#<3XGyxfoUtY0TS9Ym_@$6=Paz%+;OgxOLE;@4+z{P z?lRZQ#c+0k8*&+ZoR9Gl5ct!458ufTFzoJxKZU*?{Kog3fb83={{)GTMSK-$hpbie zDQk7r@)`IAlgyaxQuUSfS*jF@rqCsd=Y<G9OGHR&az~pWsj6VP41p4Z&??Dw0DJT7 z>$sJ%-m*Z;s%JB=09^cn|L~e;o2&r5FaVC6^=x6hQ->b`ES-}pwCddNK;Siikw4RA z&zhq6=De@fw(x#5JOJ3aU#oq8QmgGeMg2{HSL#oxBMR2PCMVwj000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGi!T<mc!T}X1N`L?W00(qQO+^RY0T}`SIWC0Ak^lezu1Q2e zR5;6HU>Ib8an+KA|8YsONNF12)X5^r%Z5{u37?%T&p-ddE&1c!bB0lXFUlAg7#Q~K z-ueIC%NLlEhxhON|KY<220=Lu%&`6N;RA!Dqy&Q?mZ-xYWdZ^M49}mxVEDl*fXhKU z{*T5DDY;BiL4m>6#-5S!$k~e+lJ6hgU=R=xz@E!EBqSJ~zj%Q?%2?RgaObl3j~+pc m#g@xBdH5M@9o-oRB7^{9H8$Wba5xqK0000<MNUMnLSTZGMe$+) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-thumb.gif b/resources/ext-theme-classic/images/slider/slider-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ba1dfb1db092194141198eaeab11752d02fa2d0 GIT binary patch literal 542 zcmZ?wbh9u|)MC(OxXQp#xA{%uvfIm#z6GKsSN;Lfo~!S6T>lS6FaGZUql0(;0MW@O z{~_qa=l>9N{q=tcy7uQk1U>!vAC5l%`_I6@pqH4F<C>S4l#`mm0ptP!BO`=nfYDGc zgC3A!#9+c;#&BU%hyX}7U<-u4uocSR4(0EF(274<fXWmYbU;Rc{KUZa-(iBIgN_vM zf+a;KbF5mM`oC;m8O3^Hd71RosMS*oTsP=iv)=c8AY8ZO<g*H)+_h`uduy2W%oiUm zldr0*sf}si&t~uLZf)~t%B|??VejkrWy-5ypVBjZhWD(z%IxOqg;9%Vm(S*3uu@@S zLv};*#`JBww(sz9&dhY#>+9@xY{TI+E|xQA&vBjfJ{=sA$#UVM0!whb#JzhgH*aM! z$V&*l5PEo%CG6hQmoHvlWV!!dp6ln&&nLg$d-3$kTj6m1xlIjBKY5iCJ}B&KVUbq4 zvV4R1;ffEBLXSLsA8lDJVRq~l$EA5ELQXf-CaUorF-kY^-=<Rb#^bc&?js3;=Gy5J z)+r0C+E%i1Xs9i0%#o~ZnX<xf-nKdaTD-b_16L(2`P6mo%B#ycu~U;|UzKV_%#UCE RHz?9|#*QS@R#rv^YXBE={Sg2F literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-thumb.png b/resources/ext-theme-classic/images/slider/slider-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..cd654a4c1680183026145066b4aa1a7802605456 GIT binary patch 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<kjq5L-D%Q?n_JrVtza48{Mv6r!eNKR+#xf8;`80iRcTo{_^lS4iX(Ut+`^Vq_Ft zV8k(*2@K|&Y!;KvN?^n?SxjbV!umeyZVR82k+x+zkRBfOtf{qzq^yv#quh%G@x1JR z(8Bf}6HsPgQF2ByL5ORfds+}g5VVS{6FF%D2t*@}2B|}MPbZeUbRIl<0*w=;wPQ=b z?`n6a+|jLY-PEI&MAPVUrvX|(4Um2e`%%(jTLfgQ7+6BzA_iA*-vjA9y6q6#(c?z9 z1080xnK0zV;4*sMxNd+F82uOI28Pz~hX*%|m;xq%aX_(&E*nG^=m8xSzy&if2bcf@ zAb*O7UN`_dU;`|`V?YBu+JwXk7vKb}fDxDmIt;jNg4~P|Gaec+_!#|K4Cyg2i+fYJ zJB~Z!=$pY^4LX&$rNFQWf9i0525oYT*`c&TZo#k-4`y+56xsz$&tt*~l?{?Hbg5um zf?)}|Mf6UgXA;&mJXwQf6{cnUZGy`Wrw@*G*u2m$V$un<4ekvrY{2e?c?Gj>$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-{<Woy zE7;HbIQN4}i>yUCV9Ec?o@;sUjk=1>cAm88uY+&dR!6>c{!;b@zv}ZnqTHCISIq3j zrmRZR!4J?JEO}MEgUxOYRO$OSzfMm1HjkLN%<YS<TI(XTCB;(yHZ2)YeEe3s;zZle zLFZZY>MA;yI5!rveWW!)Se@qKRd$^E(bb#N7V}{^<G7z}sMQD$><f#kPp&)Qdl&U* f;|o=%uaKp|chc=sqDJZ;2!fNAncA81$v6K2%TzE& literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-v-bg.gif b/resources/ext-theme-classic/images/slider/slider-v-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8cc7a87d82c7f08cb2e34eb20e1a07666b14304f GIT binary patch literal 145 zcmZ?wbhEHb)Ma32c+APLbMuA+dv}~XeiVYvU%Pef;+dP*E<Sm9|35aM_>+Z^i-Dg( zhXDvcW-zeWeemSua&kT6t9$K^8VjRDS$Nr^`@bX_3#a5wowe}px?QKL_XYDGm%P?+ cr1xXFwOP0_vyNpX*Ti+lJD%O~RAR6O0B?Fr;Q#;t literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-v-bg.png b/resources/ext-theme-classic/images/slider/slider-v-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed116a06cb1f9659663db8479a4afd6d40892a6 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^x<Jg%!VDzym~Z|BQYryHA+A7r)slrr&R)EG>-wJE zI}Y#Pxq1D{J-c_FIdSmtk%MQBAG~n(cyh(k2S9a<B|(0{3=Yq3q=7g|-tI089jvk* zKn`btM`SSr1K%MKW)#)%Y5)qdmw5WRvfpKtWMX9h_U}mrP{`2J#W95AdU8TSLWo&W z0t1s`vZ%mOfoWXJE*!Poyv;H}xV`YCnEq>zgIecii8VZ6VsJ3!4Y!agu>fjj@O1Ta JS?83{1OUG1NlyR( literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-v-thumb.gif b/resources/ext-theme-classic/images/slider/slider-v-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..58afe96aae0b9c6401d8c9991922d2cec6a86171 GIT binary patch literal 533 zcmZ?wbh9u|)Me0OxXQp#xA{%uvfIm#z6GKsSN;Lfo~!S6T>lS6FaGZUql0(;0MW@O z{~_qa=l>9N{q=tcy7uQk1U>!vAC5l%`_DjQp!k!8k%2*hK?h_H$WIJx{~abcI_OBT zvP~#DnPWBobmG!aEBwrF@C%)KtH(M!^Q+<7l&$x^2<ynjo6B#hT9*<m&AZ7`d%@+m z{JiXy`9*b^IgDN1-4V6z9f^gLr}RyjnAF7HoHA{CY{RT(-thkU0Sjj@p1W+h-^$q) zYu2q`nz?F|X!MqB_kEsw)^V{MIeLtR>!9CZ2??R|XC)#}obq9jK70Pcr2=`DtKQdd z-a4Cp|AE4zb6i}vFTZ$s<MkV%rv=X+JYx9$=TF3st49K*e(=w;;(Q}?Z8BTH&4Vpp zUgc&;yis(?5avDQToI_`8h2!qV@`Pgtb@rKlMjA2J~CY};l+|EGb7W)Ev!v4w*|Es zr~4XJ*w(&cl5%_DU(zXIIBS!!#O%f?GlWd5zN7`N@~ve3I&<o^Yja{_1sAU3e&#z} J-w_ys)&R&U>h1sl literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/slider/slider-v-thumb.png b/resources/ext-theme-classic/images/slider/slider-v-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3d7258ada4c81c6fc060bd5eea69524f0ddd65 GIT binary patch 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&<dP|LI-8_3 z(wOu#CY#(uXVU56?72j$7a|p8WrmE<)~t>r8Rg-rR1}uO-*=86B3}KEpj8RNJSwCe z<7ROQqPp;lkCMd%5%jZYyEu~r&Z9<Saf4f_b@xo5rrT?r#GnTO;H*qv+2yY9_f>1X zf9j@W8dR9k4|L3<$&YFm<W`iL@s|aacGP>Jnu7Kt{<dNi7y)`dqv0LYvls+SK$R0O z0~iJ@fFF1Z*nra|PBY*DDr~56<HaNf04v}EYFv2kL;DQ6Kf?~VfoDEw7T^RtK=UNp zXQBH917HNk0WY91K{Jn6AE25>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+*yoG<sE3X&NJL<F{Y4lD8Bl7+N%mWhPD=BVW`V7F;0U$sKu@=V;>x 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(eZp<wmli3~ooM7BZ5Y?iG(esLh187tJ? b-YZ;0M4ZmhwXjuYYD_|qnaxwCANu7#=K2Ne literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-left.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..d44b785cba51652a22036a38e31cdae95c07b0bd GIT binary patch literal 354 zcmZ?wbhEHb6k$+dXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!t;^TntCZa@8e z{l&jqFaJJ#@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+u-;ct>`Te? zTEVh5=e1DKWsNOOceXE-cI7{9D$Td?@z12qw<hd(En4S!i`PNdYT?1mt(7cVf*}oC zrA6D0`=|H{<Z<_8>aVSBOP*Siw`Yy$>-RyyK33sb@fH~kP961ajXf<Xk<OiJ)23-^ z>CM(L(BbD>$j7sUhnsT+C;L3@1&fw0Te)hDz&gS0I|Mhap0#!1cE*F-cW>Dyc#!e% z%02V>cAVI8`smIJ7dP+a7i2zhhk4ia`3LSCx_@Tvx#M?EJ$U}&>X93Z4s2h3>EoyE e8^4`hFSz9EiZef}Lb()nH!e(&v=Lxpum%9z56Kb$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-right.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-bottom-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2248b2b12f78ea80457b08add6a7271c67001dc GIT binary patch literal 357 zcmZ?wbhEHb6k$+dXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!<|-<5}-ufO<r z>*e3uPd`6=@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+us%{y>`RGs z%2>57NL$b~=Zss@ZJ%={XQjor+|pfm`)h*HtqCh0|D0spAadR2UsDi+>2nvR%$sXJ z{_ORe8ME4FLN52Jlw#?CH*rrd@7k5avG{nLBWF}nS%8yyRiT%2S7T3SLBFwgpW5{4 z+OxFu^w~KUaBy)i;pSV;$FDhW;i9F>R;<!kvrur`cERPF1hy>L#&}@cuGK8_w+bF$ zJhbx2F^=sgx1ZU3bl-)8+jnmfWIlP1S@71?^C#}zcyw<6y+be7zB;w@@}9>Fxb~m^ iw0GU5jc3;`=2ki&<#u-F>Yx>$E?RqNE!-i%U=09X0nMHO literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-left-bottom.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-left-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ed299355934cf2bbcb264796c0ddcc3c6a99593 GIT binary patch literal 347 zcmZ?wbhEHbRACTdXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!t;^TntCZa@8e z{l&jqFaJJ#@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+u--^e>`RGs zII?hEPW6H`n?;_v_bZrA8_xZ2IwjFVM~c@jCS|6u9B)(lrEM|>`F_d_3aUE$?x!kj z(5c^iME83~(hkW-g_SSe6yKF^m21e~{W!TXrIe+Dqq?e=rCzY9Pq3w}y`!eQuAsNC zXyT--Nz+*P7V$L{3oa^~A3dK#WAUQGWh+>?wr<<Xw0+yU^-Bc9mao^?b!69`y{UWo z4j(<M!GGc6rOW(h&K?nB5x9Nl?mdB<ypJ9~dCGh9{>wWLpS^wb;?>KWLSMdq`~HRH V$M0_}|Nb*DbIEv2aNuCD1^{ZC#l!#r literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-left-top.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-left-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..183d0e2c0adcc5311302493da3614518a232b350 GIT binary patch literal 344 zcmZ?wbhEHbRACTdXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!t;^TntCZa@8e z{l&jqFaJJ#@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+uwGSA>`Td< zw_?e<oYg{kXM}un?^h@b2E708a6-?0%iAW8`+f&=tmbzm3+-%)nkjH7`SjZ=`J1mz zUu(>ko%m&^%r>qyPfDv6*rf~puwi1j@ceOFCL?2JYYt0YbxkKnLxx~;ORHdeUCs3A z^(;JdnkLQ{oKs#oW9h896Xq{i)KRr`W<}&2o_VWU*0Al|HGS9KO`Eq)UdR)<cQ?ba zosryU&dfV>=IBW_rpu9>H*OYZ-n?<?@->#bx9&WSWPS1S)oa%4kKf;Y{^s+GcOO1{ T`tl}{{qMj34E!maj11NQ;cv^7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-right-bottom.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-right-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8f4851946c99cb2d8c884040cc6ed44c4e43f72 GIT binary patch literal 345 zcmZ?wbhEHbRACTdXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!<|-<5}-ufO<r z>*e3uPd`6=@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+uwGMO6ivyT z*IKbA=e3-Y)^w$$`xSjhHpjenn0>-QN2<R~UhfbK-$W*rz|3U6Sv#K#GEC?a;aX-P zkkE8KN_l&=h^|<Y+D@6u{jQyVs`yX*zFSb-R8m$^Rg+!E*&x{5<WnwC*AdgzEs)>a z*D`Thd+jtOKEA?PC5sogO`AGz(UQUxpA{<wc(!flVcM}{-HNbHoB5P>AKATk-+_aN zkDgKDKY!ukC4Ls6GiQYaZr#3fSKun|!$*&w@Ls+5;`W25Zyr8>`Qob3=PzHs34Qwh S>od#WfBzYnxnv}m7_0&OP{Z*6 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-right-top.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-right-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd67d82c2d4e0c3d6aebf460978a404f2da3100a GIT binary patch literal 347 zcmZ?wbhEHbRACTdXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!<|-<5}-ufO<r z>*e3uPd`6=@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+u-;Hm>`Td< zr=hqu=k>Z*+MBbI?^oPg5%B)MgNLvCmXA#*=5-y+v6|nLY~<14u>S0;<kN4f<U@6~ zz0#PioUz%8N3=&Vi@j<>U%2p(8YYGd&rcR*WH2(8rj^%K*K{^CHMg|!b#&ECt*r{> z<`!(3J2zt%_vC3yW(drhGjHC4MFN#erq<1zy=uPT!cewdyV<7h*|oWEW$X4G0{eH> zoL~#(;yN@z@Z9B{Czwv35#YFeyEx;{ovSxagg&@?{~1Rp>zlXl-m^Y^`T6$i58vN> V`ttJIj}M{jOk6S^9~?LstO48*$`1el literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-top-left.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-top-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..54b38ef1057eb4efb0b391d17c3f993baa127279 GIT binary patch literal 355 zcmZ?wbhEHb6k$+dXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!t;^TntCZa@8e z{l&jqFaJJ#@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+us%>wH0@2& z@|Y#HCUB2Z<sz+1yFNtB+j@6j>y2|)b~Cmbiyk;`^=cAF!<8A6KQ6fuU%KKz)$H4o z4|Iz@X!4IMS>+ntnayzZtZ(XVkFT;m?W>+u7SvZ{HfgsAbqaL%^!Bk#m^f+j6rmn| zzL|VHb9lHp7jUvGO`kP;?)-&|r*+Sm#UnUp<$~2qX9@0@w{X#twc7<5cWmCXMqu3z z#*;gCZ{2s|<SD^bdyk#JaB<5OenIBz7nm;{nZD!NlZR)I@jbcl<nqzu2X4IE_VnS+ h_cNcp{k(7eiZi!-N-sUt3p8}+Pz;FLVZg#*4FCXz(f$Ac literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/default-scroll-top-right.gif b/resources/ext-theme-classic/images/tab-bar/default-scroll-top-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..3394e61212a363477ebe795722b4e32ad20d0c3f GIT binary patch literal 354 zcmZ?wbhEHb6k$+dXc1=cDOwU%vo5Q5SIP7vy_+5%y7A@o-7jYz{k!t;^TntCZa@8e z{l&jqFaJJ#@%ho)zt2DXef{b0hj0JB{rdNxIH35Gg^`Ovo<WBJ2tal+u-;Ellv>g_ zXZa#6UuD6hz*!obHtE?++q!q#`WtJ?nO~*YFszy(JdNSPmGwJ~9oE}Ty;%9ys9D+Z zyVi`Ri7Gi_<?~kVcP}s5yEf{1fqG{~-{-8#vYIGMfwuOJPN8mnmcIT86DP8BPUYn0 znaRU9hmXHqf6BBOv*ylQz_MuS62aMX=eI4KHl0Us+p-M;n-*_l+&*XL?x}kj_X!?Y zvFgatW6L+LJS=$T^0tE)I0cz6pJ5ifwrJbwhxblSdwAyIxn0*UzBvBs(2Yw+_ut?A f_~nN;Tb8bWx_DNMV)e8Y3QBIhDw<P7m>8@9<6q1# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/tab-bar-default-bottom-bg.gif b/resources/ext-theme-classic/images/tab-bar/tab-bar-default-bottom-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8acf925fb9f93e09ceeff1058294ab4acc6c5774 GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&d;`u6)Xcix}9^Wogx59jZFxN!gDMId_c@zR5jmmhw*0z{8K zU48WF+T+jHf#}KS8&5vpeEQ|qvoE)wf4TGg>)jV$|Ns9FGz1q?{K>+|z#zt;!vF*z zJ6$-u85lWaJT@#i*vuiU6?0<4!-LHHGG22$HYy!u<W`Beb7JG-<NXTGRw4lkj?Ek* lE~{crZd!VJx<T@(Ihw`?7?{`uG!h;#G_`PwGBGh&0{~a$bjJVy literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/tab-bar-default-left-bg.gif b/resources/ext-theme-classic/images/tab-bar/tab-bar-default-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f913424bcca3a7f9ce8389a33a65d0108f7c54ed GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<+&`u6)Xcix}9^Wogx59jZFxN!gDMId_c@zR5jmmhw*0z{8K zU48WF+T+jHf#}KS8&5vpeEQ|qvoE)wf4TGg>)jV$|Ns9FGz1q?{K>+|z#zt;!vF*z zJ6$+D7_<XsC^$N?aPZ5RBy4bSWMX0G5m7KmXlP(yFv_}fV&mfD{R+-qGM<~3oSdu? iyej78rlqH+8zi5a<GFd++1VDwukM`O{QO)4gEaty=XhBF literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/tab-bar-default-right-bg.gif b/resources/ext-theme-classic/images/tab-bar/tab-bar-default-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c053536969c7f3320dd0a316538d954b05a3679a GIT binary patch literal 203 zcmZ?wbhEHbRA6Rg_`<+&`u6)Xcix}9^Wogx59jZFxN!gDMId_c@zR5jmmhw*0z{8K zU48WF+T+jHf#}KS8&5vpeEQ|qvoE)wf4TGg>)jV$|Ns9FGz1q?{K>+|z#zt;!vF*z zJ6$+D7#KNZJT@#i*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv$NLqWyJS2!E%BVh h$igGxu%MxlnL|h;;=qE&W_AH3j|m2iPOS|L)&MXZbyolY literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab-bar/tab-bar-default-top-bg.gif b/resources/ext-theme-classic/images/tab-bar/tab-bar-default-top-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0db6f6539ee10c288da037267c0280ea93a6a608 GIT binary patch literal 206 zcmZ?wbhEHbWMoia{=&d;`u6)Xcix}9^Wogx59jZFxN!gDMId_c@zR5jmmhw*0z{8K zU48WF+T+jHf#}KS8&5vpeEQ|qvoE)wf4TGg>)jV$|Ns9FGz1q?{K>+|z#zt;!vF*z zJ6$-u8MG}77#1uz*vuiU6?0<4!o%$X!d?Le3X6_*OBg53VQ6GzVq!GulJVTM<m6-x l<)8@y4;`CXIr&5+6cm=8oo!M4>dwi{%g@iZXJ%rs1^@|Fbu$0} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-active-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-active-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8a8eb74aa13a7de3b6a2cc41608acd24d5a9df7 GIT binary patch literal 149 zcmZ?wbhEHbWMoia{>;E|@6F#Q@BhB~{P)ARzh8g;`~K_S&)@%k|NZwL41ls|Nbx5N zBLf2`gAM}_fXr~_a01c>4GR_=Y~~QwiaD`i;o)`xVI~2Ajf;+UOBiyoI4CSW-ml=? jCF6PNky|4pn}|igrlqH+8zi5a<GFd++1VUSObpfln#fDU literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-active-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-active-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c81a69656dbe153fd4d2ae91d011534f057b6c0 GIT binary patch literal 205 zcmZ?wbhEHbWMPnC_`<-@yZP}1Almw9;+98Kwm+G+{pq?BuhyM>wf@xWZ5KYAzWezM z5Z(KH_TJ}vZ~ngi`18%DpKm|?`u^+hk6(X({{Hv-?>`{;4+aci(|`sdBgLOAj0`}l zbbzu9AUj<+yclFTN+u*EG;oRtY01n`c-X?oEE_YUg7H9Whp4<jhC<?@CMH28w>1u% nm>MRl>sxK;5NtTm#U>H4qJi-cBcrH}hJyivBMT2BBZD;nN2h2E literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-active-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-active-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a55d49215d3f90aeafd71ac13ae593b48143fff5 GIT binary patch literal 120 zcmZ?wbhEHbWMoia{=~p=@6F#Q@BhB~{P)ARzh8g;`~K_S|NsAif{H&`7#SGY7<3qb z0HoH5!<K=OMZ;mkf`iQ*!dfvWHY_~c&dKO7$7AE7qumS)JUdQoTztG=!MSVA48z3? YOv=HlVoq*adV0D+@~JtQ1_}(;0D(?5tN;K2 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-active-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-active-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..671d75dbe31641121bb378867ec7b414b5ad6267 GIT binary patch literal 487 zcmZ?wbhEHb<X})>{>;G8yZQ0GH-DeJ|NH9m-w)sZe*O9H`>%ih!2l?Qi4=dbFfuT3 zFz7G<0muwzj{gjdG8_&D2N)TcST#fn0v0s3vq{M{NC-Z3=@8OPJCYHY?B2)c7+14n z;uH7Dih+G=W=wi|YLcGqwieINDLxa8;%}|7EM9(oo<k|ySx=GWfm2;4%I#gbMf37< zn^rGhuCLFpEDc<lb~GzAJA9q<!MM_0Q{RMdPQ2K+cGk4Fw>IVNWz)_0kQ1}9=>DzN z)8*^$Z>weee^q;j!NbFq!jEIugcT+qE0_1~^RYBYIx$T)TyBk}aoV~0yye@x!jm$) zS%QQ=*v$Nzc5$Kpb~an-vfP{N3wPi1wf>%QdtdVZYj<ax7d$@FFCM>cPvxiQhZl3t zuZylKeRXhs_W5(NJHNg=voLwecRRa3<)3a}Y%Z_6_b9XRJ-e8R?fpj$znN9UZp1t6 zt^fRVqxgb~my8h$8rX$)%xn6uxFeyO&+Np4Mt(kyhb@9Z8V_4#qFy96$u|8+Y*m`( z@u*X}Z^oid?L{jdc1s@Xc-W)3OCz~g_Zf$BuhzSc#r?MTBvkr!m?D=<a2Lv4JjqIF Z=aYUvvy)3E`txx<oe~%n8SKDd4FG|(@aF&k literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..faef4b9fe8132ac7cdf4ce000d6f85d29aff1e00 GIT binary patch literal 149 zcmZ?wbhEHbWMoia{>;E|{=xT)kA7T!{Nw7=pVy!Ny7}Vw?N@*9zW#IX&ENlE091gC z6o0ZXGB9v4=r8~Q$P8x=Ck8<UjtL7E9Bk$g)`~f?Vd3F+0bwN#fsKofc1sv?*%&A+ pKHjh3+$H0AY0-hnY#ba60h^Ydo^FtQYL4gTWoKt|GBGh&0|3NJN<07n literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..14b8845d2f8477c5355941837d1f0cee2b41081c GIT binary patch literal 209 zcmZ?wbhEHbWMPnC_`<-@yZP~it&b*dc{F+3lgT@tP2Ki%=AIYpPQF@y>h-Z(pN`-9 zbmI1>^AEmXeDveeqaRnE{J8h#@0(9Q-+ub_;p^WI-~N96`S;t;zyHC20c;x3KxCx& zlZBB1Xq667mH}j^3x^*AFNcXkLIMLfzm!IZ#RP|Db}<%*85|Frj&d{T1+3vvIMl!@ xs-vQzkoee*O+%6)VrP(YOOLdn-;s)hgDmV4N-_cu8k(3`m;^iy2naA(0{{+7XF~u0 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..538239e25096b34c6d8836cc0d50885fbdf22039 GIT binary patch literal 201 zcmZ?wbhEHbWMoia{=&fU=<TmZZ+}02`}@he-%sBI(Vu4@{yhKi=fy`L`up<J-&ddi zz6POxZ@&Ed4+dZ@KwU&3#h)yU3=9GcIt)MnveSjbjX_q1<HLdl2b(#BwPH?eSa`Ty zKv+vbVB?~r-4cdI9tjB!$NCkVyJS2!Ejh}@Euvr%kkG)upq6}Uj_2lOXJ=a!zq<2N IL4m;<04LRY-2eap literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..249c3c5b19b1cb89948147cf16d12b9488a86ce0 GIT binary patch literal 215 zcmZ?wbhEHbWMPnC_`<+2bI*%a$KUL}_-^;5_j@nD-w#Ar-=Dqr`P}`_=kI^M_wxIr zx4#~}{r%+KuP5(*zyAF9_2++YzWn?A{r8vef4=?v`}6m|U%&tT2LlGMX+Q&!k>XDl zMh2i&IzU+lkex0ZAq<QhECLA&7`XW)G(s#47?|0`I2>khJZw73&8!!&#=^mgkyTVj z!@xkX=_Ch#kX^)qqJs_7_4Q|*nQ=+w*c1tVjRhANnp;>{qyhpO8W@^5C775PtN|vX BZTbKJ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..80cb16e16550d297c2080ee337c97b7133f020a8 GIT binary patch literal 146 zcmZ?wbhEHbWMoia{>;Ge`0ei}?|wgh4@7^SefabI!=D!)f#~ncPk&#1{`>#`f1m<n zr1+DCk%57WL5BedKxQ~|*fR+8FgR>jaIl#}SS#klhJ}aQIe8uCcx+sBw3~yAWygt) mi;wp!ICrh-c;LXu#AMbNb8^$t)6)%-PtEb%oOZB*!5RS0?@hx1 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..09fef7fb4d4c6e39b69f9c17c7613a814c1cd857 GIT binary patch literal 496 zcmV<M0T2F1Nk%w1VF&;q1M>g?yVCFD?fc~J`{nQZ<?sCF@cifS{OIxg=<)sO^8M=b z{r~^}|NsBH((k*{@4M3PA^8LW000aCEC2ui00;me149V^00AseKv2N~00IdpBydn* zfQJDZE`S&j;Y5fMDQ3iIQDaAr4nbagxRK;XlOa)#teBGJ%91WUwuDLZWK5AVU)roW zbEnUqKy?PqNff71l|_*ry{WV*)2BRzN=*v&=hUT9sb<A$RclwSL&08kx|Qr#vtiMW zt(unY+OlrF20cLc0NlH0<BFC0HZR_`fBORVOL(wh!HD@P-pg3+V#kg3LY^$Sa^T07 z3nz|znX_ihohgUT95jLH1QHFXHXu=eYXPHUfA)MB^lZ_$NpHqooAz$qwtMsbEn7Hn z-@%FJF0R}-^W@NxOCKJc`t;-0vt!@>{Caoo-?=ZHAMc!e^YhikmtT+GyZQ9tnV&{& z5rKUKsaH!Zz`uaR0RRrr+H3K>=N^0T83>+&>b18Zf(JU-V1f`nC}DvWP8cDD7cz)p zhZ%mz;fNcSXd#Iwny6ulEUxIHh$_O^qKq$kXk&;sf~X^kHR9;wjxpxQBaK7~8RU;c m8abnqJp#ETl1Dn(WRg%mDP@sWP8lVYS2BrZms!dd5CA*uulu6_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf702b375827d579242a19f7ee02e92c051e46d3 GIT binary patch literal 121 zcmV-<0EYiZNk%w1VF3Uj1M&a>)8qKn<@wj=`q}9F+v@z?>-^sA{r~^}A^8LW000L7 zEC2ui0096X140Ns01XfTK(L^}g9sBUT*$DY!-okCK%7XiqQ#2_3<$W$v7^V2AVZ3* bn9)Fi0Rcv;T*<Pf%a<@?%A85lU_bynb=o#` literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-over-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..6db952473d118a8a04429878ec9210a3f5883f0e GIT binary patch literal 149 zcmZ?wbhEHbWMoia{>;E|^ZDP~FaO<r_3!?he-GdOfBgRc(+~fjfBgUA(|-s6DnLex zKUo+V7`Pa87=Qp|hBJo~gP;P(gar!@HggDT#hlo%@Nm0;u#$$r#zjZFB@DT23=|e0 n?^kf{lJUH>=)hz)4i1KZO-oNtH%LA;$8+<tv$Hvwm>8@9OA1SD literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-over-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0abb5f72e8f04b7d791921dd340b98ad78903b5 GIT binary patch literal 209 zcmZ?wbhEHbWMPnC_`<-@yZP}1Almw9;+98~w>_D><Jr`0PiO9VvF^mHbthk~KlS>= zt<NWKe?EEV^UddfZ@&bhe|KK~z5D9li%<VwfBgC8)6ch`etrJ&@9WRM-+%u74+aci zV}T|Ek>XDlMg|6H1|6Uv1ISJn4nGEd4x504ga#fV1&t7k4Gb)tl59RREF7C%c^OOs z)^Id1F|tV*=@=v=K6Yc*kY$M28T7cNN7~TuNXLSMtsK%?DgqxK9AaW+7KykaAi!V^ E0Du%}#{d8T literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-over-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c556cb0fb012ff2b5c9293538aad4f139e56ccb3 GIT binary patch literal 121 zcmZ?wbhEHbWMoia{=~p=_tn4qZ~i@e`~UI#|4%>sfBy0Ri%<W7K=CIFBLf3FgAM}_ zfYds1*fH=5FgR>jaIl#}SS#klhJ}aQIe8uCcx+sBw405GW5<b&i;wp!ICrg?anYfX Zk<o2c%*jnlPfs^UJ~hYla)JYcH2|##Hv<3w literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-over-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba6367e5be3163a3fd60d0c4f06bdf68ec1c0e6a GIT binary patch literal 490 zcmV<G0Tup7Nk%w1VF&;q1M>g?jkDw3>i*yC{^9Na<M03F@c-xW|LF4n|NsC0|No7% z<BhZ9jkDv8v*V4k<BhZ9A^8LW000R9EC2ui00;me149V^00AI4K=1$p00IjrEO1a@ zfQJDZB7hhX;Y5fMDQ3iIQDaAr4nbagxRK;XlOa)#teBGJ%91WUwuDLZWK5AVU)roW zbEnUqKy?PqNff71l|_*ry{WV*)2BRzN=*v&=hUT9sb<A$RclwSL&08kx|Qr#vtiMW zt(unY+OlrF1}$jtY+SK&-`a)Ccdy^JeF6W~E4VP>!+8_qU947dW5#zMOO8xAFk;A- z9akQ#IWuO?pAC1mN>^fOivv;*@I0CIX3?Q9w+1~Mc5T_Oal774JNIbYzGMH^-J3UX z<HU~_U#`4)^5?^&3!i>ldUfi-uWQfF9l7=H%%NkK_dY)Sck<iOgLi)3;%R~J2NslQ zpuPc#1o9J*D4@Rp^#Gbz9(x0dm!5zJ5}2TY>oFLhf(^C@;e!q$7-4}DRyd)B6lUll zh9EBZp@<<~NaBemrr2SLE27w<iX6tc;fxyAI3kQR-uU8<GTO*uk2(VRV~#`m=%SEE g5}BltI5Nqjl1&B)<&#b#8D)`DRyn1WH3b9!J1HLVPyhe` literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-bottom-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..4875921b1a78a32b86dd45a209ba16aa7192ced5 GIT binary patch literal 490 zcmV<G0Tup7Nk%w1VF&;q1M>g?jkDv^<M`F(`Pb+A+35S*>ipg7{NC*S|NsC0|No7% z<BhZ9jkDv8v*V4k<BhZ9A^8LW000R9EC2ui00;me149V^00AI4K=1$p00IjrEO1a@ zfQJDZB7hhX;Y5fMDQ3iIQDaAr4nbagxRK;XlOa)#teBGJ%91WUwuDLZWK5AVU)roW zbEnUqKy?PqNff71l|_*ry{WV*)2BRzN=*v&=hUT9sb<A$RclwSL&08kx|Qr#vtiMW zt(unY+OlrF1}$jtY+SK&-`a)Ccdy^JeF6W~E4VP>!+8_qU947dW5#zMOO8xAFk;A- z9akQ#IWuO?pAC1mN>^fOivv;*@I0CIX3?Q9w+1~Mc5T_Oal774JNIbYzGMH^-J3UX z<HU~_U#`4)^5?^&3!i>ldUfi-uWQfF9l7=H%%NkK_dY)Sck<iOgLi)3;%R~J2NslQ zpuPc#1o9J*D4@Rp^#Gbz9(x0dm!5zJ5}2TY>oFLhf(^C@;e!q$7-4}DRyd)B6lUll zh9EBZp@<<~NaBemrr2SLE27w<iX6tc;fxyAI3kQR-uU8<GTO*uk2(VRV~#`m=%SEE g5}BltI5Nqjl1&B)<&#b#8D)`DRyn1WH3b9!J0)=N!2kdN literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-close.gif b/resources/ext-theme-classic/images/tab/tab-default-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..e699878484183bf770efe1e9376a6d0d36b5f1fa GIT binary patch literal 896 zcmZ?wbhEHb<YwSzXlGyusao&w-yynTb5h%mjP5=86A$!mdOUOYi{rOHpMUcE((^yp zUjBRd`TvV=|3Ccv|K->J?|=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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-active-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-active-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8104a68afb4c1c1977b051a0a23f7eca763dc25f GIT binary patch literal 142 zcmZ?wbhEHbWMoia{>;E|@6F#Q@BhB~{P)ARzh8g;`~K_S&)@%k|NZwL41ls|Nbx5N zBLf2`gAM}_fXr~_ux1csknq^B;9xU{uvW~84GRyqu*iAM@z}V?m6=H=>&}Udi;wp! eXv=9BC^(#$tP#8_=H#ZOr>7ev%kgk9SOWmJhe^)> literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-active-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-top-active-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..0078032c8cd5452c3b94f13862bf7f22ed1f44d3 GIT binary patch literal 206 zcmZ?wbhEHbWMPnC_`<-@yZLed*2fbzKc2Al(Uk2^rtWyW=J?BXCtj^P`D)vR4=3+@ zI(6sM*?XVQ-T!>=&EMA_f4=$j^Yf2CUw-`g@%!&j5c>D)_rKqN{{g{&Fkk?i2{aah z6o0ZXGB8Ln=m5nTKz6!tcr!3^uq=4k*vP<OWD#*9;6Nk0lvo-=!NNzZZG1c$2Lc3{ wnOQgu{mwWTIk!$0HAt!nNN8+f5Y!1-aG`;rWwJ0^OUVR>r!H-rOiT>c0D1^(;Q#;t literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-active-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-active-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc7c26f62b376041332b1895b9f79833dfc9c531 GIT binary patch literal 115 zcmZ?wbhEHbWMoia{=~p=@6F#Q@BhB~{P)ARzh8g;`~K_S|NsAif{H&`7#SGY7<3qb z0HoH5!-9dELBeChf`iQ*!dfvWHY_~c!YJo8$7AE7ql{w4S$9rsTztG=jFW@GbJLQO TlQn`@#hl!<^mGd&BZD;nbs;lf literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-active-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-top-active-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..9be8ed1223e5820fda7b187cd97b17a7470ba838 GIT binary patch literal 470 zcmZ?wbhEHb<X})>{>;G8yZQ0GH-DeJ|NH9m-w)sZe*O9H`>%ih!2l?Qi4=dbFfuT3 zFz7G<0muwzj{gjdG6oJ84lpt>F>CM?7(6`G#x7>$BJoktwNt<_Zp({+M7KUs+dPq* zg-Iv-Rh(yqbQUc=Hd#5gsph0n+UeP5#fR=hPF6oV-?(`hi&e;qGmAX>wT`~LtZ{i> zK&ReS$*Y>7EB!adZM|iZ8MZETZ=UGw(yW{7Qx4Ax?Jipz*2wgTE5o~dP4tHRo43|h zm#x3Qui-1(Id6&e54W@m%I{mf!|?I(8dh&Vo}cfZ9G$3{ek>=lIQ?9+qmYDe!sg`5 zQ=RAk+Y?p#>h#*g{ome5ZOy&5+41zgSZVY3clR}am*bmb@%GV)e(mdfZOT61IXBb0 z-%obe*Zb!;`tR4X`C0b%>cQe>^M8A*%T}>o5^u0r@R#A^hqKew<>TsVe?8uN|N8v@ zHvfM7zj^(B%^${y1r2P!$`cxR^j<7z5)hJjSSQTqv9LuVZpFe@8MPUS?Hp}45?bZ* zB9uCm>na{~DcP+^>Q*`QBdJU6RD^P`#;%IReU`^Ml)LS3-FVz%!xXt>g4?f(lnHxT HSs1JVsqgM} literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4c194176c2a4ac2290d3d8aac2a3bb508511583 GIT binary patch literal 143 zcmZ?wbhEHbWMoia{>;E|{=xT)kA7T!{Nw7=pVy!Ny7}Vw?N@*9zW#IX&ENlE091gC z6o0ZXGB9v4=r8~Q$P8x=8wOz+2Zs#{4mNWLYsH+{u<&p@C%eNOkBy6tb~AFt+&Qsv i@$r5I=O`A1h6cuo8o{e#PHtLydb&aKDHjO=25SILoJqF; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..677cd682cd6d57ffffde71d47885e3453a66af11 GIT binary patch literal 307 zcmZ?wbhEHbWMPnC_{zZ0yZLed*2fbzKc2Al(d2DUChvGQW&7iqdtR(L{&L-kSL;r` zI&$OV(HkF6-u`s*&ZqMazF&Ow<I<z=S04Yk^5n<0r$6t#`TP3g&o`fbe)#(5<2NAs z`{~>7Z@>P2|MmAj7%+gX0NO$$r1+DCk%2*;K?i6N1ISOV903fB94sFWGBq(U*n~u! z2ykHHmKUpH_^{v+bDOAu!370HrZzS%p`<x47A|4u&`?aUIq<20m6_X!<%R>J6FWPL Xp2Lg-i47;XSfjjHE^KmeV6X-N2%oZa literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-disabled-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-disabled-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..83210840021c01793a224b071bc4315c531524c7 GIT binary patch literal 201 zcmZ?wbhEHbWMoia{=&fU=<TmZZ+}02`}@he-%sBI(Vu4@{yhKi=fy`L`up<J-&ddi zz6POxZ@&Ed4+dZ@KwU&3#h)yU3=9GcIt)MnveSjbjX_=_;lY9h2b(#BwPH?eSa`Ty zK$y=%VB?~r-4cdu3Iz_1$NCkVyJS2!EpcUFViPfFa5&h+rj~qaj_2lOXJ=a!zq<2M IL4m;<04j=l<NyEw literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-disabled-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-top-disabled-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..39c1522f13f550e95d0925c1c92f65de4d958aa1 GIT binary patch literal 216 zcmV;}04M)PNk%w1VFUme0Q3L=nY`$#$Lzb&?z__OyVLKz)9=62@6F!x&fW9R-}Bt) z_uuOG;_dq4?fc~J`sD8W<?s6C@B8cX{p<7o?DYQg_WSeq`}X<$_WJ$z`u+O*{`&m> z|NsC0|Nj600GYh#A^8LW0012TEC2ui00aOS07M8?00#&h(4hhX0s}ZmSjbSo0Sg@# zau~p%A_EE-DIidg0fK`I3lb#ENMRy}lN=hTY%rna1OPArR4AYT0|5*X8f;i#z(Ruu S8VV$A86alMi7^8N1OPiWfNz=r literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-disabled-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-disabled-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf668eff3b4164b552d6fa4864c34873fd7b591d GIT binary patch literal 146 zcmZ?wbhEHbWMoia{>;Ge`0ei}?|wgh4@7^SefabI!=D!)f#~ncPk&#1{`>#`f1m<n zr1+DCk%57WL5BedKxQ~|*fTIncsOiWaIl#}SS#klhJ}aQIoTcNcx+sBw40GbVaJJ$ mi;wp!ICrg)aA0U;VmIrHIk{=+>FEZ^r{;KWPCMAZU=0Aw4^2k^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-disabled-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-top-disabled-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..b59d3e37c3aa324a328582c6d423194da9774833 GIT binary patch literal 496 zcmV<M0T2F1Nk%w1VF&;q1M>g?yVCFD?fc~J`{nQZ<?sCF@cifS{OIxg=<)sO^8M=b z{r~^}|NsBH((k*{@4M3PA^8LW000aCEC2ui00;me149V^00ArrKrp}p00IvvJaAB; zf`<wkE`S&j;Y5fMDQ3iIQDaAr4nbagxRK;XlOa)#teBGJ%91WUwuDLZWK5AVU)roW zbEnUqKy?PqNff71l|_*ry{WV*)2BRzN=*v&=hUT9sb<A$RclwSL&08kx|Qr#vtiMW zt(unY+OlrF1|>k30NlH0<BFC0HZR_`fBORVOL(wh!HD@P-pg3+V#kg3LY^$Sa^T07 z3nz|znX_ihohgUT98`d50TK(SE+8?1>ja}?fA)MB^lZ_$NpHqooAz$qwtMsbEn7Hn z-@%FJF0R}-^W@NxOCKJc`t;-0vt!@>{Caoo-?=ZHAMc!e^YhikmtT+GyZQ9tnV&{& zae(~+saH!hz~6vG1OOt?+H3K>=N^0T83>+&>b18Zf(JU-V1f`nC}DvWP8cDD7cz)p zhZ%mz;fNcSXd#Iwny6ulEUxIHh$_O^qKq$kXk&;sf~X^kHR9;wjxpxQBaK7~8RU;c m8abnqJp#ETl1Dn(WRg%mDP@sWP8lVYS2BrZms!dd5CA)@;QPD) literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4f25d2d090344720a4f8db20bcd83377ac5c086 GIT binary patch literal 116 zcmV-)0E_=eNk%w1VF3Uj1M&a>)8qKn<@wj=`q}9F+v@z?>-^sA{r~^}A^8LW000L7 zEC2ui0096X140Nn009^nNU)&6g9sBUT*$DY!-NDLN}NcsqD27~Giuz(v7^V276S|@ W0J5aXlPFWFT*<Pf%a;fP0suQorZN}+ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-over-bg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2da07114817ac952f81866acf53a1950cf6d3f79 GIT binary patch literal 143 zcmZ?wbhEHbWMoia{>;E|^ZDP~FaO<r_3!?he-GdOfBgRc(+~fjfBgUA(|-s6DnLex zKUo+V7`Pa87=Qp|hBJo^gRqQ)!-fS1n>mEFVoq#Wc(|RD-C>T$#zjZF8M$KaoY=Vd hc)x;k6pKPb1LH)E;8igvH!VFq-5~jti-Z7!H2}^mO6LFo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-over-corners.gif b/resources/ext-theme-classic/images/tab/tab-default-top-over-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf289d6c00c2f06cf4be5c7065fe81918f2211d8 GIT binary patch literal 211 zcmV;^04)DUNk%w1VFUme0Q3L=jkDvAwd0Vp<B+xDleXlOxaO3%<C(nZtjFoD$m*`i z>c!de#@X`9-1FJz{oCmM+v)z@>HXd6{@?5V=<@&T@%ilX`SSPt^7sDq`2P3${rLL* z|NsC0|Nj600FATbA^8LW0012TEC2ui00aOS07M8-009UD(4hi?001~pSjbR7f(jiL zasc3<q63B$5G=?L;Q@vQ3KC+R$e|<$2q+<7Jizim1p^E&1h_B(!iEL}EI^Q;VSq>q N1zJi3(6T^406T#vZASnA literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-over-fbg.gif b/resources/ext-theme-classic/images/tab/tab-default-top-over-fbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3bae33925e8bae037d81f524f89cc3dcc4cae68 GIT binary patch literal 116 zcmZ?wbhEHbWMoia{=~p=_tn4qZ~i@e`~UI#|4%>sfBy0Ri%<W7K=CIFBLf3FgAM}_ zfYds1STZn5NO){maIl#}SS#klhJ}Y)SmeCscx+tc$|z=>b?3y!#mD=_n0Yi9HZ3_h UStEE=%*jnlPfzDyW@4}g0DlNFrvLx| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-over-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-top-over-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..48a17910fb3605e02b5f012f2b4686e074040c54 GIT binary patch literal 475 zcmZ?wbhEHb<X})>{>;G8yZQ0mSO4z6`S<Yc|HtqDKmG9k`N#h+KK+LPpe!0v{K>+| zz`)6%!vF*zGn_g8GcYP}I2bT6F);CK*c2E%Jk-V^X5=FAQPH(iz%Xvhi-1J8K2h5| zk(-4{C;L^LXN7bYEj>0_Iku_hq*2=G*=EIu?nF*jKRe&Jc^QjU$ci(IJo>eczPzk) zd0s%L-c`w~nxQNGH^yzfWs(`TE_836=<U+1o9j~!&kF4>TN~EM`baFpyL?UbhWwki z)>fCTzrU~HE8975iS-Y+v<k}aTfM{Z@$ni~Z$F-&@1Go<sF{8&C$c#GT(cvegl)p+ z<jYf?=l|OiRr>1m+Qj|e-biiDy|&r$^uAbW^Y?f6HGh}mn`80z(TRTT>w9g=KHoVv z)4ShKcGuVY=QsNA*R%Oq_V((*;tunFd#lS<F<s(r@K|8W*unNlTEPE)P35PDZ=WBx zzxTWD|KGXC<7=5;i9e`i5Sp=|k&A0bLZg74#=>S1rHF_1;&L4eTV?WIENoLSyOG$z zGfg6~O{s2%Qm1;~jz`^UelL=GG%i^rcWd36q1>l)YRBS!+iNG3dz@cMJn3~1nz>}6 O7uU{|iM6aO4Aua6&+Fm< literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tab/tab-default-top-sides.gif b/resources/ext-theme-classic/images/tab/tab-default-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fc85c637d2df151b56f9c4b3e67559d35ec220a GIT binary patch literal 475 zcmZ?wbhEHb<X})>{>;G8yZQ0u$3Lz<{dxWQubVG^-+uMy?(0AI-u(R!20&Rfr1+DC zk%57eL5BedKxQ~|{AXZP;BYWtU}9k6*RUxtczCFdL(IrU;-jK#r+{JHmKOnuZhfM* zc_KFplTP-lIL`{{ELwVOvT|%w%}JxQ)3eQr58a8JtbTUBaq}`3tB@6E7J2k*9esIO z<MO<KPQ9y=S2aUd`frTeddnm;Y+dNyJki^wSvS|G9G(^0UA8u?k@b;ShIjdz=neTd zZ>_B^TYrCF!&kO*-V*B{ZfO;i-?w^);p5{qtloY+Ki@w&I#DzISWaYd`nhIDJ_*}| z&B>RiI?w;NC#v+->9vXbzrB&#ntN@t<LP~|(&q2)?rZ)o$2Z5~?V}U@+Sm8mlzqN) zZl-s?pX{!$_s?(i->+x$v+V8FgT)=@|Mpgwtzx>w-Qcmnma&8Fk+gvS{hG>858pmN zZh!B0-T%LHkH^<CzY>2?%OEskK_eH}j)X=5JB@|SB1#bt>&4|d7PiXdy;#_$V0I(1 zgJ+sVVw+Ok45d!>z8#Oc)%;#0^=MqONbc6UHAA^i=hTkH{kGRmDEBzOl6cbVAT)Ey PL@%zLDHCg1Ss1JVeS+&# literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tip/tip-default-corners.gif b/resources/ext-theme-classic/images/tip/tip-default-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..232d73c20c68356eab417b30db71b19e795d3bd0 GIT binary patch literal 183 zcmZ?wbhEHbWM&Xz_`<-@x9Z%)HRmR+yD)jp`6=r!tUPdc)q%UK58m5z`r+O)kM^E@ zwEx`Whp&G>eDnL!o8K=#{RaXDur8oRVvyob7DfgJ0R|nQE(VaDE*vHdj2t`{9xygD yam#7QJaAa(#KFO2VX%OqiHVU<mW!p~fkQJRr-Ds}f<j|s6Ay<#1cRaigEas)<yI{K literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tip/tip-default-sides.gif b/resources/ext-theme-classic/images/tip/tip-default-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc725b1723e02b02d9b6d1283b1d2191c80a88a8 GIT binary patch literal 99 zcmZ?wbhEHbWMfcb_{hM}x9Z%>Pyc}c$WZ*r!pOkD#Gu0f1R!}w4ig4O76}Q428Sj# xPB9w`14XAcZc(coj>4oP?LyjFXHEz%cJGpPtlOipN#*2ZvEV$JnMMi>)&Ldh9(Mo$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tip/tip-form-invalid-corners.gif b/resources/ext-theme-classic/images/tip/tip-form-invalid-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ab8ee0bce7db6ca33fb3d1365aeb3a6fc9fa359 GIT binary patch literal 347 zcmZ?wbhEHbWMz<J_{zYr&`^G%snQ}dwZ*0?YdtO3d0K6W_1_vFxHTbodt%7Ru7*>Y zF{gT)PG`iN&IF>^)0uInvtmy7w_PhrzgCoStvKU)Vfyu=j2ne%Hwx2l6s6rLO25B* z>w{fe9_-!zaNo|4XHI-Nd+O6UAUgf&{HagpPyhY#{qK(-e}De?4+abnHvpYM7E=7l z!pOj&#h?Q;hXLd#SB?q>Mh=mVg$a(l{9FbB2QM%;F={Hgy$M+0#39URwxA<pAtNKF zmP*%@6C0Wv85s3u2zVwjGVzJJ&gtMd<jB;_>i$Z^GGGB0E2~0)0fVE<5e9Y(0~f<Z oPK^A5{wWd#3QnCJS`s1=6BJjmGO9cHD12~qXyWH#W@4}g01SSK(EtDd literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tip/tip-form-invalid-sides.gif b/resources/ext-theme-classic/images/tip/tip-form-invalid-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..b39a15bb42826750572dd4c3bbd4501d61c49943 GIT binary patch literal 123 zcmZ?wbhEHb<YJIx_{hMp&`|zHVcLH%Q2fcl$iTqNpu+$JAbCd)9|lGi0f!9<3=B-% zQZ5z&3mcj_Wu0<X6f8R2&Z8eSWyZwhBVDqNbuku`9=J^u@myvi8MO4+G#&4xDV3L& W9-nGlc&%rpaN4=)CX6gB4AuaM^eR{Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/toolbar/more-left.gif b/resources/ext-theme-classic/images/toolbar/more-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9b43bcc0f1224d228f854c0b2551f9bb3853563 GIT binary patch literal 843 zcmZ?wbhEHb<Y5qC_|5<VqE6jldXyLqfe{x1ia%Kx85sUE=zx3<$`cG68VvtAWjr=4 pIM~b~tQE7uz=5HWkK65!dEtX2T`c-`CMzZ`Jl?M$$i~884FISr6zTu~ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/toolbar/more.gif b/resources/ext-theme-classic/images/toolbar/more.gif new file mode 100644 index 0000000000000000000000000000000000000000..02c2509fee0fb4555df61072d8e8daac8dc7430e GIT binary patch literal 845 zcmZ?wbhEHb<Y5qCXlGy$b?SEb@4zq$MnhmkhJfNv7G?$pMg|>_??HKjfkTUdnM1~7 r!-9j&9Ku>L9YCQ*K7KbIgN+Z4bP31@U9tF}<ld&>++`ynz+epkzXub1 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/toolbar/scroll-left.gif b/resources/ext-theme-classic/images/toolbar/scroll-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..2db8cf5cacdeedff17ce269eed74d98624bb1f67 GIT binary patch literal 1861 zcma)73rt&882(!><r%YuJphThn5amA72FhpY`nV;#M(h+Q$tF73muoXyS?QlCL6ku z%<&MHkvXGrBf8)u(I}aK+i(a@ML>pgyc9MD3~>z*jLvfXPahP6ubbR+zx(~)|2XHr z=UkaQJvL4q0^!gFkjXWvDq9ZJwDFByH6Pvl{D-Bl$CkdCTp5^Jxi+zQeP(5N);2P= zI5D$0Id7Y`+U6E)*5#Gu-&f%OU7^2GJ^%p_D)`A$Qk1e}S+q1dMgZ_Up*ERVF%3{` z;5jtVx%>9hUN=AtLEs0$;HTD@O-TwxCP_rJ>k}@24<f=2M*h8hy~i5HPs^A!03vVX zj9Rm%7;zbZhe~7OcmS#&`Pfq4gxHg4HgQ-W;t+xh99T+lz5}P)HQCA()Z`+*PgAJY zA}&N6k-vs7$W{ugB1aJ@!9X&`z;JpEO%_AJ8FhM=u^Sx2f0)-O{|y$i7M!&G3c%6d z#3w89`7qu~Ixam2pJBKV!4-ws&m!J}I9bojvz>gdAwTPB#Hbe?Dl%peU!r+e%cQ0u zjzHXDF4;@4T~kq*lI7IQ98m93APxo)L@Op<;S3}WG_YBu%a~ZalQF05bvTOyb^3I< zlh>J8`<H+T#I>A7NeX=sahsY;lR5RHj3LMA>mk;vQ!|i{!j6W40vO;x2YO(E1|`TK z8J{v_4KRxqJ!rs)Dh@}NssJr6>p`%fmUyZlxjxtu=8jUu<>@tjb=JRl8{Kv&uxBCp z9a%_L!GHrH%uuu{jRcdsfS$^Zz*P%9L|u4((7&e=l5hg7J!COP&|`rN#&At3a%~Yh zLw)e7g(f93)mh6~P!-{3rPrnN(jn<P(kAKLKP-}?eD@-e3J6E?ljU>gc301!W*^?J z3fHLw`zn)e=phG#=%EzF98N`zoB_%)tUKIl&!`8eXi84SQgJ|2yQoBJCzXnC@l>X( z3`v?KRgwg>BwP|FiI(gk*wt^zBWR1mG0oX|S5H<IYnKn}A)RtGicH9*iiCXRN#jTZ zOAxd8hC7vK%J8fJNHLnqIekGPPsd25PtZwtbTPEtpoxm0)htUB(<$CebBvkcN*HYv zkb{pn0xT-+2byS0pPS>K0!a7;KjVHkx8DMA-VCsHyPFHceYN>*fD4anEL@2r9*9J} z0A}4|G4^+ne=;6O<ASh=d(*1{!1kIT+&d!(wzC+26yP#Tb}#_>Ie@1?ht_KKZz-Ew z!aFZMD(dAEGE&dp?Wi3|^lp){e^l)V(OhMt4%VIHgO6-@Gxz9F=T!Q|7piy6jh0;U zke2?u>4eYpZrb|6a{*;fLVeHaOJ?4(v9$cf%9m7rhYr`gLLIGc@KGJFIb2uK@cOZn zji=r?U3u(P&irznq*+q^ezVH=!{g^vE$5+C<=yUGnAh=1tN2r@qutWo+1l0Jdztba z_-=5Z?b}|}wP8<{*Z7Y=jo%m<9GjTFd25K8p6S0cH$O3Z=k~(nUF-6%OSkSV*jjBx zTNNXTrPj%@D~<K{w;%EHRmR6|%loX_@1c`dzU(`*s}>S`DY>F4slhuSNJ+i-%<xyn Z$j!R#aT}R0j&2KT{`hLc?d}Z_|0m`L+D8BY literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/toolbar/scroll-right.gif b/resources/ext-theme-classic/images/toolbar/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d5a7ab5db4e2dd717e26ac6b3e9a98bc4d51911 GIT binary patch literal 1865 zcma)7c}yHt82@%VEFi={S}P^38ER9p0kWV{kchAxTPR)EEl^5oWZ9jCrF(Vu;0T6F zC`6G$5u-L9QPxULt=2zGTL~7^S_8IRrIe$kfCvOA*d?en?D)MsSPWj1%$wi*zTbDe z_sx4FPD_o6m2ZVza2X(jwPu%}Evma{di!$SR}<geTI#&L^y9d_XVQLS%r-D>ADUSi zp0tfk+s5ZtrWRLb@2@N_+m|2M;s0GBzf-;d8zF@AOG`?UiACZ_VPq5s;MF8I7&Lqu zK&vycXrOZr=F;ASz=tj12f^ScR~QY6QfUTBM6~M@F5d(mVf(`W-oD;r4dbU|j0ymr z4{~~?QK3a#0<a-lVPH)FR5$W5#U=w{FQVDRVu6Ua5?tWKLW1+1IN71elqI1i2l2y- zLb(!gA>y$7HGDy)j9V2si$Dnm5;Ho6RV!$+7*bZRQfnB8!8!bgd5!YlpjKnXNjt8M zIQkn*A{jn+;=QC|Q?u|HiVG23R+xDJ@n*y#wJ9yr#pmeqB`+XGJ@4pY{a)frG^dnI zath)w#H~ileu5pEvce>ZOEX<0PnRMN2H<#hgGuTN#1GPGB&5rjm><s=Q}#QZ`9Ugm zYMP5z88nVB0Tb|#vt}77bUWgUayCWm(vL8@ESK*FzEYmN7x@V6Xeda50TxuC1`W_4 z12Ks3DMnTYGiXtR0`#b2adfK+(Bifp0W)feXEul$g3Y0xD3$EXYDHK5;$OV=9y=5` zvXK1FEF>$Z!+{V+IJ_zi2ZN`8tL3dhs}{PSI)A9o|7tlT;si8~kXnqO#sV3P;hs|X z+9FiChTv5TO-f{HB+C-04D+zU0pYx`U-*&GDxCd?MRJz!StL>c;Yfb6e4gB%>KW7= z#M@orIu++wWzr2bWML3B6r-5MsmPJjK`Dmygj?+y^%xaNrBN|dEYQ^RR00)GCF5Hh zmEkT!kRnJHBmyniC5RP73epL7_gnA;+G24`adqC^lU2pq<->YNr<{!<6LPD<As>0t zIMP51Vhz6GPBk$lcvb);=?$f<x}eZRM+t?y=|nub7&=X-hzO(Q8VyZM@0yG>%NQBf z!YCtv9DKwPz$SAXXuQo`9?rB6;JJJF8FzcQTr<EKBfz6id$>^CSC4!Ma6VdLW-ZQm zz~fy5Fsh!4a=i2WMR*|H;W!)aP47m4l@lEI$HyGE(v0y(04{0B4hA4U2k_$PkmE}A z2UXUyb0@$4vMJi6?R(O?&>BB_>5%@N{Gj?h&4wQyPiT}@+Y&#|J$=2fcV_z8?Rom$ zwVM(yytGKqnRnjN1K2H<3$McP*s0DbgQYmIv@B2&;9F69)Yo#Xq1sRPMy)xZ>cp|U zrnl<qPc}*fR%^v4g36N8Jij*sS_JI5&+^U$K6IhEg@5jJfKPi-UVHmDZ7q^3KE<6r z60e@#zMhWj1Kl@<ZVq$~4)saACw`io7`@vc@bjGa^vwAD<ig!w?oS2GjLrV~+k@Wa zdp*P7e=(X+#GBkUGSD^pE#G%IoXU~rwbcX;?#mqLzI~-)%QbCP&WmH>S3;(?y<c@e gHr`Pd{!H7BTSt`XY_#I__g<5J+EKG3t{NcjPouKnz5oCK literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/toolbar/toolbar-default-bg.gif b/resources/ext-theme-classic/images/toolbar/toolbar-default-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..854421599db7e7954165f977e023329d23720c9d GIT binary patch literal 207 zcmZ?wbhEHbWMoia{=&d;`QgVaK=kP2)kmMMJ^pn4$)_7nKHqry`R3Elw}9x`=iAS| z+<E@x?u#$?UVOdx^6UMVU;qFA57b2@QvAun$iN`Tpu+$JAUj<+d>9mUGz1tL4mNWL zYsH+{u<&rZfU;UnLqo%nZVBV8GcOt%o0wVHa%4O=Ejc+^BiO6vLIYznE2n^jhCoom Wso56AukM`Oy!`xphk7;^25SIzJb1bQ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tools/tool-sprite-tpl.gif b/resources/ext-theme-classic/images/tools/tool-sprite-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6478670e37ea49286d7f29df999169959338750 GIT binary patch literal 971 zcmZ?wbhEHblw;s$XlGz>`0r4-;O@-bFU~*teev0!D=+?Cd-eb3oBt0#|9|%F|Er(> z-~as&1Pr5KGz5lY2q^w!0eb5{gAT}Zpgh6Av4Vk-LBL_d0!KzBR<?)}8xk8@m?S*r zcuZt;Vqj#;xO1ZLz~K&2=cqFplNKHC;0{_9voqld!!!ebqX37^%Y0e&@?TAvxnTME z`J6FKvRcB87Z-a7?(jJkl6HK#-h4Y=fr$-QS4VK}ICCmAt#N(AVX*?uZEJj(GcK<( zeNePEdM5j$Q*)~isNUUeBz|Y=?H~uYz193WA1pRJInph;G_OYE!-B^x60%kz5&{g? E0Cfp(OaK4? literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tools/tool-sprites.gif b/resources/ext-theme-classic/images/tools/tool-sprites.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6b8098610bd6fe8e0d140e91032bdf49a562c9 GIT binary patch literal 5421 zcmaJ^c|4Te-@a$YzK&$8Xe>zzL&h@5E-GvGh`|_RnHggnTgJXK_9e^M87URA6-CyP zq7bqqq==-bm{-sHd!G0G<9*)yk8_`M?(4d~-|u~{`<%~x(a1nW6(s_AfPNeRbUOXT z(l1}?Y(dBB)Mxsaefsiux}+{;eDz>$kN#$jzOYSyx%^wf>Yf?7vGm@1^N602#oeBX zulJv?H@%{pVC%Gv-NP&1`6YEmWev$*&WTQckUxm`PMrx!>?j!YUEN;0+4d`@%QB|R zyr^-}GP2j^Mu$~&pB|wRiKPXXPJ1UmC!{aL)V<Jlpazvp;gTl&3dent-+CmE>G{-$ zmd#x7tdFc&2#9WstXaeb*O;T?JKxd?aV?5S;|%KH{{BHq^#U$$JUV+AojPRgo`emn z(Kf;7)Xup0loP{mU3d3IB@c$DbXB%3ImR5e3%(H#NhOm`UgcZ6^oE{~_~gOrwzY}x z<-dL(P;RY-RZRQlk3N1!FK>Bo;&6l7w32dXB(b13F1zjL@BPAtIRm@MsLD5G%}WI> zdrrOuv!8b`VYTZ!+riYS<*hHKwi($~FMVU1^o?Tz3P)=?S94qFC3hEXTyD_mv*hAw za`mjNQ#B#_uBM^0W5R%`L#SWD%c~KOOYgt;3Mh^(pT&e!)^~pjNqV5FZQ1htYe_eK z;#+xi_5hte-@g%W>J*6~mAm6I3Tj{J7&***r7v%OS=-(Yi0;Btp1X%sp)iy*>X=t} ztxNL2wYdI|-<EVtu`T2D8&$LBwn@pA^TY@$%D?32uYFv2`Hx@p;G)+HUw5rNa}2D4 z<Pds8ALx}WD-J$6p+&PPca}WTp4UBEE5AD$LK#RXn<Pfut!Q28c=f~1B{Q~m*3{lV zB%%4k*7}{N8@_QZR_H`*IPJvAGo;c<J3<LA>zQ-nU~=&*zo^#V`v<6`{^hOpjEc9p zwJ!sbABIq;QcK6(DD8;_&th^qo1bm{`n|8B>(IZEa;JCQI<~2A_WP5GuL>r4!;5=~ z4KM8Cn>FoAaQROLX1|lGhwhIoxrH}(jc?%-I=x~$hvs+XuH<--n{DEnrat|g+d8oE zy+urHkEt7)`+5*m(%U<|(>}IZ*)}!3@%#4UcSCbO4xJAGfGC~a*4PZDhw?`q-qkfp z1eB{6+8^eE#$a(8VqZGC#9&xA4KW*pG2ED-i}t`8h7i$LLrg4PL%dv7-NZC6z|=`d zk`KWL?T><ye7tdfNRoya$_?*=MjrP6Ov{PE{(|^>X^3h6c>wzpQx{J}!w|A?8CSRx z9Ht~MD}P>5Sy}lUOaU$rmxC+F$t%dnD<jV<AmMP>e=f1ZXhb)6q=lZre_|buG{ijo z{Rv1pxuBpR*`V{Xcp^qlUR71~kA{MR%ppR?FBs>KBFW(V#Q#>%L;JZBu>^lC9tZoQ zh;qRP_-lwAX8PYH_z?b)#retpRgSDH-bapvBFM?h!vB=?H_+Jl|A+ec{Db!Mw?O|- zzW=ANpJgxsEoXuD!v_#u(T8yHKcNUnT_PIgk0)B<@!o&GMKce)Ki<y+Pk`xOMZk<v zu2|fk@n3jjW26zz&mV<zMH}g9h#e}(VzF*WgpQ7ifeJ!LA0clbFRy2yt%A_iIj=0Q ztE-}{sGzU>H&+ku8sLM*`Txyz`ya0EzjFUr!G~}dSr1Lb2BO^zh<G2^UnL{4|DKEL zzv}&m>-O)tX#Xo$?l2j-KMVW67W(h0L-+jY{$tz2!9T`F;||?UJhU~4ez5=h*U!D( zAK!PrZGYX`{IaqB`P16R)s^KBOYavK=I7qc&P>0Znw)s^dVK8F%h4Aj&z}ts4G#48 zJ?-sz^0>R}(ZkM;_O{jsEzM2$@7-;@bGzYIJ*}>`rn;)KqP&b+T2fqev#=mPFE=MU zD>H+Vo|c-DoRpXl9~T=F9TiEAxDg%}8WKzj3Jmb~Bl;5XI3I5>Ppk*V9qs1of^v4c z?&xsM-p<y>+RE~(g}IrjiSd=omy8TA8tCik>S$|eUeHiiL#nDMD<KrmD;$1OvNGq+ zN}rKBEqO{pTuc;pQbhQ~@nb@Q0{nbOd5`cwxw$ww*x6WFn3)(EAYjnp-mu4T*d74q z4)+P*&v^;3(1HEE<64c>#~?5xo9#ej894?57#11w06Gz1u*b}Re0NU*pRWBgsm${J z1V%P>!$BfCG6Q7M?p^Rzg3Q3prEb`Le#Imo2>aSwcRtb>!W1U?I`OE7S@i{wU}GDV zW?F0|(0%KtqNml(6XC>|w!3G6G_aV0ZRpNpdnWiq;A>Xr24e=6u;tf@0+QhS<~);@ z^H(Dmo@iA_!@aVANai$gT}dG8D+I`hc4@JL-NW?DF}r<EnL57=7GcgUBFVe<r*Sii z6cs}&bmN;bCvSxxfAIPBk!xLX4aZ1?%x=~D4kJe-w^x+nFXeIhweM6I-uF@l{5pbY zc0CyStn_vD$py529%q}pk0TTJ;&2eVjmFI0*H7>C3Dhn+B)sm&M8p9ImLD3w@Pmwk z%T&*!*%ZG|VRH8Qj(`~mN+`Fo)D}^Xy2z$N!YcOYv{pM`?=?Kfhg>o3v-e2l38yk_ z7cce+3y^(>G$x8dF31WvLiG6U+`w8qyK{CMLe5KBGj+`5Oh${>TEXlN1(k-(a3OPm zlS5!RSJ?O?+L5!f%DwO!jnyVE2tl4GA`P~o4GChql^MxKM(7C4jr@Y_!M2I1c;P+? zDNhwJMm*&FBT|NrLP^46viv=k4BvFF38|WahBvO1kt&HJ6+E2H7>FUQe=Pe_3BAA( zvWtMC4U9i3I+gIC1JERUTK{X%;#SBTn)AkLO(sZi7--n$vpZ?jK4eoB$}(V7(-N_V zb#`(*reX_;%egEY{mx>%3YFS`lxn_<tQIXFNn}{8K}cJcCqj)1v3OaRLbIy#MB0}} zyJ>=+MioD8Jt?*C+=K&eTPO<$-p5Ti2D*DPU$@eayI5k)=pG=FZ&1DRHjSYKU2gwk z<4j(7W6QJd8~)3m^J4iH5VmbvdDG6L+Lxs~&{6IltK}my$I2fIuHP*5KHze|cAq&2 zovuz333K(OZrDm)f}XYy?B%^$Wd2qc_1W?28iMbL#eBn1P9s9Dt$WavMt86tUVq$~ z+k}65$|e%O;7~IH9>Gc$Yx2r8g=9i}zQr4|BfrGCs}&Oriy!gVb!QJHG~?`lF$F#{ z7w>F;;*#tsby>&_-bdsXF#ENBPCrje(Z%v^3U4=M)AMOJyJ_c^0Rjsgon)y<kSS6G zE8l)`Q8RqUzr)6gcLwH?gy?|#1sTl6Yu?y%Y7-zccb<sS1$?O)krG4gOkKafO{aGm zb8L1WU7Kh0pinvTSD!Y4q1_<<O)_hzPz#irtVTvb4XJTl;B1~w%grdEnfXXD7eO70 z7^^N>_h>fxc1reU%ozvKj+yrboX=2@2P7N7lhku!$P4=ooVh~3&WyaHO>?TepZbxK zkEoZ)NZ?}?_Vr*;6M4?%(sn+FGUF<2%~^#U$C7&s1v1v5Mry~s*fJ_#J-oh`WGKeV zZ<E9TWVM-!pV_`?060tJJ^ZW@EuLA(!7PB3#6|gu9VrfclZO~NLtF;G9gUIfBRb-A z3x-oLO3Gy;qH9=3ui1&(T)n8`G$oVqalB63J#mY>2JE~>JtbLcfL44m?H-q4hD2Yo zD)$+Tp6krGltFs%m((t#6VRu7QSAm+Jowq1?N31!t-f={vG>y*IIseG?#b6qaFE}h z*fV6%SMbPM5(knDdMeTP6mK$!trUJAe4+m`p~OXO&4QH<4==yxPm2-LuT0>NG?35z z+*Yo8L$NR$S{u}Qg$!_XQ{=4Aftcash_~N|6BS}yd&X-Geq|M>vpRz~gwjt4Xq}_0 zjHL^q5=0P0vilCROcXBw5zKs^()j`4*nA->9+melhF8w=Yk}(UDKe{JCQ(a`d{t&@ zWI*w?;@Vz{<@>}VFC6$3zxhA2{(>HzpTFvVFvF?&AlEv&^0uhM@t1Zr`QkMLY2LOB z7E@t)0P_{^Jm!4Cz7txLPmuH0paHI&YT`3S6)p92VWGQEbkE%s{C<y%vRsPu%wi?+ z-{-QWVoqzFVm-nqM_spO&Y)HD+#Z8-QD!8#VQrV`CQ@0)7nd;VgQ{jjR@oON(7d3x zrVATct==;A`pfpCHc2sNLCxr?d!%8@odBsD&8u(W$n0)nQwkI8oJDWw!``%`XC!=F zh3j=}zhAIEdv@K_YN_LanrBSokLTy?l%Cj)w6Dm-I9?_T>|UiZz3%=cdd^dLzO`>B zzWIYh8Q6t=x~AO>)P%SahY`%EG?%P58f(Cirj6$A-Okxl+|bMs9KFn$_w;GNhE~C} z$cMFoB+{vz>!N)VpT0_TbS%l5cB)PG#7zufui!%-k6rJ7B=Bg}^`qOzYjbi7%7D$g ziV*KhV}*;~G$11INbb(u1CE_*EM|m4p<DL8I{9=>fG9I6rM|$=1fzWzYV<k7;PQO% zeilmRt_Fr<=4i)mE8JwG%*K1j>VW^LN6wbEYk%X}wbnBAzEh~X>`O^IH63~fRiwdW z+o$e|4^sjvLQ6S5pxvKV$*mi@_uoUOk@kkcTt2rk%U2chgdQhYHWp5+*D!0^)*XqH zLCJ)zsQ>6ES_Py)c8ho#ZW#2QVEcwM{_SvV`|?vy{o8B&!W(+^Ca>IO{3}1P&0bn* z1-P6|__@1_L<FpTK$H=KuHioMUmcy*7w&}2-prBAiXZx>F%>>+>2;7~Lg0}43~S!= zf&^_hd5!Fvi-vitn&yuTZ;Zv3HlQ>v9?uG=A3$3kOZSFI=TQ+%53WrhaYn{NGlYO| ziB(FgM(=IghZB``U7wr?(H(DB-}4T<);wF8^`^tk?L7mWod8ka*MtOlKQ0a1v@vZN zlD!G!_R9uhJ@q~#8n9EKRxi+YVPx0A$ERJfQ>@+&Mu9(e`!$BWG26v7;k0K>bq{+6 zPB`nFJq;v2nBDf*EmTpk;d$;S5-e!^NFVv7rTt@JMd0wOS6tJ+l#ml3kRCAiDv=B^ zd4XTAy#RjFD`Fu=04DRk<?{^eule11Mq4WR-i4n#&q%PF_&fn(C`3%3>JDRuJAv^| z!`s}OzuU%)z#~p>?>EIjYr42PHVT;zNR0j<qDp_0<4-SJluT=Wv7Q!R4&+gG8XcPJ zeEB`%?6T8_&z`108K3;+uaY4bUb#jDm}B27;j;|zS)QMELZOqP>_FsW=0Hh{F#8sT zfgdM_emHS#hQS2GPqIWk!-T8$sMH5U@qD+>5hp%>6BQa~^_t&hL)m4sU-aOjN4ibK zl9Jz|L9m8Yux4w-YKy}+8&`djt1HC6XOx-InV}Buf9_?BsbDN3@^T}Uk!;55L}9lf zs88p_UYm?{5)3dzv9uBxs+^fZ=Gm;`<2(oAaI0i?D0^=s%YZXugEO<*CZxeSJ}5sv zbTXcQlC=h4?Six3fU>>aWOJuu5)x_?QdScH31&wqc%mD~&;nt}%na^{`L&5ftBFD8 z9O|Qx%VeMs#`bC+((9g7Tbp!iH7Qz@U9_8tp9<(h89bdiWNU$zgyi;t<VTZ&{Dc&K zEucT2C3_R~Ixc0fHRX9eDOn&Q6%(T-=%?)wtlJ8$vBd4##K8OIj67^M+%M~NGh)ox z3$&Oc=UIoGl|Htnt?#C72@012z#xo=rp4Ga&v7LWzt@@$jHc5);v%$|>;Q)6WVWe! z_9!z?);0>~9)-t<PY=!(+Q>LI&(sfNG~J9BYReGb%MfMdze0g16F>+mSPlx2bPhbz zmMOEBDbK2PicVmCvB{JR<?v}_lhSflZOhWw%hC=OfC6CgZqP{>m<ne<qvdVXmTkP3 zZLTVKn!=pk&0^cgnP$eKw3%$zmgBgWgPIb&35T2;1t|cKvs#d_`4qM6T(7BIyinda zDcbE++P*SUE-qr46k(GUyq%Z2G=Kv<j@<8I+X1*=Lz!;DVi_BmzRYtiX>ofI{EzT5 z#RYJ`&B3#hL3DZU1`P0e9$2MtbHTY_u^O@j;Ab~CGr;wr#`Bjm_sTr5NVPC;0k&Y= z9|^!GsMqnAU@kMRb@<g|kGYu5K+9w={7cSRC>QU9msc6+*eJJWxytT5r_`!Dsf=rm zPB~9GO3d;@o$5D<ToIHR1;?xi36en**3naMhz|o&->V=Z>muGwTI(eE>9HW<3ZgGO zh&clSv9N&z$Z8>0ATE0lJFP$+1mZpX0~+MzgY!V`3y(_k2vDh3d1WGOWp)!~eA1D} z%y^E$!Z7lH^kAkeYnJ<IV9Tyz>mxX#7dQnVwS@%4F7bc?OT)VCD`&t*;eh!^0Y0rt zV<V8Z^x^RZvOrcrpt+nDpsUC#?PH>f{vgl6T$~X^7?#IChHxhp?=OHajag|giOTlp zUEKBg6&$=jm6{tB0XcR&_!z=EJD+!fM+gMs^Z-&ad0JkPV~+u>o&f8HbS=}UdR&Ns zLDW$St#&G->H(&9>Ls+mvyRi&sqkkVnO2*c1f+V3W!Ov1=}FYCxkKTn?WDEqpUQBG z*59T@F)P%!B59-yYIPEorMv1r&5$O2OIoE$5L_!g03B?HCRv!`LP~v+h)~a(-@!G} z*oN@7h8xm66>n=wekvt~)Gi`vESJn5nAc&(kLRq_a;nglekv^^YpHCK-#l+a8?Qci zNsAgk-cWc)dHYyPl5r2J9{42bl~L~;)rc=^WTD+@mcAtgxvP%8l{m)3K~)5k0fAv2 aAvIb&vGk?1#~7_f{bJ2zyB-JxsQnl3W4iMI literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tools/tools-sprites-trans.gif b/resources/ext-theme-classic/images/tools/tools-sprites-trans.gif new file mode 100644 index 0000000000000000000000000000000000000000..ead931ef617ac8520a24a263abb456ebc1bcd54e GIT binary patch literal 2843 zcmeH{`9IT-1IOPR(~OuQ8WCoWkfR)xkD2>OSRc%h`x+`u--v4D8j|Bfn;auF_feGP z9yuBcEfTpJIa2zNO53N;fARg{^Zfnwc)T9Z$K&;~vavKY@|6QLKq&x#Hp|levl+v~ zIFcHJNNpkUZ6OJa@Fd2?WX9!GMr3+dbXHF!ZMLL&iTZ5yVdp|!@A9L;<wql%9b?Nq z>}}?o?cuq-(Z#*7<)7nA+iy7AuQ>aYt6cUPZ)SaOdV{yLy|?g{$Jynredlfc;{68r zkN*t(-xyH%&d&z`U_j&FM*nUCfbswcRMxtYh7o{@s|WZr`kD$zE7}&O#+Nda;dUYK z2Aj++5)Q(WWue*pWC1j;4E4pyhYwJKv}aHwIjQ&cJs62<xhgio$lx>z9-BB?q$lqO z6)Wqrrzlh8EC}#2^M{Tq?y`F)IHtlf`aa6Y-H`Ee6Qc~T7p5w2i%-NOHXGTs)(LPE zL(MOxTXUkg<1p2#Ck?)x8c$$co9wd1ew36}Vun*QcGy-Xtbf1d!AiH3U8QUh;;~t( z0j{Pq6saU2*69C2|A(8ldF4~0UEPr%Yb&W~GEn(Xl4Wj-OuKMH7_E&6MC;IRd}=qJ znIBB|r`_)`C5zP6`0@5=Y`p{B?dSZD`aZq!zOV2=*qrRG#t(@*qH|W1_iOu~7h~9B zq*vKNGzSohPD?P!!^{%pB3kAX5B}kHB!QtLiAe&3;R_fUq(oVq$n_IWWT^fLKTEmf z4~l7s>cP@rIYmQ-+eP@PcPW%W)Vw7>x34%hxo3cS>uW{u%uQRZHt$<JkW|TClWl8i z2nrg4N;Tj{<=z%`S91gg>-GwuB8sj{{z{qO#c?8Qt>}9a1%l|S(k!DOs-O#<lc|Q7 zM3d#N_=J$z5LlUW>cwT>1M@ahfl=46Q?6Owfgh)1DK{kpb06wZOKzNFr<4cLbloc` z>As;fo1!varMqBFy#A_dbDpY)kD+DCOp(*33q0wS#re=X&f{%9QGR&3XYF|2o9xn; zSi)vY7S^sj_N7SMX1=TCbZ9_DfqHe-Vx{fJ>e){B0)}@T`uO8ULFkN=L2JxR)9GYw z$)*gDMG?7uw`wx|bz4YHShAdZ2=ldHdR^-bk{!`6PZFB0y3>>Xrj3&y8^FMU`|JIX zP;C$(4$W%LLWKam!{Q_wsMaG8z<>oe-Vp^Ztg#-A0Rh^*PEf}bOq61D*55>EG-d`P zCJS_f6*PcukXSo@=QaM)k@zkTBb97o2K7kxTMuIl0Kmd&0Kk9d^Mt@frl!HHs0Qz$ z8)#Aze&oO*fa?i5<Y@qh0Mb5~rMtM#xC0rdMT`Imb6ZCU_;;2ce3^^$mh_xA;+Hyq zxoRNs&)UcuR7%`?y8U(8%Q?yo!_^V%*)F{ym9y$$1Z95Av9R{Ttf=sQ8F`PM-s6ym z2|YQ+;SC^zlA}E@)4wV1z*OXKFbNT&k=I}Od+cAEZvLY<HV(hh`NX_)^ykB0@n<Ty z#?R-vK5gm_ZCNvq?ZC&PTdMDD=ciO|Zra8R?GHE5Q)E^T!ff8^6`LQG?%0Yr9;e92 zi$k){tQVd$Uu$CjKyx~G`x=a;h_g=(Ih1|!hV{OX6xULqd%(UDgDxF?#*<S7@0+Wf z1mN*RXFW*)iEI;L`!Ztj3KK5<<*Ypj11-dv%DeEVJ>kO?7nsTCgwLmWM~VUZ^Rn=q zb=}YfQWCviM!*_#W(rK=uZJK{rwtfiPxL*qMVI&i$-%Wg@I4$E&6N9a*`F)qDr&{4 zS3m>+9j0aNnY$EF^mZ<#PcmHNM2p=T`mgPtJBNr5`twQKdGy58%)u#y;1nXisgI<o z?4!^n$$u~Mucg}(*M{cYgaE{ZCr`Wel&v4@X2<jb7a3Dw)$34@bLOz}F+r{KW#e{A z00~W{OP_=F6}|`?Rn3iVa7acJAy|v*_myhBJN52~mnv({#_&cjAyqU+K&!|bM)0WK zug8)J4p`9T-h@-<)v~Zb=HI8VLC-&X=w*~ERki7a&25>GPvG;wtM%Q{UsIQaRkk;# z$5fkfMHS&yfJnix<|r|bovU{CgWmHNa%8r^ugW-n+sWq7#7b^PzP6OD)$PKlD+3wT zy3Bt2zYTH83jG|*;9#@*eEXWl`vJVC(`PTCchDoIWrjvW&IMSM{#s(Fy%1w!hMrUG z6`ty7oHv%~HD1f|Tf#uXCR<^WiU)CY?0v#m2X@(gw3L3qi_iMv$QJc5B+Sa_t@>R{ z@$$BbN}QJ&5`Z`Amq^?t<Xby1)gkrH0V|#hF^<o8i?1tp_AA0vw<j!iCz^bm{4ulE zuI1{=O~PIpI)MaFy8a3UQ6c?Y%e{-0;PSux(xTwk52oi*uRc!F(ELmwzF_)cPPW>w z+a6E^xoO?KHyIkNLzOvKIJc{Mtq+A39C8(0{@BGm>k>J3*sT}*xG@T%e9KCewPH<b zifU1oQ>q>?c7IX67Agv)ntOf2<UV^-ROxC_=oNL<)%bl93eUGhViX&k)RZF;+&28C z`}X4bBT1R2A8X*NhR=&xn$F&M4dMAKw{PvBcDaJK5QV*lr7%j)Q1CdYe9YZ8e?wRE zI==Si$-WHPNQ&Kl;JYu5j~CpVe(D?fe;eWKjaYqeDvZ@wkrz5l0iA9pL9!aUIqO4N zs1llj@K6AOTJ71XZutntsmr1E<;0JZy_DD;X)3^_%sbi6&qxl(F={YGPl6AVO%*9O zre%(3DPt_aOpyudAyWr3ORxA>09MxRWw8^PkjP>9)}ZM%ul?zOaKX!}x}EteMMr~V zVyhuK!WS|-UVM#uYAin&@t|f1uR_MB%y7Ia6a?4pFClY_9lq7+L{Obmu6R7jY>7Mj zix4x0oc-9k<BEu~973(nnlrBAk!Fr|x8GVoMTK-msGlIHqo?-sSpqao5-B&45B6YC Tp!SptOZP1+i|hOQ&QAXWrjri- literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/arrows-rtl.gif b/resources/ext-theme-classic/images/tree/arrows-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..7083d77d42163789227544985deb09258a1df51f GIT binary patch literal 618 zcmci9%}>){0LSr%ItAt{N+Ob}%*^=`hvE=0#Kf5R7Cpgf-bg$c<H5v(2M)vOpdAbt zqE1aDi&<qcK@$#m*iC^|MRpMaPA6loduzLOFHhU&X?6S)e)Bo}?!U`dFLj*lIS=Z= z+znthn{76m;S;okpoM|WA=u2oo+bHyL~%NuBuRR`UZ2lL({vyZ2nK_WDDuZ;e*(RU z%X9)wvM9i!DOP#MDpN`2eG*Mqq!7a}(P(s*$MXUX33!1=pK~}Yps=WZ&ne4!ye#4s z5wD6kBBGxniWX3$fPWR$SS*%GrLx&9$8kK*|1O}lB3dt^SV>(ktA9!;Q9^7P#Vfn4 zCZNhfHCaYUsHP##K+Hj$lGL=MW;SSogg6OjWsQ?HUc!Qed07)G6ipPxyo5v<6=al? za8A+kiuU)vXOwkSdSC}9K&6dOK=pi|-SO~|vwwi3T!TaI;gM0#*yHghPoH_8k6*a{ z;uU$Y=G=t6dq34#z0b2-N1UYeJ3Xg%Y^T}?V$VqZrUv3T1;F(1fo;|q(n9Pa>fBAb zy@!aSAFF2Fty@pqzYLuDwit9BCJd&fBP*+Ol(n|SvDV)nUwrE_ZfP_TT_1X9CV#Z| zIvs|vKLcLtb!|0w>joQIHV=&+yH+%X+>Mqy*;_Y#eZVkr+xWGWcu?0xU#WGBU8EOY OcHB!x7;ASE===v7Gpv~a literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/arrows.gif b/resources/ext-theme-classic/images/tree/arrows.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7b8b1ca73333228e84df06c8f9e9daedd477fdb GIT binary patch literal 619 zcmci9y>Ak60LJm-q@mW<q7q;0J0dkwtF?+DO^5?(V&c$6ob05NgAT^&v_g9n5vi!O z9h8`&IJ6{<LlY8X;tSW5h_Q+ql$IjLQSJ_omwWmB?v(x$e)Acg{W){aW<E7wMRdrA zONhZ>u-ok&?|4&;HxYbSjPD}&fp6l?l;m_eaU2f>0>NM~6bgmI;b=5Em<E$saWV&9 zWW`Vpyd*)G1XH9mO-fUFDUt^>4HO^<BArgZXW&N`##k6<z+4F?Sdif4uO%s2hDi?o z;NVXVra1761L+D#Rp9TcoXKP;iYgY1G)*%MvseL3Rj^zInVP&@m;cm2t_H|D$ToIe z&hawI%lSIU^KyZQD?FrmNC|R5kXKeItN>^M7Da^?6-I!p02xtX8zhC}xUv8^5mZD_ z5@1PE%98T;zqeOZt6C5YIgB(~{RGj(ZexRY9nPU)+%@99=eh5F;2VADfAsiCU~GKo z{OJkD&i<!ZU-RzgSljw;Uwez|2&&%b+orL&+Im`ddD{`hbqL+MM(5pxq9<mtW9yE4 z-l*Q<Ms(j6^&Za#REwJ8*wM8;?k@|jgWvTX=m9sOUF?m2`aD7v@J>{}z14BizqF%I zb@Do0czssYeR*0ttBu^THrX`(PK#Ebe09OB)<qImhdrBnuc>d18W)WFn{Cg=$C~Em QC(JhrDPrbI(27|80TC0crT_o{ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-above.gif b/resources/ext-theme-classic/images/tree/drop-above.gif new file mode 100644 index 0000000000000000000000000000000000000000..30d1ca7107816233884d23239dd76fce79237fe5 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa>!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#p<qME|o!ty_V=Dp7QYsZuXsHRr!lWYs!nm4Gh)*79d!Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-add.gif b/resources/ext-theme-classic/images/tree/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-append.gif b/resources/ext-theme-classic/images/tree/drop-append.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-below.gif b/resources/ext-theme-classic/images/tree/drop-below.gif new file mode 100644 index 0000000000000000000000000000000000000000..85f66b1e584aece5a5d6d4cf062b8c1f63edce97 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa)@LcY-(xbFpY57A>eSRT}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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-between.gif b/resources/ext-theme-classic/images/tree/drop-between.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c6c09d987cf7cee99cf1baec891f85e7477cc02 GIT binary patch literal 907 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*Ea3nzkl}10|z&>oIij5|Ns9CqhK@yhFS<H z{$v3<`9FgW$l;(o!N8HhV8|g7v9PJ7k;5>=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>Vi<g7J8UQ~_Qo8^E literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-no.gif b/resources/ext-theme-classic/images/tree/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d9c6a9ce1307c5ba072f08bf77d998bb1b716cb GIT binary patch literal 949 zcmZ?wbhEHb6krfwXlGzJz`$^jh2@BVz)=yA<1#WQRaDNJn4Gt<xe^d?H6-L_O3JN_ zj5`GdcS}m1OqlR|&YYJ^mb~7u;q8tc@Am9@f8fA}BS$`-IPvMsnXfl)e1GuZ$CD>N 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{oQNIS<b7{xSW o#)DLkb`|z44+e&(2fD<K^WOX@R60COK-Eu0<6u*JC(vSR0BG)Y<p2Nx literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-over.gif b/resources/ext-theme-classic/images/tree/drop-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..30d1ca7107816233884d23239dd76fce79237fe5 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa>!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#p<qME|o!ty_V=Dp7QYsZuXsHRr!lWYs!nm4Gh)*79d!Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-under.gif b/resources/ext-theme-classic/images/tree/drop-under.gif new file mode 100644 index 0000000000000000000000000000000000000000..85f66b1e584aece5a5d6d4cf062b8c1f63edce97 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa)@LcY-(xbFpY57A>eSRT}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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/drop-yes.gif b/resources/ext-theme-classic/images/tree/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aacb307e89d690f46853e01f5c4726bd5d94e31 GIT binary patch literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiY<wYKlJw(qsJ zpJ`*gP~B&`t<yqdmxacj8`J~0>xFJMjooS=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<K5+3ZZ6$&YuTpTE4JQVvE}ZnE%(=Ky}xGL zg{|8zZry%!>#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<M3iU>%{1g;@!G-s^!P$| z8==@$A<sHwn3<HXM1D%Sr0N;HdqRStdV>R3<{5^GPA?~^>Pma%d|c$9FpH<AXHEf= zXAc{n;-`omMgmU4wi-S?A1*Mq%oSth;IcZ9;y*)FYu^J;Muvcc4jg(7m5<rFnVITk U%ua1eXlP&wOL?s(A;4e_0Qp#8fdBvi literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end-minus-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-end-minus-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..10227e60d54e9a5ec4cba2d0f6e27aa2b96669aa GIT binary patch literal 151 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|<-^IJLVGP<@7n!5{)bGH0gubB6o$(d20j}) yq^*tFB)WCur^zN*l<-8b9$oZZNI}qRS#bCYsRcbRpE|seb9u0#!l#pg!5RRA%0~_W literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end-minus.gif b/resources/ext-theme-classic/images/tree/elbow-end-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d8a0fa27324b7f4e38c26336106ea63a8d20c3 GIT binary patch literal 157 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|>%&P+;k_2G)3^V>tM0{}$k(hOBl&Po{$U2) zHzzoHcN%V%*me2<qlQ@HobCtDqBXc2yBxL^C@qj=bZ#^d*>~~eL65ZFb1$}72{STS F0{~EqN}K=y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end-plus-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-end-plus-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4eef8931b7eeec1bbbf5a1a2520d8e10b7db38f GIT binary patch literal 153 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|?Ze5RLVGP<@7n!5{)bGH0gubB6o$(d20k0Q zxQ`gKNpKgR7C+7Bpkl?grYY%S73U-l)&<uqUU5Y@Pf6S>)AgV^!$)tnrXYhg02MMv ABme*a literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end-plus.gif b/resources/ext-theme-classic/images/tree/elbow-end-plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5c62fab32adca39a885e19ab9230d21a9cb804d GIT binary patch literal 159 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|=fg=&;k_2G)3^V>tM0{}$k(hOBl&Po{$U1P zo)cWXJM|Cfu-#34z#!4<c+T~~1V*v0rU^<DbQ!o>Oq3H+cw0Y|6j{uQT)d^~>^T<( G25SI?qe(ab literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-end-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5e7248c44a28e0d2559ddc2135f0f0904212614 GIT binary patch literal 70 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBNqb$gANcgfaDpN#9R0qPrv=SsAaQW Us_|9dpJ!Vic}#m2%)np`0EkZ-)&Kwi literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-end.gif b/resources/ext-theme-classic/images/tree/elbow-end.gif new file mode 100644 index 0000000000000000000000000000000000000000..406a88dff55195c8f8fbb65c37a10280e9689e25 GIT binary patch literal 70 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01Cw}5e&gx43+Bx!j0#)d SwtMyY(nlWCo>_`ASOWlykQ)2| literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-line-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-line-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e5b8b44e07bc992274c5effb015831b88aba40d GIT binary patch literal 72 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBNqb$gANcgfaDpNBwP3!Prv=SsAaQW Ws_|9P&o65OHLOxj&WUGaum%9NZW@sQ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-line.gif b/resources/ext-theme-classic/images/tree/elbow-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..e25ed03fb6cebb2a0f891c0730f50977246ddace GIT binary patch literal 72 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01CwM+e&gx43+Bx!j0#)d Tw)?qX<1KZol+K0jj11NQyrLT7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-minus-nl-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-minus-nl-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d8dd984f777b6b48b95c40a85a77f9fde92a801 GIT binary patch literal 146 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|{=-Sn)q5>opS8AYGT?F98N+bdLdSbS$1SV% ttP<UC7O_3}-N(3ULBx}=CdEY+KDW364o`ZxMyBpYbNcDGRhohf)&O8GNG|{Y literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-minus-nl.gif b/resources/ext-theme-classic/images/tree/elbow-minus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..f50bd40ae3db3333f583681ae0b875e2a83cadaa GIT binary patch literal 151 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|<-<wO)q5>opRJB_vEXSch-q28ikEr8>dQ*& zr*1lvbmi&;28RdllqNhC>tgCx%Fvy_p*nG)g9O)&r%wdl%(Hp0p+cvVfx#L8`j$#l literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-minus-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-minus-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed3e5a0d63611d09683b96cbcd6305bdc3846568 GIT binary patch literal 152 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|^~1@ZLVGP<@7n!5{)bGH0gubB6o$(d20j}) zq^*tFB)WCur^zN*l<-8b9$oZZNI}qRS#bCYsRcbRpE|seb5Z1$(2+}4Vz34PyMaYT literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-minus.gif b/resources/ext-theme-classic/images/tree/elbow-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7287961bd3f1eb0269c1ac04f18176dc92e9722 GIT binary patch literal 159 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|=fg=&;k_2G)3^V>tM0{}$k(hOBl&Po{$U2) zHzzoHcN%V%*me2<qlQ@HobCtDqBXc2yBxL^C@qj=bZ#^d*>~~eL65Xvw}qcA*DiBm HV6X-N=kiOC literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-plus-nl-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-plus-nl-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d1e917473478d4b291265e419c3c8336112574d GIT binary patch literal 149 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|>BC9S)q5>opS8AYGT?F98N+bdLdSbS7uS~c wtP<SDyH_y&u|Lib8lV%T%_z8#;fa)2bYfP5(W0r$1=Sxa_CGLCWn!=f0F<gjqyPW_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-plus-nl.gif b/resources/ext-theme-classic/images/tree/elbow-plus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..96f8d723942d4f0c5e23e2fdf9f64d5d414870f7 GIT binary patch literal 152 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|^}|We)q5>opRJB_vEXSch-q28ikEqT_64o= zQ&%x;mMAr~Xh@h)E@%<e(7NctVvZ>82Bw2LM$6iowpm(o>{suv@X_;DVz34Pv!F%; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-plus-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-plus-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb0cb49206a4d9180a16502d748b86151eaa4d43 GIT binary patch literal 155 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yUTnzjSIt)MnGJ}D|<HO0HLVGP<@7n!5{)bGH0gubB6o$(d20k0Q zxQ`gKNpKgR7C+7Bpkl?grYY%S73U-l)&<uqUU5Y@Pf6S>)AgWPBSo_RbeazfgEauB Cr${6K literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-plus.gif b/resources/ext-theme-classic/images/tree/elbow-plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae41983cca2f762abffb8638a43869859a276e44 GIT binary patch literal 160 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|_rpm|;k_2G)3^V>tM0{}$k(hOBl&Po{$U1P zo)cWXJM|Cfu-#34z#!4<c+T~~1V*v0rU^<DbQ!o>Oq3H+cw0Y|6j{uQTpXw|H*T}0 HAcHjk$M;B$ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow-rtl.gif b/resources/ext-theme-classic/images/tree/elbow-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..1139cb024e38852dc49b4a7895264ab1b2646d13 GIT binary patch literal 73 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBNqb$gANcgfaDpNq+0kJPrv=SsAaQW Xs_|9dpJzQIG$vinuv!txz+epk)L0uV literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/elbow.gif b/resources/ext-theme-classic/images/tree/elbow.gif new file mode 100644 index 0000000000000000000000000000000000000000..201c413e388369bf82b1a1289baf47fa3cc06f40 GIT binary patch literal 73 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01Cvxse&gx43+Bx!j0#)d UwtMyYQa?4X6w5`|G{qRK0oEWJ9RL6T literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/folder-open-rtl.gif b/resources/ext-theme-classic/images/tree/folder-open-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..a34c546c60ed0b37d99ab23119768ba3c2c2f0b4 GIT binary patch literal 356 zcmV-q0h|6uNk%w1VGsZi0Hr+uF-l`X|3aB(0h(w6oN5G~YzCli2%>Nbqj3wQatx(& z4X1Svta=o%ei*ZX8?}NRw}c<Mha$a-CB~W=#+n+!k1EKOFv*rN%a}9FnKa3uA<v>F z*SJ91zii^OL*l_u{nc>)+ja2ddjI5ql%>6#rM<Vex16oUrM1?nz1qFT#<|Mm|JQ{7 z>xBRBiTCh{|M-*t|C#^)od5r&#KgqK#l_9d&C$`(#@6fD;qmA1_v`cj`uqI<|NsC0 z|NsC0A^8LW3IIO<EC2ui01yBW000Joz@KnPEE<QF3nr5}4l6ufZ`u?#91loD(vx|; zz2=QEoqo?f%&)eP!QSwA@A9J|TAzu2&)3roEE63uXJ;`JGzB0NFK%&fGKVw-9vU+) zn3<S|bpsn5Gb5s-Bastp0u&-4tgWn^KQ<-<1O)~M2@1Npr$RO~z`?>cPQ}JfK>#~e CB(dlK literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/folder-open.gif b/resources/ext-theme-classic/images/tree/folder-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..361e1be3e4b28bf8fc4e39b60f66dc805c5b7835 GIT binary patch literal 356 zcmV-q0h|6uNk%w1VGsZi0Hr+uF-l`X|3aB(0h(w6oN5G~YzCli2%>Nbqj3wQatx(& z4X1Svta=o%ei*ZX8?}NRw}c<Mha$a-CB~W=#+n+!k1EKOFv*rN%a}9FnKa3uA<v>F z*SJ91zii^OL*l_u{nc>)+ja2ddjI5ql%>6#rM<Vex16oUrM1?nz1qFT#<|Mm|JQ{7 z>xBRBiTCh{|M-*t|C#^)od5r&#KgqK#l_9d&C$`(#@6fD;qmA1_v`cj`uqI<|NsC0 z|NsC0A^8LW002J#EC2ui01yBW000Joz@KnPED|#r%*A3n_MSXmrTNSBWLRuZ5`jD% z4I$>5%|4%u+wanYx!-WvqBg19@AXd$L7T+NWicHSECzjlaBng%6CedNKYlKgl#??W z9t4nnG9#X!BQqQu1CWt1A*rgVA`}8OLK6zJvk3<V1q1^oHbXWvz`?@3RK><cK>#~t CowKL_ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/folder-rtl.gif b/resources/ext-theme-classic/images/tree/folder-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fab30f8138a85a55bbbbc96bed7f52d51f4c698 GIT binary patch literal 350 zcmZ?wbhEHb6krfwSZc;#=#}jB-)Uw#<E#v(Iaw_8a@ZE+aV#$6URun%yp(@MnZW8w z;Wbqv>uSU{)Jbe^l-}ATyS+tzSG&^QF4Y6Q8i)F|j!x1&K1Kh;RD+Y#3{TH6J~Pwg z_V%FL+YA3+$^U=5^#7CkDNFax0iw0XmTtYaa__CZ$Bykh_2mEi&i_9q|NlSp|NlAv z|L;0*;K1qAr_Y=@bNTY+YuBzFyY~9V!;jD3e}Db?KYpP2lZBCs!Ja{f0SG{TVqmL2 zFu%Y<N2+~BPugZnK5d<8xwk~D<R)~aTzXiscWzpbq3-O{v+ipzjM{m>AoSUDs}=8l z{Q2u-z9Oihu}Mp;gjGwUv#VQ6w1h=VVbbI&S|TOPTJp2!%+(UkV$zaZvUHi2kiCH} e6ALRFI|mmxZ@7T7f!?m&dkp;cAMkTzum%91T(v6z literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/folder.gif b/resources/ext-theme-classic/images/tree/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2fd81a12d520bb45ce681ad14801a3e9d2ffedb GIT binary patch literal 351 zcmZ?wbhEHb6krfwSZc;#=#}jB-)Uw#<E#v(Iaw_8a@ZE+aV#$6URun%yp(@MnZW8w z;Wbqv>uSU{)Jbe^l-}ATyS+tzSG&^QF4Y6Q8i)F|j!x1&K1Kh;RD+Y#3{TH6J~Pwg z_V%FL+YA3+$^U=5^#7CkDNFax0iw0XmTtYaa__CZ$Bykh_2mEi&i_9q|NlSp|NlAv z|L;0*;K1qAr_Y=@bNTY+YuBzFyY~9V!;jD3e}Db?KYpP2lZBCi!Ja{f0SG{TVqmK| zFu%Y<N61{-mo3@m);yiCr9W?%SVZKcD|I@^@hyDjsW(}2W4znetljrl9eG_Ic=LV5 z?}J}AuLx>rY|>(@5!KS@?CREHtr5{um^68c7E6t=mi+8FbG4XjgtX+AEM2C>RBRv5 f$IH#d!Oq6Y!lY~9Y@oM$&)yv&2M)SAGFSru#-z0M literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/leaf-rtl.gif b/resources/ext-theme-classic/images/tree/leaf-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab0979a3a7798dbba170b3c646f20667b65f453f GIT binary patch literal 346 zcmZ?wbhEHb6krfwSZc@s1g4(JW?m`!Nhb_b&sr8evMYP+Q1;lZ`iWQVV~76^evMDU z+MY(VKTYa;mNVsf-t_0GQ$J_T{8~2qMb-S5g>%2wFML_P=v(db9}Nu+lNW8DwshC5 zmHXzcJKVDLW!th>-K$=;tp3@(;n#$%zo+f|Gi&eP#hXqn-*#sHfq#n*{lD<w!vi3C z@c|6}fB5nLKM;`u6o0ZXaxvI5=zx3z@)HAF`GNTb9y(I}N1GToW?0AxpJsPq<>VCf zeA>j>>9#~jEA=lg*9+&ShYbNXp$iXutvdRy;*Y09!o|0S3{6djYBf4_rIi)3HQJIB zCQhi3sj2U-ly0Bi*vw!k)!y0Az0jVqf6~N?WsF+dI=UqWOKTXn@7TG0nTNY0gEasw CPs0HK literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/leaf.gif b/resources/ext-theme-classic/images/tree/leaf.gif new file mode 100644 index 0000000000000000000000000000000000000000..445769d3f863fff85bf8dae9e50ca2fbdd2d580f GIT binary patch literal 945 zcmZ?wbhEHb6krfwXlDQcQ_o~GuN3{H6Nag0EsGx6l|6PSd+b*I#H;qP!+!_A#wTHI zPb1o&CiOkbneseu`t#JOpR;CuEt~zKYW~Z@xnJuSzARt#t#<j3hK7d8i?&Z&x@*?T zee>2GZdv-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<<a5rV38BQh=N7Jga;0d)0tW3bvSNLJ1edq z!y%BN#MUt1KJ!t@L8XQRd}jI2QUXI1+Gj~F^6K4nXhjpRXD;8?RR`4r7@VdTos~+~ jxV+J1x!+o?4Xb@6ETcC>ENsed*j@4Yk?RR_1qN#Xfm)wA literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/loading.gif b/resources/ext-theme-classic/images/tree/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch 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<e5zgOcIlpc`kLa*!o;M_#F$wy(Jnw%^xoO{@do#FR1axvu?^Eg~=WXT$f%h ziRw+0<X~ye?)5wTu<&NHn6>&#9~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><M;PP#XNUM@C2hfJD#O#hF$!^x>+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+@ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/tree/s.gif b/resources/ext-theme-classic/images/tree/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/util/splitter/mini-bottom.gif b/resources/ext-theme-classic/images/util/splitter/mini-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/util/splitter/mini-left.gif b/resources/ext-theme-classic/images/util/splitter/mini-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f7993f260b374440c5c8baa41a600eca99d74d GIT binary patch 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#$`Jz<zAZ@KEu aiJ--&dkk#zd{zV~IJdAA3h{6-SOWlJm?6yo literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/util/splitter/mini-right.gif b/resources/ext-theme-classic/images/util/splitter/mini-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b13c5a8b91b86e33d5def2ed29b4e348a5795a2 GIT binary patch literal 872 zcmZ?wbhEHbWMxohXlGz>c6N36?{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; literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/util/splitter/mini-top.gif b/resources/ext-theme-classic/images/util/splitter/mini-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-bottom-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a9f7e204b22556db915216bf36698d8154da3ed GIT binary patch literal 228 zcmV<A02}{DNk%w1VFdsl0Q3L=1V)UavBjdY#G|vtq_M`TxXY@!%d5cGw7}4{z|pnB z(6+<UxWm!T+2_yN=+WEg(%b3M-09ik@8IR@;N|S%=IrL}_UG>R=kNFE?)d2M_w4ff z|Ns90000C=j08rEA^8LW000~SEC2ui00jUZ07M9302>GtxS?Rdfg1vF;6Pykfq@4A z1lTZ8zy${aHAFCwfWyF#11E;02r}V>0v04-Y#;#w1CTId3JgHACdmdOO9nu=lVAV^ e5F`lXfWW{53<4cw7~nvHg#r}@FsQIFAOJhBgKJy> literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-bottom-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdf2fdecae966f4a2a08cdbe975bf308e9cdf763 GIT binary patch literal 87 zcmZ?wbhEHb<YM4v_{hMpXyegyH=n=x^!xw+|B63Z7#SFt8FUzc03`3op~1k&!QrrB p0RsaQx0H)TKw?8Pr>s-Xih@Ol+j;b(rp%a_e56a(k&T7H8UXo?8+8Bx literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..af3995c8ac95c95a2b6f467a29f2f7443e60e42a GIT binary patch literal 343 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giW2<(YUbXY|ru}EP9JsLcz{RbHE^Iq^ zaogcbI}Tqwd;RITo6pbRe0KiUiwn1&UAXn);_VlgZoj;A=jG*ludm#Def{Cvn~&Z< zc>4Om(>ITvy?ONV%d@xNp1=G4{QdVA?||sXi}&B(eER+W|9=LEr9gYBffRqTFfuTx zGUxz}WdQlfm7|1#kwe5|QNlrPUJe<Jg9V4182Oak?l>%HW?^TvbLg;G<iyCLs?s&( zMu1~OkF;u1#|8&xMt;elv;_wgo}QR(&d#Ni*x<m-%_W!6A)(O7*2bq&qOd_xsYQTU fDBy&^#v_eP!VVUqiVRL{{45q62?rVz9T=<u3#+>l literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-bottom-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c54c5bb0d04bdb3b3cf3994cae9568f9e74c6847 GIT binary patch literal 99 zcmZ?wbhEHb<YEwD_{hMpXyegyH=n=x^!xw+|B63Z7#SFt8FUzc03`3oVZy-3!QrrB z0RsaQx0H)TKw?8Pr>s-Xih@Ol+j;b(rp%a_e56a(u`b49(gU}NBA&}kI29BatO0rc BAY1?d literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners-rtl.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3ce3f204e98d312614a060feeda7dab88fa3d2e GIT binary patch literal 343 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giV=H%@UbW-&>K&&y?LWKaz=f>`E^a+^ zVcWrr+YVpaarokyYfsN!e|qlb^Yb^Koxk<s!mXDVZoj;A=jG))FRlR5-IrJHy}o+) z_4SAEZUE7vcQ+rtd+_x2gQssEJ$v)$<(KDgzdwKX{rUUvFW!BB0VF?sfAi`0|Ns9P zAZ`FUgDj-@lZBCiL5o2LXbuC&Pp%v#42&EiGZrNr6cXc+2{>rr!ptb3<i_IYaD<JM z$;88^@E`+|sF1T)$`41!21ZGjvK1Q?To}8Bl!^{4IFR5t(ZZQeWCasrBZrEF#S8(% t155%usudE63@$F5DoiF74vLGqSXh;2RCFmdu<-fV^CUEcxH>Rc0|3whx}yL9 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7c3e49cb2c4d9a70cfa4d17fd85dad25810193a GIT binary patch literal 342 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giV=H%@UbW-&>K&&y?LWKaz=f>`E^a+^ zVcWrr+YVpaarokyYfsN!e|qlb^Yb^Koxk<s!mXDVZoj;A=jG))FRlR5-IrJHy}o+) z_4SAEZUE7vcQ+rtd+_x2gQssEJ$v)$<(KDgzdwKX{rUUvFW!BB0VF?sfAi`0|Ns9P zAZ`FUgDj-@lZBCiL5o2LXbuC&Pp%xr42&EiGZrN{3JG#31RNA#X=W5qa$`wMXkq7M z4Djg4P;zQy(NgJ}a-+bpfkDO0YtDm)gY8{1Awd-v4kR3$XyM8yvf@z#Be$wp$O{3( sh9-U<)f@pwhL$5d%pwU71Oi!^n8p1(t|&OH>|j!4G2u99puk`a0QC*NJOBUy literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-left-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..0946e3c23535c2f2cc3da5ccc74c940bcb3149cc GIT binary patch literal 262 zcmV+h0r~z%Nk%w1VG01g0P+9;qOrx!+2_yN=<M?Q|NsA@vBjdX#iFsrA^8LW000C4 zEC2ui015!U073}M009gLK(L?y00IjtL^x0(L52<=CX5J?;zWlPF<xA_v0z4y4K;=Y z88N^|j~ykBM7dIB$&)TEwltZN=1iD2U)IFQbEnUnKXn2fDzvCfqau-#Jjyg_)1^+M zLY>M|Y1OA!rDmlXQ)^eQIkA4-N_MQ-uwK!E?MYOu+OluYvb8EVsN1=B?WV=MSMOTC zaQXgi+n4ZQx^WW=4h*=iVaAUgBVH^yZ)C-dF<+*vd2(jXpg)V=JlZqq)235fR$Z9& M;nlDe9t;QoJB>1Tv;Y7A literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners-rtl.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5fef5547df4ba190f12bae60e32c68023dd37cf GIT binary patch literal 341 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giW2<(YUbXY|ru}EP>_5Ndz=f>`E^a+^ zVcWrr+YVpae(2JU!xzt9e|q-D({neUpTGI+{H+%kZa%wk>&3;}FD~5yqL-KNy}okq z_4S8uZ$5he;OXlJPv1Oz_T~`~z5Md*?YHOezCVBW<N5pVFWv#sj~DO1zxnk0|Ns9C z5H|pwK^9W{$->CMpv9mAG=~A?Cs&Rl21X8%8H*AQ3JP&Z1RNA-VP+Ima{ChCz|zji z<mc0o(ZtlqtfkU5<-~^OCI)7YoGB3x4>Ad`=&W1Au(0u9lX7vFj79(}6O*`?!G;5h rNe!%W5`H%Xni|+UC7CP^1ei2+u{Z>JTro(<yv)ZWQIjAcz+epkXnMa^ literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6125d58bf293ecfe9274790c473f354958984ba2 GIT binary patch literal 341 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giW2<(YUbXY|ru}EP>_5Ndz=f>`E^a+^ zVcWrr+YVpae(2JU!xzt9e|q-D({neUpTGI+{H+%kZa%wk>&3;}FD~5yqL-KNy}okq z_4S8uZ$5he;OXlJPv1Oz_T~`~z5Md*?YHOezCVBW<N5pVFWv#sj~DO1zxnk0|Ns9C z5H|pwK^9W{$->CMpv9mAG=~A?Cs&Rl21X8%8H*AQ3W;+l1RVUp%*-gL<o3lu;Yb@N zvx$exM1w}IP6bt?FB=pb8h8{fBN8qwd~~!!#=ycL!eEK-1ZLJ%1`ZB~I#~I&TzD2N rU_Q(#<0A4wppdDPkynAEcflhDMlQ8k^8^|~SQrJEWEv7A1Q@IVj0V0F literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-right-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c23c9674d8eaf424188982487e1b320db9476b3 GIT binary patch literal 263 zcmV+i0r>t$Nk%w1VG01g0P+9;qOrx!+2_yN=<M?Q|NsA@vBjdX#iFsrA^8LW000C4 zEC2ui015!U073}N009UHK(OEd000UqJeW`+L52<=B8(USVnmA$F)o~Vkz+=W8ykKU z8Iqz#gCJ3oRB1A$#FZ~w!mQ|$=FF2ZJKn5`)27UyI)RQ9S~957p+}1%U8=Mx%cM`4 zMs=D~YE`N}p<bQJb*tB`R>5NJNtUPCooI=66}z@<TCHrqx>YOpEZw+x=fc$+mhV`* zdja<q{P*o(!-enqZA+LjV#kUb*L^%WGUdFIF<)L>Iq>GpoHbh>?V0pp(}_!~KD|0M N>({PB4*VDp06XrFdkO#m literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4bb18090479779276c52effd02846d6a010f2b9 GIT binary patch literal 346 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giV=H%@UbW-&>K&&y?LWKaz=f>`E^a+^ zVcWrr+YVpaarokyYfsN!e|qlb^Yb^Koxk<s!mXDVZoj;A`{m_3FD~DCc?F2>y}o+) z_4SAEZUE7vcQ+rtd+_x2gQssEJ$v)$<(KDgzdwKX{rUUvFW!BB@!|WMPrv{F|IYw% z0MHHOBE_F9j0_B#3_3ug7(jk<<tS%h<PgzdY;xpKH;{0cut<@EjhRo1B{89eos-c+ zq-DWF$3_-Sm9CZt1&$3p(!6Cm4m@yX6cpym>$t$s>N{JxSV~62;3y-rn3v9q3kMSz uSmmX>9vB>A;Aj@|;Rz5(Y(6N$!C`TN;c5#5hlq;^hvEXqjy6U{25SJa^}NCW literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-collapsed-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..c54c5bb0d04bdb3b3cf3994cae9568f9e74c6847 GIT binary patch literal 99 zcmZ?wbhEHb<YEwD_{hMpXyegyH=n=x^!xw+|B63Z7#SFt8FUzc03`3oVZy-3!QrrB z0RsaQx0H)TKw?8Pr>s-Xih@Ol+j;b(rp%a_e56a(u`b49(gU}NBA&}kI29BatO0rc BAY1?d literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-left-corners-rtl.gif b/resources/ext-theme-classic/images/window-header/window-header-default-left-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..302221cf71d2dc3ea091900356c707e2ddda8d71 GIT binary patch literal 214 zcmZ?wbhEHbWMz<J_`<-jXyegEn~p5mcx?5K)0_66-E!c<)<YMz9lW^h@TGG%pP#?= z;?kX$m+!o|0z`LT-gx-##-n#PAHI9=^!0<MZ=S#X{`}qd=kLG20HP1y-+cQ0|Nnmm zh?ziR!AS8Z3nK%A6oU>>oB?E~3r8>mBZtV0g$a(_JZu6N3<46G+69!o_FPDCVB{52 zHDj4z$k@WlZe>@Ha3JAepN9FYGYW<W8abs*G&&p-545y%X|YV$A*9~Mz$JHOiUI?p K4=*DlgEatB`D!Qt literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-left-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-left-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a512c9cd7c65b8f12b727475b73da3125800df6 GIT binary patch literal 217 zcmZ?wbhEHbWMz<J_`<-jXyegEn~p5mcx?5K)0_66-E!c<)<YMz9lW^h@TGG%pP#?= z;?kX$m+!o|0z`LT-gx-##-n#PAHI9=^!0<MZ=S#X{`}qd=kLG20HP1y-+cQ0|Nnmm zh?ziR!AS8Z3nK%A6oU>>oB?E~3r83OBZtV0g$oWgOPTmMC@3^Kw+picbSzL{U}NRu zPpdfbG4T*5I}^)_hK<QgoI>(bYF1oa;@!^7nx$aS(Adh%t#F{{=cR>=?EErW8U_mv Ow$9^BV&dRnum%A65^d`M literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-left-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-left-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0dcf0c58c307793fb68a0bb96ffef18b784682c GIT binary patch literal 380 zcmV-?0fYWWNk%w1VG01g0Q3L=1V)SoNR0|gjtfkW3`~$HV4W;uo-k*iHfy3jaHc|Y zs6%t9O?s?ji??=}zki>@fuY2RrpJn?$)2{+p}5kbvBjmk)u_GJwaDDR&*8<><H*(J z%-H76+2`!?`~Uy{A^8LW0018VEC2ui015!U07MA+04sRtK(HV|fd&mCB*;PGz=Q`M zc5vXZAb<!37edsSkYh!N9Xw`~*pcMNjV4Ee44E?GN|7!>!esffB~6(U1Dq^bP{9S2 z1QVRxu(K#olr@v$REl(|)22{)K9w5PXw0fdscJn5K*G@mR&RFjdi21_0bysVm3T30 zTAOQ`Zgord>Rh{T<>sBb7c1VnV($j-D>yD+z=k{gJX(OTW5f~-XgDh1!BGT{|6bJz zxgclFVhNmtfZ-?u3Y`ywPP|~kQ41MT`yDL1Fx=aEYiFjt8n<fRz!Tff-J5uD-?N49 aR<65w@!!m!Cr3UUI`!q(ogZHr5CA(*XtgN- literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-right-corners-rtl.gif b/resources/ext-theme-classic/images/window-header/window-header-default-right-corners-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..78c6a682ba4c8b8ca738ee9c47afed5591376e92 GIT binary patch literal 216 zcmZ?wbhEHbWMz<J_`<-jXyegEn~p5re00giW2<(YUbXY|mID{I9=N#m(1mS>FYP#d z@!ZYl=Wo5Zc>BerJ3#dE=A-uyp1ywY^v$DZZ=SvV_Wa$C=kLG2c=zMQ`|oc){r>;| zKLf-}ps`@2_>+Z^fkBEv2Pn<}veShll!1{$WX8e;2b-l#d;$~_8lBsPxB?muI2>SQ z<Ks`OIPo#@5C;bn&x(ePkDEAI)TY&}xVXf-otZVuz~Mk+D+{l}fu5h27B;b4iDy^@ P2s@u=HDqLAVXy`Oc?)js literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-right-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-right-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..71943eb71d04c5eae4b8324ea7a6ff31ddd44cc6 GIT binary patch literal 212 zcmZ?wbhEHbWMz<J_`<-jXyegEn~p5re00giW2<(YUbXY|mID{I9=N#m(1mS>FYP#d z@!ZYl=Wo5Zc>BerJ3#dE=A-uyp1ywY^v$DZZ=SvV_Wa$C=kLG2c=zMQ`|oc){r>;| zKLf-}ps`@2_>+Z^fkBEv2Pn<}veShlkb#jyWX8e-M{Yh2i3<h+51QHql)a8j_|U-C zDJ0EwU<ZR!GmDI(O+dm1h2xW@ywfH~FgUXCN=Y~@2yi&$%qGg_5mNcNiD9M)hmXL5 K1g0|$4AuZ77iy0H literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-right-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-right-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ae4a3ac1b97cc1dbd471f6a2dfece39e6cac0d4 GIT binary patch literal 551 zcmV+?0@(dWNk%w1VG01g0QCR>1V)SpNRA3hjt@<d5Kod6Qj-@`l^0Z$A6l6rT$v?a zn<-(PEo7cEXrVf7rAKzEP=2pfg0NzWw`GmDX^**Vk-K=Bz=fp8hNZ@esL772%ayRs zm$A;7vd^Bj(Vw@{pt#bavBjmk)uz1FsJ+&$!Pu|E*|Wvkx5(YM$=$om-o4G>zRlpk z(BZ?<;>6P9$kgP>)#b_7<;&OQ%-813*yhdH=g!&Z?DG5n|NjI=j08rE1V)SmMvMeT zj08rEA^8LW0021vEC2ui015!U07VG@0B;B!C=f>of)EB8yuks$i317`5{x*I#srE3 zDPR-`VB?Jo9%FdS;E~|Mi3KI1Jh@WkM3ygInv_|xW=fPdal)L5^9Ib0IXP~0LBeAV zn?79vO-eArMi>S*wg}*H1k#;XX$Fni6YEx<I<+zl+f}UBu`SCIWI)k|iWeepvItN> zfybpkH>$vE*5v??AhHtN;8DUx83^ufOu<*}Kmv-t3MNZAZDp>P!CKyonX~53pg)VA z?3r|E)1$W*-MYYZ<AEAHI=yKE0EUD&I{^650HXx~uLTm`Ivec`!&^ZHwc%hRir}ZW z&WLRMGjtCghZ`@RSMpZqD>jxyfS$mk2#*goj(}dlwa4k-J*q%W-+T4?_wAqE-`8<z p{rzQzAAkNum*0T|3J73<sUaBPe-1J@;DZJx2%&`)QaDpU06Uk73c~;Z literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-top-corners.gif b/resources/ext-theme-classic/images/window-header/window-header-default-top-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..5208facb776ce093709df227bc5d87b80680565d GIT binary patch literal 224 zcmZ?wbhEHbWMz<J_`<-jXyegEn~p5mcx?5K)0_66-E!c<)<YMz9lW^h@TGG%pP#?= z;?nJxm+!o|eCOqrJ1=iMe0Sr~yPFT+J$U;1!P7U--+q7o?)&ri-(S4@{^G;;H=ln0 z|Nox>VkXd7FjD-<!pOiN#h?QeX8_sh!V$~B$RRRgL4qR>ADhSp28HH>?VM^n3j`b; zojW*<7!LdhXl~<VXJT2g;DKTb8;73Ll^F|Dz55IlvlI*(8e5sU6-0Ov9Gcu&`89ZE Y1OyypWz-T@F<mk7<*_CyW+nz}0F!HN&j0`b literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window-header/window-header-default-top-sides.gif b/resources/ext-theme-classic/images/window-header/window-header-default-top-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdf2fdecae966f4a2a08cdbe975bf308e9cdf763 GIT binary patch literal 87 zcmZ?wbhEHb<YM4v_{hMpXyegyH=n=x^!xw+|B63Z7#SFt8FUzc03`3op~1k&!QrrB p0RsaQx0H)TKw?8Pr>s-Xih@Ol+j;b(rp%a_e56a(k&T7H8UXo?8+8Bx literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window/window-default-corners.gif b/resources/ext-theme-classic/images/window/window-default-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..1322153546e8add556dbbfed178802ae9fa6474b GIT binary patch literal 344 zcmZ?wbhEHbWMz<J_{zYrXyegEn~p5re00giW2<(YUbXY|>K&&y?LWKaz=f@cE^Iq^ zaogcbI}Tqwefi#*EBDXce187ci%Yj(Ub^%0@|_o#@4UQn=fxEudH3awhwpAYdUx~T zyPJ>RKY053!P7U7p1pbY_S^Hf-=Dwx{`~#-7w>@R#|t3i!}m9ze*gdfp8;Y!&;b-6 z#h)yU3=A3!IzZDHKz?%NC}m*e5UE&{;3zD{qu_9G!{H`IekHdz2@EZ49E?5=9T84W zjO-dJT~lrZI5sdSnt7dZNMvm9k_gG0aNt0~!HE{Gd?Fo>8X7s3L|je?7&<WV@hB!R nBrb4v;ZSB%+0me=)Wyc8HKoGKiJ^s8o})tGzyapN4Gh)*RmHy7 literal 0 HcmV?d00001 diff --git a/resources/ext-theme-classic/images/window/window-default-sides.gif b/resources/ext-theme-classic/images/window/window-default-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..727e4ccd7fcea6611be5f34d4ef3062f705f471e GIT binary patch literal 252 zcmV<Y00aL=Nk%w1VG01g0Pz3-qOrx!+2`!?`~Uy{A^8LW00093EC2ui015!U06_@N z009UHK(L?y00IjdL^x1kfP)DgLTspTqQi#_FItqCkz>S)9YKCvIFjH-krYX$G#OH* z#+EEgVw8E(rN@;san_8f6K2krG=1*;c@t>Qph%A@HOjQ8Q<P1iKD8;eD%Gnzqhcj$ zHS1KbUAb-@N>-@Zq*}p_J-hU)ShaB9$}Nl5E#0<Z@1~v0cCTK$eF4|a8<_CmwTI*W zHH;T=W5tCX`;81aF<;AzB@2FhnRDjKo+)>pj9K*O(VIz!F3oziYt^t*%Vs<|AOJh1 Cz;lKG literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/boundlist/trigger-arrow.png b/resources/themes/images/default/boundlist/trigger-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..11daac3da8202dec764b68145cb16d1693090e1a GIT binary patch literal 2869 zcmV-53(E9~P)<h;3K|Lk000e1NJLTq000R9000IE1^@s65y!N}00009a7bBm001+P z001+P0XgJu`v3q6PiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_ zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0 zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc= zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001BNkl<Zc-nN%tqp@v07c=CA76pQL&5+|(Pd!)5*Pr-2AGPXNYgYW7{n8g>(0p$ zH$jWa{q`I)8WfS>k0HemJ-(4>#F}03!G<~r7EF)@@{JrNUg&VdP9}Kb5z2D_2FMT` TCTt#-00000NkvXXu0mjfpUP1v literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/corners-blue.gif b/resources/themes/images/default/box/corners-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa419b50abe5030db04492578d5dfd39c02fb6ab GIT binary patch literal 1010 zcmZ?wbhEHb<X})>XlGzpbnMH9^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~LwoUdG4CQ1IlzMJEOhS<kFl3=FKEQ(0NVE-)-&ab#eW ziV-j@ILgStrqLpBqA|IFNz@}l>7<|o6TkONJB|cJt&_qGY8j_CFdSfKOOVXz5IAt4 zV}p{G0>c6amIz;I6#<3?kJdQw@UbxnC^#-)=MmtuQ0WM8YMvo$(vtdt@jw$#qNfCh wKq7O5AQyweiU(yaTnsEKITutM85$V*3^<NdGBB~Nm?h;g!*hr8nFa=H05=J^^Z)<= literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/corners.gif b/resources/themes/images/default/box/corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aa8cae5c83d8f17aefadb93aa9a6f95d6069c40 GIT binary patch literal 1005 zcmZ?wbhEHb<X})>XlGzJaNxk<!-tO?Idb&q(PPJsojiH+^y$-Q&YU@S?%etF=Pz8i zaPi{BOP4NPzI^%W)vMR8UAun$`i&bmZr;3k=gytGckkZ2ckjW22M-@UeDvti<HwJm zJbCi;>C<P=o;`p5{N>A+uU@@+{rdHrH*em)ef#d+yZ7(kfB5j><HwJmK7IQ9`SX`A zU%r0*`t94d@87@w`0?ZC&!4}4|Nism&)>g)|NZ;-|Nno6kqR9CJB(DX)7#&QKUtU= zfEhstWHBgDFmRk=;OCU_C{XAUlw(`PkjU7?)Tn7;V<Dh;L{Usm#$v|7j{%*WToz@2 z4k$FAkZiY*XeiwDz=2;mKqQ3WAQOiuv$KoEhXu}DjY_6f3573GnmE<Ex{e%p&>YmK z&r@KbvglBQu=1upg@ud<n?<8SD<&v3G<B_M_sGd$a5%;#z~megA;55utx?S>rDMSY z2FDg@ogF$0O<!{|iMnK@eq?B56N(HC5KuUH_>ia(gUJntM;F*w7{y{XRIF%d;*fMw Ru}w*2KC@pnhK+^68UTSX)nNbt literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/l-blue.gif b/resources/themes/images/default/box/l-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ed7f0043b6b0f956076e02583ca7d18a150e8f6 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-NGaC=| literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/l.gif b/resources/themes/images/default/box/l.gif new file mode 100644 index 0000000000000000000000000000000000000000..0160f97fe75409f17ab6c3c91f7cbdc58afa8f8f GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-N<)RPU literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/r-blue.gif b/resources/themes/images/default/box/r-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ea5cae3b7b571ec41ac2b5d38c8a675a1f66efc GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-NJSY$C literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/r.gif b/resources/themes/images/default/box/r.gif new file mode 100644 index 0000000000000000000000000000000000000000..34237f6292a7da6ac5d1b95d13ce76a7194dd596 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-N?ynEj literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/tb-blue.gif b/resources/themes/images/default/box/tb-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..562fecca87176274af7bf13c419daaf93f169249 GIT binary patch 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<M)4F zeERe4+qb`e|1yk%(GVC4A)xq^1?bHG3_2jkg7O3dhXI3m48sA(W=CE=A*&k<3mDmW lC3Qj;I3zZ;a0tj*FbFstU|?e9k#U&daFB_OkBN!F8UTdQTXg^c literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/box/tb.gif b/resources/themes/images/default/box/tb.gif new file mode 100644 index 0000000000000000000000000000000000000000..435889bffe0a3a4f92b1cb5e781be0d1e9e355f0 GIT binary patch literal 839 zcmZ?wbhEHbWMoiaXlGzJc<|tf6DMxpzWwCMlQ(bPynFZV{rmSHK79E2@#E*upTB(h z^7ZT2Z{NOs|Ni~Qj~_pO{`~dp*PlOs{{H>@@87@w|Nk?Lg3%Bd$|0cmlLhGf{|q`H xPk{0S1BVKOBoBu|W0NBntB_a%g98I2m#~UU!-oTo%xv5uDh>q)92y%KtN|VsNKya* literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/arrow.gif b/resources/themes/images/default/button/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ab4f71ac115188898fa2701b6b11561d0461e4d GIT binary patch literal 828 zcmZ?wbhEHb<YM4rXlDR{|NsAk=}}@d1V&s4DE?$&WME)q&;j`zlqVQCBpH}FWIQ%3 ZIM~d=%M`IAAn|ZBgOJyp2m=KMYXEYD4!!^Y literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/btn.gif b/resources/themes/images/default/button/btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..06b404dd7a101dcaf185a48d8e7272ed975a307a GIT binary patch literal 4298 zcmbtW_dDB*!$q~F!|YX~x7CGet5#c4?L}2pt)jg~^{Ou2uB%t1t{SlkVkNO<h=|xE zu|sV_tRzP5O|3){<nz7v{TJTzoag*<p6C2@&hwo656lff&*emzGCLyw0RRB+#5$kk zhQE^Pzoaz!B-Q_&(g;R0`KHnWbLoD_W<O*T1l1gxHxPpD3&!;RlhNv*-V#9=4$mJ7 z!w>$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!qnn<qvfvTQKubE9LXCo^|u+7U= z16;}=x4eC-vU8^Whv54N_xlK^nZ4b_+M+QxduD*Hsr}B$y^bG(wsBtT*iOqRx0$s? zp9OlRh28&J6T7XW+}>HBeT<vZ%t3tTpjtTiZVsV`L!@&_z1)&MZW)7H(a*&;jMWTt z>zLdI7MI56R&~u#dS=PpGkx<w4Slw*Z?3j?HnxEi*T_kragv%i8Eu@bc1}(Q2i?iR zc5$fmS;hh|un5#M<_4F5hW@$1=?%srFtiK|uK=u7U}Oy#`w0xK0L)c@wFa=)fYG18 z{5CMQ4$N!;v)jM|2Uy|)^XohF9AJ?PEbjnIJHQGLSQ7xN0$^<y__+(L?*SY8z~;Xc z0$W002LSf>_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=*3<ixx=jP^SXJ=<+Wo2e&W@KdiTiX9C@BdfM^2J3(L>5G@{1^1! zCPX9vk-lH=hOH<X`dE7Q+Ih#f$0%8eYaW#`W|cru`d43iW31E8TdCDS9w&t1ER*$5 zzonJ7%f2e|?1NxeBy#UX%l!JMC{A7RWUD*Fs6{rxM(x!12+>R0&blEB2vrj~ouz>Y z@v?Vggyh`eBKLaOsfU$UoI^eP3D#+Z!jUSkF&EUsDv}#jdTVK{U>N<QJ`kupWkoLT zYKo9Qf1{I3>~D=ff4AiUrF6E#S8v3cMk$-8XZ#a&+S(<5u^(@1>())Z{{Dlgd*hM7 z!o!+Lc!<B^o{4LqQ;C@8v{y$0+ToOLo3oaBQ{|7wsxR8t-@@~yWEVX1<a1QEMaH!4 zfGU^?Eq&{+3;st{A3h2EEM<B9onwc|0TbTA>mse=x5>X^EzUi-bW7X4HRx|`Rhw_3 z5s3#biNWD_#lVgc_r+$kEns38GdamiM^1RPM);nvvk@ulk~0Pw#M30sV<y~<&+039 zG=MY+V4LG;W3hIP>k?jV@!=AI(>kr<#nT!NR-zaYKQm;w$eg%)jE*ScMU#fTg-+CQ z@rARv)8a3|uS8}>RXY@1BfOhLzBW@@MW)5=taL<U&<8XgnTbY89bP}Hapv$9i(@*+ zO=XUpu!D-3h`lf~G#8r`*Y465g>D&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<w~(E1SM}fBz-JD_c}`T`bq+24QbAT9Xyn+kWy7A2HKILE@(@ z4l#*S(bo#x^@7!(I8C-os36XkD5*Rxv%FSI^zN3<bbJ)5{u|h<rR@#az5Bb8>-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<><ZsadkOJou<qp>Y#UE#z3K<WY?)&-rp1M$;WvtH_&HvPl=<5*P2` zCt4Oi;U~K0GH$&PzX+8vjg-Aq^L$t3lKynm)k-qM>R76xN83dmqDbq87qKDca>c;Z z5k2jvxe@158+uJoF<bj+x;owEF~?GjHX|<T)~q-4ZEG58t&0552zj&UETLdL<k}tn z9J(lAXLUsSn{a;Q%<iafJ#R5CVE^kG;f#8N;8Jg(sF|uL&}u9x_#AY2=7+eBqRH`R zGQnG069+^UX`%t~(BoF_qK`ZqWuMqVFZ<_6x*-~sT8hJ@YMvkdXkl`SP#k`%>#Pj$ zP{T}0ZX?{>YVwc?zFEGbIKt{fj#M1kOo8SVVU2k%lc4zhvf864C-Lc%waj~`VSO>L zpt-;Fk<G8)Nr?UkomMF@xUVjVhxwLID{PSO-?s0Ib58eAZL(-F*xZP7F~g{SN0@`= zbP__0&?;vrZKgxA@EH9Is(OCymZc?$(7g*6?}FOzcrf7TB+Pm1#ddp5cv68sR#RH3 z-JAhW%rBo+d(>{}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*;%4W<N_Vc+6RPk`Hkxu}Q|iy1nGor#y&LOD=S| z{r*X}V2DC^OmeGz@3y5mSR3}Z$Z58~^}z0Mo!pJWu!EO94i_*h1Cog_w*oi$qb#!E zOG#YlWjARR=Ng5SlH{=uFRpevGhk23a}KV&eVpdf@h+vJ=*#L$6BSoB&~u}#Dw*j1 zXSM5CKuT3T=j!Xw5mu){RXM)!s#o~3^PKW<d11xJ&uL#r2Rr_z(yc#z%0KEhD_2!L z(yjHODSC9nqpD{3xR!6l*JsO?zt>J#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)<tNcT`G0JmJm=|sQZn^aL@wOD9*!(E9pYI^*3 zv#`zhyel)Bhxr}GJ)3b=E7Mv#yiOyjEm$jYTDJ+&_2$N3u>P*O>(xp?tJj^<M6}f# z%@@c{ck`{Z*(<Luzh`xNJozg<_34}6ra`?QPj9EM?#&w=MbSg+^s+g`g*y+~eUV}M zXld)W)+!K2oZ2?dB;)O)Z_52&Z*Z`(8B6!FP=m=ZAN2Fp#mBxbgJpFU1s{K1a+{|P zrwG5~|I_`}y_3pplDbjqTKK_UZ<pBv<KQ1%UHyHT${HY56ldN3=rRpq4bFWj&B<8( zeBX6s!hDC)?e@u|Xk=`)rLt=B_GiC8(ndKgJGIrdpWmyf)R#(<8xCuEO(^b7NZ68T zCwtbzs^%wU;>gYFHXBi{dsFhZ2`x8!Heg@(rpt`sZTD?96aHA7(Ew~I9l!T@zZhMd z)s6#oN#EN-jnvGgc2IhJd$uxn{S_;YP<z9*d|oK+FIfC0s7UGA#@*Uqv^yMDi?iVn z9QNIv=+vPySPALt{<6DtHS=pwS!vq-%4=H`d$@;N@qTsHE3SHU-p1E$VRa2mzcqfc zb*FB(_GkLhnu)`<JerD7q2^)D)X5^=97wnk|E<PD&6eNcD%?cSYvyj!`8{8STiMdJ z3-@gWj5Ogk-nMq>ce-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?5L<A|5gHADnPV<6P6@$+i1Yd9pRs#oXAc8f?!B?2UTD)Lw#SmSC5PheR8{iNF zM2I0d#E2PkhZkb32sJf;nmIwu!B7hX)RGLfathYifZ8dB+IgOGbP9dq6grp?>Ou~E z$_#yGAh{(Q=3x-#p`rR39Oj7#dq)m~Pn`Y43-jWIUDFNsaSHcYI1fgILlEKCjPL+n zcmVTaut5aWAmW2}L<Axtf~g+EjDP{mh#0v@xIrYGc_{@Pi2z4pN+QuEmos^h*}TXu z-6)Jx6oz>fkBA~5qLvv^BwiG$?OLfpbh$zF@xP+Uh-mVHP7O1<jv0MbK89uxLtD^m z0mrm~V{FS}x|lIt5;uAkV;PFEpB-X{z_CLT25fTdC^<G^D|SK=HlblS;{=;?f|Vq~ zmdLOr4Wl(4Y@G+|*NfYBirdz>!$ZUg$Z>njI3X`iL@8bj6ff=^f5<Oh0vUgV5`T;p zFU60SQA&^lC7f_hQ1DAoL?$Rx5>BxaPV*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#eZl<Aq%26adQf zw$GgN%M5{ME>SY!jLbEDCR#3Q6O>hKpT+gdYJ_JAC|L|fmXMz{Etf53n7v`2eF%~* zmY98nnl0a-EhWglAfF>=n4{;AqX5Y<OUzNG<~;7tIW5R}EuVYNF!zf?t{NmaEHPJ; znw#36t0l<A%cFG-(NzxU8xV9`BHECOX7!`*2++pL7*j)xnG41og0VnhEU6ePHpWJP zu~Wv{8)6+@uumXZCluC&ihat)J`-Twm2n=1xR)-t*ASd13ipnR`@qJ165za)^Sll7 zd|dMWhU9@!c@S!zKRYi#kQb<o4>rU@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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/group-cs.gif b/resources/themes/images/default/button/group-cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1dca8f05ca550917346830a5a0ae4e16665181 GIT binary patch literal 2459 zcmeH`i9ZvH1HdQ!yk5P2p?H)dxpp{mJU@!;<t2MW&L?4AmUD};pIjrki_8^5x!UaB zY@<zcL^C23UC!kiHk;&bzt8(OexLXK55C{e=X)OJY-@LQUeQD$699n9p(*kdHh;AL z(_F`gmA7B!=fvytl68@Eb4j)({<bAq+me3YUR~eb*xmvB!#@T7zY6GW?o|W;6aXfF zYyJHMV4obIctja`5t@>=?=U!!Pkq*zsjUC!6Bk-dSFVOt_!mB{_I3VoryMO9y{@Ma z=-n9DL$B{GJqcGoa`AW@KtU<yXjTv7`9L)^ZNK)PO}N2YmqKum;7EhJ;vVFz0hEb< zPw;1ij|rHBQOcFh95q-m)cu~4KvkocMf%LXB@|S;vdLqa;m@Xh64;apUW(!Y9k*uc zdv56F(cr#jn(*}_eb?EXIMm0U$5s*JeJzZe{Nmx@A8s$27KU-&1cYXQR5VJx-dlCy z*quwQHH4AzHypNPqAj1Lqs?uW3i*W)xNYFNZ0>EXYxS9y%>dB{M#Mz_E@4eP*_kWX z^$4C>m(33o-~&JGx7SyMz30WrFL$>$RxxA>k0+M{zIVY>_Ns?Yre=<nXhiR`nV(Ek zW?5gkf5b0zDqZD5)>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}<QmzeIgyq!vKq8!i5d6xb}91ooYQEH?$8b6sYBundV}eL+LsvBonX zWY@{O2yu%+ajy8qQg|Jbv(kNFkRuz3Kmopu6U;fA;zddG?hnXGw!)#vm8O5`5~=i` z&6ifF2OUkK$toU^76dgoQHs+<EzugZF(xr}dijy`8pCR0%u^6$$+F6nXL9?A#XzK0 z`EL`%)lxgjl2wU=+~iKt?}wtSvFCJ2cOJpamz(k~IGV0K@brjc=J>)%Ygw02%fDp? zVNB8KSM#G-X(81lbZQu7nT3hsnXV^A4@CVZF?NFV-}t){`7%2$Np8A<PCbO&xRb6+ z-iXOI7dJ;gbTn&06?h=+qKe_<&4@CTcr&aLWA@_avwUPcqQ07Z>IR-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!SNBq<NgJ*u;6 z%XE-Q!;*J|Lwi8{S{3>ur_%-}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*BvVzNy<VVASv!@09T!ghD6CeJ_^r<bb{LDQ#STtTVMz zTzA}Fc(?uTkaya5?#-W8@p2Dk8KYW%#~6A6_%^kH`cx@I@9g2Nj&w_(jDIJE9@GbW zYI!x)oaO?ZlW>C%m1wm(h9_K{;$IbDeX@-l!VY^kdI9N8_1=jfHxh8T3_)wKnK|Kp zd#kHb=JVjpZkT2o*vDFxiHooYdyV1V)pyhI?)CaUwehd<UcUK$t>L<iMqg+QlaRIp z_CE+3p&8MMh!BH-;VnLs?u$hxMHmXff4L1Y$rW5kumgUyHG@t`HZ;7Vm>_6Z^()SB zh=d#_`1@P3XpBUY8&RN-J+pLr$&4YwYP<JMjNjv`-AD^3NWcv&tEt!CG`tf3>Af?9 zNv=0?zgF??W86>)p4GbSeVcF@FJrNNcTI26z+a}2%;xSja7^K`kr~TUVt<nOQY|Ei z>BW8#)oO;GY8+ecXL81wkhso@Q7N{RGV36L4-<mh>Fn0@B=bZS$i$`@>*e=Y6L&Ng dUQu}td}@Irs8Us{==-D1xS|KJM_Czg`hV^ynJEAO literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/group-lr.gif b/resources/themes/images/default/button/group-lr.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c549f96d6064d4b0cc022671fd823c13df36d8c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/group-tb.gif b/resources/themes/images/default/button/group-tb.gif new file mode 100644 index 0000000000000000000000000000000000000000..adeb0a4cf54bdfb626ab6f3c070f6e2919f374c0 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-b-noline.gif b/resources/themes/images/default/button/s-arrow-b-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4220ee9066357ea2270a842ed244bbaadb23de4 GIT binary patch literal 898 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo<VS{$ychU|?d<0r?q}Cm1;5 z8CW@FJT@#i*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv$NLqWyJS2!Ejc+^BY0KJ z$xTa7Pd7+DHOF)FGT%0aqGx+fZdP}nYuC)RmLp-s#l;?zwPH_gS$TPRz~V9<4hCxg D_B%R6 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-b.gif b/resources/themes/images/default/button/s-arrow-b.gif new file mode 100644 index 0000000000000000000000000000000000000000..84b64703006ca6d86d335b89f8d40b9fa3883c48 GIT binary patch literal 937 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo<VS{$ychU|?d<0r?q}Cm1-| z7+5)EJT@#i*vuiU6?0<4!o%$X%3gC;7&IL1mN3q`b7JG-<NXTGT{51VmYkd{$G#%w z<ff&kryC@nn&Y{7+1c3^#joyYPF{3=zC$yYtk;$m7Z-a>)`~r~W##4N0gJundTm{G tbu}Af#?`K^tFNzT+TJAVU8dErDdY00*wfqA-ripD_|#nQ={XJz)&S^DQ3wD4 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-bo.gif b/resources/themes/images/default/button/s-arrow-bo.gif new file mode 100644 index 0000000000000000000000000000000000000000..548700bf45a4766e4633a2ad21cdd03a907e191c GIT binary patch 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${ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-light.gif b/resources/themes/images/default/button/s-arrow-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..08783c9d2f269eeb9799f2591ef41ddd2b14695b GIT binary patch literal 116 zcmZ?wbhEHb<YVw)IK%(~Cr_R{bnDyKuV2ADD53aI(77lzu_QG`p**uBL&4qCH-JI$ zCkrD30~3P|ND;^Y24)qFU3dN&obp_~*W&fr-TxCb`cg9IInVOaGM!VPbG{_^e#N@? HoD9|g{um~p literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-noline.gif b/resources/themes/images/default/button/s-arrow-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..0953eab5c875fcb0f3b40babd89052b064bf9fec GIT binary patch literal 863 zcmZ?wbhEHb<YVw)XlDR{lP6Cey7ler*RNpSC@~rWBPawEf3h$$FfcLbfcy-~6AT<S z46Gb79vc=MY~~QwiaD`i;o)`xWv@9N8y6kzmN3q`b7JG-<NXXyZ6O+y6dU?Af>*_y R+_d!cbc5tmb0h^AtO41(Cb0kj literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow-o.gif b/resources/themes/images/default/button/s-arrow-o.gif new file mode 100644 index 0000000000000000000000000000000000000000..89c70f36fa653684087485ab673043ecbf615cdd GIT binary patch literal 937 zcmZ?wbhEHb<YVw)XlDR{RVO|ky7leWyZ>O`C@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5<mQxmXA#x%H{rE@Rml zl;S-}-#2bc#l|N`W|*hnI<i7o{roJu%q*T=!5XLLd2lmD><U@txXeJ1sbFSF#?{3R r>sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-NOpiu@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/button/s-arrow.gif b/resources/themes/images/default/button/s-arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8940774785c25d4467b239aa608a9eee40e273d1 GIT binary patch literal 937 zcmZ?wbhEHb<YVw)XlDR{lP6Cey7ler*RNpSC@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5<mQxmXA#x%H{rE@Rml zl;S-}-#2bc#l|N`W|*hnI<i7o{roJu%q*T=!5XLLd2lmD><U@txXeJ1sbFSF#?{3R r>sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-Nh3iI; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/datepicker/datepicker-footer-bg.gif b/resources/themes/images/default/datepicker/datepicker-footer-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1152ee3ad364db26296683a21b3a0f80c0319fe1 GIT binary patch literal 1833 zcmZ?wbhEHb<Y%yB{{Elg*o`-*ZoD~h<ISZ9A8tMSa_8BXYmYwNdh+Q85Iy>I<<W;r z_dZ;C@ZrL}5C2EOXb23u5K#Qd!pOkD$DqRi1fV?8KAIzjT_lfsh=dT}_|L%2A>*-O z!NF!GPK}ro8x|gJ7f_a);jwX%D~p72)}4$6i;wp!ICsf-1~s0XtP#u?adOkr)6)%- zPtAEL)NppTMe(aUCpRxYKZmJ_OV(@4ii?XqCJXT%*s}8S@_@x&bG^2%y1F`IbJpEc zTUTFSpK!QK)_dEUo0~H(uZlgrZSC#t1&>e7_1?bj?(T}uukN1SzW)CH24-$KpB)<> z9_|p<jytns<KyEKl)dNq?A-M9^bF(dduMiTetv#|bGMxDt}QPwuLxcpcXrp-*Vi{B zpPuKtd)wRFJBnZ5JG*=P`}+r)x#j)#?D+Wj#ANOGb9;7vetu!G_k6#-yS~1@u{rzx WxxKr;zkhJJn@!$-U(K}!25SJIYK^l1 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/datepicker/datepicker-footer-bg.png b/resources/themes/images/default/datepicker/datepicker-footer-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c062d0dc216cca5031135b1868223a0ee59675d2 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^{0t1tb{uR#)=`P*`#_4N*vT`50|;t3QaXTq&H|6f zVg?3oVGw3ym^DWNDEP|L#WAE}&f6=7d`yM{%nr?;{+9;@FP6zqh;@0P_V>iJrDv1h z*QWlM7d%7dwbXO9)f?Eer=JwH3%{MPUv>Yz`IhU}Wu4Ex_D6nYw)iezy$=VUh%|?u m{BIdidftHN@Zdq_hvK)rG4n{X6)FV!n!(f6&t;ucLK6VW1#h_k literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/datepicker/datepicker-header-bg.gif b/resources/themes/images/default/datepicker/datepicker-header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee316fbb2363a8dbaff6b072e83e466685dda514 GIT binary patch literal 1860 zcmZ?wbhEHb<Y%yA{{Ejq&MHsNDo4SlK*g<1#jQofrAfu5LCL93$*D%kp-Rc2Lcy*~ z!LCHXrs)4D7!8487XpeuSr{1@_!x8;fB=*y+DCK5u#4nT50MZ89RC^EIb=LGEI8QA zAuJSeV#C72?E>OrGdwmfI@&FvE_LI?#>L0`70l%%JU1=zWYGv-6?1Zv>M0h3<WqAz zH>>%uS`@#!b8@r#IaY^eE?KWF8Ubt`leJ<`ZPC2M7O>cBuGWH8S64@D&RWa0VD<I& z35UDhN-bD(b92V!Rk5eHt-Zay;PI)s-rLvR-Cgnd)!ozE*WcgYz|1Y@vtz@<!yUrf zac6dHe0+R@viCfnotvJXo?)DQ@6684&(AM#?w0f2wdLjI6~U|H&hFa!`uc|C)AM|H zZ+m-tNAc@>XLoOZfB!%;x4hq;9UmW`n5-RtZqLro&o3<Yp6|DJ*VorKHfP^Iw|DpV w_YV$tE6V%t+w=4Di_5Fy&+ps&`}>E-r|0|c-}m?TkI%2~pWpxgO#_2904^$QiU0rr literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/datepicker/datepicker-header-bg.png b/resources/themes/images/default/datepicker/datepicker-header-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..45d74d7e3bd91be836654132cc24fe93423cc864 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^{0t1tRvc_VR$Qm#Ng%~i?Bp530R%N1DIGvQXMsm# zF#`j)FbFd;%$g$s6uj=~;uumf=k4W#oDB{<EC)2McWsTB6)T->z{tPzWPQXm)!T(} zl1HTlQ>B$RHCvyw)cv`B?&rLO;Jt^f>Sx}0HRrNi@~x2S$U_D^hX)N>-zwj4X_6JX S{)`yViwvHwelF{r5}E*Fp<>4X literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/dd/drop-add.gif b/resources/themes/images/default/dd/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/dd/drop-no.gif b/resources/themes/images/default/dd/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d083355ff1b4e99b9ef8139f28ede1485b50cf GIT binary patch literal 949 zcmZ?wbhEHb6krfwXlGzJz`$^jh2@BVz)=yA<1#WQRaDNJn4Gt<xe^d?H6-L_O3JN_ zj5`GdcS}m1OqlR|&YYJ^mb~7u;q8tc@Am9@f8fA}BS$`-IPvMsnXfl)e1GuZ$CD>N zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0ZXGcd?A=z!b^$`cG6lNjtdWNtJvwem3w z^YtV!G#qAN*V6d2fsv7ciC4iUL4l!xsfAfr@4<wCW@k2TMw1yY1RNT;nRrDQEH^A| zW8}0eVR+z>=-tS}R<nR1!RgR^CV7Sv3JWuQ+c~EuJvb1oaH-KT`P?3@4{7K41*4c| p%y^LM(XPUt<-x%4^gx%mao(FBg-VB~38?z1XdG;6?*v+G4FKH^bqD|e literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/dd/drop-yes.gif b/resources/themes/images/default/dd/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aacb307e89d690f46853e01f5c4726bd5d94e31 GIT binary patch literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiY<wYKlJw(qsJ zpJ`*gP~B&`t<yqdmxacj8`J~0>xFJMjooS=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<K5+3ZZ6$&YuTpTE4JQVvE}ZnE%(=Ky}xGL zg{|8zZry%!>#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<M3iU>%{1g;@!G-s^!P$| z8==@$A<sHwn3<HXM1D%Sr0N;HdqRStdV>R3<{5^GPA?~^>Pma%d|c$9FpH<AXHEf= zXAc{n;-`omMgmU4wi-S?A1*Mq%oSth;IcZ9;y*)FYu^J;Muvcc4jg(7m5<rFnVITk U%ua1eXlP&wOL?s(A;4e_0Qp#8fdBvi literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/editor/tb-sprite.gif b/resources/themes/images/default/editor/tb-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb70577617cb872bb13241af464385904942d91b GIT binary patch literal 2072 zcmV+z2<P`lNk%w1Vc-A|0EYko0000G2oMkx5E~;MAQ&JZAP_J#5FsQZFElzZC?GH@ zG%+$WJUT}pIA9<&a5+IcDM4r=KyffgU_dx9T}B#EP%uM7L`h9kO;$`vQ&~_*Ku}0f zQBqSvS8`KaWKDHTQDRV6a93VtYg}!0U|3*bepGO1P-SLiZg*&Qer|MhbRal@AV7d1 zNRTi{fHY8pF;kH+SfD^ykU&_VKwyAHVV6>Am`7%#KxME@aH3dttWa>UZFhuVaFB3! zhG2N0V0f@VXuwc#z)*P5V0gegf;T_WcR+?bMT0_5oJdiWOi;X8SE+kokyvAkVPuJR zYnf<gqgr6FR&1<gYrkN5rDk`oa(ujUO4Vmw(`-QhKx*4|bjE0Y%X4?uc3+5}On|LN zg0NqyuXllldWM!}fUjqRw{D8Rb%msMjJapLyi=LRP=w%Jr^sHg(`1FhaEQQum&kmV z(`lu_YqrU6!-8zlkaOOGan_n`#I#`8rhmn~deN_S$;+2*HIQ*PyLT~%YEu6I0FZ!S zguQ;Iig2KqaI}|dpr}x=uuz7@b&<z<$dM_>mRr%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!?)<v$f}9YxQWKK zk<zY+*|dk)z=+t!lhD|Jz{sG&+ojORpv~v6&F8b$?6=(TzU|G8?8lno)tmOuru5pl z@Zf;@=%WAdu*Js3&C=4@+RNA2*uc*2!O-Wx(D2IX(9`YC*Y4EX^26oy#`NIA{p{TE z_`vAs=<)IKA^8LY003G5EC2ui0N?-+000R80JR7lNU)&6g9sBUT*$DY!-o(fI(&BK z;HHZg3t-$NG2yK)TteRJNU~%>I3`o7T*(m54vQN#Vic$<R2q`MxFjQIZJMxPRBEvt zn(z$_A`IWW0kR{;z#$G>!HGq*s=^&RZWu&Vpa7yxUA=Ntg@)BC8d~D0UCUOj)`7Ns z>BD!A8ntN9pv}5sbtSA51C7FH!Ghrq7=;D05i$^f<HwH$!eO&QAY{mmFKc#ed9&uu zo-rGYb7lq%Rs}I-1iOhVrd9vwb?6}>?Z4Z&bI*IL1(z>#`S96`7OfexWx^H_A}FA_ z^8ub1E?A&o`a$Ocv|vxT;lV4Ci3j5UXw^{G3RQj657e3iMva1r!m<YY?e@G-wQbMa zUGGM{{{HdCg*nO~W6d?rI70^=x!^KR5(L3=zy{fsa=-%7Eo8w13Bj@f2e4=X3kMs7 zh|mKYt`vj}FjN&900_MpV`v7kqJtK)zyJez1IeV3Mu=3<&p-35lAnJ5{g<SY0^I@( zImc9E4>QcTp#~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?v<W7Z3<J+Rr5q{Hq5Lr#&pGJuvrZ!e(y|3F(6ph3E_xV&#S&ADbA*=* z2rz&E9!R55DJPV&5C#|w1TaFPc%Vfo)A_3q4**=CP%ATl_L&xwRaWd~b#`P%4zaMp zN-Qo!pr=3^VPc3o;B<iBXhiPD-#h8F1FkyU4A_MoytLuQ8g%fHhZsymF-{Q#1wcRm z2L~X4sR<E407FU-BmmL}k#Hsg3mB{r0t}mIkSjQ##!xFO+{BQK2cd0{+ISXJh652C zbh10_m;z=&+%8%VJTYtkVhJSNXmQ0jw&=3Q7o3nX1{h(CK?*0MAW`%IR0lA?m;@8R zv_b(;twrYtNwdHOq(7j*0Qw@diU+X(zym@;%<w|Sv>T+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<l1N?#Y#RAi<qopS{8MPeK>*<kHE%$c%y|WlmG=Dw15Rx zrAiQ-uuhT`2rOn9p;<mKB64UELs;Q}P|UF-mb7FhGntm;{Xrd(07M{?M@lU~0Rx>l z#VJ0a0u_8hnx6p7FKZXOUv1MW!K~ykF<B4__@NQnSO_XGaDsMzzzHfqK|8e&5CA)q C=E|M` literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/checkbox.gif b/resources/themes/images/default/form/checkbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..835b346cc9e0e8e9089a03e4b0058653e99f765e GIT binary patch literal 2061 zcmV+o2=ezwNk%w1VKe|I0EYko0001h0001h0Dyo1004l10Du61fWW}Oz}&#5%J35t z6DleyE-o%IGBPzaH90vsJv}`HB5^`OLPkbLNJvObOiWTzQdLz|Sy@?KU0q^gVq|1w zX=!O~ZEbRLa&>iedU|?(etsf6f+s<RDny4ZMu;p_l`u()Fjto|SeG_gm_JsMI$M}M zT$wCli$z<LNnVyfWS>i5mrP-pS8AO_YNJeWr&4gHRCB0Sc&uG;qG5BSVs)lucBN-{ zr)YYrYkjM3f2vi6qg#TrcZREXlf8SEzf`8xUbgpty4+{E<!HU>W4iZg!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+~4BB<MzVj_QvJ+!{+?M=={j%_sZz^%<1>Y>io~@_|EM8-r?ij;px)l^493{)9m@t z?)}v4`PA<H+U)k*@A};D`ql9M+426}@cP~I{@(fe;Njxo;^pJy<>ck%;pOh<=jiC@ z>Few4>+J09?d|I9^6l>N<MaFA^Zw!V{^j!d<@NsI`TFGg`{?)n?DhNT`}^$p{_Onx z@bK{R^Y!%f^!E4q^ZWks{r&j(`T6?%{QUg@0095{@SvcifPjGi000300RR6000960 z0RI60|NsC0A^8LV00930EC2ui05kw6000R80I3KZNN}K#g9sBMbiuHp!-lRRN}MQ> 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)_sFLlg3<A zZAqCp1zScP(r4f8+$FZi$C|co*)LN6yGp26uw>H6srOVndaq^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<<d1W)pW`mMBtKFPoB7;gE!@bb;O-_ z4zk7&mF(g|nM-NN5}Hm$#mYA{yZ}gKTg@Xv1b?JsXA+dQaZC&*$RW(1Y-y9tpfW+l zN;P-9&_gziUh)ha5u9+&Wk*#1`bZom*w6`?OLdctHlR8MOEs{xqr(f1%#s%`&v-)5 z2oc!9o}Gt0G6*v@n4kwDxW43RH@%j!3LV`z0z(h-uvViascb<`9TAW~4{c%1(Fhxz z<dMP+;|P*%H{7t(jW)dYN=y(h*y4i>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^<Ru)fdp9a4#xLjw6cH#SV&sD6zEHV1_cjP zv8nUWKmSP|)LVbO8CFP;!2#ZX56Tn@aKI@p(}DDLfeH_>fEaKUKU0XJ51*)?MW`SK zGl&5d7??m8#=tu>fI<weV1NRwFa`oz;eZFIzyqvs1qQ}%exi_|JG$@%Du|*B6v#j; zz;Ko8h2RubP(TCfT;YYwOrZ-=0D~1EaDh=&fq|k3g#$kkK^dB10}~KK1}K09RB*6H zqmY0CzR&;#OaT>QxXc$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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/clear-trigger.gif b/resources/themes/images/default/form/clear-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..da78d45b3214480842c62514af524f4aebb66124 GIT binary patch literal 1988 zcmdth=~t5n8U^q-VGC;mBm0hsV8ubLEt_Ll8<8_(J7+8+GN29vjM%!ALxG`*vV;<r z)Z&alg+Q?^3W)^@3d$mq1eGKNl0XRA_dTp(c_;oG^PJzg=YG8(p3l!FM@D7m03JXU z07MiK(uxTeONi+ugb37lb~p9P2eh)MY&4F5#u3pE3FwDJRNFY(3~x4p>KaE8sA!@Y z4L3~1jhLAW4>!Ua947Tqg?%((Kh;b$Ko$&=1w*r<k#`aTRYahPh~}h=1{snehGdK? zc|nzrn$hI1=(16kj7Fo;>Gb*ec?N^AxVXq<GFdDZo6TNYTH<gxD=RBpE_Z@1onR<u zSnAg+3d*u%mLqw)q@Lr-rdPISR(HrN8?)SX3U}k(>e@U<xWEz7I11W|VxFs7;3}56 zeAcRLe$}wBYFJz~GP#C1-r6jG@2y~GPH1{30^f_ldA?$qr)7!ND+&#bZ=?&1^8y21 zus$zbUl8h<Vk1MeNfqtUr65zXwJ6gs%0aeZb4jqlmaKDlx)p(ORk+TT8kVIdj>N>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@<p9 zUdy7yRs&tMN3e{r%anockMRlT=x@&sO5S%Q<CA}`KGi$le{S$blCDS9+mu6V`gdm_ zb~)l7l+oIq#iy(;n1cT8i_LK81=Phb$Joe--WLhZ9_c<c7kbhvuXMIseMby*{QHR) z#}~+s9-sZ3Izn#o?12Xc|D`z*QG8oEhyVP3GQ6j-_itV475NqUjhZEVYKLEUdOkkB zKgW}FKIKBUgLTeWbS5&P@yJ!A>o|e@KE%NaSqqM2CdnRrfg1wYE_n>MZsu=aYxhs@ zZYg1(<k@v95S4#@+VbNBq^G>SHAI5{)vrY3S>+Sr2G5!}<eZKo-<ionS-M<_{SpFk zO*Ld&)nkZ(E)lkYl){EP5Zj`5hbnrdZ(V2*=FlSyBIIFFJlV=JBg?kI{k*`o{^2jf zLDu0f(-7F;Km_Th{?HQ;zy*jv2lb~$by_Ev=e_a$Dko~fH>cb)=Lak{l#IcWFsP=h z54sOE<$IwK0i|U>!mQGuh`69u9r<wcjma=+0M-d=ALMKahXfHmp>$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?<S`ye6K7&!b8HJzL%_0t8C?^Ck5l`^IuO zG=WiL<qyxWhxn&4E@^+~*Im+#$oopB9HWjtLjd-XL>;t7^o`EZs~jG0R~!KcEY9V= zMfruL`9PuG*Qsdx+dj=Ii`&E0II=PwOPulj+Tj@q29JB~T2{m<pDD}0pL7mx#y+D^ zhIVg}VXQ0*r$&c{aqqjaxN)G7#~X0;!UV+I*TUKW*SJtT3aB064Z@OI8>(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+)<D8$4srC^udm8u;$<<O{|V*vg6zQv6Otc*SW$zco<&c zb&R<ey)CHE+*cCLv|4%P#?HOkzZjZsT4cW5oUYG1foy}ilMtSzAAJum&!VMPLJy2S zv2e|3(gcy>_z>Mape4XM92w`b7;YV!insg9<DO07`MZ7?yu&|{Q{Rp?+?%q%J2@k! z{N8_aIRe%W$5$Z}J%)9alip~T|BzmXEWxX{X7NsEFsP7pT(z<o?e;rq`q)bz2APPk zeS>^+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&$ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/date-trigger.gif b/resources/themes/images/default/form/date-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..25ef7b3ae73c0918e97b5fd9c3e0cc5c69bcc14b GIT binary patch literal 1603 zcmeH`>o?nX0EfSlh?LXSh6Gchb&K0_)}2tjEVIrf*mT-cZDZJ(tUK<OE@x*Op+wGH zw^i-9Ofr|!&LvnZ9do}^i3E*F<c86ZL?VXrTm27v+2_Uc^7G<3=Mx+n<bOV%0&GD( z07QsL`>`vtS)2>N?|+Q73~jaWl`R5gD__+)uHa6pc+;!AnYA{)io;j^$zK-;1hccV zLZMJ363x%gFT6y&EEbCw7Z)WGiBu|`_<MC&vNyVXFfK7pN_VE04Kp&sr2KGN1qtMO zp<;VZsgvlTWdo#Et2Z|{x3;!48jXAhQW~KZ-QMah^v@o&u@7mrTAfa3*x4}}jr;ri z2QPVX^y2Ucf*|mUR|Wp30?vB~`0<qYv5r3hP!KqQatLX|ngG}vp5(DeFu<_1x?K1y z?aXi<`Yn>EpHn+pf<~!qL)+^@kuX9ddA!|~^b<bpuR=Skgvm<ptFzC>J3jxY7!i&- zO}gJ$d>WVTX%pGG&aZ`i7E(<r+jy;xRKCBo*bx-@@IwxzXWTj|s_we*Rz$#qdb-^? zbHvYKT`Adi{;2yN&Rs3bFxMe&3@$D;wwG#hw&-;wUI9!$MLBlA2Q1JfhwWowIagMn zxC{jZk%{&6r#0&gG=K+f@bFh2`o?@c{5`PGSd+5lj~Kvfn}N!{P18ub;klLv0rYkG z@Lj#J*`dh-BcPpyHgon8h1`zkkRx73OM_vF%$bNIKh)|-Nt9o8W)H(?BDJ_97`S|d z*4p{SWHdCf0s-7e=(`R_umV4E`j#&H>VkK4Ja9tTI%PI|;LlFAd7J6{u?I^lr=khW z9L7j`^i6YIRU?auTO!iU9LH=Gd5-vUS@FpVMr|<;$*%?ORm3```@bRaKQttiW@oLK zmS&$sxRipjURP}nFmq^A<(b)H=?}<ASv_z_D|IuAWt^wnOE9OKAOlh`02%GcBK{)6 zY3ogpb)k(Q6IM~hf>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#<qF48){CauNRS9W{>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><CBI>>5 g-MOq(pFXLdRU~2PX6q%R;{Do7>GCKGOG|L!Kl0xUxBvhE literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/error-tip-corners.gif b/resources/themes/images/default/form/error-tip-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ea4c3838768c0ec3b5dab8e789333593295c15c GIT binary patch literal 4183 zcmeH}_dgVl1I8&X?ax;wEh=1RMP;viDraOgjRrE#*;$v2>~rQ>H*ka74rd%^oRx7Y ziHJ0e$T?(`a8~#IeEyE__xa)Z{dvD$&+~fBEx~&FPkxK*?M@aGGZmQ@Uy}b|4;~4E zjHV@xj*c!aE{a4VvH$D;1pWsIoZFDt{clXQf9>B+h)IdW#HA!mP21WMq>iXO>aHyA zNd8N~3TIJ8>PnNn;`6n;iu?+B_B!mSscCVnnD`Cmqu15c9*m~@8=NJZb}bKZm~i@O z8?BFMny~MTRSn~P+#Y~L_g>c-@!jTRE4)=LbEs7QpyFdIO)<OOl9j1vZgR>#u~qj& z??2FN8{B35{tf<S9qTc3&j&fjh+qC+xv{(V%UR31JD1<w8y@|zzG~`K*8H63m(WWe zy0KS$#}0(5JH*-Qr^(qg*6_-$|0ZkoHrCD$>m8Gcvf*+Tc#4NfUwgTAOXF<``{iw$ z>VHmk=c>BAYid}T=_lVL+BP??&NuIYj=yW>t}jh=q>1G1TADUi1cRk6eJ#yf>&sI; zM7!3Oovp721>=3Kt^bSz05lORAp@O=lL9g(;t%KuCKCPvgT5smwTFI7+CEnF4SpIX z_?CPY4w^(LqM?&1AR1#bRgEK<Ow;6nrqZ>Bp;H;B-567uMr(p8q$xo8d)5t^*>Q0T zV9EC!Yn|EexwpW|(|Pyoy{A!*kdkTiBiQUT#ucv2$9kZ>`T0;<3BSOPGs`c0%2U3O z2OjpG!H4rpW(ZMhpX4)R0V;x`L>V7JF#^aGkmNRJ1>`KS$}A<%4KYr|LYT8O9Bgiu zUIbTRJ{v*#%#|=`%sFNmXKt>v@{dSI%rRuxXTH3i&zxs9%`wq;oZo+*uk4iZ{ZZ8o ze8{f=_3pz|_k&dzYChPP0@*K3d>1%hVe<=huifU=>c69X7aIg{Wme@ZXMT~p9M5HO zeh&LCH47&V0$aA%=9gOMPKy1g7d!5^{8CC@N0Yl(_s4R_%;Nr^oktzi$~$Ge%6{_d z+}{3tbvC)FtgZL5+OO9jx;6EcO5Km(9<^4rmA9u}S+Df!>H3AdGg^PU^v-0DdMMZQ zu>bG(qcR!42dq^~LkDk}H_s2=aq!p1-E%2l9fm-9S3kOj%!ZA4VAQ8aAoOyb9B9P? zY{b7+y>2+D&;Qwnu<>%;f#*x2g=hWIB6YoYafbthJxTH`y*DWui^5kKS1&enW!nX8 zbf8>V8!z(%7aLmfF&8(Ri;)4FTq=<j(W&Ug-JCy4KeYAZ%NyIRh2wR$nu|^AzL869 zN46rDJGYqJ*IgF^7nk4YB3FO@HqbDxdutcClRxBA(Tx2RxD<^UjnObce?tcT$(trt zwB*iKEWOBCXkB`-{j1b2W`{qHY!z-UEk%p|49bb^hBk{!---Yjxvoev+P+_^jO&a% zD-n0$<=$Vcc$ua%fGc|3gTc#Ta@$37*Fe_>vnvxxhUfMf)7y{vu#zs;oIc<VYB({_ zAEeV%JQ>Wm-tn_CIezQhU!omg=efCZ1i0pubS|h)>GFGj+bGg!63C2wyDHU#dtT-x ztxG+)Jk6PM>UX=Wsb)@<55!1ejK|<@QmZnoBNa|>@Ob(xyG+>WlX5Fk^#;F!q9V5y z`gSQ>v~N^peNj+6??vl2JHMEfiE~y^D5<u*lM|HHMERvw@;WQ1Iyb9F5tOk0`nFG5 z9*u$n-AysPR~_ueic;d+E8iUHsz&eSDqYk!?|DqH#k5GsY9{P$be3KT=`ez{<dj$s zoM7i;+<{tCO1<8s#r)x@N80RsmVa<=*#5LJT^B@e&}Jo$f8e~qpk-%R^$KD!iY`5+ z+y@+B6K*wKFrhO<ebEo9h=1OmH{JcFD^B`%8o-z#+fmZr@tj?3dlPhny4If}S4xsm zmjPcfD9Z@WbCBC%{FGH0c%D;3Su;|$S}7So{bExu?p&~TSLx3ms43EER=yU(985x6 z<BUgV?GhevvZPTqVB@)3MdrPHrP`7aca?ijfI}s;A0_r@j@YwLY7&BnpbvMLn06KW zs{6HNrxjEmuqnf}&L!mm<<gI)Qd`&q+AvtNYA2uh@xssA3Y$$;SB&Dw%XW<l_%zkw z$V1D{%l6pJXunIxRh_br=~Q8~{UCd|PHiww1#!q1x@7R65v{|bhxz(^Y<y6|;gnSz z^Yv>rc*qhB>y*~j`UKD$A2QZBC9U^;o+1q%kz{lkuNJ(6!y3O9>R@Pn8Q!6f4MtJ+ z$EhFHy<ujJqevKrJl+cpS2q|-K_4g0_(LO(HI5~4FhxrTp;0^f<I%&%iR<NFFQyyD zpRHl=A{(#RUj2z68DZfbJ|v#q;OeUrUT_!=Ni5WV;%P6$9tT3;2@OwNVBr{fo+rXr z-^~dvL|uS*rrvFEyUPjB(*Ss;8|u5;3=4B~X&#vh4esV^;n`Qg9$EYKJ^q&2K$`R2 zb5`m-40WDo+QHrPzUX;s+i#>h0Nv3Y^`08A=V>lHH*BdML>ax2;stRl$gPJcaGr}0 zfdDsLq@LHA;SKmR+7p6%z1Q)z=SeZ(Cq*~)p#PECOi1RtlCIQ4_v=K&BjK);Q+nQ# z_M5R7pewCM_S2h->_Gwy=y@G)e=E13fM&9)ZC>tkzq)ZKJX*VKy<pBMA%wv(`9#~P zo8MVI8Pf`LFAuR{x%TvpEL~sQhTHrIRNl&b8vq+1sV{uK&HX$S!P#MDEO>iwMUB6c zuj8I6f4V#P>-S7X+2Dd<D0_>v_@WLxrM{Foz#Ti=tlMIqIv+i6J^p7=wr#hwYRF39 zgajt{WozBC=$z5FzK6P<+>Pawx{_}xW%XSj6NAKkqNcp(gsV54+mH!HOli^8h9+xP z@a61BIckCW>uwiAG@DPyX;o}EhOk1|w5FL)eEt4UD!+?cYXxA8>OijZN8**oqdPA) z%O76|3myIX+`(mHp!8i!c?jOpX`J%0l|`vEeEP$~>(uALfVIh5<9Oc-TVE_stXK5m z<HKe)M<eUj_w$?Qq64SLsdC{55B-@<qCcKA3=gMijG;5^HmClUeNMJ}5r&a}GM!A= za0!qT;B~*vM9OWxN0}s%KW@xs=WiBN5R%F<8}qulk--MW3(d@EE%))@(VnbzmGzzP zi7wYCh&bVAEtBqS<n`%5+(uf$pF{Y-pjpGb%_DVx^aGJwB~RohKg&N735Q<qEYA3B z$6Svw><N4k$8Oz`6uoF4YSrEBSlL;2sNdcjAmXl$Q*L8o#yBzJ>oFnjvC79{cR2<~ z2m+;qI)}UO?5mHxWgd1EYbbmcXE7AJB@^d66{n#ccM__07OSHKx_e$PzP%$(2#YuC zieKf&Yop>-u#uXez{^s)y21c`#9b}NgfUE<>4>&rcYv`_+Z=RHMlW#%m}t$oZ-x!9 ztk=FPxO-EWs3S;pgofO<2)G}v?E=+)f&f1r@prel?TPUBss}%)Pcr-n4-kZ0l}!$+ zhTn2ewn<11%7YKll5b8Whe{-eT7<^yA<P{Ra7HKsi?Gp6P8W3tMS=Wd!?kjy?6XJw zPz-a7g<n2M3qN9>CPdu&m11%|)!02Xp(dpPo~qxG3O|}k8VReEO>?EEa`>sb329p7 zv~-U&HZRR~I;|3rj?_x4afG#x_;d;`_gLKLg{S+hr}vMfXDDU7vdC~ir8D6fSdWaF z?u<rS1|5)zR?4J+GYKA<#qi9t9ht@7GpYocQ~;6$LTZyU2@oVb5s9KAPfQ_Md_=z> zcpKy-=5%S#3Ey4%Sy#-FNNiT+y)2|;b`3u(-6EUqk)49bKGcydqGiJc*$s->=}I|L z?m4NoSqEMxoz+KxyfrnPG%xLSQnyULvZ0|X(sxp6$O){^HBwG?5axnra<5q;ZaC#7 zhv!+8AgmhlGGy~?Ki#)Efg)SvU_DU<Nhll@Md(5mO`}MXXo?b=W`<^XqM1qPGAf$Y zg|3`NS4(1QlrS7KOuZ+jF$vQ|#k6!`+NLq>lGsiqEYA$v?TLMpgndiJzU#vFPh$rp z^FJu%51ZwWc;<gj%Ku8uAM47Wn9iS+EcmWez&9%pcoxhh75tzUEOr$vPZ#`>Ec~rh zxMo%;^eo&=D%_?P{^=?d;}`A%;3R-J02n6)!R>?N4$yFic(}j#IB5X>C=f3L#>+zR zC*k<hG`t)Sf0mCw4<IOtfCM0z0D=%y-~=@q;UbTq$tPR}5Ve3r9WYT3LNtIAjc7y@ z9?_Ifyap(`0W1Q8i!2~TR`4QgT9GZU=oY`|4xsoRu-G14><B4-055(-D|Y4;yYh?O z03;6}2?8cTAtWC-$&W?~;E|s4Nx=YeD3A;Tlfxn82sk;4Mt;E~$MVVX07@c|0tZtN z5K1bXl1`&!@+et+N)CXU2c)9G|GZgh0i24n&ke%nF7T)U0_s&VwFyjXfzaCEv~~dP zA&5rg(HsRd;dweq2X#+54HiMKm7?2O(AOsEtGgHs9^D$mSaxHSqUjN->4{nfiHNz2 zNGmO$2*2C{KUAY%#=gXCtDyV`357mkn0@|uW<1d#jLT-Y++p?{VSb?<6&DvX{4ddD BA5{PV literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/exclamation.gif b/resources/themes/images/default/form/exclamation.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea31a3060a36a625cb5cfdf4fdc5cb4fa5c3b239 GIT binary patch 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<Fx1} z=`qi9VqauNyvm7uofq{oKmK7!%+sRCS7otp3ZmZ?$Gk6#{ZJAAu`2#Sal*Um#Fw=h zpKB66*CoDe%6i+F`KB@FU31>!meOY(6|dTBUw78N>aBj$UH@iM{ilZ1FAYgw8<V~^ zC4Xs2|JsuEy)EZkXZDY_+|RvbU;E0x_muwXEB`g6=H9}oPy3pmPiT2QvGvWQj<=IK z-^}QIJAdlO$xR=oH-DVo@?~brhxvUU=T3OIWcuUfv)(P3`eR|ok42q77I%GKHu1}{ zNgtQa{J3KF#})HGt(^aQ{i4t7mwj2Y@au-f-#0J#zIn-qEh~O(S@2`q!XI0g{@l6j z*Pa!>_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<r+xY?)2sA{G&K0hV<Ej~5?3J4Mx@hU24Zqk~Xd$paI`^mFX| zQdSk33LjXfYPvdxNG?`nW|Q_7<8WF0s3(M9(=cX(z_G@uje;3dGH<tZwsIwENNAi$ qV3U-QF}uQGtk`gvjekl)<s=qH#&)Ll8WIW*7=$jY;ACTAum%9yIwySq literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/radio.gif b/resources/themes/images/default/form/radio.gif new file mode 100644 index 0000000000000000000000000000000000000000..36bb91d0c5ba6b94f2fae4142e1b0daf16b11514 GIT binary patch literal 1746 zcmd_p|3A|S0LSr}kuB5gMk+Ge+(wTck$ULrJXSQ@=Onf%)M^+amGe*+*J;@>(=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%|7EfI<FTe>vgRBjB8tSQLP1VZWEF#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-?TxL<GPUl(@W(>UQpLzh z&8rU$BjfVd`o|+*<ZoA=zR@?no2k++H)_Ask1sb&ewQySwYIh@6pE&HWqU_gM`!no z7cZ3EFS~pDdwP2Mei#@U7}5+64{LsSqgA~B)I7G(Jh`l#UjA3V)cbMe?c~DCxupU9 z%HZ6>kbdR$!ncucOIodVe0*G|(@jlJ&&<repI_B|UDfOLb8~Y)deHxm-6F&Q1iBB} z{&V`zPk>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;Vv<Z7l zyDQ6JOH&fpiyWDJ`{1E?92uWurHzNAsj-5bpru)lRG)kT$MoaSdqt`fG8(w!(;$XJ zk40dqKFLv^d+`-b1Tm8wi#bX?F>cjwTy1x_M|Vx7g?UOR%A{vxR1=O9xx`_0#)mAz z#O%%n@__a?l=898*N7xDAiI<xJxzP&eu}#CJ&7|*zf@Y8i*%|NMJQvYs@1^x9L!g? z?S*MM6jxqquX0FSo)z0zoD^zPE@~{v=gX`IVNOO{=PeztXJ@H+rIlH^PC=69H0u<u zEcn*~Nw5&Xnw>1b<uOOC&UxB!8Ge}BER<7`$?i~^q2IjHP8<h@;ZMNl`g7=s<eWfA z)~n;k!6I53JEw9?y(v*}kY^hahYj};G1b&Sh><_~Z{nslUk?g_Dey!Eax#h5@k{{; z%`faJ5{8R)QaC;cQD8x5`VzNXi1Wqp3x`c^8P<x_z$zsSdc)gQhe!DQrXQmo;L(zJ z>{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;<tD} zxSr02>y53QM-q4Y5<H={(P)<0h*ZPFM%<*3vCfZ?yJBdlcP;Dj5(dF?X1<GU;M~#E z0yD;B+N!~E?+n&$Hbr={C^eVoANCuaKdZEdLKsO<gZ&IL=f3x33fQb7|DYkvRIN?* z#(`MIn?U)5t=Kvl$+6@~*VoQ6)9<5}Q0o{1_|#x&?sXC_zYZJ;*^5E%!w^6QP@#0} znZeWPhxmIm^+0x3oVFc%4>!fjNf2B$c3=RvJnhbNor$)h(^K&^hwf=q`1g<Fk&;+s upJCp`(a5___OrSY1k0>%>cIxsnNp85qN`tNhU3jbmaN?09D@dd_WcK8kleih literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/search-trigger.gif b/resources/themes/images/default/form/search-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..db8802beb370d7554d5319c0e0d5c4ecb8da2c5b GIT binary patch literal 2182 zcmV;12zmEMNk%w1VP*gr0EYkoEJ<@NQiwHQoj7N%J7}#uYOy_Uvp;aNK5(==bhkcs zxIKKjMQ4^tXq8B5nnG@~LT|K7aj8Ubv`KTcN_DkNb+$}*xK4PsPkFgecC=A=wo!Sw zK>t8HguXn4zdVe>M}xgcgTG6KzFdO4U4p!9gP(DOo^FGnaD}3FjIVQxuy&Nac$K|H zio!~Uz)6h4NR7lrk;O-p$4HaKN|eS*mB>+x!BLFCT9?RLn8{$2#$%nzWSz=<oXKpW z&2Xg7cCFHQuGD_5*?zLre6-i2uD-FgyMUj|im1<luiB2c*NnN>kG$KLt-_nF#FMer zk-6KOx!0e#*PFiDow?ejw7{XW%Bi%$uDZyexY(h;-KD+Sq`uy$z1g+6$eF;~n8Dwc z!{C|J=bqK)oYv~9!QHgM*R{jhxXa(D$KkBQ;;+l&q1fx9-R`8?>ZjiBuF&JJ(B!Gx z>$J(?w#($V%;dSs;JC}=xy|Ca&gQ+&;k?h~u+ZeS)8@6*<-XD3z0l^n(CN9{>b}|N zzTfM;-|xiD-N?_^$<W!z(caJ1-O|$1*V*6M+1cIQ-N4W0!qDQu)8xa|=Ec(G$JXb- z(&@p}>crFNz}e}--0H;L>&VsT&DZA2+vdyM=E~UX$=U47-08^Q?9AHh&fe(F-0sEQ z`O4k(%-{6L-}}(k;L+IQ(AnnK+~d&Q>d@Wo)!*&e-sIfg;nCml!s749<?qho?#}1$ z#_06U;PlGi`OD$`%;Nja;{DC!|I6$3(%|gW;_KGo?b+k++2!rs<LTb!?ceC{(&6&Z z;q=ww@zvw>*5vZh=Kj>=_}A(G*yZxs=Jwp>@Yv?~+UWM)>G0j?^xy6F*y#J&>i*m8 z|J>^P-0S|`?f>2L|KIfg;o;%q<mct(<>2J$<>%_==<DU^?dj?1?d|R2>G9y|_2TUI z<m&U~?)KsA`RVTS;r0LJ@%iQU|LgJg?(p;P^Y`lW`RV!p?fU=m@$vQb_3-=u@%;b# z`uh9){{8;`A^8LW000~SEC2ui0A>If000R80KEttNU)$64nh(tT*y!e!iEqNK8)CK zBE^LkFG}>sv7^U-9vOM@NU~%eA)QjHT*>le$(I~m!ZeAJrA?J5^Xc4~PoGbo9K9$T zI+PhSYwFZlgErLPznUyPN%h212+^WPlP+!g^qyC*`0nA`hp(*He@|~trMglG&z|~f zxsh{A-%fo(i5_iNhzuKA>zFD_yV4V>V8nz4BgM9pRlU{t`UNbw>({dUaJ6~!i(lA# zgjE_wteCM%w|9>XnepKRjW2fd_49(PHnVlgg2ZSogNZt5$U=8ITuqReF@%Vjc3d0T z?cBRR^!^=O$XBt~h{$MNBh0?DP=^QqD}Frrav|u_=cD(d1CKRnaJ-nJ58Z5J$&gWF z=cB_8_&Brxg*wZGMhY>&01;gbODLC;5cuiGpML-fNZ?cQWO$D~KX~w78acoKMpy<S zs9<XhI_Ow>=;Ra00y@+aODyx;Ac8Tnd67#l$xxFAj55+_LkP$~LzpMQ9Mj)_@wK3Y zgF@`s<Bu`UIM0wpVhE2s_gDg?l{dIR4QMqXsU(F>K1s@o>TQug8Lb?0$T&|Zphu3V zpppwURJ<AIoKGY`2Q^0$g9nhU2nm8K!FVD>o_qEQr<`;ON~jR<WO|Plejb7doeBU# zW=ftIim0NDI?7@`T^Nu>EQqN8LJkrJK$7Drr=T(o6|TZ6E3I@)Q)m>O0-C@a#5jgZ zuDkXc>#PO@`_wno%EN`TzajvLJi``SDY7e`(;_DYRFIB2<_IH!2IkyqimsQGdv3ZC zSip=kg-T(76uv@>hA@ueddf8Mnv1Tw_TnpqHw?@3iM$6(fWbA~mPw4h{60(Tzm7WM z2sr1k^1uKO9MQuA6P$65BY4d*#~!b2GIGf$OR&W#cf=zE9B}ZV$sQ2XOF<}u@F9fD zFw0D`$q(3!v(BcNqRTd)K(KVpYG9*_&OG}Jw826XZFD1!h_i|Y1dKqy+8LN3jw6lW zRR<uYOme{hYOh^E7o`CILI>Ay_+bkrGc#?oD1N{p1RZqSjrZCF?A`a@LZre=Hlu7X z010asa6#6*qyo6$gkRnC7Kkfewki<_zydnO7?Q|1Z#NRR7nQs+N$V@H1B)Gc!178Z zdE~*hAEHQdcise0fO;Q13z7To0`&fS@WU6cb1&R{(mD(CK=a5Y)^O9yF1v8uNAk-< z?z||_tFA}`0i-~VIN;<Dj_tPN1qvh#2!INtp^R6Qq7<O8L?9NZGvq~rcj*8I8uVZb z`0)%5N%&s?2Ux%ZCUAj)h({8h@d*bAa2?&~MmDtZjAr=ag*sc`1FILo305$EiUUUx z0APaq@vjk!03s0o@lpyW0N@1Dn1upC$V3qi;tv}nhAlLaiA)S4aTiQN5s#R}B{GqL zNyvs30DuB_bi;)&Od|}F@Wd!iv5Hr`pz35{gmCO{5qQjF9{uNvD-1)4Uu<F$GSLJ8 zlz<qB<AWmkAV&;>qK|*{VjxBMjA&p%9cNUdCPhd{Ln6`-i)5r6g<w060a1^r#7iYW zfj~)4l8vFLLNMURhd9{smbO&fDq9)ICJLb$&&Wm#HMvPx%9572#HHd;$xJ=w!wbEP zW(+Z*2~6}Ml-OjX5Te;joe}e!Fcd-`sA<h?hH{zBY$jf~IY}WX@|xy6=Qi2tOK^Tu zXYY)sJk!}@%xBWmm-@`6;{FLjZ`yN{?hNQY`I$;+5;TMfRj48d`q1qiRE_wQ=tPCU zP*nP}q7juSMG0!qi-uF98||nb*9lUTYV)BG?S)BCic)l{bP*pVX-E}1(tnoJq#4zy I;sOEyJ7fCEIsgCw literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/spinner-small.gif b/resources/themes/images/default/form/spinner-small.gif new file mode 100644 index 0000000000000000000000000000000000000000..e70f8d80aa3ea21c7f94594b3fdb06b8e9680e87 GIT binary patch literal 743 zcmV<D0vP>ANk%w1VP*gn0K@<QF;I(stl5CB*|fOFwYbQ+&*!_)=e^PB%G>43-t^Ai z=+EHv(BA0M;px)h^4Qwn+UE1$^#9`Y|L6Gs>G%KX`Tp(g?d|aK@9*&N@bK~V`Stkw z`~3X?0000000000A^8Le0012TEC2ui0A>Ib000I5AR&%qNpwM~u55s|LYuy_OxNs< zs~zY6z~EyLECLS!gmT%qG?q(4z(_?>jYz1np?PYhnXov+8HarYhk6asK-Ows657}R zHeP4|u5Q2KautGu6&!?ua$0qFc}oFiWB_H5X>bsB8-HsYb6a)*j9Pn^n3{0`hlP@< zoOGX|dKR)4k)UO>795p*ubF_Ii=d!*dZfa>n*kHc6RNfq%oDAi!o!ULv$evvvbt=q z!<y5<lE-<Y4wuz;;sFxx6ddau6z>w_ukzN8vfBER8M+ZjkibE{V-5)7<3Owq!*c`; zZbPWh-MfDn?JaD$;UPa-KQ4gufk9xzjvEsH8f2I-!88O4VlIiPK+j2*1yQ!-6d}Sr z9};~22pZv~0tPje(2RwvX;WPU3#y5_CaO`SGi5rWIyGWfmlo}b9ec0S(WEf7DhXhs zEr}g)<I0^&cZbuvCcU<ly7#4)ziYYfty+<+;ftLB|HX#aDOA0Jt(sN4bSvb`U=JHM zN?9!e#$<em49%fru7Npmu1r}mE85C|Q?p*ZGeFOu9D?E|diAwu&=|J`JiTCnL|X`p zZ+zmA*xKU9%MEj&JZx}V8s{`;j`Cc#f3}97{<aR81AG(rttDU0JSTh3wpGYZ4Y~Ty zW-#X8m9Cemm*m{{nK9w~atKBT0s{_YENej`&m?B>*B?84_(hI$j_{$5d8e?lN`kJK zBMKyBIOvUrZdB+O0*hdnA&RD)$4M%Mu(D!{jjVM=5f2csV-N)-wnZ0z1^FWoMjq)y ZkbiNJBLYFXC1qVT#6abhSh5fT06W`UZ>azP literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/spinner.gif b/resources/themes/images/default/form/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e323bf0b68433bf86df2bd885c11a607a0c8b9b GIT binary patch literal 1975 zcmeH``%_bQ8i!8^kRZ?+paC^F0TB@qxoJ}n8&DxEbjIiwT<^AsG*V28QY%%#&=3#{ zREOe<Hq@#Vfq@kjR@8)Bk&A|lLO>x2AqnAPZYLx;C+EBHN9=EX<}=ScKfg0?d_o-U zv*T$H8Cry(&^=een8o4D;)s1$w=V6US1;5`F4jpd)k$*eB~8tLJ!<Z5d98XXRy`X~ z_l!^Xj4OM`l_QeLzIV!3?^Tj<>8lC#>j`!51l&7e5>Kf6CXD@)##fWZLFvqEsZlI7 zh^59snPy0)5zCBX89Xf049c_vGQ*%uKOlpLWZGf5W=O6dmg|P5OmC)^yf~tmd#iv) zrs2`0DPf7yIHuG~l%_GIaa?H_QyIrprgtjC{QUgF!or7Tv>&v~%<AAtBaj+_+z50! zoeTzY7)-%Huh%P<!UPNk!?X#gOh9b{%0-}s&8kJ9gU#w?BQuM@2*WBf(3udu$*M5} zwFS&ruo(-`Sb$*>nYDnqrM6-kE10zcquDxV1+dvVzib<9v6(EW$zofypjNBZga8YI zS`eEB!K?^sLIHvxRs=Jnz=~oBYC}*AMNzX2peSas0jmulOKrn!%U}owPz=~GfMMWo z{!bV1vDo7v2tYy563agU5dq{$q%az!moE|B0uOa-g)i_c*R5qxnZB_+uTLWTx(AN$ z<`Z|sqED*-NZ9GWFRVrYmG%C5`AAQyLMY6?NsIOf&2vAA$A=y6aw+29%e%gw>3cY} zN%e($%6{4{?KS?J2VW>7T3ByNsvI`86?MuS3Pu~US9|9Q%j<~S@T2_nUXv*A;qjOM zj=pKit$2~!Z-2nuv7ur&YbN&Gn(u=TKRr|!f!hU%lj{$Xn@3xJD5%7Jm(9-R_;SWc z8Fmnnnxe}a2;R;m_qQ}1ZBJW43P|k=@fyltK1iEyp3kFpbNz6BP%cDI_=Pa=kopts z@u}3MAZzOU3TYdT4^Bp3Uch~jJo)}befgD~;1k5Hp7iv-oM7p`D@Xh9wQ{JCTUC6P z+(|$nL3T0TM3=XM_ZM+OCZ0>JARmFwxs3eA@rbM*JLk5yI@!aI<uiHF_)W}L9%M~H z6%UJH3qSsxNSpLAcr(_W^*$4_lhO`{9-@RBE4&=ObP@jMVs+i);E>@ho+^p?=wGP> z*5<~14{qQ6?jN~~s_C+XV2R=y6N5S^_O$!)Zg@MokU~f4?;U+ot5TuU3N4R?PbIZE zl53a+tFx{i3;4ZD_NR(<0dt}YxHV_(-Oe;^6jJw{*|@=*L1C(^3WE>4E8eQ%@YnAA z<G(d4BVK_<y5p)2X_t3q$DY}`mcg22d*Km*$Uzv#7BzOpv7x%h@|sf*pQQ=PNpUn$ zyw8s`=KLecUgT6mJ2@w)vGeyD|J;b%2UR~iXGk-h0<TLK9M=y=ZDAKpubFPu_8|4o z77m>6ASH&7G{QtGr=j}P%&ZpYxI3wo;gOP|>-0KV+t}iCZ#?uV+SR*7n7?g~{hW|L zx8<3ib5er{?_SI9GvCgr{7XG(ZoD=Be3Smgrjd+?#epRhBQDglmEGp-{B3xRUHuqq z_`I+u+|jF5%Ja@_Ers76{@S(D!E?WuEJ<5a@aXNKoc`=lucW7&ACDbKeDcKq&V_7= z5(h~3H#4`9RFyFS%@D!wOrvT|G$WGk>BkNUyi@cGiy|-DIYtwdCSJ^SOHx$LQ1_qv z2Yqc)K<E#DmdCF;R%s_y`(Nf=(&Aj{_5KPLM|>>mM$UgkeuDI#^r(d|^$Q4r6|Kwv z<n{{f-7M~Y*>-K3+sAi{Uv7>UWQo_ud#_N8YpMKgr6sXf+D~*JEhbc-#tI&Y%63>- z%qrlyfz0UkwBE5plBag)y$Uv6yHRqYIrbKr*5I(cw4JRGa0!p8pBuvkoFFfeQ?fRX zh2s)Mr9Ah6`!4Iyt1sKaZ@aGA;1rVY;}L)-26U|C-N?)P=&YLix?4nu8uod9J$QJv z!Jgz8ZST60TTPCj4HSOM*oAW&;BAQH@Ph;8&ZjHv1Jokkrx6_~Kl68m1#t>^)vLa4 zN~eTbg~jnnQ@C1UXH1jKB{?I1wXCfxpio!BGvleajd>2Jtd#!_@9SwHI9Akd_N|UB t9+NZTu$Z#)3<WNzFd;EA>}Xk~-$Ba8#=V)fUwM3XH!vlkF&BcO{s)2W<pcl# literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/text-bg.gif b/resources/themes/images/default/form/text-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4179607cc1e9486dd6fcc8467c79b5b41dbf4f76 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/trigger-square.gif b/resources/themes/images/default/form/trigger-square.gif new file mode 100644 index 0000000000000000000000000000000000000000..3004ec589026c038e7d056e2b99e3a877d1ecd50 GIT binary patch literal 1810 zcmeH`=~I#k0Eb@@(r`m7uUt*s$}CGwv#`U(3p3rqV|JbGJ~p>wuw%A$t1UBIwalz( z+{&#$%ZT+L@5&Oi)(njo!2=aJUO-TkLqNb6-<{omV!!O~!}Il-d1iizNhCtlp<{qI zFbe>0K=r2)<>eaTOHke`M`}Tc$K&-w`Z;)h1NmlC>qos_ACXo(VMBP*8NSR=2g;eC zTse!>fe=?>)ai87)6-h5_EoP^AP~Uz`M$nBKA*3fwW+K~cv^AWkZNFHpqV2d92_)R z?LwiDBeg?jq*rY07MUBnWnJRA;o;%P^jikAjW3;mVK^eS*lI_(V=4h;GFfaNL{^bV zWP|59V<xEy5zQbPjmBi1*O@GOldYBq>CLdoYHQ)h*?r>{i-ixF%vSq=!rTU`t#k0} zUggI0TWvzs=P^~+(A0<ii9X0u$Ag->Wn8IQW<s<&-PF{S-EN2H5wQ^&QcRg`h*&Jq z7_4l;WWU_Zg=|d%1!O`vqe_WH!W~mbX59KLF`8i{GNZ&YXYUlKxni}|YE{f45Crur z%r={?L!cIpTLen`*w~obFx#&}cuHh^7KuzR8BikzgTZJt>MaOQ0fTZF_<#RVfdDJ| zU-P<u_|GQ*X9VzY_T9mx5*?hEuHE~QN$V_dTe0&LomTPTrgvlzk@d2&>$Wo*?VVKr zv>QMX8JhcNpY6P}`bdd8lUmhVPVfpMuo|9opEw=-v~3MQ=RHRG1nv9Oc-)Z|m)zHr z)TI1eNurS+6-EBZuS;&Cc#vt;!iFD%gK}8SH6tyq?@1m&3uTYPa>Im(Gk9&3h6-_B zp3<trU~o%<_xB934?IBmB!9b(n5W>}k4Vn(P0zi~{h{VkGnsuu#lr^Ct719}PhhL} zwJTGMKb;z>Igsvlx}rs~`R#5PcR8;)iR<afVxf-27!<v!mBg$0Xxx%BU`9Lc*cL1; zVz>vvM|Jk(+(lJoch!ov6ixFnDlj01<hg7KL(m?2=p9ZcyOZ@e<GW0J*Rq9SK%9SA zSSf4S+04@)Jg{<Ng4_C)IcUE`!ceSRhP>1<B~(C-UldxJDk}=5W(EA_b5<2l_!X9# z;BlOOhx)~Zj}ofS@eJB^&y^1gD{hdQ2}@nK?FA3!WfJHTOp1X@#IA{t$-76`kreBm zS%ts5H2UbrT(>>WQkv_op8RKJdoL^uEJJCSo!-%b_pjdzFFrJmJ5u%l|L{a0h$@c| zQG<Lbg!{xi3X4Xsz|yH5?(wi&XXV28I>*K7nT$MuxPuq(<iAqK_IYs`j9HonAgQ@P z*<r?-=a2K&GJs7+AChZH;82|RTk}rF3p(QygHiX_mS7jKo=jSt=9x-r1lQs_n&X(# zj;al<VO?$`lwhI*CIyJCzx^89fmVI~p3)*dzc%ER0?X`p7Yv}PnOAjhw6D~)<tN_w zwS8F!tlBtw+AE=v9PfqOS`94lKEg!1hlEK{?#V}sH?T3QCqvp?ZnmB2@-J9d4+OsV zJ?FPq!%pxE=cLrX4qROv{u)(`H-hIahq}NW!2qi-d9^;@Yj@cC$nI4U(sOOZ<VCrB z^2xW206KsDrsY?30cK&w%&Df1Oc%F~k<$g_*wHh=QzoyZoJBxCMyzF@AGrY4Y#z!g zc$6qTJX2FE{yOvzHdLAz^2>trliLXcs$F;z<g$knB`qx21&Gy@k|@ykX{~Ld`W*Sy zczPUuPSZFT9jw`ZE#!g}C79ki)j+|+y7yk~?8#QGAKTEgSqo2fN7T$s7j4b{b*90G zYB!JmoDCRSUBXxv`S01$MxOSY?J`-pHrgt@7}{=@bdJr>O;`Hcjg#WrSFHN-C$kgd zQHVYJk}Y{TLeFA3E+FTQu8@r5a-tocYEMo=ei(-!z!|5@yEuY}*X6J=)3sNTi&Up} Wr&xDc=v65PKOA33bU>qlt$zauvnrPW literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/trigger-tpl.gif b/resources/themes/images/default/form/trigger-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3701a383107e090fe25d3fb8d63aaa9290435e9 GIT binary patch literal 1487 zcmeH`{ZrC+0DwPCBIojs3o|_0?P^-#Ox&%!R?e}@xx}{YYR;I~>N*jn-Qn&=-p-KA zeA(%=S((N$6_|l9fQC+Hxi9#N<V0|!DDo;QATLuW@#Q=FBlcU*AMpI}+&y2UrJnrw z8U<iMIRHeM$n2Qu?j04Wt)fY*SZ$LkEj=omY}_uJSd^%3ooZX3dU<kkQlrsmwc4qv zDV<LDVuu;y%*>2luQwPBW3%=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_<oc^QKjK^PfQl2RzZd~MlttEeXsxF7MpKcxFq@N*H^cAi; z_RTVKz%$nBq3=KIm6!*LHm-!SxSiIKyUyG7=VV<AgSSGm=Ch;ll@m>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(DJsR0TJCw1<X|aBKI;1$bYY=wBotd_9!AJDN!$cTw6yH)*_Oc9Ifp=W6Od)S?yU+ zyHuA?E0-vQxx!z^@||KSV+oQBM$%kuJhA}ldY<Tv6Um0d@Zw^W$<;m1n1*`h7|vr| z9C9zzYpbKhOJ#1-u|~@yXS_`R(+7k<OsDkjJ~#KBwm+RrI-!4I__X+`|8S51SsiSb zbSsDhibYg{_vx-r!wMj7i;Di&?)T%ogKJ^v4(a{@wyz&2p8XJduVjumbW>C%R+wAP Mbv*YluxN1lKj3usvH$=8 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/form/trigger.gif b/resources/themes/images/default/form/trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6cba375ae3a96c87639a5b3034d204953d1db14 GIT binary patch literal 1816 zcmeH`_ft~`0DvC>l)V*M8qq2uh!jyON)b6kq!482iD+?8gcdhyFlbZ|=|RDBw1|nK zYy=g-LKp%@NJ7F0kj2X&VI?8&k(c$_{t^AH-#_r(eRtok-4Q`Qq@Dnl0SotmX1et2 znD}NDyN)jG6Qb30kilRKf(n0Ju2yFdDUimGJpp_36beNxUC5kJ*3g9v!Msd^{)2b{ zt)YWDy+JOQ)A*{nxjFfQrm0UnJ3HGlGWq@9yh#Kd7#LtOnJgA-XlMwAVF=L=4-dbm z3fXKnRiF=ye+a^8A5VqoQJqfL&C@akG8PEYxRXj))60QJM@IwV@*uUQp?9K-gJ^UH z4u_-FYMW@18U{!cz;a0asZU(Z0H>#?IrHd{2&N23`ni(|NYg@>b`8qZYBi$ODPSFh z7`jJhAVkyHJFzMLVGDbb%7s2qg)pKQK<EIdW`dB;fX>O~dc9tw(M&*S2TMv}O{ul| zX(hr_p*$X+#+A0Sq=O=OW@d&4Y7hhgA#_j(ixyB=hq5JVKA%tHNdpt|spDd)a$!U? z)5sF_^Hs10Wr_7%E*AvBz=Vf`lc;0?RY8zKjRwZ&(}g;vQppgb43Ta~iVm}RDwPWO zpZ~tVO2otn0PX`m|Em6d0x&}XXEXQ6TK?^DjDz>V9vskq*Um8{ZzSEb>&{ZYsD`$> zm)(zuOII)3T~F#=j=_{4?5+PUs&M0;zw%rhk5ixe#BCnweRnc8-_pj+BdVzUj`_L_ z?<KefDg7m8b>#D?-(@DGs1nWi=zJ{hbxhrf&%I9P;z^0j13zsoCgUyB!LQG$M=6Bn zEAz4?W0%OlXZ*aUKJ;U)pd(AW$gbc;9oStk74bN_sb181!*oCQpv$^Dw9=iqU&fOF zA~XHNGjV!qu8eunzbD^*Rqi>fhV#@l+mqU6##_(wB0iO=C7ZkUxySYgSDd!7KA4`t z06t~PYMpC;jw9vdJDi-&MA7~e!G~Qkj#U=LMSSMXfRx;YLuK16N&BjCr(TdvP5rdc zt{pce<PV3gr@f%;aL&TE;VlUt+W<^fCdJ70Vw_^9qj%7$F1MuU@-W9AaVwWvZP}P% zZ1rntxu@05(>*VU*awki_c3{bJ8r)Ojoe=08|_7OJCv7k<iYy)_g3e5n{Vv2bBUb9 zIy;6urWB_5gc@7#FT#;+5{vO&#rr*s!iiR)af_WiF&W{7$(NAhkB<)Eo$SLa?MZ|K z3G8;)E5%n|5zf@#$6KUrZt5tzUhcmVWAnDIyDYe%7O)8lPc?Da9Qpun9l6Zj^p%Af zHpe#p6yFH5Jg4sMV%KO?K(I44!@qg;?3%^fa*{<sN6qOVML8jcq&RCs{^N<PqPpI7 zs<Lqid)_+TCr;#$9-T}eugy&Eat_Em(_wWYfiYuFUWyAf^(dFEtMo`HO{<dJbenxG zd@^?ajh{*zwzAz}{k>K{Qgd2!MVLiRi_8Mw-eFr<mt(P~z(~<ioK~t>w8P7v;1u9x z-}%LDSypYcB`tY<ug5KSWsh6QllE@`lI&gBE5aS~-`2d#tzV>g>w`BBcdlCOdCe)M zfedWoWIDv&Q{*sXo@UiMg$8V^0TPUXMplY3&fDl%31>0(Zc)nn!H}aK4fIu=z6)kv z-+Z?)QwhI?k0h;tqPxe!h}L*+mSyQBc8+_@CEm253L5eZ-+%~<K;J6@?~3GXk4G17 zH1UtF->}u_Mh*3<*qT_XkyU<3LnMio0A;#iIPH2>?PU+mB(da-cCK;QqFvtUd_gzW zR3d9re%ms)ZMLbqzj@+o@P+O3jjpA7c>MCCZPR2MtU)a-vAv->;ui9GR8TT!P_r-l zp)l_j*PxyKbA^6(s&E5fn9Jqqg!@{l99z5`bkz(Dw>Ii+vxSa)plM$yeY@T53FcuX yYq-rg40qd+b;#6`NHN(^kZr9xY#!i+x4U-1Xsrs12{a3_fn)Cim5HGM5d1gxR!0f| literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/arrow-left-white.gif b/resources/themes/images/default/grid/arrow-left-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..63088f56e1c33fd23437ab00ef3e10570c4a57fa GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVC0bDXlQU?ViVMIiI|XhxRH&WjfKG)0LI-8@c;k- literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/arrow-right-white.gif b/resources/themes/images/default/grid/arrow-right-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9e06789044eacb8a695cd1df46449bcb2b9aa07 GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVB}zNNKj~OV&PY_IbpESp@o^1jfKG)0Ls}94FCWD literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/cell-special-bg.gif b/resources/themes/images/default/grid/cell-special-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d76ffbccdc66ff52433560c893ae9f3130152a2c GIT binary patch literal 1636 zcmZ?wbhEHbG-qaH`2L^a#fulOUcLJA<;$l}pFVu}@b2BaH*enj9|fZ!Ffu|w@h1x- z0|PsQ4g(N?@<jV+ju;s+Kk7^DA;96tz{(+FvETs%69>13PQn3)hIR%euQ?tY7ai@E uFwVMjV&mfD{R+-qGM<~3oSdu?yej78rlqH+8zi5a<GFd+*-4Cy4Aub5ZW*Ki literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/cell-special-bg.png b/resources/themes/images/default/grid/cell-special-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcc23679b745859c922462279904c807ab05582 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#E!3HEvmzt^pDVAa<&kznEsNqQI0P;BtJR*x3 z7`TN&n2}-D90{PHw5N+>2*=FiKfk`du4iLoYy1EIzwv>L6f@N#hBdp@_pFUkiUlfT N@O1TaS?83{1OR1r9kKub literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/cell-special-selected-bg.gif b/resources/themes/images/default/grid/cell-special-selected-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1da867ded3e87e53d6ac3823dd7fec84e4f3bd5 GIT binary patch literal 1640 zcmZ?wbhEHbG-qaH`2L^a)U6K}?tQrT?8}{JUv545as!ASeYy7N)0GFGF5UZd1}J;y z!?`;j{*Qvu5Ezajp!k!8k%57iL5BedKzX8lG)D}_cpmi=u_3_W%D~DY;V^-rk%^5@ z!=*vNv7wzuLL-1-!J?zx62@6~PHbF!ykEh&OU854l9Q7)f>*_y+_d!cbc5tmb38XM PJ3HH=_?3&K0E0CEWa1PZ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/cell-special-selected-bg.png b/resources/themes/images/default/grid/cell-special-selected-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..500c3bddb2ff42b2235619190fe461989f81559b GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#E!3HEvmzt^pDVAa<&kznEsNqQI0P;BtJR*x3 z7`TN&n2}-D90{PHmZytj2*=FiJ>UPl{{Nqchv)x)X9MQL^&HZA-{jAwB{Y0`_-RGf d!>WZz3|BlfrsWsL2Lg35c)I$ztaD0e0sylZCIkQg literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/checked.gif b/resources/themes/images/default/grid/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..fad5893727ee8a13f428aa777380ae97152adec8 GIT binary patch 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+<Wlw{-dY&9=^Q)=;gylj~+aF1_aNazj*ob)$7-9-n@PL z_T9TzZ$7+z_wm!`FP}bt`|{<>*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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/col-move-bottom.gif b/resources/themes/images/default/grid/col-move-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc1e473ecc1a48f6d33d935f226588c495da4e05 GIT binary patch literal 868 zcmZ?wbhEHb<YeGvXlGzh@R*?Bu|OeUfdLRj0MQ16j0+A02OJ76I8<B+sJOuJpCO>( 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| literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/col-move-top.gif b/resources/themes/images/default/grid/col-move-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..58ff32cc8fa2aa1be310b03bb2af77c1b77abe93 GIT binary patch literal 869 zcmZ?wbhEHb<YeGvXlGzB2v}ec0Yn=d5;izw0MUVff&&2+Ky)FX;sL{dhJc0#0Ubc} zA)(_!!h{bA6aE)Wcu+6{h&~i70HXg5EB-fZ_&))NcKly(;6KAC7!84;69S4qS(q6Z zxEORmP6p)(1`a0%QH=!(icQSyOsrlPCNMTPws0wBZ1~W?;KDAhU?QO~A%Uffn}KIT gMS>G68wVGIhem=U(^LUb4h;c?We$u2%uEc{03e(}^8f$< literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/column-header-bg.gif b/resources/themes/images/default/grid/column-header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5895dbaa507b86b85517947bcb91879357dd045b GIT binary patch literal 1858 zcmZ?wbhEHb<YzEr{{Elg(UWISo;>^U<Hxse-@bhL^63*0efsbLh(5e~2So4Q0MVOw zuim_Q_3F)wSFc{Yc=hbXi)YVXJbCuw|0oy@fgv6Oia%Kx85l$ubQpjDlqcFpbHosj z(oyGA6apOo8CW@FJT@#i*v!PP5p!b0!o%%coE~#LHZD5aEySI1=fuXvjr|JFT{aGz zmYkf-5wt4iq*3GP=?2NC=DaLwJUiQ>*yzT|&CAcTIW%+0zFM&2;$jbZjo4FLG+UMj zEcWVk*t+WKYN1V8cTbr%TwkAXm`TEW+nSr3GcK=+J-u!1?d=7RPtEn-zV7bsiqEg^ zp5DIx{{9ALZaJSF8y+6+5Y~=6vt#4q;}ev<=lSg1^z`%$<LrB9c5Z%tet~nhobRqJ zFE6hMULALK*Vfn9Hzc2)=ev8`+uJ*eU*9{sd;9zQ2b#I%{r2qm`1r(R?f7$hc7A?- zVX^mozrDM@zP_<J`~JDTyT8AGaJXAu-hbbopPye`ULAja-`?NfKRiA?-+%wUzrTNc MetlowT7khD00eTO5C8xG literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/column-header-bg.png b/resources/themes/images/default/grid/column-header-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b181a479bf15e47101769cf5a15b3f054582c037 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^{0t1tCLC-)R!VclP9Vin?Bp530R%N1DIGvQXMsm# zF#`j)FbFd;%$g$s6g=+f;uumf=k588ybOv0%#IHC>vxOG+5TW|k$A4WHa+w!$M@3X z-^}~o-h9Je=%fFyM!WCr!8fAb5^aft20h&VflWEV-gbulkEuW}F?hQAxvX<aXaWGG C#a$Ty literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/column-header-over-bg.gif b/resources/themes/images/default/grid/column-header-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..54c1294838706697ef29f4d0662299feffbef473 GIT binary patch literal 1767 zcmZ?wbhEHb<YzEr{{Elg#*1ICKK=PW3PwX<M23LkPZmZ71||j_1|R_CiT2SPF(MPf zsHdSJz;T3unM1~7!-9j&9Ku>LCpIiR+|JMFF~?)$qNCjs##whxY+QW2U%|Oc#&gq> zlan=qSH+y%wDk0JgXB|lJU1^pJKLi8)t!@@m!F^S(99+4wPnS{#U7KjVoz;Zd3kxj zVz0SgTUT9O9kDs<?y0S-udh!y+$HP1ZOzTi8JAbZp5C_h_V$9ur{;QZUw3zR#phRd zPj6p;e}4lrx17(84G#}@2y4fk*|G8Q@d?V_^L%!0dU|?>arV74J2yW+zreX$&Ue?A QmzP%rua28*uE1ao0O8YYqyPW_ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/column-header-over-bg.png b/resources/themes/images/default/grid/column-header-over-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3f206494db775af4dbed9a37fe52d74953c2451e GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^{0t1tCLC-)R!VclP9Vin?Bp530R%N1DIGvQXMsm# zF#`j)FbFd;%$g$s6x{3S;uumf=j~ZbJ_Z2>2FD}+?X@m;T>8k)+I6#T)5a|u4<)`7 pIkdfSUF|;0!v;Kq3H@QdCwYQbb;bNWfk2Nic)I$ztaD0e0sy)ySg-&9 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/columns.gif b/resources/themes/images/default/grid/columns.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a82393e31768c22869778698613b2f5f2174a GIT binary patch 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<NJ!eeb~?@rosZ_>^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%)1K<H#MD=Q;qtN z@j#iWbGlaKqc0a5o;M5H6+Ku{x!EOf9*+xysMVGg{HzK!cQzc{!sI7rU90fGAaup) z>8vI{DjqJ<J}0Ub@<XCwq0Z^e8q7y_Bs4a$aBz#LSR^zwFfcMCDY!@oFjxZsc&oc! literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/dd-insert-arrow-left.gif b/resources/themes/images/default/grid/dd-insert-arrow-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d923b2814e84f99e25731e3670ddca44b57ea4c GIT binary patch literal 299 zcmZ?wbh9u|6krfwxXQqwp0B1;qGMcTXw_iu)M4v6!8LHYPsIG7_+^o4>*BN5r{ru+ zE8dX<L=^`Mn)cVUo~iEM-`;Z^iYA@zoql#Q5KX((JLk$22wHSyE)cE0z7&o&-(Iuh z-p1RnZ~gxBi-D>@@h1x-1A`ia4#-rHpBUIY93~fd=t%XSSW=X!RXD?mhh^5u1eqRJ zra}V|4(7yC6`@KS8NXveD>;rxe2zT3&O@bf;od_Jstz(SGPv+_sRXDB26XrI_Bk?G F0|2KMVH*Gd literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/dd-insert-arrow-left.png b/resources/themes/images/default/grid/dd-insert-arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc696781e6135d37b5bf2e98e46fd94f020c48d GIT binary patch literal 345 zcmV-f0jB<mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy>q$gGR5;6H z{Qv(y10{fofkH6I3@AO3$p*x`Nil#0jeqs;pT9Ds7{CaN1)$9r#n~kE{`~pF@bLXZ zhF?E_GyM7i!oL`P0x_8Wj$ni2F7#hzWPxfvDaI<Ur@*bm@aNwj1{rQSF#Y@QUm*U? z@cSPS|NR3M1JS=3R<B%(@B+};zyC1)Vfgj;7g*6BprYSk#lI0W)Bup&pZ`FyUw=@& zkhwGNyfB-H0S7ZD!^4*k8D77CgVos}uYolG`Td9C{=!F$jL0c5c2&qtph7vI2FDF) rJ5G=sjX=%1K+Ok<)r{hW5u6tQ<Dt8}dRo)T00000NkvXXu0mjf%~_cN literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/dd-insert-arrow-right.gif b/resources/themes/images/default/grid/dd-insert-arrow-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d154db706aed7ec585f92f6f35743d47c5f5168 GIT binary patch literal 301 zcmZ?wbh9u|6krfwxXQp_QETSi;q5uWHKZ>naJo<A%uoo5TM_|83G-u8W+$hui_ck^ z0YY2TineD1QPq*6rZbft`&xUCcTPOjH~s8nAewh^=Auh;S6^QWN1Jc2*?Di%<;RzQ z{{G3pz))OST#}j#WB`F^wH=sd0g_@swg-bQ14nXxu3ln6K~Ab(N@7W3N@_`Ja!Gzs zadLi9s$Ozpaz?6NW^!VV9<n)#KUo+V7?c@wK&FBG#K7itU}AxXj#U4NB}Frrbj)ya zX|`DDr80q?Ik3S*>@X+Cm!COivwWT<1&XvJeYQNiErjd+Mbq870xT@Ntjs=&42%KF O-2R=tef=(u4AuZIk#dp% literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/dd-insert-arrow-right.png b/resources/themes/images/default/grid/dd-insert-arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a1819238c6de8f9e50988f4151261fa6ba64ea GIT binary patch literal 349 zcmV-j0iyniP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy?@2^KR5;6H z{Qv(y10{fofkH6E3<#LzvD<5s6C2qE{QB|B=I8fcSCPdSL9tMJA`=`HfB*bt`1AV@ z!|z{z7=Hcy4b%X_zZiZ3F^HBFl4SVx>o>#A+qW*AYQLZl(!&BX$x7Ik;qO170ssEM z@$bKXf%rGW?|(r27bf<H;men=dRkd(C$CMrWzGV#8Ke-d8K~$tSn+QJ{TCtk>-TSv zD}TdX0CM*JhkLO)8|Y^+n~Q^sK~hqR;q|N647YFGy>NTZJsWr!5CaSfwJm@a><8NX v2&h?|<XE`SfAs`V^Fg3%bunULgy#hS2<N~z-E6GT00000NkvXXu0mjfI|-VZ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/dirty.gif b/resources/themes/images/default/grid/dirty.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f217a47959965037bdaacf23dbcbe800a59273f GIT binary patch literal 832 zcmZ?wbhEHb<YM4rXlGzJz`*eT|9^&2Fd70QG6WQVvM@6+Ff!<Xd=JVK3>>lyj2t2o f3la`CGVn;rtSCr4)W)vpHOFJ)qNAORj11NQ63h`c literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/done.gif b/resources/themes/images/default/grid/done.gif new file mode 100644 index 0000000000000000000000000000000000000000..a937cb22c84a2ac6ecfc12ae9681ab72ed83ca78 GIT binary patch literal 133 zcmZ?wbhEHb6krfwXl7towPL}<zP7ouCvV@ncJAy++qbTn(BHOd#r(qucV0Mmw7fK@ zrK$4&|Njgyp!k!8nSp_aK?fuNGJ}D|Xu`>p0*huu%~roJzC1V7qiQ)z(xVq;t8Q*e g@TwP&*%vbDj%DY0^FxMh_Sd^OqF)Bg<zTP|06#!B1^@s6 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/drop-no.gif b/resources/themes/images/default/grid/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..31a332bf78624b183261a82046f3e09d10af2c12 GIT binary patch literal 947 zcmZ?wbhEHb6krfwXlGzp!@#nRoqGc}|3-e{&EnEqrRBHDEALd-+G}jK&)jOiwcSB` zr$f$ehuyu7`3Iefjysc_dLh5?W_R!H{)u;|&%8H#?vvGPp03~U`tXr=r_X%8edpWb z$3I@b{`LO-zu&+A|NqZ03PwX<5Ql)`PZpr-{xj%++z84O3>*^}7&&A#5)LvkG7IyS zOnBJr%r7CL!Q$}XP&==XoWqO@51m<Cn013BCTwVE<rfyKn_%#92`fJbOWFm7q6Md! zWONt=J}5RhO=nUsVA$}0xw*xG)#*pVg2uqv@+EvRRS6FMjh^gWQ$3AWJIo1^UDI<* mDD4ElviCe6%MFi?_DEaT%{g)5A$y0Ax=_vpg#$+#7_0#YYj80D literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/drop-yes.gif b/resources/themes/images/default/grid/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..926010e172a267419e420a4647973b3e1ee28926 GIT binary patch literal 860 zcmZ?wbhEHb6krfwXlGzhTA+OR?cx9b|1*q&(GVDUA)xq^1?cJj3_2jMgYpCehb03e zhm6OD1qYisgtc@e91b`&^2+M<NHi!qGcsuj<*X27aBY^im+R>;T<kPSR=B8!W8%`& K)AgB|7_0#`bsP-< literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/footer-bg.gif b/resources/themes/images/default/grid/footer-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..126120f71eef89987818dcf64e6510ae83c8e18e GIT binary patch literal 834 zcmZ?wbhEHbWMq(JXlGz}`|9@lH+SE^x%d9<y$^36e0cZp)BDGtK0N*W@!6M;&%b_t z`StVbZ(rVg`||et*LUB)z5fA3-#`5P{_*GcPd|Tr{`K?A?_Xbk|N6!-3PwX<2!?>- zPZpr7|1;=-+z!eU3>@+d`VlJv8V|8>3M$wXTxdAR#L6ikV-V2L(7?dJ#=^p24FK}3 BP__U7 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-blue-hd.gif b/resources/themes/images/default/grid/grid-blue-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..862094e6803f522712e4d193c7becd8e9b857dd3 GIT binary patch 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<p~B3DF#iS2?C6VnAv$HbOI(Y9Aso><=_zzU~q6?um%8<;zWG_ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-blue-split.gif b/resources/themes/images/default/grid/grid-blue-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..5286f58f6f798184c3eeacba1352cfd39b9ae03e GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlG!Ub?iS7FpPrH5Ezjmp!kyo=<ojwIw0SJ@&p419|I$cfJecC NgH0U#Y#ba6)&Nl04Iuyk literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-hrow.gif b/resources/themes/images/default/grid/grid-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..637410420736482e521957d51d44f9da47f519de GIT binary patch literal 855 zcmZ?wbhEHbWMU9wXlG!^UvU5W_3L-<-o1D4-u?UcA3S*Q@ZrNpj~+dK{P@X}Cr_U~ zefI3x^XJcBym;~Q<;z#EUcG+(`pug+Z{NOs_wL>M_wPS^_`om<Mnho8hJfNv7NFbz zGw6VP0Ll{#93~8`91;c%42?{zJQ5ZK42(@IoFW<#8yXm!*?46vDn2kUwQvZkc+4<p QWNPISWda(Ypuk`a031t6sQ>@~ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-loading.gif b/resources/themes/images/default/grid/grid-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d112c54013e1e4c2f606e848352f08958134c46f GIT binary patch literal 701 zcmZ?wbhEHb6krfw_{6~Q|NsBg$>(oA`P8%SHjuGk&%@0ppYOTwO7TCppKD04vtxj( zk)8oFBLf42;y+oZ(#)I^h4Rdj3<Y;jHwEAPvdmNk_teB91rt33paN0f#FSKpq)G+H zti%eR{KOQ!%)GRG2F0H&oLoQ?bbuIWtpEc9voXi6JO2z$d1ebIb69am&SCePk;dt| z(eThNk(md#=_MRFRCqx*TEg<~GImP|9(J$n=N>>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<R%kOtz7_w&*nF7ZXl07j{QWH0i~{;CNmcul zQQO2fbHd_VyO(jcD)O)xy0j<C2(EH#+Hg^xIVmXiv#q>=g^pDJi6uprK3M%`#IdVL zUEAw<ipU3v&pwSjYGsELVv<6pw6^S&%ZPN+Jb%hTfLZRPjr?IXusK1Kuo?q&j>4e{ zmg0{~p6|Ie&p`6H%mYO|r)_gjg|As;$iv1hQk=MZgX#CFjEx2xI6HUG&(-w8Y7Wpj zcm93g6udbnG<Fu_yIX|?QxiJwCeFEQGOg9o?WlpsgoN4K7<pL^IS9-)Y&dl7+(g{Q z0Aqf2s?(J@n%CtxI1VfH9WUf#F*I0tYQwq!i9^8X3cIzGNue}JqG?{V-~<K+Yf!=g F0|5M};uQb@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-split.gif b/resources/themes/images/default/grid/grid-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..c76a16e95997a487ee9cd1675ecdd99bd2f37c17 GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlGzpvts7||Nj|A!DtAK$PiHc$pZBEe+C_p??HKjfrF2Mkww6x PV8OvA4t_Qc4hCxg>zoX) literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid-vista-hd.gif b/resources/themes/images/default/grid/grid-vista-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0972638e8305d32d4a2419b3dd317f3c8fd3fe2 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJe){5xGZ#;uy>#l_<<sY{oVjrI?8R&6FI~TI`NqX7H!oeg zb@}@3`;VSHeDdt^vlq`^yn6BK&8s(W-@JSO{=>(QpFT5;g3%Bd$|0cmlLhGf{|q`H nPk{0S1BVoYrq2Wc#zV~Pyb=r?3JDC2Ol*7#9t#p29T=<uoNGWJ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid3-hd-btn.gif b/resources/themes/images/default/grid/grid3-hd-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..21126075e7397dede53d3032c199cc5dff20d9a1 GIT binary patch literal 1229 zcmZ?wbhEHblwmMpXlGy$wQf;zZ9jbL=h6HBk3aZ-`qBSW&;Fl%{Qu1J{}-P9zwqk+ z<rn`iz5ajg<^OB%{@-}@|JIxT_ul@$@!|iSkN@v~{{P^^|Hq&HKm7Xt+2{XHzx{vy z^Z(1Q|6hOm|N8g;cYpqW{Qv*Ue-L081*0J_C__N;CkxPB{~2^Zt^?%>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<C9XnM|V)86neW<kqqp@8-Sb+HLe@9#S| ztYX){&{+9d@!WjziUoUre}BtrG{b-YznVtYPp|LKk6+OApMmYid<Pbhj0cUZTrCHh zc+7SzaA0=Pc-SJym2#j}BCSHPMWifaVVgqHjfXArO*0mDD2GWjbxJLok<_Up_25y5 z!6u8v?b^q7Bywm@nz6XgJSbvur{k{`kNa%BEK)jb)GQB7(lwi@GDY3%rt(w?v6WBy d4YO80nrIaDQ)#+cm#6Yfmsy?4GZ+~etO4+$8211G literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid3-hrow-over.gif b/resources/themes/images/default/grid/grid3-hrow-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9c07af1347fc44dcabb1a9d22458deb195fd92b GIT binary patch literal 823 zcmZ?wbhEHbWMU9wXlGzpb>`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@93l*? Z95Nmo7Bnz$2y4ZhC{SczU}R*l1^^j55kLR{ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid3-hrow.gif b/resources/themes/images/default/grid/grid3-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d459a304e0b224f8c28d6b7b585da7019d28cce GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/grid3-rowheader.gif b/resources/themes/images/default/grid/grid3-rowheader.gif new file mode 100644 index 0000000000000000000000000000000000000000..2799b45c6591f1db05c8c00bd1fd0c5c01f57614 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE79h#MpaUX6G7L;iE{qJ;0LYaF_y7O^ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/group-by.gif b/resources/themes/images/default/grid/group-by.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6075bba2fd87519bce379df01d12cdbe67f255e GIT binary patch literal 917 zcmZ?wbhEHb6krfwXlGz>`0o(b_B3_s=d77u3+H|<U-YeZ`H${ZuUc0B?B4Ke!q(r@ zcK(^Q_wW1z{}vtkf8fA@3lBa#0HPNkz~KLfAOHUY(f|JpqhK@yhF}ON{$ybWIa>!r zfbs+bM-c-fhm6OD1qYj1`88rr6eKb<vdfqxY;bU7VqxPFkWhG_*wCgRT2)f8aEa$+ zQLO-pO2sEmoI3u~d^{bQd>U2cZFVdORzJ@!m~?8+%1KMTTg@3K$aq~=^PX>8{)(q7 acp2+dVHKAK1EYrP>l5}X$w&(@SOWm68Djnb literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/group-collapse.gif b/resources/themes/images/default/grid/group-collapse.gif new file mode 100644 index 0000000000000000000000000000000000000000..495bb051dcee00b837a948af56f7a59e77b69aa5 GIT binary patch literal 881 zcmZ?wbhEHb<YeGy_|5<VhF-~2mhPPcL~D;N-Fj{1-dlT*9ou^1@v%$KuiX3i{QdXW zpZ@~^SnVh=8Un*A1QdU=FfuUwXV3xp3X~@pIQ$s?bIN#ZSm4;q#i1c%;Ly;(%p&D6 z<wSyGLx-@o(vBI0jZDmpY$hBIlT<tyd9}0xCM<AZVAP6KD$q=DWMX0Cdcjk$V99xA M_GT_w2>}Lc00Z?nwEzGB literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/group-expand-sprite.gif b/resources/themes/images/default/grid/group-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c1653b48dbd2d4bb00886c379ba3a66813737c4 GIT binary patch literal 955 zcmZ?wbhEHb<YY);XlGzB^h$R6?=)rU-Z?<D_Sn*`*H-SmwfESuttTEI1A<G>uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$<p~Ck84S!EG9DWiI5u;0Xvi2iG&C@? z$aqY-(ZJZyA;cIGQc$SGz{btPAn|~q!E>?_tHlbAgvKT&29}T*1_wr_8B7v4Oad0D zH!!O=%UO7AS#fc($7HS8Q(IPEULLU6Yp&PURaaMg2<zqi5P0k|EiT;1;le~EkBKVH pOdgtLjox#NWAF8>6lV0F?{M|skyG2(-{0TB%q{1$Bh!Jw8USBOURwYF literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/group-expand.gif b/resources/themes/images/default/grid/group-expand.gif new file mode 100644 index 0000000000000000000000000000000000000000..a33ac30bd2b3758ab2e003f70ce638ab77eaf101 GIT binary patch literal 884 zcmZ?wbhEHb<YeGy_|5<VhF-~2mhPPcL~D;N-Fj{1-dlT*9ou^1@v%$KuiX3i{QdXW zpZ@~^SnVh=8Un*A1QdU=FfuUwXV3xp3X~@pI06~|bIN#ZSm4;q#i1c%;Ly;(%p&D6 z<wSyGLx&J^h)+RbQUfa&4~xVFg$B>bN~|U;Bpe)@m>5|?LIe~TnPxDF-7pDQklw(o P-YjR~vE{{q1_o;Y#^^iR literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hd-pop.gif b/resources/themes/images/default/grid/hd-pop.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb8ba79679eabb7811c3d9d1c86c43bcf67552cc GIT binary patch literal 839 zcmZ?wbhEHb<YM4tXlGzZOiXn6@4zq$MnhmkhJfNv7G?$pMg|>_??HKjfkTCXkweD9 mfT4kbgI~?WW5NQ*7JhN9o*xBDE*)ahRw)@D7aeL~um%9t9ucMh literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-asc.gif b/resources/themes/images/default/grid/hmenu-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..8917e0eee0cdf7758e83c4cffa7a7239f72b8427 GIT binary patch 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!wWj<rpqDZ44O0aBUkL z0>lNOK|~-m_dM?T+-E!pI0dd^5l}(d@Glq_sw<m9>Q5Q<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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-desc.gif b/resources/themes/images/default/grid/hmenu-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f26b7c2fc5836850958f7f2b1fafd3988a988d7a GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-lock.gif b/resources/themes/images/default/grid/hmenu-lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..1596126108fd99fc56226b412c6749c55ad5402b GIT binary patch literal 955 zcmZ?wbhEHb6krfwXlG#X4~ou+bjZoeOV2FG$|=q-C@C(jDlf0eD{N@b6W`Inv#*zP ze=o<1{(yu1+=nJ`ADhB`dOG8|nG9#<aGjhbetACQiFpQR7qXvQ#&dTS!@boE_t!Ao zTE%s5tK^NX=J$4*KU&A|ax25jZ47UAFg(~S@_4({!~Mz+_p3eFrEz|l%Z&}5mo|hy zKP3M8nEd<GQr`|U{5-<&|1!h>s|^2dGCVn`{Pc*@>k~$=Pg%ddVgCO)!~fR||KBnE z|HJVAKg0iLR{x*dJ-;0I|GC%y_pblnMF0Qq{Qtk(|NlOXjV)~*Jzd>>6DCZaK7IO( z88c?ioVjUP%kt&RSFKvLYv;<HJGSoIw{OqhLoY7&{QtlD+O=ypZ{ECp`}V#2&;I{E z{Qv*a|NoEu|9|T7<Hv8_y!rp{$>-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( literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-lock.png b/resources/themes/images/default/grid/hmenu-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..8b81e7ff284100752e155dff383c18bd00107eee GIT binary patch literal 648 zcmV;30(bq1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000hbVXQnLvm$d zbZKvHAXI5>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^nd8hi<Tl$@MsV`dGb;Z+LM%m zQWYucK}8ROc#x`i@=(yMNUG4TnKb)rvb!_mGhUju+aL}zyvH~1ee>S;2Kdj#HUllo z8f~>&*KFH9Nwz?Ckui3oR;%3`NI(gPUDtho|G}f2_3e8bT8ASerBbE5)1bTYdcFQ| zZM?C8k+I47`6u~>51*b--<sMnefwrPox%|z#3~VA8rT!({MEUMi{5&CW_IrB`H2gy z_4tMgnoB$#%Z#H#?9mNm^#XG73uH4!x8#dRZ%LpvPFr8!95M^hF1s<>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<<?h2A*h2D^On>dA!cTgY+CR4-a*;u;!NrNF3LWTlP5a1_; iES|Z7@j-3=)A|j?vD&^)Yn&Va0000<MNUMnLSTaKlp4(d literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-unlock.gif b/resources/themes/images/default/grid/hmenu-unlock.gif new file mode 100644 index 0000000000000000000000000000000000000000..af59cf92a4222e1cb044474c96507343dc07a3a9 GIT binary patch literal 971 zcmeH`YfF;>7>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 zfXC<aySlmr0>Ow7l;j1uOz`;`%xPF|1H(H=TQ-Al80O7c-*kEIp@ZM``Ch}Whn7a@ zE<NXmvCv~a;~T43c@1mtV13v35FUldILw(_{hxCFOv2^|*s{Tn4bYw$oi4yHfG$7} zY%RdHn?P?~*l|AUDckT=#Jr^m-*NODjk`|8zn-Q%)wl{60t~}W1aJp135bBv8cbFr z)*_w_+AeJ^G~jYW$S%Zi3;u3Lyo}h6zd8_ai^XD+Bqb7wR4SFpWPN>o{qiRYg+i%R z4h#&aR4TPvt<h*6D&D?S>$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@#!#g<nic7)16+TaeR~v#+SC^8R%vLv^@wrE}6hS@^iBv3s%Z<STJn V)*dNPl{y+D_hxx>0h@qxe*x=qGVcHY literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/hmenu-unlock.png b/resources/themes/images/default/grid/hmenu-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd5df34b70b94b708e862053ef4a634246acc8d GIT binary patch literal 697 zcmV;q0!ICbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000hbVXQnLvm$d zbZKvHAXI5>WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*g|-5GqRX(<T4_010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00I$7 zL_t(|+O<+kXcJKsJ#X@vX$DgzRtu)032sWn(2aDZF2s%9x$nx2E(Eh_#cah*ARsmy z7lH^8f(R~zx^@vzP!KFpsnQr*lbO+JW+t8A^S+5z(Aq4-3wPe*-E$A;o;$!l1{(#a z)oK%pqAWR%GdCCv+)k(SkaNCJsZ`cQT^dD@&*vZbzJEd2^*%+SP$<kxlJu-xF7F*l zP_Nf>wr!towOa3bz1}%hRS$Ze*UV<KIZe}Uj3j8cjcmVfu^<Ry)oS%csZ=s)l<S#H z28^*&yAp5?_PHyufh(MfYd_x&!)Ve7oN{WLfWYINvn!k*d(8Rld;YCx;Z5GXe5Sgr zZKjZpZDdw&;e@~@5=o293`v3fOM!Os`OCWps!y)HJ@2lBIRrB)Oiafo52;CQZ5jL1 zAC6iw9tr5;;sOuDP$-C6<Kp9QtmKQcDvE_MKu*Kc*5Erje5;H3nLDry51b(u?VT~+ zXf*E2vb=BmKX6v3L*>Xl27U>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- literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/invalid_line.gif b/resources/themes/images/default/grid/invalid_line.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb7e0f34d6231868ed2f80b6067be837e70cac44 GIT binary patch literal 815 zcmZ?wbhEHbWMN=tXlGzx_z#4mU^E0qXb33&WMKq(T?a&f@&p4150I4La9D7liGhiU G!5RR1hX@}4 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/loading.gif b/resources/themes/images/default/grid/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch 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<e5zgOcIlpc`kLa*!o;M_#F$wy(Jnw%^xoO{@do#FR1axvu?^Eg~=WXT$f%h ziRw+0<X~ye?)5wTu<&NHn6>&#9~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><M;PP#XNUM@C2hfJD#O#hF$!^x>+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+@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/mso-hd.gif b/resources/themes/images/default/grid/mso-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..669f3cf089a61580a9d1c7632a5b1309f8d0439a GIT binary patch literal 875 zcmZ?wbhEHbWMYtKXlGzpd-4Cei~rYO`oH1Q|BaXbZ@T<{^OgTwuKwS8_5ZeO|94#b zzw`S4UDyBbzVUz0&HsCE{@-`&|NdM558VEL<nI6D_y3=I@c-<i|K}h7zx4F~)#v|j zy!e0X)&IM%|37&9|MC0(45MH)1O|5qDE?#tI`BV(4#=6HJi)->!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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/nowait.gif b/resources/themes/images/default/grid/nowait.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c5862cd554d78f20683709d0b450b67f81bd24d GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-first-disabled.gif b/resources/themes/images/default/grid/page-first-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e02c419f5e73fc1ba5770df0448d44adf856288 GIT binary patch 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}<kpU%q_BiWMtYu3WWh z)!Mad*RNl{apT4<TefW7x^?^Z?K^ht*tv7(-o1PG?b~<q<jK>gPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L<lJUWMO7tU}ew&Sq{n*3>;Mq+#E6<8x|aFW_O<QBH=@mqkxW# z&>4e+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%( literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-first.gif b/resources/themes/images/default/grid/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..d84f41a91fca3a0ccc1107a78ffbf7b62c527afb GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7<Dr4v7XWj$&3aLMjUnCUi-QvQIma zcyIxyv@C1ciHD1t4how1q&=9Be5{?5&GAUXPDb}$aUm{=JsX_T+t_q%9262RG;%Fs w;&-VqIH1rh?8~lYpm5*;lVB*P5=VjoBilMwMu{a14myW6XI$pv;b5=^0JnOQ-v9sr literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-last-disabled.gif b/resources/themes/images/default/grid/page-last-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..869706777ce1e5c8350e0086f6febc18aa2bf814 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6guP*52OU-QC^W+uPUI*Wcei zY0{+0lP6D^GG*q>nX_llo;Ppa!i5VLFJ8Q4$&%&Em#<i{V%4fuYuBz_zkdD3jT^UY z*|K%(*6rK3@7%d_@7}%p_U$`)^5p5$r!QW-c<a`!+qZ8&c<_K>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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-last.gif b/resources/themes/images/default/grid/page-last.gif new file mode 100644 index 0000000000000000000000000000000000000000..3df5c2ba50b143fca7d168d5acbcc4404b903ee8 GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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<L0_pn}oOmw`!tjYh%+#ts$- tR;vKV0}9Mso~%X|g_|EVtzZ)G5J)g^4Ci4K5NqiQU2}7@Boh;ZH2`<ekBI;P literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-next-disabled.gif b/resources/themes/images/default/grid/page-next-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..90a7756f6fd77f74fd2b5786dd3586b5c50c8d89 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzZPfxF?sBrl2(B9tO-QC^S*Vo_QKWWmWDO0A*oH=vh!iCG1 zFJG}@#i~`SHg4Rwb?esc+qduBx%1@7lc!IgzIgHC?c28*M!{$Z4A~G+{K>+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-next.gif b/resources/themes/images/default/grid/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..960163530132545abe690cb8e49c5fef0f923344 GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-prev-disabled.gif b/resources/themes/images/default/grid/page-prev-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..37154d62406ddc064dba311b95f554e49ad38003 GIT binary patch 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*=uxnS<NUBVxiK<~C;Si~@#@2UvK; zq#UL!V030><xx&KP{7E<)WNG4kl?W3Q6n2STZm4ALSw^BRsog+kqivy=R5GSu`pNz E0Q^5n9{>OV literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/page-prev.gif b/resources/themes/images/default/grid/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c GIT binary patch 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*eY<?Kt{vfR7Wn|Z*`0fYsJr5Ilo}~7_&Ybu-W6IO)$*=RLy~&;V zEPc-J%vt|4=KL(2^}KHWyQT%tTi5;XUHzeB-T!G@-Y?wuVbR|IOZWd@b>uz6C>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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/pick-button.gif b/resources/themes/images/default/grid/pick-button.gif new file mode 100644 index 0000000000000000000000000000000000000000..6957924a8bf01f24f6930aa0213d794a3f56924d GIT binary patch literal 1036 zcmZ?wbhEHb<Yy3JXlG#XO>A}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<z54p^jaPqey#90J?Vmeu{@!`}_x8vCcR&2Q|KZR5PyZf%`uFJb-^XA6 zKmGRq<*)zm{`~*+@Bg>||Ns8~&oBx`LjW}d6o0ZXGcYhR=zxSld4hrCB?B{ujK>Cr zPF^XagaZi+ome=9<V+k4lA0&0c~8;sY+BMGplDxopkcv6PGMCKE545x7rXOG8K|Y4 zs7UGXRWM0<(Zkq$s8z+Yi$zjO<yg14Zr?AKC>Dmm#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)} literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/property-cell-bg.gif b/resources/themes/images/default/grid/property-cell-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7890cf9f887ca6dcd09f0106c97b44b6bd032304 GIT binary patch literal 155 zcmZ?wbhEHblwc5Gc+AOg;lhR2Z{EFm`~K~_5AWW8eE;FohmW5>e){tB=g<GxfDQu? zfb=r31PGk;Ja4!|#Hfvf(V@4aRZ{ACqmt#!o7ZX={*K$|wcV`e)aqGlTYkTcaDJp| s>daSrM&Udw>$^!;7jFpfiJKq0dh%|O{FRAsr%cJ6cQeymfr-Hy05I5B@&Et; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/property-cell-selected-bg.gif b/resources/themes/images/default/grid/property-cell-selected-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfe9a69eae133929f3835ffcfd108959539b9e5 GIT binary patch literal 843 zcmZ?wbhEHblwe?DXlGzpb>`cJ$G<K;`E~i}udB~~Uwi)h`t#p6U;MuH^7oxrzwf>N zbN|hshj0HpdiUqa`#(?L|9SS|&x?<LUw-=g`tx6gQ7{?;Lp%f&f3g65@Si~k<PT7u yVBpYTQ0EZQP-JRh=aVvsSfIez#LUJeAfceZ(9p=js}yqLf}%^Oh%OrogEatv6hrX< literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/refresh-disabled.gif b/resources/themes/images/default/grid/refresh-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..607800b85e4dee8c3922d56b8666dff796603d6e GIT binary patch literal 577 zcmZ?wbhEHb6krfwcvj4C^whZzA3s&pwcWgXfA68=hmN0FxncYD+xH?8vYI<5Oq@1n z`rJi%CDj|Z?>Tku;-O<F7c5(yT~fVa+n$wcH?Cg0>Bz~m8F^(Xxn=WLtiN>a=Bx$F zE?m8F;nLL!Q)l&0o9h!C(=%n(wOe=Z-ha4p+phfwkEZ5Vc1)PQY|Z9dx9>(KWnH~~ z>(S$<ljkhix^r(*R&h*9UT#TER&jM{P0RYt+ly;j>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=HV<xo`5!U3(5>7gkm^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~^ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/refresh.gif b/resources/themes/images/default/grid/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..110f6844b63f04ee495cb6260aadccc5c91f3245 GIT binary patch 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-c<TMyLr>Nm zdAaJ$n+2EuFS_`D;g$bOF8yC{^Z%AJuQpuyyy5=;?RWm~z4m$Iga5mp{NMZF|DH$x z_dNZ7<o1^%cfXyx`}x3=|3@GFKlkMOwTEA>J^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<Rq&uh#x<LG2M(8biwJe^@?&{7}f z84X_~A|E{Ep2g0zdriYZrB*IW(<2)iH>;iHZM67s#E^NJN1wTgOT&i;3Ec;TOAjTi zTyP{|exu5jn1!2~IsF{O7w}9FI^s0Dv3!z%j9{}Lqr9=eiw8w24r1-;JbMZ*Iy$pR TTfCj3pwPfLY5NRjCI)K&rUX|l literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/row-check-sprite.gif b/resources/themes/images/default/grid/row-check-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..610116465e7e34fe6ec137d674a5a65eb44f3313 GIT binary patch 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(fW5<r4ICkRH(UWIS zoj!Bs?AeoNE}TAp_3ZhJC(qwKbK%<Ai$HY!%9X2Eu3o!(_1cBYH!fVcdFkq{E7xyd zy>aL2&AYd5-M(@A-tF6WZr{0c>(2e#ckkc1d++>}M|bZ(ymSA_y$28PKYDua;miAv zUOssE@WI2!4<9{x_~`M2N6#KTe)9Oq(<e`#K79rT&w=0t5WEC|S0L~j2;RJY0|sxw z;N83T@87?A^Wp8gj~_mK_yh!>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**<Z5kz=|l^YF2)ZePkZ?fz)oUwE{E!5RSE C1AUGF literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/row-expand-sprite.gif b/resources/themes/images/default/grid/row-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f4d874f57b160bf731c057d8bd4f85d846ba4a7 GIT binary patch literal 955 zcmZ?wbhEHbG-BXmXlGzB^h$R6?=)rU-Z?<D_Sn*`*H-SmwfESuttTEI1A<G>uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$<p~Ck84S!EG9DWi9Bk$g)`~f?Vd3F+ z0a-l-hr$C4j7)qEb0R(_xplC}bcoz+U}Tt}>^aLtQ^>)SRb9SKCQ``Jr`=eVAz{OT z183VTy}$iAS<v9e;KBH#CBsDX(o%j_3k}YM#wI2gaWBy<QEeASCq@m22c}xrH>S#R nB^X?DXxtttx-R#(S?*zGzsXrO9p?HCdj*-f<$NLv92l$th`d^G literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/row-over.gif b/resources/themes/images/default/grid/row-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..b288e38739ad9914b73eb32837303a11a37f354a GIT binary patch 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@<y}iD^zQ4b}z`(%4!NJ19!o$PE#KgqK#l^<P#>dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1<F+1c9K z+S}XP+}zyV-QC{a-rwKf;Nall;o;)q;^X7v<mBY#<>lt)=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@* literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/row-sel.gif b/resources/themes/images/default/grid/row-sel.gif new file mode 100644 index 0000000000000000000000000000000000000000..98209e6e7f1ea8cf1ae6c1d61c49e775a37a246c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/sort-hd.gif b/resources/themes/images/default/grid/sort-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..45e545f74423d274d5ba7fd942349e9b6e377787 GIT binary patch literal 1473 zcmeH`Yfn-E06_1O8OuKCZ05?;9y0{yY?;~WgRMsR$~K$2`D~d1@}bQ#*KE^FOzmNr zk4h0m5xA%*2nq<AiYPv3zNRD!UM^e^kkXhH)!%5Ie{jxrZbT6xF5TgyLV!{Lh$~c* zt7jk4=S#RNW$l^<slG`LEyH_=<CoLv1oqi4@Lv}==|uhYa{>5&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-Pm7j<a z@s<UoIc}O-)Sl7;pwRg-;tq{8-(k|I#hq)4LN^b8*@cjz1MX;C`b2M+ZnW}r3_Z55 z`(7)}>o~EXPhgm4T&wVplL(D->;y1<QqqGg^6#qYaZ-_Gr8gJ(Iw=)f*9M9`0&dEB z?K)KzE@Mj8=P=ALW0IaSB;S!GLC)G#zjW8C9jb5z#LHz)2RsL6Ow0TCc5OO!W4uEC zYww2xS({cUTrR*Jqb)@FkhDeUAh!0|;c!@6>`B0^KR=R4S}*a<X0Oxy^5FH-KpJM_ z#hDt?Mj3|1-YCb5;Ejq<B}Vr$Y=NYE6#=nzudnRDx;K&T!TQSUK4kq{Vh~6FE;ih# zuewDD-h6*Mk-S-*oXy#+NzF5E)@IUzp}MRZGW3DO;y@p%A|v$afil=o|8Rk9Xvl{+ z271Ac(a>1vj)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%pzn<YE$B@vTqAH*8U$5XqErmL97bk zAl^2BI!d(-qR;YdpATO&+lD-E;O)allBo6(-}^kf((kd^J{nkx-&UQerEZU5+IZXJ Lcri6I61e;aamu5Y literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/sort_asc.gif b/resources/themes/images/default/grid/sort_asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..67a2a4c669fc5821a07fc486228d626e16d6ad9e GIT binary patch literal 830 zcmZ?wbhEHb<Yi!GXlGzZoN(6Rzr*8qzZpisXb6nF5K#Qd!py+H$e;uAIw(&ta7Z&S hbMP=EEO2aQ5R!A55%BO(n*cx843CM64mL1Y0{|rI66OE^ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/sort_desc.gif b/resources/themes/images/default/grid/sort_desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..34db47c3b1eecab2d3873ee2fc556cd3a6e322f9 GIT binary patch literal 833 zcmZ?wbhEHb<Yi!GXlGzZoN(6Rzr*8qzZpisXb6nF5K#Qd!py+H$e;uAIw(&taL55k i2@ipW1_lm6E}aU4#6zuYvR)!L0u~+a5@Kdzum%7{ff3ID literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/unchecked.gif b/resources/themes/images/default/grid/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..43823e52db80e04017b2bc1e031bef2d82c67e6a GIT binary patch literal 941 zcmZ?wbhEHb6krfwXlGz>`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$<?6Kymv3CSa`V#FTUV~%zIx-%jobHb-@bF} z&i&hW@87w5@9zDF4;}*1<A;wPJ$&@|(c>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@75u<Mhi(bZ$hDWSC5<+#C3@$Vt>5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/grid/wait.gif b/resources/themes/images/default/grid/wait.gif new file mode 100644 index 0000000000000000000000000000000000000000..471c1a4f93f2cabf0b3a85c3ff8e0a8aadefc548 GIT binary patch literal 1100 zcmZwFZA@EL90u^)S14;kcS~P51JcqXyBK7YjR|$m*3qt)1nqFnf*+(nyIT_zZIrbc zP70+hE$ePOAcE2K4FU;V;KM+=xUiQtnG(k(Qx;;(oQVNl47kM11c$9(j7iV=cuw*= z&;L26aeaM*8AVX!4nUmF3luezO5JukyN8Fbj*JY)<FUCpDxJQaNW`ySU!ItlSYBRo zIJ$j4&-(g3kH<YaI+{-3q3Lhu=jVop!?9R2nf#Kb?|Hog`}_OI|CeI_z-zj*Z=BK^ zb+y$sEJo&3@fVweAONY#-poD&;n*S-!7khAH+BmDY(}ZG>E9#Hd|0*@ZIv{eO*Nb# z12yCIrOhLLJlbn33DTB}t(F_b2bV4~y*j=}%v9m90(t13QX1^b_==P$D+H{5*5Mu? z8<YWo;GEBY1&T!BQK0xwXCMqjnAr%YGou4t2y@PyRzL5TthyGfwkF=Of4;|C558C{ z6JT7WWr2j~28PmdD&J;)Tj=1l^nDuHZPJYtZ0{NxO0c1lQ(r$gnrJ9R)_&N{SfHl| z2!-ca0oHja5LD-MyE5*0jKrL?Z>gKY>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`YELYsVW1or<Ji5ibxaAYiy z=gk9rKEVhw2pD`JXUG4J`ezawn{8F=L+M4NSK^3j$#Wa9kJJEJ-c-|b-w~wbz{b|@ z8l-rY)_}?(Xrs~{A%BGk9SDaFM(<Ns_Gi0#G;t%r?qy<5AoWN;>1)YW%;)D$oE>#r zQ3z|D(W$Eg`c?NY^+fD&+nctrc25@u47U__J8-QW7NqK!$T9C@*SpuaHyFRRpIGae rj_Lao#za}+eaj_<`F9!mRdtBiaY8;H<a_dgNJKC%GYNP(1HbeS!vuHT literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/layout/mini-bottom.gif b/resources/themes/images/default/layout/mini-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/layout/mini-left.gif b/resources/themes/images/default/layout/mini-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f7993f260b374440c5c8baa41a600eca99d74d GIT binary patch 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#$`Jz<zAZ@KEu aiJ--&dkk#zd{zV~IJdAA3h{6-SOWlJm?6yo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/layout/mini-right.gif b/resources/themes/images/default/layout/mini-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b13c5a8b91b86e33d5def2ed29b4e348a5795a2 GIT binary patch literal 872 zcmZ?wbhEHbWMxohXlGz>c6N36?{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; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/layout/mini-top.gif b/resources/themes/images/default/layout/mini-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/checked.gif b/resources/themes/images/default/menu/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..fad5893727ee8a13f428aa777380ae97152adec8 GIT binary patch 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+<Wlw{-dY&9=^Q)=;gylj~+aF1_aNazj*ob)$7-9-n@PL z_T9TzZ$7+z_wm!`FP}bt`|{<>*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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/group-checked.gif b/resources/themes/images/default/menu/group-checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..d30b3e5a8f138bfbbfea3d1d6d5631a81268fe26 GIT binary patch literal 891 zcmZ?wbhEHb6krfwXlGzxGAUp-FJv++Vzw-1u&!ctt7CJo<?*WL^{!`dYGiO~VsLI^ zaA{_6ZDDY0WpHn2@Mvf7Y-jN5VDRo@@abmo?P2iiVF>DF4C-YI>17M;<p83vUcty- z*_dA0*j~BVUgelBh1gz|m@eI<UZ=DP4yjXI(<eG*PIk+l;*c}PA$N{j;Y|0!nf{e? z{VM1A)GYr0|3AYh7!3isgn;5t7G?$pLk1m?ZJ<2Cz!AZa%pv2kVZp&>4q>erj}J#1 znRLYtaeQ=iW)bC#?NNBB=*-HhDWD|4xae>zCoh|V$$>=XHZB1n7Kal~O{`q}VgeQu b3s{-ixj1G-bT~0I2=PqTialkbz+epkbq-F$ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/item-over.gif b/resources/themes/images/default/menu/item-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..da1f289fc9d80d11f57ea8e69f8f5c738c5c0f71 GIT binary patch literal 47 zcmZ?wbhEHbWMYtFSjfz<>dd#BFMhxN{P+L=|2hmn01{_l;+WFEQt~aovJQha0J+!^ ACIA2c literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/menu-item-active-bg.gif b/resources/themes/images/default/menu/menu-item-active-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..afb0225751dd52de8c6cb1e9fbb5ef44e2949c11 GIT binary patch literal 1833 zcmZ?wbhEHb<YzEu{{Elg)V&`U9{qUq=GT=czpg#|b?e2id#`?7dh+Yei(fZ@=-ICa zZ+@M5@Z;QrAOA<eXb23u5K#Qd!pOkD$DqRi1fV?8KAIzjT_lfsh=dT}_|L$~A>*-O z!NF!GagCT08x}UU3n+Wd@%X6N)GcA0rE_58;^X}a&P6^Bo0goM%o4OJ=44UB>FEZ^ zr{=u;)NppTMKRlrlbe^HpYKp^CgHVZMIf8UWUW}P1uHKv4_NFq*K6yltE(e6XWc!u zb@lc235UC6y|=BoxjEzVs@T)p*52M;@c7hR@9pdE?ymU!>h9_7>+kPxVCI(d*|Fi_ z;SOQ#xHCI8K0ZD{*?XSP&P`8G&oIuucV_42=jRtVcgy+i+Vb-9is038XLoIVeSJgn z>3P1px4pf+qxki`v%9yyzki^aTi$Qaj*pK|OxBJ+w`b?)=NA@x&-dHA>+9<qo3rnq W+q?Vw`v-@++2sBA?RnL}U=0BC6OWky literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/menu-item-active-corners.gif b/resources/themes/images/default/menu/menu-item-active-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..bac40a3ab9daf015dcb4a8c53d2d709a44360953 GIT binary patch literal 1621 zcmZ?wbhEHbWM&Xz`2L?^#i=hR?)^A+>)V<$U*5d?aOS~}V|RW$dH3tmqaR0Z{n&Nw z$F3_sE<F0N?%cN{cYbU*_wCucUyt7XdiU<b|4}d+0z*Fp6o0ZXGB5};=r8~QC{MJH z=7^ymtD`<3KLj|87#KNP96mH0WZ)3yVsSWdfPsZo!NkBqfsv7eRX`%gfMFpcE1QZ! RMnk~?cSe2z4-O6nYXAT?{IdW6 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/menu-item-active-sides.gif b/resources/themes/images/default/menu/menu-item-active-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..becc1a5afa15c3985cf03af3adc7e178f2412e9c GIT binary patch literal 1909 zcmZ?wbhEHbWMeR9{{Ej~#i=i+?)^CP;K!9Gzpg#|b?e2id#`>ydh_eXvtJM1{JQhv z*NqpyE<O2m?!k`>kAD0g1*0J_yh1?nCkrD313!Zf0}z1nMEhut7+x_v>KoERfa5;{ zql`oaLxV#To3MsY!i5HBW?p%z5Qo6VgG>_KF=sLa8r@mgI6G7l3K~u_s`^W%9GG<Q z)HF8P6D0{78qcz^vAz&VFlac>U|Y}j)lx*GVZPf$vDm7RjNnE7ldVFfrfObY9lY7; z=&sP!SJox$@7nrmYEH!F<khR5&YGrsYkT(TW46}Y*T!rwefa2Z^>+Q(ef58D@%mJ3 zNZi{bC>~a0u|D}gucGn1KNf{gk4{&Po;GKu(ev}Oos-#YqqaP|w8DS&x13p}S=U!v zpH`EdZT9B&=IG~jdv|ZkyS=xNS^nQ{i~L8&dw=_#tJzun@YF){>HlnYls>t-G5CI+ zZPoXe_cvDuU6-3@{qytV%gyfl<M#ge_Tm0%^Y`=WYJPt{{W^XAeEWa@e_s`UP|N&H xeL+1dQ^$iQb~6u!W`3)TgccFMjD<}?Nf8U%#MNFXw#YV}c-SF7O;muv8USoRoyh<I literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/menu-parent.gif b/resources/themes/images/default/menu/menu-parent.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e375622ff951a3a3f1ccc668061e81b9c93b411 GIT binary patch literal 854 zcmZ?wbhEHb<YC}sXlG#1%-g3`xZkLBzfQpc?b1_LRp%W3J6JSbvuwF+({kCi<F0%6 zNypBcp;OKUEqD{M;AQ%Pt4XUq_8tD#b@<QJ)BhPp!Dt8!<q%N($->OQz{a2h@&qVP zFmM<%@JmQ|Y*@g^%E=?8;=tJG)Wo9VlknjJLnFJO0!M|%0mo(rQBEC(fQyeBCb4lX KFcA=7um%9T95sFb literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/menu.gif b/resources/themes/images/default/menu/menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..30a2c4b6c0458751f85126e8bbca6ef2ccc2ff00 GIT binary patch literal 834 zcmZ?wbhEHb{Kde?(9Xc{=<(wZA3ps5|DRzLjE2C-3jxKSEI?2HXV3w89h4^+IOG|a lIb=LGEI8Q6z#<cKV#C72?E=bPb38UKI@&Fv%*MiC4FI5a8gBpq literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/menu/unchecked.gif b/resources/themes/images/default/menu/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..43823e52db80e04017b2bc1e031bef2d82c67e6a GIT binary patch literal 941 zcmZ?wbhEHb6krfwXlGz>`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$<?6Kymv3CSa`V#FTUV~%zIx-%jobHb-@bF} z&i&hW@87w5@9zDF4;}*1<A;wPJ$&@|(c>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@75u<Mhi(bZ$hDWSC5<+#C3@$Vt>5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/progress/progress-default-bg.gif b/resources/themes/images/default/progress/progress-default-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a19c88cb1b39e521b2c8261d331698204565ea13 GIT binary patch literal 1837 zcmZ?wbhEHb<YzEs{{EjKZrZJc8MoG*db8@-n<YnHEjaLM)}9yBcD<Oe?OD&3XB``! zWX-!*u;5<af_oWr?xfASlQQGZ|4}d+0>dQ)6o0ZXGB5}-=r8~QC{MJH=7`}Ex1;_b zCj>bDGq7^Vcx-sk(99vMrE*}y!o%&XN?vn3E;bzPmN1sPabn|QcNPWbE}5ANmYkfd zA-W>w<R;bT=?2NCavU}<J3E`Z=+&K*o0p%T!{5Xu>m|~3ak0l_wun<(Rt7T!EcTk~ zwRP3i)e)Ps?w;DZ`uh5W!(Fo8+t%FNoN;+o?CEW5Z*MPnd}^-u_H}o6SA2eT_w@Gl z_xCq2bIbYc*zoXhhp=|snH?J+AD^J?J<n(7rl+T87-!!*vvc$F^9!82<$QN-d3kw7 z@anj;ySBc*z9ISaJm1~h-rn9({QBP6-P_;aKhVrA@3&{i$HyloYsa74v-9)w3yZzy l`|aKJ_4SR-+4s-w-TnRjgTvii^8Wkw{QUgFmYs#c8USIqc+>y@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/blue-loading.gif b/resources/themes/images/default/shared/blue-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbf639efae54ae59e83067121a5283ca34fc319 GIT binary patch literal 3236 zcmc(iX;4#H9>pJdFE7h`I{IF)1A#Fh5ut4e3N)(<0RjYM5fB7KViXV+Wf2GhVF?My z8p38kNgy#qTSQzyTbo4$v2makQG0ZNwnY%Pw(PNcy2b&grfRB&4^uT&J@@0STet4{ z{m(g7m+Rx@;26sUn7}&#`1tXo#kRUXJ(#IG{cZ2ar0&XiSo)d6rQJ`SzIs0Y?&jDJ z?r|;aL+gQmEt8MPR?m=a9JfHv4OVPWZ(-l$@5b(F3Hwu-=?SUvOs<a?(?97*!X74f zPi!*N){4DwK;J)Bu!qUdWV-E(&G1W#6<8%4+?xcL`~p#^3pcD^ynXRO05r2=$R{CI zJvTDL=ZVdlyiom?V1k=G<otS)dc(G9OSYZ0^{oS{LngxN-f!6kgcZ(a18k07qZPr& z(&RU9&N{a(E0gq~0+Wr7A$C`y#vClP%OuUadS6{QFQAdqGq|o15H*el6{LIfi;R!J zZmu#mB`m5jO6p7@5W!Y;<4I?=PT{RBQJp^1)M;GLzH~8_Rpp&hd@MP_#XHw34<9JL zTuZqw<9~ziFys#gc*Z$F^|{=LXsaIAM{a)!2x?3zdIroz@%!Vg9OqqA;@;<;*j@T= z&$Kc2z!IytU$hta(qn<ze`=pw)E?0~H*zY%%Z}FMRe4Vp4EM`J_;l_SU-8wR`7?gH zCc%{9o3-MI0~w6x<??=1A7VzKG}@MW157m6tACtHhR#7Y^xxJ77j(#QZ;WcIXA^Yc z`=ep70gE7nj?kdoHT&2SYB_CxDK{>QodXuT<hf7^BUO=-_^J%GlG_GRGuu>cr`jbg zmue$Vu<NcczUE%2VrVsiMZ!jGF#gtc<&FA8VIP)YSa*w@S>8N09Dh_e9xvlQE}RY< zP_^gH0x!E?M8)GXk?rNLfx%X3$@{f6pI0?+Kk?;dhe?AW6T(vRUoFVDuvw5lW5cx* zM2pweD1!&j%R@Gl%J=ydX7%57Vd9aac9Z_J>yuRWsDXvpfXejiTGi@9D0*{1JmRSx z+(o+p5f5SNP%4rK?c7Uak@I(U5Qm-`6W}z|87ByZglu+UID<kh-o^&^q#I{Ki7uo@ z7Ug6>OG|MzrAi}g)n&=PI-@(<rfa>_qGEL$9luJu=GC51YSSlYON&Jk&F!xvE-3Kh z{SG%WO1_bmQiLaOZ7IfzCtMz%2Bv}IgS}6Fcn-8*XUsdior!R1FP+0~smTuSB&VVz zf%;|_uc}RCy~|cE>3~J|x6xH|BXI_vp(~ndnd8mDl300&`-+FH%kin}hc=mCs%hOr zes3miFqML|D9IX68;;&V(T#Fi!L6K$alqGL{i;8&cZ;nd>kOMh(|6kH`LF^XKOrwq zLxNUq+(^h`=fMd!A!05uF5M_In*~Z)=E03kINGd4h?H`1sjE_lYECtsMqAXUHlDb| ztz~t~4_&#&)=(SpPT$}pu^m2C#P+$NIgptsh59o_aB_$=CVOaI1t6Z-IX#`pYbsB< zh|M?7Zc2#JvdYI_9sJexAvXPJ`0xYUJtJTE_q8tV{!in#)Xt5VTX?Dk(KVGgUDF>J zOmQR2olL&^n=o0HU){)0uU^Ko7nyQf*9pubO(n7qz8!z;@rwVd5(Z;2Mi3NOw(Ahf zsISP{-77F^cj&U|Wt&4rQwiIx55Xkv+JICKVr-023Y2NQ-^1L$z5z!Xn+{V-Qg_!k zsS%~BL4)v{RU3|Xc!1TF{ve7v8CP92?CwS?1WGB30QaD9uF95`VuAErtx79^3OqN` zy3iINB2;8>3`l)c`|MfOO^*_@XTAykFI^@hCY?(joWn)+0+(uL03km${3n;g=AW;0 zU%vGC-z^qEaN9xwnEJAqO|_LYrN%R8hpzH0_8s=xParG#>lYDcHPrX<`L&79gOo=_ zg_zw`8g?DEjrib0E6~$F-AsVCF5_=UBxRzsDv6zf`l>fM|7Xe>RwkeE*`}Q=LXvgz z5##-i=6<qj9ImY+Ij=5~IM$tn6^+%+aD%u-u5$!MtTH1af`G>o96LMVCQQrZkV)ML z$+XDb7)0G6xcj0<3SL1Yp(soP@9YeR_GX&}QYO$WzbBgmfngMpD*|i*WMZ_(^X@z7 zN0}n*g&Do;+3-p|0YLB_U1NcX|8OX5WnYikl1=d9-#CaDtiaS)2KVjQT5K6;sdswH zdE6{8%Tm5IzvpF?=V;|mCgfb3(0~n(Jtz$^$@V@!^Qp?#AMf4pt~>5Paj$cxoIhh~ zPS!Q<`2JDqH5uPX#9PBL=Shoku(XVrp1oOGCI_ozyc)0~L1<sn>;z`y^B@=|=DKmT zTGGk2*^arSvoI-D7-dXEqM%D!orfLWIRiwHZk(v?2+9+zL+=BW+eim*J9Zz%h7q{L z-+dB?Z-Y{w3$qyXNb2wU79-tmWu)LArn{~=c*N=z5S6~PU0eLP&{9qK`uEV!719?3 zODi0*g~hTmc}|If6<)|AfS{vsfs;y`$IfnLQHWZQxTqY0-N_xT`{}z;&=7=SlAnqn zln0~eATkC}2H;95@eXP*hG4{j!D8f2AMh9_4RrFrJ5R9ZSl58`DLOy%-RwYy(H(f* zkRovM`0{XlbUk@!_J00RYttpG@Xh~;f!K*mDs;16$Uex)rZXT!qbW*@!r^ul?qm?a z_-wvfgAhIX3?UHgk6!Ic)M#-Mf@t9d4-A2MVHS50gZnT>eN+P99i7IBLyjEq?hn`t zk7vB+NG0$dd-*j_BUYuAQ7&VHmPTxL<+eY9!>LPm;_niK1tSm<w6dyLXh*H8L#yRw z74;=2IbtUYxCjD4h@U{fI^7}&QYS*X%<x>`(58d!0rG%hB#pe<71F7@U|0=K0NXRx zTHJ#TCcg7=l#=e90j9PjaftUw_*}?l-jkcN4{*WvjMucEqCfPyf2r&N@|*3+^wHBE zO9tWj|6~F(dQ+tTsR&lE$s1P@b)E9~@h-eT5!+L@j~R*)kt~i+qR|09Z;fO(uS$lA z94LiZv9cP6hJ%V4dVNE+T9O}D=_Iu#!th}y|2zhj)ZWfX6XgJxyGX@`p7EWDXWL2k z00q1TEK-PR?<fF4`#=}#Q1U}C!rMzW<+vI1?_*J?xVOKZ<xC~M1CD4J58rOGivHD} z*7n9kVzK-)LYVZwNkAz2&laTg)8)QB`#x;lkixUCpmr!w!7-l|q9J_?#DKcO?}7KZ z?Mg0cPazC{#tWxwu!8yK4w;p`N^nlg$RWVO>iCC!G*Vg`DcRbd8Eyv`_&CQD8Kok` zfHj_!tN?{V>KI0XRV|Gt99y)uO(*D(vaPX0QRf_1%dw_{ps3rP&LCgyug|f(hMD&h zOAP&!R(D}nt`bED?+o%+hxdU_SWfikVU{BY^nZj5crlX!W63<=ZRgf4R=}KMOz;bk gbLa4==ILrY&j|BSk=*YeL&$au32<Kg2Yg!p0Pf$shyVZp literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/calendar.gif b/resources/themes/images/default/shared/calendar.gif new file mode 100644 index 0000000000000000000000000000000000000000..133cf232b243baf857367233e750477675f3190f GIT binary patch literal 979 zcmZ?wbhEHb6krfw_|Cv!=$UBjnPB3PXyTD<>X~HXm1O3TVD6D*;+bL!L|&=p9%&Yy z$rhfe21!Q^Q_foy-7_zKYFYTes_3C(>0^ho$8NPxd}^OC{AUPgcoyFJG`!<^QvZ{z zDbMnzKTnzZDQo7}(m5|{=DsSP^R0H#i}HnEYgc@4VPKfFc<YpfTP82sId$2tnXC5A zTX(c|*~_-2FFIGh>R$P>d-aR%Rj;~Nz3y50x_9NPmes$yHvFEn<<ImTzi03Lvv||V z#aqrV-+g=a&I@bz-=2T)-?oDnHy^&U`^4P^hyN}<{QvN|`=>75zjyE6rRxuF+<AEa z$(#TG|1*q&(Gb800mYvzj0_AC3_2hgP@Z7m*uY@OA>*-OfrGSB)`bNRn_N2hWXw`F z1SB%CNxF5h++3*4-Y2c*)x+@dA!D0_Ny3>5#Y4>Oyy6-T9SR2-+2lNnp5<Ip;q;&H zBao1>aC62aVf7*|&4xzT^Yd-|U2>IL4xC*cvD9p$mdk;F#a0uwaxaLi_TL;LoDk6{ z_LiSPBA|iw_G1P%(cIo|3A36`3aNVZ2}m*>X-_;{7Al|+pwP(3%EG4-A<%HJk&(@q JpNE6N8UT=&&-wrW literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/glass-bg.gif b/resources/themes/images/default/shared/glass-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..26fbbae3bc6d2510832a5ed709f0cb029c2c1170 GIT binary patch literal 873 zcmZ?wbhEHbWMpt*XlGzJe&g*4AiDYX<juFIZoWNz>)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|DKJ<A0Kq<$Q2+n{ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/hd-sprite.gif b/resources/themes/images/default/shared/hd-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..42da1ea1aa4322c3995eebfbbea9a6e8c3eb77ea GIT binary patch literal 1099 zcmZ?wbhEHbWM-&lXlGy$)C?EYiV)I@6w;0o)`=F@i4oC_714_m)r%L^PY^Rm6f;Z` zH%t~cN|7*5l`u||G)b2<&5$z9lrqbbGS8Ma&ylvsm9fl|vCNmXDv-4<l(R09vniIh zEs?h?Rj?~lurF71s8DpMRC26Ra;jE#s!?{X^(xu(_y2!}Q7{?;104d2KUtU=7&I7k zKn?-r2?mb;4B8<Mg-#1Ng+;xltZ-;@X%$q~>JSK2bm`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{@gtKW<K32lb4s4`7iccTV?wC+Pe6|eY(|V zZ*OhOe|&CjwfXbT+w8s?Iu|Ff91#?Djo_Im$a0)t-nQdSz$E5VyxOKa&IkxIpXD|$ ze0Aq#u~Pu2i?WPH>w+(i!R!IjKB)<%j$y1Z!Zof6-y9;DGq~5NJ}7gDVJu-S5NBXy HWUvMRItY+| literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/icon-error.gif b/resources/themes/images/default/shared/icon-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..397b655ab83e5362fdc7eb0d18cf361c6f86bd9d GIT binary patch literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2<vd8XIx}0dxQWcmV-^003e$G)6^6M@L9WNlH^vR8&+|W>HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0G<H>mN+?~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(FzLN0Rh<y z3)B)4))^Vw78cnV8O|gm!7(z<JUq}eHPJdd;{X8S3=HW20O1rA<QyF86BFti8}kAJ z^9~OD1_u5M3-%BY^BWug6cqj%8saW5>LMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?<jF+(Sd&NlDjGP}W{v+*MY~bamc*ec??_?oUttLqq;d zO!ib&@>f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?<rWMuzpYX5U{|9pJte}RI5go}!e zjf{?ukCBs-m6n#6o0^@RoSvGzyrhAFt%QWGii*31g|m;5qoSp!rm3&4v9PbQwzasq zxxBo)zrMV`zrMkn!NH`#!KKT~s>Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@ln<Fd8?qocvV#KgnLz|73c%FfQs(8Au{)W^!)!^hCi)7RG8 z*w@?H*xcOP-`w2a-Q3{7;o-{U<jd*l)9dTm?d{a~_}ldK;K9Y<+1=pZ<L3GK>i75b 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!<LKeW9Df87NFRK}kq3vz_4D6xoUHK%96+YQgc3<eP)r+cupvhuOb+;l zCG;GaV<%~>;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>&O<bt2^BctaDxpvG*G|{ zq77t*5IgK3aSsG{EcM1c<Ph`?A>e?)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<fd(9W@Bs%JRFJ>`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/icon-info.gif b/resources/themes/images/default/shared/icon-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..58281c3067b309779f5cf949a7196170c8ca97b9 GIT binary patch literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zE<R*0LT4pIawtoCGeTuINNq7nbTv?ZK2vx=O>anAeNJ0@02_k<8;bxSjRY)#049<E zCz=2%mjEuC0x*vNFq{}Zi2yI73O=SBLyaFtlNw2?8cw|%P`)ckgfUNrJzR!AVvajv zls;jbDPGJ-V243sn^j|iTW5q^Yl~5Bm0oj}O>Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?<mB4$O$!?+6c%a5`qSJAq)pDxee5luhi=m2=ri_!Pi<78`oV}5k ztC5+ml$xxUov)CewuGX;o~5;>tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy<vt;3S8%$csjnXc56vCW#W!<w?olC;#5w%C@q+nBb~p1IYV zyV#Ms;FP}Rrm@4Mx5}ou%c-)%skX?eyUC-x)3LR}wYbH!y~?<{#ksx6p26ju#O$5H z@u$Gnti;>4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV<t_odJIr_uea()zT_<FwD~xX$Ff(&e($^{~|Vw%GBs+5EZJ_PN;gyWRc0 z;{U<J%)-Ubz{b(V%hk!s)6dY>%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<<i~g+uPyW-{#!g;N9Ke#Nz(S<o?a*|J>s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%s<KpG%=IHC_=jZF|?BnY5;qU+B^8Vxc|LXPr?E3%k@b2~X^YQlk^ZWk! z`1bw&{@~x^A^8LW00930EC2ui03ZM$000R70RIUbD3IGbZR6xATsUvrGG_!MN)*UU zn!bGf{At|SFC)KA5GO|L_O4^bjjH<S+sMx&CXoW$Rg0Hz<wk!b001a(QscgT{#=C; zxy@ZXpf{lfK#{`0mYe?g&GTn1kHl*3;3195&)>WQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=<sy`6%*RGsZoFO!*@0+-+T2UcSVPeT9jx1vPJ854=uiX zpSzyr*VkTTdZ^beCb#Yg9dEFtjicMQHohwsbnKWQAP&EJ^wy;tUJqY6a;%CtO9d@3 z<a&@n|5=eBg$e{^_z54L&YU@W<*5Dz3y~*PvvbdZ)052428$Rd%xLfK-TOLn!GcL} zlj;?@d#TZr&N}PV!w(WDz-I<N^p#^yISz&cOfV6&(I0Euac9mt_z00;eE66njyUCv zD2_SU00T^goVa2Qcl3Fejy)bK2%b3MgoC4w*Z49E1Z{W{N-*Wb_@H;})QG|u_Us5w zI8TD}3oDVZ*vTr_ct@g%=CJd_hhwk<B{*b~Y0NCB81Voc&YaRoE8&#5qmJu*3Evp& zkeLiP$RvYIEvG=D0SHzhqKPKHfP*8MIwpyN3krx~4>*1z15PotP*O<}1TX<nG<PhL zNiEonsUtBmyg<VXH4sB-pZ=Im(g+z0a8QR^|6npmB9F{+44LYffj|p5009IJFciXP zFR?(<2pSqZ07Xaw+2MsFk5CeeFv$#KN-?|Of=e>I=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8U<WJTL?wxDw<I9z|er#~_0MA_yUekkU&ok|;t5AX9j- zzy(fxG7U_lP!R+VOL(F39fXupiXmF`@WB8QoZyBsFbxz<A5siKLIxsm(XuUpP|yGe zL$o1EG&x5U&C{QhFv201@WRFgP2{l*(@n#qOb1z5vWprU(D6;zUGK5M6t|p#fgEU~ k4T=eAtWm)mBgftJ5;ITuu)!M%>kZSwRrC?KL;(Q+JJH=Ywg3PC literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/icon-question.gif b/resources/themes/images/default/shared/icon-question.gif new file mode 100644 index 0000000000000000000000000000000000000000..08abd82ae86c9457172c7a4fdbc527641cf28e48 GIT binary patch literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VM<zTR9j_SUSd^ec~WS9W@c$<XK80_a%FFO zbaZxjdVK&TfB-6n0V|9FFq8*5n+!Xg8a{{=J&+GSp&m(`8%nDpN0KN`nKDzAG+3D+ zPNpPMt142aD^;j6Sfx5&rZHl|J8R2QYlc#7iCb=iUU-v3YOG0Zt6X=gU4Nioe5_i1 zx?yjDZFYfad5Lm+hCy(~Z-SS9fQ4a!qGpS&X@Rb8i>Gais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4g<d!NE_pwDxm(SD=Qg@lHS zi;a(uk&ls;iISd`l$Vy5ot>SZh?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~pu5<szR|V3 z$FRT7zrMki!0DdC=9|LmpTzL3!quw7+qJ>Wy1~n_!_~3H*|^2hyUEtQ&D)~F<D|#w zq{!^5#^S2T=c>!=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<mKV!>*MI`>g(&|>+<34{Oa!W<MRLR^7iWV{p|Yw@$m2R^Yrre`tthz{Qdsm z-{SxP00000A^8LW008{}EC2ui03ZM$000R70Q(6XC~%xNZtmW}Te#32w`kL*5u8ZT z+c<ad@a5CTk0Zx?`R2KM=1d~RiQ~v+)W?yZ%a<<o)tg6-nKN%E`yFftFCWaGKkdzX zM+=rof;-{W18VJ07A=p+!PFPeT`fJ*CURr<&Zo<L{OaxS@B&7G00+|S1KTkjxmbCQ zZky(A-q*GJkPIlHP2LIw2?zk%XAi7BblvFqVW;yMw|8LI>f0xe!3Pge_@yBbqQDAy z^yq<A*R2+rW&O5ABWL%XJ=gZ+DFE?7#=T1jLL^9`&EC3ouFJJ@glAf<)vxU-U%tcz zjV=2K<@TVW+&XpYfSZ$5%8asE&(QwC4ozO2F>LDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7U<G>TBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7<gvpfMp_u}+BKB&j4g*#I+% z5FJQz$}r{#8KQ{i1k-{d>LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$<d@(;!o(rRh=~j`$1u9fD2Cj?fgjT_LI)^+&KYJnUjzU^06Kib z=rN=ovkNJWMDaiw&h*2K8vb!$nkb#fut2~E2rSUcsKpes3nqndApr)cNaRf@YQQl` zF2*$4C^9(|U;+v!_;O6IzuZzuAyr%ufgMLlBgYhOL_&%##Po^`D=`d_i6+PV@(V7W zP%?-VH9Q~&G!sF?MiOca(#R#4*s_Z+zWmZ_FRECQ2)9Q}5J4Eq;53mmc@UvQ6>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@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/icon-warning.gif b/resources/themes/images/default/shared/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..27ff98b4f787f776e24227da0227bc781e3b11e8 GIT binary patch literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Pt<HYV^Wu5;ym>x;{_9t|N0<T=X5oKG0Ga?a z00RIz07F-s3}6o62!Lq=+W=Nu(y2B}EN$pa03Qw5L?`%~Xl`Wat_9c+aEh#Rc#+O= z3hn4({Ub|AQ6`HHQI{MtpdU11?5EOB>Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<<k-KR6Nydy+EBh2HR+^)8nv+|Ghj)6QS8h;n+P+_EqV^QU z?k_uZxa?TMgT&;A+>?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_<kkn|`f9b#3h1~GZ7-mk2Ol26 zhbkDTf}v`V)xdBq2pSB8LW_|)_@@D6B2d)9Xd@^ZNuTRLDFB5CltL5Pdl=~j#e0JC zosPT*6kU{2vA(j+X#6#dH^6iwj5opbTbOPIl@L_T@J$5stuQHui4K@;Q=8}pRVM+7 z;aj@~-T`<AX|4ypegGs{2od!G>LcSl+NfU}@28A3*bVbNWrHA>f<g`xQW#f&Y7qXF z!JLeU1_2)=BN?C(5|V16K?*L@`Z}tPMgb{EXbf<L7Lw|sQ7V$_qcJK{>Z4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F<GBZSFYV?VZs z%Rih}Dt3GviB?DtejMGS7&whkY-;+$%*?yV$&WI!c-h&NIe$FQ&3$(1QuXEh=LH2% z3JYuQlszrI{qnDx=GsSSRFWz0JumOemi6!y@|*Si_Qu9eVN=Jucimlo_emuE3-ojk z^!5%6^h>3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3<gw}a|eS@P;YIoDS-D!uBL`YrJ0PQh3{wu(7)J-EE(VnximqKMwg=oo%b z**VOEoRwe6HXKncO>YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9<!0u* zVmu>M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3Y<!9AIqLo7BT z47nHcoHHcU8f3d_n&eF#*_6mLRQDyt>Z)%_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&<CYll zZPs3jZk>8Tb?#p4A}<S}RaQB)dL?#MraRt<HvhBesVjI9w1?Tvw{s^ZL>3P=ZzHb8 zU%2?0<TvLwS>08r{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=<wKGo@1m7;PD^3leLoo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/large-loading.gif b/resources/themes/images/default/shared/large-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b36b555b4ff04f841bb2101514d8f95bcf7358f4 GIT binary patch literal 3236 zcmc(ic~Dc=9>*`aH#f_@`t;sl1A!Wph)@ebAZ1k{K!AWO0)iq)j0$cji$D+vOGrT0 z5H=H(1QJ8EBH{vCEo%WS4Acd+PX*el;9kc*+t+zMu=8f#%;S$Y^Je<apJ&dTIp5Fk z`~A)wp1-fNOFR=`0&fA}!-o$J4i4kv<0_S^zrX*?nKQAmvFYjQj~+dmnVA_L9u5cy z;BYv=zm~-ZWTQ{`Ca!0Q&stkHXf(HP@egyaw8VX>%=E<61SZelml>3FIB_SFw=+JO z>1fNIJ763XFWku#WHLSX#AgI1#S3i{59~?;EPjP3)VUkh%-=r$AOL!@WXL};UOPMT zM8KC=Hu|E*&0z#jMfkZjB<<Qw(>81;JG<finu8Xi>Yi`eCWIw!mIG|Ak;<0fZ)5Sh zA9uCqhNVeHP=SSmOSseJm~m%o{UT}8_MVsL&k1Ry^bDRyG(_D^g9_691V!eDVNVY^ zn-UqLijlcd2t=?&t2*JPH7Nb`C7M&G8#~PF*%vRQva0-2ijO8oyZhzZ=HUaymue~3 z<btp9EvACOV4vNtP<<{hdYf&x$9>O7!J(>@qQ}5&jG!;U*5$cJ%I<f$$9I&z-8pTJ z-L=6g?iB3;zVM!-_Mh5k=e0+-%#NIl_I08)`c~f3gu#7^Z~>inIY4ry`}yfWL!)rY z^z|x9^!^OS({e>0Y78-BP#SGRy$L3s?J+*aBtvH*d;0II!V22uxF1G!G_nsp|NW6j z*n~w8L5FEj?#exEDYcxouavhti=6`&yXU!63b$&uN)xIwv}#@}M9pl~w4Q8}HeamW zdYoN%nei3xd=*2l3n>z*u)&1kYwG^`y`o+$(X?)uoLSy9em&uc=yrmf_n>e(azN9T zHv_!rdKQy_KiS$={t6guk(In#Rr6U@)8^w}TymZ?8L}WOB>&}{d~5qT`A_V5PQq=H z)ivs{!E=i6wWW$ZfrVLpH{F@|)-k8aAlkJ_DtpYtT4F+F26irM@h23$-Y*&P(GPB? zorj1AF>M4D$%A5d(OBgC*mmO3kLCn84Ryl_A`u~*T^PlnP>VOQ!JX;mnb2N$l8Qw+ z5!~EdTurIciCPR<@-I&tj<gzDE;egeU1rCw(60KnC6?OvD%i4Ou~c{CtLXDe{8*oJ ze@4mI@=}WE#PEh<ta!rx!6{%GI5ybx@Q0^B+cm~>=QmHH-P=lMv0*LQ`K|P1j5Ng9 z^1>CZg}i6c(ghtb@BUW0W_Dz^iBH6m##-j>rZ8!|BHU}qy_UuJ)U|`_tS;8H>?FUl zlr^l7fwUOuN*{Z!(E)LPIjvwgXW}*xV6tY}U)OlX*N_dSjS=awjz<2hkOvRRi_?(M zWeyI6EOs88Xdf=&5qGDXWoENL8Oth6)rg}_YJ^BBmy~*_4XEy9<0-URd(z?fMP4nd zOL6e>Rkn`WfOiChB}ts{p(3__zixl#UK!MvF@lrBWpUX<t1AG>MC|l*Ccm*f<pTCx zHM1@;PR}a8{qn$X9`~^6`_~WMb=*1fc~Ec5!tVb#ejEMlh?TXER=BOE5~u6>Lc%DX zWQD86mwy)}%k!&Mg7oS|ERJ{uuVuB+a_b7I{Cz<Cr`^5@Usl3kJjMuxLdv!uWSR9A z*?IYf#O#PzG`(nj_*g1ov)w_M#9I}d>P?J~GfROo&G&g*1=Tm;h^p}rr6hGneWMmp zYZ`Qjph>g#Si3h^T^R(TsH=I^1=FrBq(Z2cu?TQC3g>DZSt-^?_m!%&0;s^pf!2vO z1JMy;lcPZD{o2QmtG@9rv3wkm81%w@GJ4Xj<nCEqTrYI5W(E`TQ=@)%KV<dUQm@4e zkN@p_0fe>A6~KxB7PGOolBU-Agl;iZp25DuUIhx}C4c)o`izeHE+M~m@6%BA5pf~r zG?j*3Lmi{v`_l@Hj88QYppA<Jn-OW5IIT+Rq@=#=NzVU;a+;MXV0^MJmPJUiOFnGA z&&4WGUX8=GbtJdtMN*f#6R=WM-2^vCniU2YP|PYbBO(ZRG|{D_18&6hOfH$!g^*Sh zd6|Q#7X)`*@J_)iXe1PcY2avV6tpYbGK4aLW(7W69|BxQ5rs0?5kMx!x_xfGg?^GN zBcEB)J0D+PY9s^*0b?tzG09&JMlS8`wp_3Yp8XpK$($9K#_F)%EgOq%LTrpqO}X8+ z49T)lY|QU|5#uvf`LhK%*FGY6?E`O0LtHY){}%yO-SX3|e!se7&J?dYH_ExwE3C){ z)t2w?r(Tr{%*6baTr0k;7zazsi0RquWn~JmO3tqVD-uPVk|tL$BcBh!FfrGYtJjlG ztjc!DC7ppusiGKjA`$~#)Em5==x!Mxf^^|TeS2u0a5Z`dpxi*(`J1sjD0UrzOM<*6 zarg!(^FKd>LHA`r9&a$xjTS}<{(idis<U^zQ2|jMK-<0{kOwW)gs=V#{X7wUPOz-P zIa^dLFH_`{C|Oa3d;$o%m>0Ne^m**;78Zr52Z{5_A=r!D-m;Ir0|iY%7$ya31fh8_ ziVh;<0A&EKlo3Z!lW_zi4h$9}qrJcboHWqE2S*=bPqEGc*^lV+C*REsWSEV@tA~^! zlgAcE8KY~+Lo;{skJznPunJ%QpBPA7$)rM0ySeOx+-y1nLUg*Kv=|(2L*Whv0Zhmi zXmtqDyVn!~!M<(FJ%~CzPC^hpJm-NSFfY>jCSr02#;Es8;G1L9IC02@3*P(zd*=O^ z{}ibN-eE7k;_D=uv@*&iY|zGx&92<^DR@0~;ZFQhf-q+UB7#;{6^opxRdr~!qO796 z<OEmZN&)9VAPDgz2-skl2SMsUNS7Esa~xU?Fb5zHm~N$!mwP}4Z6^$C!3kh<#wzPu zu*t-C{w^}ot<%8Nh9oZW773pXU(bK|&CFd~_&wtl?dNUpd%V6-cLVuN95Q|El=p%` zc=|t?fQ)`4HvU)yOW0(GWkf@VBH?x?UZ9NcuG_<mz=%i|*MG0segS`_bO*mmj)|Qq zg<0|P8s~-s${KooL$y|#A6e-tvm?UrA=jWh29?y-#!VCF0GB#R#il+99edBTkvISa zyb8=yh-+&v06|WOyIlnN9vJQCE1z;%j|KIzs8hTf-_CHS_PzxU>lydnth3$r8;92V z+Cpl*_!B~;?7vAs1o}q{Qu^qMfbKo-H?B?Lb1JCqN>q5%e~Ea=*cvgRE(yHrcXqRy zhjJ){>!0wW=sK+6c~iUGmZK4#)iZJku&6rWUN4Q5mPSgp<1nL~-~xZQxFWMugc!Wi zhmsYnRLWc;NwB6_b=;*{@7Q>p4yjvJ?aDg0$Xc!)6$Hgy96E!1rLR86<|<~@M=UW7 zN?P8DUA{sT9~d1JERX61U9p^PpGDe?>^J@iGU3Nf29GE6fj1o+H`oHR%5mYZK+fo) dG2M^L@jNrkTSM}?a}*&v%_YEX{vYsh{Syplxs?C_ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/left-btn.gif b/resources/themes/images/default/shared/left-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0ddd9ee8203b9fc45eb5ee78ae6bcb7e57aed7b GIT binary patch literal 870 zcmZ?wbhEHb<Y(Y#_|Cu}WsoatQLE_Gs_r>SKV^zd-BO3vC604f{{R1<VHAvpz;F)% z9gqh>d4Yk$n}L-<!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8c>sZYVSj)zmI o(Q}fL|Dq=uMNdw3X~iE>$=vYlK$lteqcf2P3=A_Zn3))?0bn93t^fc4 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/loading-balls.gif b/resources/themes/images/default/shared/loading-balls.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ce214beb5cd4db00666778d371223c605874519 GIT binary patch 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 z<GPD(57UFCz|>1lbx&?h&&9gFi*>!1pzUs7{@wn9`hLm1fx>(Jl7@kz#sNtqbnGu~ zQe16TTxnMP)H3+<{h@2EL)RY+mC2N450&LIW#w<fHy;n*exkbdM0NXj)vr%g)omj+ zZ6kN&&^FrKG2GHI+}fq;?(XjG?Hw2x7#tiN8X8h6mBYisDwS$vWMp)7bZl&Fe0+Rj zVq$V~a%yVo)vH(2)6+9EGqba^Z{EC_o12@TpI=y5SX^8biA0cj>qY$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@)<UAV=k|s&g$+U8&yrr~RC#RuIwcjenwn!;gJ(Dn#<_D#jCax#DV~#dG z&_DsMq49tss>|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;g8A<FUJ<^TgvzoZFQD;_&8IgR`{WUJRlbmA;Sl932_{TT z%sWd@8CVn8Qmhwxe}UI!<BXS3f(1~5(i1pRSDDUEkwP>mhLs23E}Fg8bsA}jW84be zJj3a&!EX+(#)=!^aPHuvE0%9D^z0oWQl`8qV(5Oxp*_o)rkOg&mhP%-u(0<l%wsyu zjEZeHX`!=T-(<BH60-w*Yh5Ncj8gvJDAkNx<%12z`o`PP8s{X$^wlUWpak77d|x74 z$y96KIn2KqM=1qfYYm+IC&8kFgtYSDRJ+nmqYcVvzeMz{HE`Q8heMxy&hAK)pCY!Y z6Z~P{v+~sjhSBOz*w@EPiirBzII}NLCInV0bB$~Orb0vjTXU_iV#SOhnfwYd+vP}; zmk4fUU*vMRqH3~RL*oOI+$y&wq?#d?K2yE4_bJKeZH}x(s=L;(OMP18nPf0|fw~rH zDALLkq8wC4b(I~tp=x{7IUZcG8mV}hGG(2zE-}TXB8Co6LTI6vD9`3Xed=NUhhuna zPUK3YMnQRAj;~9Y?GjRM`O!N<JxvW{f}d|~l{(44GkwT@M1V{n22jb=uTe;EK1dgW z;Q)^haCqUY2o^ME97iGd@L6;&3aMUKOBlxiJUfgDa*hN3EN*xlj~^|tLm^3IAHbW( z6$tsq!h|dy7YG7{0EN$s00jc*l+H#WnL=TV+m0P^ad8;V>XS@f3?_`nfh@f|7!XJ# zk%OqjKq3JM^2G-d4?(;7)p&sb<S^Kfr#P0732gK#x23xGeF0={7zU!?#RE7j78-z{ zkjHfZ_6MMlepnLVh=(qE;{)&nJXH3-4%N4*OqKwE+;Tv!5VFE%16-aEpvT03bUwi1 z0ud}W2o<c%<&sxAzy~8)0wKtU+{c1^^;}@oKLZHDdw+nC;fTS)5ikQBOdF>DCoC_x zFgMyk0aQ)fOAm{tLDLuoh6x2UK0R(bi$jkD1vEB~9?s%M(#YylM@%FuVp#;fssZ~@ e5vO$#&5sswUKi2&Xpx=kB8ZO`!7YivcK-uGv{KRl literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/right-btn.gif b/resources/themes/images/default/shared/right-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..dee63e2113fcca680699455e8a56ee3eecc81c40 GIT binary patch literal 871 zcmZ?wbhEHb<Y(Y#_|Cu}WsoatQLE_Gs_r>SKV^zd-BO3vC604f{{R1<VHAvpz;F)% z9gqh>d4Yk$hk=zr!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8cxsZYUC>4${T q6OT!%mh)U@eo8sjryPH%CUe8H16^j>kIqCIFfh!NVPs)pum%9ETq}wI literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/shadow-c.png b/resources/themes/images/default/shared/shadow-c.png new file mode 100644 index 0000000000000000000000000000000000000000..d435f80aeaf38aa37a2afbea4363d7cf8706205b GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G5}q!OAr-fhQW6q2Bsehp@I)}QHZd@=F-Y_=I0esbe+N{< N;OXk;vd$@?2>@aO9`*nL literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/shadow-lr.png b/resources/themes/images/default/shared/shadow-lr.png new file mode 100644 index 0000000000000000000000000000000000000000..bb88b6f2be887650f28b16726e470c09459b9c86 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/shadow.png b/resources/themes/images/default/shared/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..75c0eba3e101e3f32cef8bde7bae7383d849e935 GIT binary patch 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;=qQcO<t z`YEW%DrBq}yiq*wP^1Ny_!`AB5sx`7tGjqzT{|n<Be?l>Ogc@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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/shared/warning.gif b/resources/themes/images/default/shared/warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..806d4bc09385a98ef1ac19d25e30a21310964e7e GIT binary patch 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_<OP8b zH-MzVhZ_nXE*N}xpzz@Z5E(o;5b)uJ!-o$6A3h{}_)yT=($LyJyLal`2{YzRnZ01f zyoIyouUxQd$I=bE)^6RsW!tuGJGX7$yKURvoqP9f-*;r!<#U@poM`y)1BfPk__5%? zfdj`+A3b~J{P`>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~ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/e-handle-dark.gif b/resources/themes/images/default/sizer/e-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5486c1a95bcc0f39a88c15c10c04ef7c3c561dd GIT binary patch literal 1062 zcmZ?wbhEHb<YKtM-p&95p^ZEL|NjqWjuN9GFtS2G@h1y2$j3S$0+c5hIQ}y*a>#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a<WG7s+g0TmY$w& zkbG*6=jLT+XIm7%x^r^#^7Hc@nz>}Xwye0g*kiI*?5Qm)FE0;R>^0YG>#D1(BQ|H< zJ+*c9_4NsdyJWq$t+}~5<MOK5)7#eG-d^zd)LifF>+bHZ`26bb>Fw+9?{8q{mh;)M z;o;#9VePmxJJK5%IOMq<G!l%C9G}P>VHRPj^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<TfWaC7Jd~Un literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/e-handle.gif b/resources/themes/images/default/sizer/e-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..00ba83500851702fd0afca2129c5b53004ffd1e3 GIT binary patch literal 1586 zcmZ?wbhEHb<YKtM-p;^Kw&v5}TR%_T`*q>*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<yiYnl$uNFf%+HO_&ds!RzxO86 z<mtr)p6z;PtF~re-4J}*&G+|~+#_2H@6TJa+x-3g`NhoUZ>@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><x{exGFMD%nw7b7N#3kiE0(Xi^{OA37$yX-VcU}8u(s}~l{UkUq7rR4 zQN<<NZd-2M(snwy%4Ch((W)=2S5I}))>?LPQ<U!3%T>FywyoHAYVDT0ajVyEf83S5 zYUk}~v)}G~z3g<}j<=J3>+SdwC9S{f)2`L|`~Ez7{eCaQVeNvw_itHmILNZPy5Jy> z_M8uUINa|T91(v1`~4w4?>U7>|FZqra8xea=i@Pz{v4wd67%mAp3<n_v+1<>VHu<2 zhTV5Ioz;IFV|><ldX4dUo##AT&N#k*v-yI%^x93A?A7mnzT|JtTY522+1B)8#OoN- z%VFMcORpys>wdeI5}aFh%{jYv+pP@iy=AuwcHjMWHRrml`Q7q*+i$mvZu8$Qzn3`O RcKf}i-@V(HGcqz*0{{svxFG-l literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/ne-handle-dark.gif b/resources/themes/images/default/sizer/ne-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..04e5ecf7d3837aec9510f5467282c10f158a5563 GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq95Nmo l794Em;N}uwNKib;z{ui|Vj-Z!(9Iz$HK#)0@qq>gYXJ2^5-b1! literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/ne-handle.gif b/resources/themes/images/default/sizer/ne-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..09405c7ac7b321b3eb9170b1584167448819a071 GIT binary patch literal 854 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3V+Ljp8IKJM4mNXe@&zn#U~q0?V9@AT!JyQ@ fD99>c63}qqP#3eHjE2L+1SS?XB|ZfS0S0RTeD^Ni literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/nw-handle-dark.gif b/resources/themes/images/default/sizer/nw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e49d6967c08db2c02a3aeb9c1f3cacb9c8665f6 GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq95Nmo l794Em5abeINJw;KWMp#S2{2G%=w_Cco6{kn+|a;a4FKuB5a0j+ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/nw-handle.gif b/resources/themes/images/default/sizer/nw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fcea8a9285dc74626ba9374055b25ab77e53a08 GIT binary patch literal 853 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3BL-#;8IKJM4mNWLY6U1HJY;AB3U_ccEMVwl dR&fe3XmDU;7El$lXlO`qV_*|d;oxAf1^`atE@%J% literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/s-handle-dark.gif b/resources/themes/images/default/sizer/s-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..4eb5f0fccb6d0e43905f732d10cd41533745c092 GIT binary patch literal 1060 zcmZ?wbhEHbyui-I(9Qq?p^ZEL|NjqWjuN9GFtS2G@h1y2$j3S$0+c5hIQ}y*a>#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a<WG7s+g0TmY$w& zkbG*6=jLT+XIm7%x^r^#^7Hc@nz>}Xwye0g*kiI*?5UEB1_q}2ZmnDnS(jHwY|grS zYU}Fj>k|%l$$D>Fb8~aX<yEn#Kd)?9#dvR5>+fl6@9wVn{Oa!M?d$LFZ(!z@^VzW> zaVFC%HL)EM4v!B{Q1+hZvvbqa(=&{-@15DX`T6+;&fRjpySBW%ydrpY+}T}QUtiyl ze0rYm?rm>x?<jtK@9ggF@9!UI=9c%{v*Y9A6O*;$&+Xay`T2##-t+zT?)v)r#^&t% R=l1UY{{F#qHbxc(YXFYFo9h4o literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/s-handle.gif b/resources/themes/images/default/sizer/s-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf069c243a3f5c59c4019e832bc571371987f030 GIT binary patch literal 1318 zcmZ?wbhEHbyui-I(9Xb6w&v5}TR%_T`*q>*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfty3dW5a@j%^bp7F()=GJlrmz>@~+@<D#S862@6~PHbF!ykEh& zOU854l9Q7)f>*_y+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T&eFss>$PRY#l;?zwPH_g zS$TPRz+$htURzgPT^+GG>+Y$otFNz5INT-cy=~3S%^8<h#cGQ%G%Uz_xKCAJ`r5m@ zD?Y!vdwTo&`}-T1x#fIzY)D+kETkQGX2-_I$0sOz&-2;2>FMbi#@YAI?A-kP`~v50 zIp1AdUS3`iygKgeuC1@HZ%95pZ|#k>jf~q0nRm>cz3u(|1I^s>etUL&e0*ZEcKo?L zJ3n7!TI4<7Z||<JuWxM5zJG4-?(gp(9Pa)v@4s))&(AL|uZ};zZ}0E#A0D5c@4tWF z-`_tzzrJsOx1sUHKgJ*P85lpMKWOAoTk)WY$Lz&}W&t;ihb<yu84s%%Q&v1|lPP=g zuw9`|<57pow2Vic8p~EZ>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<<c2xt6nafQ}*iR@&#>LuU0IXmi21oie;-_ty;6~)vMJTjxl$oIxtuR03tF% AKmY&$ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/se-handle-dark.gif b/resources/themes/images/default/sizer/se-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4c1087868afab5b5bfd329f52d9907eb1c0061a GIT binary patch literal 838 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+YZ<YOHW0m>5$9Lfxg96SOJ k3mltSSY>Q9925^Vv52er?AV~l(9La}b>~E3vIB!P0N;ZWjQ{`u literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/se-handle.gif b/resources/themes/images/default/sizer/se-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..972055e7b297a702ab9aa2d799d133b94ac92315 GIT binary patch literal 853 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B3BL-mw0|tfz4GbL23Kjti7Bsam@`xxHI2=6O f!pbfp!f<h+bBCxX#|Dm#OHNMK2%g5n!C(ylO93$s literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/square.gif b/resources/themes/images/default/sizer/square.gif new file mode 100644 index 0000000000000000000000000000000000000000..14ce6f7251071ecadda2c968ebdcc5047018de50 GIT binary patch literal 864 zcmZ?wbhEHb<YwSzXlGzZoqYb-ou4P~{XBjD*SUwkE<XNs<>{~M&wt%~@%zrJ-wdN* zGz5lq2q^w!0s8MhgAT}-pgh6AVaveCA>$E{(A3N!$mMciL!xsdyOP%wjSCG&yTw_> nZk(97*nvsGxlP1k!4l8OOsp$nb_OLhOgBgro5QJ~z+epkjJq?f literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/sw-handle-dark.gif b/resources/themes/images/default/sizer/sw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..77224b0c06f1666685286c5322fb02b4cd2204bc GIT binary patch literal 839 zcmZ?wbhEHb<YM4rXlDR{(8itr|NjRwM~Tr87+E2p_>+Yh<YOHW0m>5$94ZWq93m15 l2M#ndammSOI2<_C%q421Gvk7Sb33nm)}0d@l^YrutN|0L6o3E# literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/sizer/sw-handle.gif b/resources/themes/images/default/sizer/sw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ca0ed96df2059fe283c1d65fa1032a777e1ff97 GIT binary patch literal 855 zcmZ?wbhEHb<YM4rXlGz3Tl4Agt)D0F{<`q^&*i6ouf6zt<K@4bum0V6{qOFZfB*mg zXBY*eAuxPHK=CIF&~yJ8bU<DN<p~B369#4u9s?kknL~(&XTgDlMrIB%tpI}t2S#RY fRtX&rheZe5WZC^h3<?h%nyeALDn?R4fx#L8IQK4b literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-bg.gif b/resources/themes/images/default/slider/slider-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..fbf3ba83406a928e4b80b207e53b7bd04a577980 GIT binary patch literal 145 zcmZ?wbh9u|WM^<<*v!DNbMuA+dv}~XeiVYvU%Pef;+dP*E<Sm9p8*6a!6X9%H;@Kl z#h)yU3=EtMIv{b784N6T1}8mN@3nZ%vWwkSL(C&{-g6DE9POL}o%1EO-0})6SqTg5 juJ}zY*qC!-NfGC1Ng-RtQvwdM6^k1_o_Ld{#9$2oOtUkh literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-bg.png b/resources/themes/images/default/slider/slider-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eaf52b7f28a4d29231f82a5916d1ccd615a55d GIT binary patch literal 1494 zcmeAS@N?(olHy`uVBq!ia0vp^>_F_q!3HE}A3wtbq*&4&eH|GXHuiJ>Nn~YUV3x~t zb`J1#c2)=|%1_J8No8QDU~CP!pM5z%<ln8-xf>pKTcrzf+GR}4O9?J<p0h1GeAn5i zS7zH4J!UV<jhS^!<!#*t_M6@LR!7S}vfKS+=egOOUp<NUm`LJ}H62Pm-;_4bn{DE& z9?ZP+`|kTc-&v|Ze-gLgXJOQ35q*A<&|v?ghyEOSB69x|W1Nh$_MZ&j?lv(mHFpR8 z%bP0SZ~n|DcPyvmUH<*m|B|oHn#v>iK}KQU6w@P04<i?3##|{8esHbx{ai!SLuY-8 zBbKvp%BNf8CpSLq=~bSVW@73vi}MisQ70?!9S#;VG9P^Ay>YHl<cYf4%1L_NHmhBO z^q;1<ZsPg&LB6>8Q~ZV%Q(n$q`&^(mcb25z#hR{r@|Lv)J<k}f9<+~_*z34sZb5|E z<He?RPG?ot399XV{;ni*#@p0c(<3#7RAp55B!#Rq&dGen&D=Tb+2yxi0w!&kZ?fOS zIP&x3w*gaGUK<|$`pw(z%dWlGZ%>@e{@B!Rx#qQchktv&e=X{IS~=;%>n(D<SHDD0 zvI@I>`^nj5%7>4X2ih}xI5qXjq-Z>t=){vaEBVN(A3kD|N?uDYWtN0gZnC&$tucAp zTN(F?lkt2z;>5m2Z`$$g!S8u@Rj>E$5p6xXeesRJw_6)u?%E_gOS--^ap~f`hvqw< z&X&$y&CL<`uj}bXkGRxR{!M|`OU<552%i3@l>5BVly|CSLJ>T>)_jQjp_Rks-zt7+ z`u-~?&fQxpc)Fob$8Pn!;Iqfxs9y59^g3n7{;sc1$0UAEFm#TZyHCY;PM77UTLIka zY~@X_pFN7vzs^2y_nFv-zjku0)hkl&J0$+qwMOy7KI46M@!Rt|5|`iJcRA(tV#BD{ zyDv}NwP<72l>Xc5-)#F<2}^F;xNl=!7>D+jMafxSn@ju|m{oKArhjIg{9dqyyQX8E zZfF1Mr0@y;+FbcFdE%z?c&_)jskgzp|1I;j;A^qZGUJOaKWi1dl>U48wVrt>Tb$&9 zi^Y243ye#jaBirH(|Ij=Ti#~g_J)bpx0Bb}<|gjywhLQ*yF@Qqj&V2t>Z|k5uey5o z`ICC?ip77}Rw{E{JG3y~2$*v?3p^r=85sBufiR<}hF1dv17mS!NJL45ua8x7ey(0( zN`6wRUPW#JP<3jaZfGzAgH44Mke{1clBiITo0C^;Rbi_HR%QicgM{^!6u?SKvTc<j zd;=7m^NUgyO!Q3j43zA+6ciL}ic-?7f?V97+JQV<rHqo20xNy}^73-Ma$~*xqI7*j zOG`_A10#JSBVC{h-Qvo;lEez#ykcdDAuw}XQj3#|G7CyF^Yauy<|ZcPmzLNnDS<44 z1Bg3QlHv9glosWHZAnSiPt8fqP0cGQ);H8M)Q1}m)N7NHY*k#El$DxX0(LjtIIstt z64UjOgl+UORom!;T!iF8i1)#wK>you+33T=(vHhlRkj=$%I7^@978MwlmGnxZ_liE zpv9X>#cqpAWSD+z%jLy7L9^H__MTEYdAcoFC|_ZN&Hq2#%l)Rwzn}MbN{Wo)#wPP0 zZ4*_vHI{vUck}E2yQjq^CZ4OP_<!!dyj@L#z?91eCZsTWdU$yma3p!QRycRKIyf{u z{P|g&$3BA9podj`!`|w$q_aYcSMp25RU9tM@J!PEts*KSk+bHlgk=Amy&V&|?%D4; z$lzrcaoUcLle6u)ep~{-qL`USV&~R3)&E}z9*M|Fl~?DtZ|-fDe(d2{%W&z1n~ebz S=Nh2b7(8A5T-G@yGywo2pKYxG literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-thumb.gif b/resources/themes/images/default/slider/slider-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ba1dfb1db092194141198eaeab11752d02fa2d0 GIT binary patch literal 542 zcmZ?wbh9u|)MC(OxXQp#xA{%uvfIm#z6GKsSN;Lfo~!S6T>lS6FaGZUql0(;0MW@O z{~_qa=l>9N{q=tcy7uQk1U>!vAC5l%`_I6@pqH4F<C>S4l#`mm0ptP!BO`=nfYDGc zgC3A!#9+c;#&BU%hyX}7U<-u4uocSR4(0EF(274<fXWmYbU;Rc{KUZa-(iBIgN_vM zf+a;KbF5mM`oC;m8O3^Hd71RosMS*oTsP=iv)=c8AY8ZO<g*H)+_h`uduy2W%oiUm zldr0*sf}si&t~uLZf)~t%B|??VejkrWy-5ypVBjZhWD(z%IxOqg;9%Vm(S*3uu@@S zLv};*#`JBww(sz9&dhY#>+9@xY{TI+E|xQA&vBjfJ{=sA$#UVM0!whb#JzhgH*aM! z$V&*l5PEo%CG6hQmoHvlWV!!dp6ln&&nLg$d-3$kTj6m1xlIjBKY5iCJ}B&KVUbq4 zvV4R1;ffEBLXSLsA8lDJVRq~l$EA5ELQXf-CaUorF-kY^-=<Rb#^bc&?js3;=Gy5J z)+r0C+E%i1Xs9i0%#o~ZnX<xf-nKdaTD-b_16L(2`P6mo%B#ycu~U;|UzKV_%#UCE RHz?9|#*QS@R#rv^YXBE={Sg2F literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-thumb.png b/resources/themes/images/default/slider/slider-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..cd654a4c1680183026145066b4aa1a7802605456 GIT binary patch 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<kjq5L-D%Q?n_JrVtza48{Mv6r!eNKR+#xf8;`80iRcTo{_^lS4iX(Ut+`^Vq_Ft zV8k(*2@K|&Y!;KvN?^n?SxjbV!umeyZVR82k+x+zkRBfOtf{qzq^yv#quh%G@x1JR z(8Bf}6HsPgQF2ByL5ORfds+}g5VVS{6FF%D2t*@}2B|}MPbZeUbRIl<0*w=;wPQ=b z?`n6a+|jLY-PEI&MAPVUrvX|(4Um2e`%%(jTLfgQ7+6BzA_iA*-vjA9y6q6#(c?z9 z1080xnK0zV;4*sMxNd+F82uOI28Pz~hX*%|m;xq%aX_(&E*nG^=m8xSzy&if2bcf@ zAb*O7UN`_dU;`|`V?YBu+JwXk7vKb}fDxDmIt;jNg4~P|Gaec+_!#|K4Cyg2i+fYJ zJB~Z!=$pY^4LX&$rNFQWf9i0525oYT*`c&TZo#k-4`y+56xsz$&tt*~l?{?Hbg5um zf?)}|Mf6UgXA;&mJXwQf6{cnUZGy`Wrw@*G*u2m$V$un<4ekvrY{2e?c?Gj>$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-{<Woy zE7;HbIQN4}i>yUCV9Ec?o@;sUjk=1>cAm88uY+&dR!6>c{!;b@zv}ZnqTHCISIq3j zrmRZR!4J?JEO}MEgUxOYRO$OSzfMm1HjkLN%<YS<TI(XTCB;(yHZ2)YeEe3s;zZle zLFZZY>MA;yI5!rveWW!)Se@qKRd$^E(bb#N7V}{^<G7z}sMQD$><f#kPp&)Qdl&U* f;|o=%uaKp|chc=sqDJZ;2!fNAncA81$v6K2%TzE& literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-v-bg.gif b/resources/themes/images/default/slider/slider-v-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0cf8c4bcf396694fdede352fe69b574996a6caf6 GIT binary patch literal 150 zcmZ?wbh9u|bYfs<*v!DNbMuA+dv}~XeiVYvU%Pef;+dP*E<Sm9p8*?C{K>+|z`)6% z1Cj)p!NB5da8lFJaRtYz>P<7A^-dCCk$%}2xhiPQk07@MnHN0qYweEe$zBM5c(TSh gNhp)&+_Xb#AC*;S@t8j6{<S8`|JK^+!i)^o0J1kYPyhe` literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-v-bg.png b/resources/themes/images/default/slider/slider-v-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..121450c282e485da05b0d7e05955bd1398907e85 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^PC(4g!3-q3<+E9Vlun6jM2T}zYGO%dex5=|W^O7& zNJgoGk-36zVv&N8fq{jBfw7f|ft8`Tg06w7fx*r#k-tEOlz95Ovfp5l5>w%jXPw*+ z6yhxKh%9Dc;5!7ujG`J|4M0JbbVpxD28NCO+<y{5_NfH;gt-3y|9{nzg-6a_ynE~V zp4~eR@87w3{mMPNcb++M@bHm?XO17daP~M8+f1NA42&f~e!&b5&u*jvIaZ!7jv*Dd zk`o%3+|<(2)Wq0K8e*q3PVMa#b)KN2Y;kkPj++r0MojIu*)|Kl$&r!CnIhR}`zG)z a6GP%W#>UBR8*c(lVeoYIb6Mw<&;$UDTwkjI literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-v-thumb.gif b/resources/themes/images/default/slider/slider-v-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..58afe96aae0b9c6401d8c9991922d2cec6a86171 GIT binary patch literal 533 zcmZ?wbh9u|)Me0OxXQp#xA{%uvfIm#z6GKsSN;Lfo~!S6T>lS6FaGZUql0(;0MW@O z{~_qa=l>9N{q=tcy7uQk1U>!vAC5l%`_DjQp!k!8k%2*hK?h_H$WIJx{~abcI_OBT zvP~#DnPWBobmG!aEBwrF@C%)KtH(M!^Q+<7l&$x^2<ynjo6B#hT9*<m&AZ7`d%@+m z{JiXy`9*b^IgDN1-4V6z9f^gLr}RyjnAF7HoHA{CY{RT(-thkU0Sjj@p1W+h-^$q) zYu2q`nz?F|X!MqB_kEsw)^V{MIeLtR>!9CZ2??R|XC)#}obq9jK70Pcr2=`DtKQdd z-a4Cp|AE4zb6i}vFTZ$s<MkV%rv=X+JYx9$=TF3st49K*e(=w;;(Q}?Z8BTH&4Vpp zUgc&;yis(?5avDQToI_`8h2!qV@`Pgtb@rKlMjA2J~CY};l+|EGb7W)Ev!v4w*|Es zr~4XJ*w(&cl5%_DU(zXIIBS!!#O%f?GlWd5zN7`N@~ve3I&<o^Yja{_1sAU3e&#z} J-w_ys)&R&U>h1sl literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/slider/slider-v-thumb.png b/resources/themes/images/default/slider/slider-v-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3d7258ada4c81c6fc060bd5eea69524f0ddd65 GIT binary patch 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&<dP|LI-8_3 z(wOu#CY#(uXVU56?72j$7a|p8WrmE<)~t>r8Rg-rR1}uO-*=86B3}KEpj8RNJSwCe z<7ROQqPp;lkCMd%5%jZYyEu~r&Z9<Saf4f_b@xo5rrT?r#GnTO;H*qv+2yY9_f>1X zf9j@W8dR9k4|L3<$&YFm<W`iL@s|aacGP>Jnu7Kt{<dNi7y)`dqv0LYvls+SK$R0O z0~iJ@fFF1Z*nra|PBY*DDr~56<HaNf04v}EYFv2kL;DQ6Kf?~VfoDEw7T^RtK=UNp zXQBH917HNk0WY91K{Jn6AE25>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+*yoG<sE3X&NJL<F{Y4lD8Bl7+N%mWhPD=BVW`V7F;0U$sKu@=V;>x 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(eZp<wmli3~ooM7BZ5Y?iG(esLh187tJ? b-YZ;0M4ZmhwXjuYYD_|qnaxwCANu7#=K2Ne literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tab-bar/scroll-left.gif b/resources/themes/images/default/tab-bar/scroll-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..afa125b80cd88920aca0fce96c8bd15d80bdd60c GIT binary patch literal 457 zcmZ?wbhEHbRAJC!IKsf-Q?w+kW?feAu9E3TdN(~jbmPnEyI;;c`gif^zbg+vUw`rM z*2}-QpMHM$;`5`of1iK&`}))058wWM`}L23IH35Gg_D6nm_Y}m9Aqa0>wg8szLd;) zE0(OwSuK=zMkpZnzJ-dQ@B9A;j_J8?dE4Z1e}l&z!+950Oxai+vHr#zW~Uid3uD?V z-gL}3ne^_vwA*a<^i8+4KWsbx%;CTpe_^49MxYf<jpeC=Rn;|ub#2Wp6F6hIr&V^( z6r2{*)-r#7JInO0nX~59H!fJcXd3s7Wz{R@t)A2{b=`*E+1xQ~`wz@Na5#qR*s&SA zkL^3Wzvb-y7>>(V^3$$dK68QT0^6k<munty+`4<={^OTVSXke_d;fv;#j6J~AHTng zVgLQ-??3i$AMRfMzW%|!2BwFCCO`NS57n?ph?V>Zh;!-ur(qY<@lj!Smw@%R%QGe< zyH8^BbxU&T^k3>Sjak2o<%i&sqci1lw-uihNVA#8R;x8dGw6l&0^#f?ms<guuFE9n h=BZQ#WqGdBUc2nbub^!2b+&tt9q|laepG<L8UQ2B+@Jse literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tab-bar/scroll-right.gif b/resources/themes/images/default/tab-bar/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..20460f25618bb8d5e76ea9993ed1a0b47a681e2d GIT binary patch literal 460 zcmZ?wbhEHbRAJC!IKsf-Q?w+kW?feAu9E3TdN(~jbmPnEyI;;c`gif^zbg+vUw`rM z*2}-QpMHM$;`5`of1iK&`}))058wWM`}L23IH35Gg_D6nm_Y}m9Aqa0>wg8szLd;) z8j5RkUaxzly*VrSe#N~N0q_4ic=)<+`Pg(~Uf01KtNA_2Mjj0g>(9PQKK-^zK2&Gh zD~;L88Jn$mM0*so*sCV=g$w_vVPd%O{A5u^1|wr>T6tY{O=m+>b4wdvM_0|%+Nw}) zZo!thb2DafPoB19hQO>j^X4sBBv83zYTeA)tL6(X3}xH3n{DczU7Pz>wr<}cuzy$0 z3ARu!u0s<9&t2Ymg6Z@b0gl_Zi!<)rxq9P7=!3iWpK*k;zIprZJ?qn#pKrhZ@cqrF zFE79S_z=p@#3keL!NI=%9fMem#0P~#H3AYwB|icdx-^LhM(xosSiHYihS#a$2cL?2 z{|_I}IG0NQr7qL{E496`n3Q5YT{!zzk9zU46LSS>&8}n$KX;m;T7AxCRzRl5GV{6f jRJ<-_IIeJPO?s;NMLl4(#LBQKyMorZZ4z>3V6X-NW`ERP literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tab-bar/tab-bar-default-bg.gif b/resources/themes/images/default/tab-bar/tab-bar-default-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b01cf9064c88bcc2c6e0402adac913b8dcee7c0 GIT binary patch literal 1829 zcmZ?wbhEHb<YzEr{{Ej~#-11F?tD0N=iRw`AMQN+a_iZbYmYwNc=GAmlTTM3e7f@J z)1?O=E&$QJ5C2EOXb23u5K#Qd!pOkD$DqRi1fV?8KAIzjT_lfsh=dT}_|L$|A>*+@ zp|P1mSS#klhlIv<0cEc_9vc@OWtK3`x^rTqvKzC4bC-<grX?pQa|Nx6Icd~*db&aK zsW~r;8qdzQD1LS4<Yx8e`3}uovJP8TTwKgJNh|i$mX(*62Q2oQ>$P>&)zuN3v+kbS zy88P1gu`93-rLsP+?;WFRqW|)Yj1BaczkNE_x5#ncUOFVb@%l4_4oHTFmucK?AY+| zaEGvV+?gF4A0MBf>^;wC=ccEpXBcPSJF|21^YaUwyXAa$ZFzZlMeyplv%9vwzP=&( z^gQ3)+uq*ZQT+Pe+1=aU-#^gIE$_Ey$H&JfCTqu^+q3iY^9zf;=lkv5_4W0Q&Dr<Q R?cM$T{e#2TnfN#utO4<uiDCc% literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tip/tip-corners.gif b/resources/themes/images/default/tip/tip-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..e26ea6e705b3da35ea6535f4ad44c5893c845411 GIT binary patch literal 1621 zcmZ?wbhEHbWM&Xz`2L@vZ`HXMAO7t*_iW0#3okzX+jr^3zkmPsTzEEZ!-YdvUhTW^ zY{sTbN3Og&aOuVWQ7{?;!!86Af3h$#Fz_+xFaQB4PqdHbh+!AWqaGq51UQTs7&%lN zHY{*#Vq&xqFmPaCW@6^x(|FL}(8R>Tq|o89z@dqOk4xdi4h08hR&Egs4h{xu0Gdww Axc~qF literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tip/tip-sides.gif b/resources/themes/images/default/tip/tip-sides.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf4c2f62a036eb8d2924f88eb7a761f7296eeebc GIT binary patch literal 1623 zcmZ?wbhEHbWMfcb`2L@vZ`HXMpZ@(H1*0J_B11s&CkrD30~3P|0}z1nMEhut7?BBK z)YH%q;4ooeWRZ|yXmDs^;}o;8Fi>=A;}*5b;V4Wx(k`T(b>@WNV)rgt$GSZln^aCt O77NaknQ5fJU=0A~&kg|q literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/toolbar/more.gif b/resources/themes/images/default/toolbar/more.gif new file mode 100644 index 0000000000000000000000000000000000000000..02c2509fee0fb4555df61072d8e8daac8dc7430e GIT binary patch literal 845 zcmZ?wbhEHb<Y5qCXlGy$b?SEb@4zq$MnhmkhJfNv7G?$pMg|>_??HKjfkTUdnM1~7 r!-9j&9Ku>L9YCQ*K7KbIgN+Z4bP31@U9tF}<ld&>++`ynz+epkzXub1 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/toolbar/scroll-left.gif b/resources/themes/images/default/toolbar/scroll-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..2db8cf5cacdeedff17ce269eed74d98624bb1f67 GIT binary patch literal 1861 zcma)73rt&882(!><r%YuJphThn5amA72FhpY`nV;#M(h+Q$tF73muoXyS?QlCL6ku z%<&MHkvXGrBf8)u(I}aK+i(a@ML>pgyc9MD3~>z*jLvfXPahP6ubbR+zx(~)|2XHr z=UkaQJvL4q0^!gFkjXWvDq9ZJwDFByH6Pvl{D-Bl$CkdCTp5^Jxi+zQeP(5N);2P= zI5D$0Id7Y`+U6E)*5#Gu-&f%OU7^2GJ^%p_D)`A$Qk1e}S+q1dMgZ_Up*ERVF%3{` z;5jtVx%>9hUN=AtLEs0$;HTD@O-TwxCP_rJ>k}@24<f=2M*h8hy~i5HPs^A!03vVX zj9Rm%7;zbZhe~7OcmS#&`Pfq4gxHg4HgQ-W;t+xh99T+lz5}P)HQCA()Z`+*PgAJY zA}&N6k-vs7$W{ugB1aJ@!9X&`z;JpEO%_AJ8FhM=u^Sx2f0)-O{|y$i7M!&G3c%6d z#3w89`7qu~Ixam2pJBKV!4-ws&m!J}I9bojvz>gdAwTPB#Hbe?Dl%peU!r+e%cQ0u zjzHXDF4;@4T~kq*lI7IQ98m93APxo)L@Op<;S3}WG_YBu%a~ZalQF05bvTOyb^3I< zlh>J8`<H+T#I>A7NeX=sahsY;lR5RHj3LMA>mk;vQ!|i{!j6W40vO;x2YO(E1|`TK z8J{v_4KRxqJ!rs)Dh@}NssJr6>p`%fmUyZlxjxtu=8jUu<>@tjb=JRl8{Kv&uxBCp z9a%_L!GHrH%uuu{jRcdsfS$^Zz*P%9L|u4((7&e=l5hg7J!COP&|`rN#&At3a%~Yh zLw)e7g(f93)mh6~P!-{3rPrnN(jn<P(kAKLKP-}?eD@-e3J6E?ljU>gc301!W*^?J z3fHLw`zn)e=phG#=%EzF98N`zoB_%)tUKIl&!`8eXi84SQgJ|2yQoBJCzXnC@l>X( z3`v?KRgwg>BwP|FiI(gk*wt^zBWR1mG0oX|S5H<IYnKn}A)RtGicH9*iiCXRN#jTZ zOAxd8hC7vK%J8fJNHLnqIekGPPsd25PtZwtbTPEtpoxm0)htUB(<$CebBvkcN*HYv zkb{pn0xT-+2byS0pPS>K0!a7;KjVHkx8DMA-VCsHyPFHceYN>*fD4anEL@2r9*9J} z0A}4|G4^+ne=;6O<ASh=d(*1{!1kIT+&d!(wzC+26yP#Tb}#_>Ie@1?ht_KKZz-Ew z!aFZMD(dAEGE&dp?Wi3|^lp){e^l)V(OhMt4%VIHgO6-@Gxz9F=T!Q|7piy6jh0;U zke2?u>4eYpZrb|6a{*;fLVeHaOJ?4(v9$cf%9m7rhYr`gLLIGc@KGJFIb2uK@cOZn zji=r?U3u(P&irznq*+q^ezVH=!{g^vE$5+C<=yUGnAh=1tN2r@qutWo+1l0Jdztba z_-=5Z?b}|}wP8<{*Z7Y=jo%m<9GjTFd25K8p6S0cH$O3Z=k~(nUF-6%OSkSV*jjBx zTNNXTrPj%@D~<K{w;%EHRmR6|%loX_@1c`dzU(`*s}>S`DY>F4slhuSNJ+i-%<xyn Z$j!R#aT}R0j&2KT{`hLc?d}Z_|0m`L+D8BY literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/toolbar/scroll-right.gif b/resources/themes/images/default/toolbar/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d5a7ab5db4e2dd717e26ac6b3e9a98bc4d51911 GIT binary patch literal 1865 zcma)7c}yHt82@%VEFi={S}P^38ER9p0kWV{kchAxTPR)EEl^5oWZ9jCrF(Vu;0T6F zC`6G$5u-L9QPxULt=2zGTL~7^S_8IRrIe$kfCvOA*d?en?D)MsSPWj1%$wi*zTbDe z_sx4FPD_o6m2ZVza2X(jwPu%}Evma{di!$SR}<geTI#&L^y9d_XVQLS%r-D>ADUSi zp0tfk+s5ZtrWRLb@2@N_+m|2M;s0GBzf-;d8zF@AOG`?UiACZ_VPq5s;MF8I7&Lqu zK&vycXrOZr=F;ASz=tj12f^ScR~QY6QfUTBM6~M@F5d(mVf(`W-oD;r4dbU|j0ymr z4{~~?QK3a#0<a-lVPH)FR5$W5#U=w{FQVDRVu6Ua5?tWKLW1+1IN71elqI1i2l2y- zLb(!gA>y$7HGDy)j9V2si$Dnm5;Ho6RV!$+7*bZRQfnB8!8!bgd5!YlpjKnXNjt8M zIQkn*A{jn+;=QC|Q?u|HiVG23R+xDJ@n*y#wJ9yr#pmeqB`+XGJ@4pY{a)frG^dnI zath)w#H~ileu5pEvce>ZOEX<0PnRMN2H<#hgGuTN#1GPGB&5rjm><s=Q}#QZ`9Ugm zYMP5z88nVB0Tb|#vt}77bUWgUayCWm(vL8@ESK*FzEYmN7x@V6Xeda50TxuC1`W_4 z12Ks3DMnTYGiXtR0`#b2adfK+(Bifp0W)feXEul$g3Y0xD3$EXYDHK5;$OV=9y=5` zvXK1FEF>$Z!+{V+IJ_zi2ZN`8tL3dhs}{PSI)A9o|7tlT;si8~kXnqO#sV3P;hs|X z+9FiChTv5TO-f{HB+C-04D+zU0pYx`U-*&GDxCd?MRJz!StL>c;Yfb6e4gB%>KW7= z#M@orIu++wWzr2bWML3B6r-5MsmPJjK`Dmygj?+y^%xaNrBN|dEYQ^RR00)GCF5Hh zmEkT!kRnJHBmyniC5RP73epL7_gnA;+G24`adqC^lU2pq<->YNr<{!<6LPD<As>0t zIMP51Vhz6GPBk$lcvb);=?$f<x}eZRM+t?y=|nub7&=X-hzO(Q8VyZM@0yG>%NQBf z!YCtv9DKwPz$SAXXuQo`9?rB6;JJJF8FzcQTr<EKBfz6id$>^CSC4!Ma6VdLW-ZQm zz~fy5Fsh!4a=i2WMR*|H;W!)aP47m4l@lEI$HyGE(v0y(04{0B4hA4U2k_$PkmE}A z2UXUyb0@$4vMJi6?R(O?&>BB_>5%@N{Gj?h&4wQyPiT}@+Y&#|J$=2fcV_z8?Rom$ zwVM(yytGKqnRnjN1K2H<3$McP*s0DbgQYmIv@B2&;9F69)Yo#Xq1sRPMy)xZ>cp|U zrnl<qPc}*fR%^v4g36N8Jij*sS_JI5&+^U$K6IhEg@5jJfKPi-UVHmDZ7q^3KE<6r z60e@#zMhWj1Kl@<ZVq$~4)saACw`io7`@vc@bjGa^vwAD<ig!w?oS2GjLrV~+k@Wa zdp*P7e=(X+#GBkUGSD^pE#G%IoXU~rwbcX;?#mqLzI~-)%QbCP&WmH>S3;(?y<c@e gHr`Pd{!H7BTSt`XY_#I__g<5J+EKG3t{NcjPouKnz5oCK literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/toolbar/toolbar-default-bg.gif b/resources/themes/images/default/toolbar/toolbar-default-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..22e33026da81fbdca76cfeeaa9f3f0b58390eb3f GIT binary patch literal 1837 zcmZ?wbhEHb<Y%yA{{Elg(t{6I9(=g>;>#T%diLeUlTX*4e7Xfh&pusy^y$i@5C2EO zXb2475K#Qd!pOkD&7i{o1fV?8KAIzjZ)}hHjBp5W{AXb0knz~C;9xU{u$GR+f`y0M z1(dz!cuZ_K+AU$6btglx@p!+2vz&zIrX?qtG=f*foZPhZ^mK#dQ&Tb*EIT{fqWIOF zlg5qb=Q}iW$-WA1ytvq7GF!x{Eh~c=0v3DC_1e1X>gtHiS$9uuU44Ch!r?Ai?`>;t zZqB&8D)#iYwYRqyJU%tod;7Y(yDL7wx_f&2`uqDEn7QSAc5HZfxI<Vw?#zyjkB?7K z_MYdnbJNq)GmNwEo!Pnh`S}IT-EzLWw!FN&B6xM&*<D*-U*C{?dY<p@ZEtVyD1LqK z?C$OF?;mL9miODU<KyEKleOc|?b-SH`Gv*a^ZoYj`uh6D=Is0D_U``v{=wmHE_wfb Odwza?5zWrRU=091RFQrF literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tools/tool-sprite-tpl.gif b/resources/themes/images/default/tools/tool-sprite-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6478670e37ea49286d7f29df999169959338750 GIT binary patch literal 971 zcmZ?wbhEHblw;s$XlGz>`0r4-;O@-bFU~*teev0!D=+?Cd-eb3oBt0#|9|%F|Er(> z-~as&1Pr5KGz5lY2q^w!0eb5{gAT}Zpgh6Av4Vk-LBL_d0!KzBR<?)}8xk8@m?S*r zcuZt;Vqj#;xO1ZLz~K&2=cqFplNKHC;0{_9voqld!!!ebqX37^%Y0e&@?TAvxnTME z`J6FKvRcB87Z-a7?(jJkl6HK#-h4Y=fr$-QS4VK}ICCmAt#N(AVX*?uZEJj(GcK<( zeNePEdM5j$Q*)~isNUUeBz|Y=?H~uYz193WA1pRJInph;G_OYE!-B^x60%kz5&{g? E0Cfp(OaK4? literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tools/tool-sprites.gif b/resources/themes/images/default/tools/tool-sprites.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6b8098610bd6fe8e0d140e91032bdf49a562c9 GIT binary patch literal 5421 zcmaJ^c|4Te-@a$YzK&$8Xe>zzL&h@5E-GvGh`|_RnHggnTgJXK_9e^M87URA6-CyP zq7bqqq==-bm{-sHd!G0G<9*)yk8_`M?(4d~-|u~{`<%~x(a1nW6(s_AfPNeRbUOXT z(l1}?Y(dBB)Mxsaefsiux}+{;eDz>$kN#$jzOYSyx%^wf>Yf?7vGm@1^N602#oeBX zulJv?H@%{pVC%Gv-NP&1`6YEmWev$*&WTQckUxm`PMrx!>?j!YUEN;0+4d`@%QB|R zyr^-}GP2j^Mu$~&pB|wRiKPXXPJ1UmC!{aL)V<Jlpazvp;gTl&3dent-+CmE>G{-$ zmd#x7tdFc&2#9WstXaeb*O;T?JKxd?aV?5S;|%KH{{BHq^#U$$JUV+AojPRgo`emn z(Kf;7)Xup0loP{mU3d3IB@c$DbXB%3ImR5e3%(H#NhOm`UgcZ6^oE{~_~gOrwzY}x z<-dL(P;RY-RZRQlk3N1!FK>Bo;&6l7w32dXB(b13F1zjL@BPAtIRm@MsLD5G%}WI> zdrrOuv!8b`VYTZ!+riYS<*hHKwi($~FMVU1^o?Tz3P)=?S94qFC3hEXTyD_mv*hAw za`mjNQ#B#_uBM^0W5R%`L#SWD%c~KOOYgt;3Mh^(pT&e!)^~pjNqV5FZQ1htYe_eK z;#+xi_5hte-@g%W>J*6~mAm6I3Tj{J7&***r7v%OS=-(Yi0;Btp1X%sp)iy*>X=t} ztxNL2wYdI|-<EVtu`T2D8&$LBwn@pA^TY@$%D?32uYFv2`Hx@p;G)+HUw5rNa}2D4 z<Pds8ALx}WD-J$6p+&PPca}WTp4UBEE5AD$LK#RXn<Pfut!Q28c=f~1B{Q~m*3{lV zB%%4k*7}{N8@_QZR_H`*IPJvAGo;c<J3<LA>zQ-nU~=&*zo^#V`v<6`{^hOpjEc9p zwJ!sbABIq;QcK6(DD8;_&th^qo1bm{`n|8B>(IZEa;JCQI<~2A_WP5GuL>r4!;5=~ z4KM8Cn>FoAaQROLX1|lGhwhIoxrH}(jc?%-I=x~$hvs+XuH<--n{DEnrat|g+d8oE zy+urHkEt7)`+5*m(%U<|(>}IZ*)}!3@%#4UcSCbO4xJAGfGC~a*4PZDhw?`q-qkfp z1eB{6+8^eE#$a(8VqZGC#9&xA4KW*pG2ED-i}t`8h7i$LLrg4PL%dv7-NZC6z|=`d zk`KWL?T><ye7tdfNRoya$_?*=MjrP6Ov{PE{(|^>X^3h6c>wzpQx{J}!w|A?8CSRx z9Ht~MD}P>5Sy}lUOaU$rmxC+F$t%dnD<jV<AmMP>e=f1ZXhb)6q=lZre_|buG{ijo z{Rv1pxuBpR*`V{Xcp^qlUR71~kA{MR%ppR?FBs>KBFW(V#Q#>%L;JZBu>^lC9tZoQ zh;qRP_-lwAX8PYH_z?b)#retpRgSDH-bapvBFM?h!vB=?H_+Jl|A+ec{Db!Mw?O|- zzW=ANpJgxsEoXuD!v_#u(T8yHKcNUnT_PIgk0)B<@!o&GMKce)Ki<y+Pk`xOMZk<v zu2|fk@n3jjW26zz&mV<zMH}g9h#e}(VzF*WgpQ7ifeJ!LA0clbFRy2yt%A_iIj=0Q ztE-}{sGzU>H&+ku8sLM*`Txyz`ya0EzjFUr!G~}dSr1Lb2BO^zh<G2^UnL{4|DKEL zzv}&m>-O)tX#Xo$?l2j-KMVW67W(h0L-+jY{$tz2!9T`F;||?UJhU~4ez5=h*U!D( zAK!PrZGYX`{IaqB`P16R)s^KBOYavK=I7qc&P>0Znw)s^dVK8F%h4Aj&z}ts4G#48 zJ?-sz^0>R}(ZkM;_O{jsEzM2$@7-;@bGzYIJ*}>`rn;)KqP&b+T2fqev#=mPFE=MU zD>H+Vo|c-DoRpXl9~T=F9TiEAxDg%}8WKzj3Jmb~Bl;5XI3I5>Ppk*V9qs1of^v4c z?&xsM-p<y>+RE~(g}IrjiSd=omy8TA8tCik>S$|eUeHiiL#nDMD<KrmD;$1OvNGq+ zN}rKBEqO{pTuc;pQbhQ~@nb@Q0{nbOd5`cwxw$ww*x6WFn3)(EAYjnp-mu4T*d74q z4)+P*&v^;3(1HEE<64c>#~?5xo9#ej894?57#11w06Gz1u*b}Re0NU*pRWBgsm${J z1V%P>!$BfCG6Q7M?p^Rzg3Q3prEb`Le#Imo2>aSwcRtb>!W1U?I`OE7S@i{wU}GDV zW?F0|(0%KtqNml(6XC>|w!3G6G_aV0ZRpNpdnWiq;A>Xr24e=6u;tf@0+QhS<~);@ z^H(Dmo@iA_!@aVANai$gT}dG8D+I`hc4@JL-NW?DF}r<EnL57=7GcgUBFVe<r*Sii z6cs}&bmN;bCvSxxfAIPBk!xLX4aZ1?%x=~D4kJe-w^x+nFXeIhweM6I-uF@l{5pbY zc0CyStn_vD$py529%q}pk0TTJ;&2eVjmFI0*H7>C3Dhn+B)sm&M8p9ImLD3w@Pmwk z%T&*!*%ZG|VRH8Qj(`~mN+`Fo)D}^Xy2z$N!YcOYv{pM`?=?Kfhg>o3v-e2l38yk_ z7cce+3y^(>G$x8dF31WvLiG6U+`w8qyK{CMLe5KBGj+`5Oh${>TEXlN1(k-(a3OPm zlS5!RSJ?O?+L5!f%DwO!jnyVE2tl4GA`P~o4GChql^MxKM(7C4jr@Y_!M2I1c;P+? zDNhwJMm*&FBT|NrLP^46viv=k4BvFF38|WahBvO1kt&HJ6+E2H7>FUQe=Pe_3BAA( zvWtMC4U9i3I+gIC1JERUTK{X%;#SBTn)AkLO(sZi7--n$vpZ?jK4eoB$}(V7(-N_V zb#`(*reX_;%egEY{mx>%3YFS`lxn_<tQIXFNn}{8K}cJcCqj)1v3OaRLbIy#MB0}} zyJ>=+MioD8Jt?*C+=K&eTPO<$-p5Ti2D*DPU$@eayI5k)=pG=FZ&1DRHjSYKU2gwk z<4j(7W6QJd8~)3m^J4iH5VmbvdDG6L+Lxs~&{6IltK}my$I2fIuHP*5KHze|cAq&2 zovuz333K(OZrDm)f}XYy?B%^$Wd2qc_1W?28iMbL#eBn1P9s9Dt$WavMt86tUVq$~ z+k}65$|e%O;7~IH9>Gc$Yx2r8g=9i}zQr4|BfrGCs}&Oriy!gVb!QJHG~?`lF$F#{ z7w>F;;*#tsby>&_-bdsXF#ENBPCrje(Z%v^3U4=M)AMOJyJ_c^0Rjsgon)y<kSS6G zE8l)`Q8RqUzr)6gcLwH?gy?|#1sTl6Yu?y%Y7-zccb<sS1$?O)krG4gOkKafO{aGm zb8L1WU7Kh0pinvTSD!Y4q1_<<O)_hzPz#irtVTvb4XJTl;B1~w%grdEnfXXD7eO70 z7^^N>_h>fxc1reU%ozvKj+yrboX=2@2P7N7lhku!$P4=ooVh~3&WyaHO>?TepZbxK zkEoZ)NZ?}?_Vr*;6M4?%(sn+FGUF<2%~^#U$C7&s1v1v5Mry~s*fJ_#J-oh`WGKeV zZ<E9TWVM-!pV_`?060tJJ^ZW@EuLA(!7PB3#6|gu9VrfclZO~NLtF;G9gUIfBRb-A z3x-oLO3Gy;qH9=3ui1&(T)n8`G$oVqalB63J#mY>2JE~>JtbLcfL44m?H-q4hD2Yo zD)$+Tp6krGltFs%m((t#6VRu7QSAm+Jowq1?N31!t-f={vG>y*IIseG?#b6qaFE}h z*fV6%SMbPM5(knDdMeTP6mK$!trUJAe4+m`p~OXO&4QH<4==yxPm2-LuT0>NG?35z z+*Yo8L$NR$S{u}Qg$!_XQ{=4Aftcash_~N|6BS}yd&X-Geq|M>vpRz~gwjt4Xq}_0 zjHL^q5=0P0vilCROcXBw5zKs^()j`4*nA->9+melhF8w=Yk}(UDKe{JCQ(a`d{t&@ zWI*w?;@Vz{<@>}VFC6$3zxhA2{(>HzpTFvVFvF?&AlEv&^0uhM@t1Zr`QkMLY2LOB z7E@t)0P_{^Jm!4Cz7txLPmuH0paHI&YT`3S6)p92VWGQEbkE%s{C<y%vRsPu%wi?+ z-{-QWVoqzFVm-nqM_spO&Y)HD+#Z8-QD!8#VQrV`CQ@0)7nd;VgQ{jjR@oON(7d3x zrVATct==;A`pfpCHc2sNLCxr?d!%8@odBsD&8u(W$n0)nQwkI8oJDWw!``%`XC!=F zh3j=}zhAIEdv@K_YN_LanrBSokLTy?l%Cj)w6Dm-I9?_T>|UiZz3%=cdd^dLzO`>B zzWIYh8Q6t=x~AO>)P%SahY`%EG?%P58f(Cirj6$A-Okxl+|bMs9KFn$_w;GNhE~C} z$cMFoB+{vz>!N)VpT0_TbS%l5cB)PG#7zufui!%-k6rJ7B=Bg}^`qOzYjbi7%7D$g ziV*KhV}*;~G$11INbb(u1CE_*EM|m4p<DL8I{9=>fG9I6rM|$=1fzWzYV<k7;PQO% zeilmRt_Fr<=4i)mE8JwG%*K1j>VW^LN6wbEYk%X}wbnBAzEh~X>`O^IH63~fRiwdW z+o$e|4^sjvLQ6S5pxvKV$*mi@_uoUOk@kkcTt2rk%U2chgdQhYHWp5+*D!0^)*XqH zLCJ)zsQ>6ES_Py)c8ho#ZW#2QVEcwM{_SvV`|?vy{o8B&!W(+^Ca>IO{3}1P&0bn* z1-P6|__@1_L<FpTK$H=KuHioMUmcy*7w&}2-prBAiXZx>F%>>+>2;7~Lg0}43~S!= zf&^_hd5!Fvi-vitn&yuTZ;Zv3HlQ>v9?uG=A3$3kOZSFI=TQ+%53WrhaYn{NGlYO| ziB(FgM(=IghZB``U7wr?(H(DB-}4T<);wF8^`^tk?L7mWod8ka*MtOlKQ0a1v@vZN zlD!G!_R9uhJ@q~#8n9EKRxi+YVPx0A$ERJfQ>@+&Mu9(e`!$BWG26v7;k0K>bq{+6 zPB`nFJq;v2nBDf*EmTpk;d$;S5-e!^NFVv7rTt@JMd0wOS6tJ+l#ml3kRCAiDv=B^ zd4XTAy#RjFD`Fu=04DRk<?{^eule11Mq4WR-i4n#&q%PF_&fn(C`3%3>JDRuJAv^| z!`s}OzuU%)z#~p>?>EIjYr42PHVT;zNR0j<qDp_0<4-SJluT=Wv7Q!R4&+gG8XcPJ zeEB`%?6T8_&z`108K3;+uaY4bUb#jDm}B27;j;|zS)QMELZOqP>_FsW=0Hh{F#8sT zfgdM_emHS#hQS2GPqIWk!-T8$sMH5U@qD+>5hp%>6BQa~^_t&hL)m4sU-aOjN4ibK zl9Jz|L9m8Yux4w-YKy}+8&`djt1HC6XOx-InV}Buf9_?BsbDN3@^T}Uk!;55L}9lf zs88p_UYm?{5)3dzv9uBxs+^fZ=Gm;`<2(oAaI0i?D0^=s%YZXugEO<*CZxeSJ}5sv zbTXcQlC=h4?Six3fU>>aWOJuu5)x_?QdScH31&wqc%mD~&;nt}%na^{`L&5ftBFD8 z9O|Qx%VeMs#`bC+((9g7Tbp!iH7Qz@U9_8tp9<(h89bdiWNU$zgyi;t<VTZ&{Dc&K zEucT2C3_R~Ixc0fHRX9eDOn&Q6%(T-=%?)wtlJ8$vBd4##K8OIj67^M+%M~NGh)ox z3$&Oc=UIoGl|Htnt?#C72@012z#xo=rp4Ga&v7LWzt@@$jHc5);v%$|>;Q)6WVWe! z_9!z?);0>~9)-t<PY=!(+Q>LI&(sfNG~J9BYReGb%MfMdze0g16F>+mSPlx2bPhbz zmMOEBDbK2PicVmCvB{JR<?v}_lhSflZOhWw%hC=OfC6CgZqP{>m<ne<qvdVXmTkP3 zZLTVKn!=pk&0^cgnP$eKw3%$zmgBgWgPIb&35T2;1t|cKvs#d_`4qM6T(7BIyinda zDcbE++P*SUE-qr46k(GUyq%Z2G=Kv<j@<8I+X1*=Lz!;DVi_BmzRYtiX>ofI{EzT5 z#RYJ`&B3#hL3DZU1`P0e9$2MtbHTY_u^O@j;Ab~CGr;wr#`Bjm_sTr5NVPC;0k&Y= z9|^!GsMqnAU@kMRb@<g|kGYu5K+9w={7cSRC>QU9msc6+*eJJWxytT5r_`!Dsf=rm zPB~9GO3d;@o$5D<ToIHR1;?xi36en**3naMhz|o&->V=Z>muGwTI(eE>9HW<3ZgGO zh&clSv9N&z$Z8>0ATE0lJFP$+1mZpX0~+MzgY!V`3y(_k2vDh3d1WGOWp)!~eA1D} z%y^E$!Z7lH^kAkeYnJ<IV9Tyz>mxX#7dQnVwS@%4F7bc?OT)VCD`&t*;eh!^0Y0rt zV<V8Z^x^RZvOrcrpt+nDpsUC#?PH>f{vgl6T$~X^7?#IChHxhp?=OHajag|giOTlp zUEKBg6&$=jm6{tB0XcR&_!z=EJD+!fM+gMs^Z-&ad0JkPV~+u>o&f8HbS=}UdR&Ns zLDW$St#&G->H(&9>Ls+mvyRi&sqkkVnO2*c1f+V3W!Ov1=}FYCxkKTn?WDEqpUQBG z*59T@F)P%!B59-yYIPEorMv1r&5$O2OIoE$5L_!g03B?HCRv!`LP~v+h)~a(-@!G} z*oN@7h8xm66>n=wekvt~)Gi`vESJn5nAc&(kLRq_a;nglekv^^YpHCK-#l+a8?Qci zNsAgk-cWc)dHYyPl5r2J9{42bl~L~;)rc=^WTD+@mcAtgxvP%8l{m)3K~)5k0fAv2 aAvIb&vGk?1#~7_f{bJ2zyB-JxsQnl3W4iMI literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tools/tools-sprites-trans.gif b/resources/themes/images/default/tools/tools-sprites-trans.gif new file mode 100644 index 0000000000000000000000000000000000000000..ead931ef617ac8520a24a263abb456ebc1bcd54e GIT binary patch literal 2843 zcmeH{`9IT-1IOPR(~OuQ8WCoWkfR)xkD2>OSRc%h`x+`u--v4D8j|Bfn;auF_feGP z9yuBcEfTpJIa2zNO53N;fARg{^Zfnwc)T9Z$K&;~vavKY@|6QLKq&x#Hp|levl+v~ zIFcHJNNpkUZ6OJa@Fd2?WX9!GMr3+dbXHF!ZMLL&iTZ5yVdp|!@A9L;<wql%9b?Nq z>}}?o?cuq-(Z#*7<)7nA+iy7AuQ>aYt6cUPZ)SaOdV{yLy|?g{$Jynredlfc;{68r zkN*t(-xyH%&d&z`U_j&FM*nUCfbswcRMxtYh7o{@s|WZr`kD$zE7}&O#+Nda;dUYK z2Aj++5)Q(WWue*pWC1j;4E4pyhYwJKv}aHwIjQ&cJs62<xhgio$lx>z9-BB?q$lqO z6)Wqrrzlh8EC}#2^M{Tq?y`F)IHtlf`aa6Y-H`Ee6Qc~T7p5w2i%-NOHXGTs)(LPE zL(MOxTXUkg<1p2#Ck?)x8c$$co9wd1ew36}Vun*QcGy-Xtbf1d!AiH3U8QUh;;~t( z0j{Pq6saU2*69C2|A(8ldF4~0UEPr%Yb&W~GEn(Xl4Wj-OuKMH7_E&6MC;IRd}=qJ znIBB|r`_)`C5zP6`0@5=Y`p{B?dSZD`aZq!zOV2=*qrRG#t(@*qH|W1_iOu~7h~9B zq*vKNGzSohPD?P!!^{%pB3kAX5B}kHB!QtLiAe&3;R_fUq(oVq$n_IWWT^fLKTEmf z4~l7s>cP@rIYmQ-+eP@PcPW%W)Vw7>x34%hxo3cS>uW{u%uQRZHt$<JkW|TClWl8i z2nrg4N;Tj{<=z%`S91gg>-GwuB8sj{{z{qO#c?8Qt>}9a1%l|S(k!DOs-O#<lc|Q7 zM3d#N_=J$z5LlUW>cwT>1M@ahfl=46Q?6Owfgh)1DK{kpb06wZOKzNFr<4cLbloc` z>As;fo1!varMqBFy#A_dbDpY)kD+DCOp(*33q0wS#re=X&f{%9QGR&3XYF|2o9xn; zSi)vY7S^sj_N7SMX1=TCbZ9_DfqHe-Vx{fJ>e){B0)}@T`uO8ULFkN=L2JxR)9GYw z$)*gDMG?7uw`wx|bz4YHShAdZ2=ldHdR^-bk{!`6PZFB0y3>>Xrj3&y8^FMU`|JIX zP;C$(4$W%LLWKam!{Q_wsMaG8z<>oe-Vp^Ztg#-A0Rh^*PEf}bOq61D*55>EG-d`P zCJS_f6*PcukXSo@=QaM)k@zkTBb97o2K7kxTMuIl0Kmd&0Kk9d^Mt@frl!HHs0Qz$ z8)#Aze&oO*fa?i5<Y@qh0Mb5~rMtM#xC0rdMT`Imb6ZCU_;;2ce3^^$mh_xA;+Hyq zxoRNs&)UcuR7%`?y8U(8%Q?yo!_^V%*)F{ym9y$$1Z95Av9R{Ttf=sQ8F`PM-s6ym z2|YQ+;SC^zlA}E@)4wV1z*OXKFbNT&k=I}Od+cAEZvLY<HV(hh`NX_)^ykB0@n<Ty z#?R-vK5gm_ZCNvq?ZC&PTdMDD=ciO|Zra8R?GHE5Q)E^T!ff8^6`LQG?%0Yr9;e92 zi$k){tQVd$Uu$CjKyx~G`x=a;h_g=(Ih1|!hV{OX6xULqd%(UDgDxF?#*<S7@0+Wf z1mN*RXFW*)iEI;L`!Ztj3KK5<<*Ypj11-dv%DeEVJ>kO?7nsTCgwLmWM~VUZ^Rn=q zb=}YfQWCviM!*_#W(rK=uZJK{rwtfiPxL*qMVI&i$-%Wg@I4$E&6N9a*`F)qDr&{4 zS3m>+9j0aNnY$EF^mZ<#PcmHNM2p=T`mgPtJBNr5`twQKdGy58%)u#y;1nXisgI<o z?4!^n$$u~Mucg}(*M{cYgaE{ZCr`Wel&v4@X2<jb7a3Dw)$34@bLOz}F+r{KW#e{A z00~W{OP_=F6}|`?Rn3iVa7acJAy|v*_myhBJN52~mnv({#_&cjAyqU+K&!|bM)0WK zug8)J4p`9T-h@-<)v~Zb=HI8VLC-&X=w*~ERki7a&25>GPvG;wtM%Q{UsIQaRkk;# z$5fkfMHS&yfJnix<|r|bovU{CgWmHNa%8r^ugW-n+sWq7#7b^PzP6OD)$PKlD+3wT zy3Bt2zYTH83jG|*;9#@*eEXWl`vJVC(`PTCchDoIWrjvW&IMSM{#s(Fy%1w!hMrUG z6`ty7oHv%~HD1f|Tf#uXCR<^WiU)CY?0v#m2X@(gw3L3qi_iMv$QJc5B+Sa_t@>R{ z@$$BbN}QJ&5`Z`Amq^?t<Xby1)gkrH0V|#hF^<o8i?1tp_AA0vw<j!iCz^bm{4ulE zuI1{=O~PIpI)MaFy8a3UQ6c?Y%e{-0;PSux(xTwk52oi*uRc!F(ELmwzF_)cPPW>w z+a6E^xoO?KHyIkNLzOvKIJc{Mtq+A39C8(0{@BGm>k>J3*sT}*xG@T%e9KCewPH<b zifU1oQ>q>?c7IX67Agv)ntOf2<UV^-ROxC_=oNL<)%bl93eUGhViX&k)RZF;+&28C z`}X4bBT1R2A8X*NhR=&xn$F&M4dMAKw{PvBcDaJK5QV*lr7%j)Q1CdYe9YZ8e?wRE zI==Si$-WHPNQ&Kl;JYu5j~CpVe(D?fe;eWKjaYqeDvZ@wkrz5l0iA9pL9!aUIqO4N zs1llj@K6AOTJ71XZutntsmr1E<;0JZy_DD;X)3^_%sbi6&qxl(F={YGPl6AVO%*9O zre%(3DPt_aOpyudAyWr3ORxA>09MxRWw8^PkjP>9)}ZM%ul?zOaKX!}x}EteMMr~V zVyhuK!WS|-UVM#uYAin&@t|f1uR_MB%y7Ia6a?4pFClY_9lq7+L{Obmu6R7jY>7Mj zix4x0oc-9k<BEu~973(nnlrBAk!Fr|x8GVoMTK-msGlIHqo?-sSpqao5-B&45B6YC Tp!SptOZP1+i|hOQ&QAXWrjri- literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/arrows.gif b/resources/themes/images/default/tree/arrows.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dcb810841083d95b9b5ea2957364e60d110f9c0 GIT binary patch literal 617 zcmci9|8EO%9LMqNIp*8Cj)q~_*y`I_Upg{b_5(3OB!nNN^HURk^P7YpOX*x!RmCWh zCXKB0myt-wk}mwf)~d!PvBgsBbk)0dy}S1M<-WW>cXa=RXC6Piet(@fdA#eewFlE< zV||#xV6a#$&7TBgL@-7LQ$#RD1?!Y_Js~?B4w58&K3^aZ2nK_pP$(P@+mkSqmWDF$ zGA#u&@QQ*E1;dp5nv#cU`3((kYqAiHMw7|pXBLffD8ivQ3ttLof`bWO`B9Lki)flh zKY296qXZAXcu1BYQ9`q2C6!8Lv)Oz;&oB(jvU4T)U55EGq$<jMRrynaOa-Vaq-(pX zWCVp06uJtupyUL!ARtCSSy9P}%EBU*6M+#?UQ!uJWktk^h?P{XMpk*AFN(lRP?De^ zqJpdzW%ciWuT>&67-qvduv&|sV0B|RZ1!8X9sPGm=YZ?3`<~~%_rb$QgO8v1o_bFo zeP-W$-f!<&zSUo^-REss>D-GGYrGrky8G+RtG9R>FwD6dZ(5@Fti|y|?`;QGb-G72 zAIP2fw)I4dyAjvn#+YsY3bSkSyK~1>TQlD78rRJpjK#kVP&By<Z`-)6b=_s!aOR`? z;>b1Qxw+VdJ;zMMm6o$NCpDKMT4H4IlwPY@+R-^<ebMXQbj06;x92>K#P+^-U-8~x P{CU^aTq0!FVcq`#CX}cg literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-above.gif b/resources/themes/images/default/tree/drop-above.gif new file mode 100644 index 0000000000000000000000000000000000000000..30d1ca7107816233884d23239dd76fce79237fe5 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa>!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#p<qME|o!ty_V=Dp7QYsZuXsHRr!lWYs!nm4Gh)*79d!Y literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-add.gif b/resources/themes/images/default/tree/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-append.gif b/resources/themes/images/default/tree/drop-append.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch 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<@{<eK-(R}^{<6(Cmu>-~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&ih<H4spkKaCg{O-~74^LlweD?bD%lF^j{Qv)-VHD6Z1QdU= zFf%Z8Gw6UU0p$q>j$;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<B4>}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~<k^)knHUB(c}j9IJP|qa*@00&H?n}mV8KmA S2{u*^g@#8PwjOL?um%9^7FNXo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-below.gif b/resources/themes/images/default/tree/drop-below.gif new file mode 100644 index 0000000000000000000000000000000000000000..85f66b1e584aece5a5d6d4cf062b8c1f63edce97 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa)@LcY-(xbFpY57A>eSRT}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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-between.gif b/resources/themes/images/default/tree/drop-between.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c6c09d987cf7cee99cf1baec891f85e7477cc02 GIT binary patch literal 907 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*Ea3nzkl}10|z&>oIij5|Ns9CqhK@yhFS<H z{$v3<`9FgW$l;(o!N8HhV8|g7v9PJ7k;5>=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>Vi<g7J8UQ~_Qo8^E literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-no.gif b/resources/themes/images/default/tree/drop-no.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d9c6a9ce1307c5ba072f08bf77d998bb1b716cb GIT binary patch literal 949 zcmZ?wbhEHb6krfwXlGzJz`$^jh2@BVz)=yA<1#WQRaDNJn4Gt<xe^d?H6-L_O3JN_ zj5`GdcS}m1OqlR|&YYJ^mb~7u;q8tc@Am9@f8fA}BS$`-IPvMsnXfl)e1GuZ$CD>N 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{oQNIS<b7{xSW o#)DLkb`|z44+e&(2fD<K^WOX@R60COK-Eu0<6u*JC(vSR0BG)Y<p2Nx literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-over.gif b/resources/themes/images/default/tree/drop-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..30d1ca7107816233884d23239dd76fce79237fe5 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa>!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#p<qME|o!ty_V=Dp7QYsZuXsHRr!lWYs!nm4Gh)*79d!Y literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-under.gif b/resources/themes/images/default/tree/drop-under.gif new file mode 100644 index 0000000000000000000000000000000000000000..85f66b1e584aece5a5d6d4cf062b8c1f63edce97 GIT binary patch literal 911 zcmZ?wbhEHb6krfwXlGzB^-Oj%*Y>c~334<Jb1_x$Sdd;dHM?$RN$dQY-evuD33Ga~ z7EZ`pJGXq}f{N=$6CPj5dH<+l#gh4Z*EX$RzkdJz{j*mdIJlwZ{Q2|u@8AFb|3AYh z7!84;69S4qS%8lH&!7WxGAK_laO5zUa)@LcY-(xbFpY57A>eSRT}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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/drop-yes.gif b/resources/themes/images/default/tree/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aacb307e89d690f46853e01f5c4726bd5d94e31 GIT binary patch literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiY<wYKlJw(qsJ zpJ`*gP~B&`t<yqdmxacj8`J~0>xFJMjooS=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<K5+3ZZ6$&YuTpTE4JQVvE}ZnE%(=Ky}xGL zg{|8zZry%!>#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<M3iU>%{1g;@!G-s^!P$| z8==@$A<sHwn3<HXM1D%Sr0N;HdqRStdV>R3<{5^GPA?~^>Pma%d|c$9FpH<AXHEf= zXAc{n;-`omMgmU4wi-S?A1*Mq%oSth;IcZ9;y*)FYu^J;Muvcc4jg(7m5<rFnVITk U%ua1eXlP&wOL?s(A;4e_0Qp#8fdBvi literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-end-minus-nl.gif b/resources/themes/images/default/tree/elbow-end-minus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..f50bd40ae3db3333f583681ae0b875e2a83cadaa GIT binary patch literal 151 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|<-<wO)q5>opRJB_vEXSch-q28ikEr8>dQ*& zr*1lvbmi&;28RdllqNhC>tgCx%Fvy_p*nG)g9O)&r%wdl%(Hp0p+cvVfx#L8`j$#l literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-end-minus.gif b/resources/themes/images/default/tree/elbow-end-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d8a0fa27324b7f4e38c26336106ea63a8d20c3 GIT binary patch literal 157 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|>%&P+;k_2G)3^V>tM0{}$k(hOBl&Po{$U2) zHzzoHcN%V%*me2<qlQ@HobCtDqBXc2yBxL^C@qj=bZ#^d*>~~eL65ZFb1$}72{STS F0{~EqN}K=y literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-end-plus-nl.gif b/resources/themes/images/default/tree/elbow-end-plus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..96f8d723942d4f0c5e23e2fdf9f64d5d414870f7 GIT binary patch literal 152 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|^}|We)q5>opRJB_vEXSch-q28ikEqT_64o= zQ&%x;mMAr~Xh@h)E@%<e(7NctVvZ>82Bw2LM$6iowpm(o>{suv@X_;DVz34Pv!F%; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-end-plus.gif b/resources/themes/images/default/tree/elbow-end-plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5c62fab32adca39a885e19ab9230d21a9cb804d GIT binary patch literal 159 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|=fg=&;k_2G)3^V>tM0{}$k(hOBl&Po{$U1P zo)cWXJM|Cfu-#34z#!4<c+T~~1V*v0rU^<DbQ!o>Oq3H+cw0Y|6j{uQT)d^~>^T<( G25SI?qe(ab literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-end.gif b/resources/themes/images/default/tree/elbow-end.gif new file mode 100644 index 0000000000000000000000000000000000000000..406a88dff55195c8f8fbb65c37a10280e9689e25 GIT binary patch literal 70 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01Cw}5e&gx43+Bx!j0#)d SwtMyY(nlWCo>_`ASOWlykQ)2| literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-line.gif b/resources/themes/images/default/tree/elbow-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..e25ed03fb6cebb2a0f891c0730f50977246ddace GIT binary patch literal 72 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01CwM+e&gx43+Bx!j0#)d Tw)?qX<1KZol+K0jj11NQyrLT7 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-minus-nl.gif b/resources/themes/images/default/tree/elbow-minus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..f50bd40ae3db3333f583681ae0b875e2a83cadaa GIT binary patch literal 151 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|<-<wO)q5>opRJB_vEXSch-q28ikEr8>dQ*& zr*1lvbmi&;28RdllqNhC>tgCx%Fvy_p*nG)g9O)&r%wdl%(Hp0p+cvVfx#L8`j$#l literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-minus.gif b/resources/themes/images/default/tree/elbow-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7287961bd3f1eb0269c1ac04f18176dc92e9722 GIT binary patch literal 159 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRJ5N111_ak$-+1`( z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|=fg=&;k_2G)3^V>tM0{}$k(hOBl&Po{$U2) zHzzoHcN%V%*me2<qlQ@HobCtDqBXc2yBxL^C@qj=bZ#^d*>~~eL65Xvw}qcA*DiBm HV6X-N=kiOC literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-plus-nl.gif b/resources/themes/images/default/tree/elbow-plus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..96f8d723942d4f0c5e23e2fdf9f64d5d414870f7 GIT binary patch literal 152 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|^}|We)q5>opRJB_vEXSch-q28ikEqT_64o= zQ&%x;mMAr~Xh@h)E@%<e(7NctVvZ>82Bw2LM$6iowpm(o>{suv@X_;DVz34Pv!F%; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow-plus.gif b/resources/themes/images/default/tree/elbow-plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae41983cca2f762abffb8638a43869859a276e44 GIT binary patch literal 160 zcmZ?wbhEHb6krfxc+AIO=#}jB-)YLyy>ozQ?Xjg>udUpBYwxjRTTeVb1_YO$U%B`3 z`TOs$KmUgS#h)yU3=I4XIt)MnGJ}D|_rpm|;k_2G)3^V>tM0{}$k(hOBl&Po{$U1P zo)cWXJM|Cfu-#34z#!4<c+T~~1V*v0rU^<DbQ!o>Oq3H+cw0Y|6j{uQTpXw|H*T}0 HAcHjk$M;B$ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/elbow.gif b/resources/themes/images/default/tree/elbow.gif new file mode 100644 index 0000000000000000000000000000000000000000..201c413e388369bf82b1a1289baf47fa3cc06f40 GIT binary patch literal 73 zcmZ?wbhEHb6krfxSjfcS^xx^&v19+iK=CIFBLfiVfC!L01Cvxse&gx43+Bx!j0#)d UwtMyYQa?4X6w5`|G{qRK0oEWJ9RL6T literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/folder-open.gif b/resources/themes/images/default/tree/folder-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..361e1be3e4b28bf8fc4e39b60f66dc805c5b7835 GIT binary patch literal 356 zcmV-q0h|6uNk%w1VGsZi0Hr+uF-l`X|3aB(0h(w6oN5G~YzCli2%>Nbqj3wQatx(& z4X1Svta=o%ei*ZX8?}NRw}c<Mha$a-CB~W=#+n+!k1EKOFv*rN%a}9FnKa3uA<v>F z*SJ91zii^OL*l_u{nc>)+ja2ddjI5ql%>6#rM<Vex16oUrM1?nz1qFT#<|Mm|JQ{7 z>xBRBiTCh{|M-*t|C#^)od5r&#KgqK#l_9d&C$`(#@6fD;qmA1_v`cj`uqI<|NsC0 z|NsC0A^8LW002J#EC2ui01yBW000Joz@KnPED|#r%*A3n_MSXmrTNSBWLRuZ5`jD% z4I$>5%|4%u+wanYx!-WvqBg19@AXd$L7T+NWicHSECzjlaBng%6CedNKYlKgl#??W z9t4nnG9#X!BQqQu1CWt1A*rgVA`}8OLK6zJvk3<V1q1^oHbXWvz`?@3RK><cK>#~t CowKL_ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/folder.gif b/resources/themes/images/default/tree/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2fd81a12d520bb45ce681ad14801a3e9d2ffedb GIT binary patch literal 351 zcmZ?wbhEHb6krfwSZc;#=#}jB-)Uw#<E#v(Iaw_8a@ZE+aV#$6URun%yp(@MnZW8w z;Wbqv>uSU{)Jbe^l-}ATyS+tzSG&^QF4Y6Q8i)F|j!x1&K1Kh;RD+Y#3{TH6J~Pwg z_V%FL+YA3+$^U=5^#7CkDNFax0iw0XmTtYaa__CZ$Bykh_2mEi&i_9q|NlSp|NlAv z|L;0*;K1qAr_Y=@bNTY+YuBzFyY~9V!;jD3e}Db?KYpP2lZBCi!Ja{f0SG{TVqmK| zFu%Y<N61{-mo3@m);yiCr9W?%SVZKcD|I@^@hyDjsW(}2W4znetljrl9eG_Ic=LV5 z?}J}AuLx>rY|>(@5!KS@?CREHtr5{um^68c7E6t=mi+8FbG4XjgtX+AEM2C>RBRv5 f$IH#d!Oq6Y!lY~9Y@oM$&)yv&2M)SAGFSru#-z0M literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/leaf.gif b/resources/themes/images/default/tree/leaf.gif new file mode 100644 index 0000000000000000000000000000000000000000..445769d3f863fff85bf8dae9e50ca2fbdd2d580f GIT binary patch literal 945 zcmZ?wbhEHb6krfwXlDQcQ_o~GuN3{H6Nag0EsGx6l|6PSd+b*I#H;qP!+!_A#wTHI zPb1o&CiOkbneseu`t#JOpR;CuEt~zKYW~Z@xnJuSzARt#t#<j3hK7d8i?&Z&x@*?T zee>2GZdv-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<<a5rV38BQh=N7Jga;0d)0tW3bvSNLJ1edq z!y%BN#MUt1KJ!t@L8XQRd}jI2QUXI1+Gj~F^6K4nXhjpRXD;8?RR`4r7@VdTos~+~ jxV+J1x!+o?4Xb@6ETcC>ENsed*j@4Yk?RR_1qN#Xfm)wA literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/loading.gif b/resources/themes/images/default/tree/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch 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<e5zgOcIlpc`kLa*!o;M_#F$wy(Jnw%^xoO{@do#FR1axvu?^Eg~=WXT$f%h ziRw+0<X~ye?)5wTu<&NHn6>&#9~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><M;PP#XNUM@C2hfJD#O#hF$!^x>+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+@ literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/tree/s.gif b/resources/themes/images/default/tree/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/util/splitter/mini-bottom.gif b/resources/themes/images/default/util/splitter/mini-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/util/splitter/mini-left.gif b/resources/themes/images/default/util/splitter/mini-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f7993f260b374440c5c8baa41a600eca99d74d GIT binary patch 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#$`Jz<zAZ@KEu aiJ--&dkk#zd{zV~IJdAA3h{6-SOWlJm?6yo literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/util/splitter/mini-right.gif b/resources/themes/images/default/util/splitter/mini-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b13c5a8b91b86e33d5def2ed29b4e348a5795a2 GIT binary patch literal 872 zcmZ?wbhEHbWMxohXlGz>c6N36?{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; literal 0 HcmV?d00001 diff --git a/resources/themes/images/default/util/splitter/mini-top.gif b/resources/themes/images/default/util/splitter/mini-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch 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 literal 0 HcmV?d00001