partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit 1fad00b77df5542996ab2c632cb28c7ca68f9774
parent 1c42293e9ea31654cb856b2f99c0309d2e22ac10
Author: Felicitus <felicitus@felicitus.org>
Date:   Sun,  4 Oct 2015 22:04:33 +0200

Added new setup

Diffstat:
Mapp/AppKernel.php | 1+
Aapp/PartKeeprRequirements.php | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/config/routing.yml | 3+++
Mdocumentation/installation/php56.md | 11+----------
Asrc/PartKeepr/SetupBundle/Controller/IndexController.php | 15+++++++++++++++
Asrc/PartKeepr/SetupBundle/PartKeeprSetupBundle.php | 9+++++++++
Asrc/PartKeepr/SetupBundle/Resources/config/routing.yml | 3+++
Asrc/PartKeepr/SetupBundle/Resources/views/setup.html.twig | 1+
Dsrc/setup/check-php-prerequisites.php | 31-------------------------------
Dsrc/setup/check-php.php | 3---
Dsrc/setup/css/partkeepr-theme.css | 1-
Dsrc/setup/index.php | 72------------------------------------------------------------------------
Dsrc/setup/js/Cards/AbstractTestCard.js | 133-------------------------------------------------------------------------------
Dsrc/setup/js/Cards/ConfigFileActionCard.js | 52----------------------------------------------------
Dsrc/setup/js/Cards/ConfigFileModeCard.js | 91-------------------------------------------------------------------------------
Dsrc/setup/js/Cards/DatabaseParametersCard.js | 116-------------------------------------------------------------------------------
Dsrc/setup/js/Cards/PrerequisitesTestCard.js | 20--------------------
Dsrc/setup/js/PartKeeprSetup.js | 14--------------
Dsrc/setup/js/SetupSteps/AdminUserSetup.js | 15---------------
Dsrc/setup/js/SetupTests/AbstractTest.js | 116-------------------------------------------------------------------------------
Dsrc/setup/js/SetupTests/DoctrineTest.js | 10----------
Dsrc/setup/js/SetupTests/PHPPrerequisitesTest.js | 10----------
Dsrc/setup/js/SetupTests/PHPSettingsTest.js | 10----------
Dsrc/setup/js/SetupTests/PHPTest.js | 10----------
Dsrc/setup/js/SetupWizard.js | 125-------------------------------------------------------------------------------
Dsrc/setup/js/TestResultPanel.js | 64----------------------------------------------------------------
Dsrc/setup/js/TestRunner.js | 49-------------------------------------------------
Dsrc/setup/resources/css/setup.css | 10----------
Dsrc/setup/resources/images/ajax-loader.gif | 0
Dsrc/setup/resources/setup_header.jpg | 0
Dsrc/setup/setup.php | 50--------------------------------------------------
Dsrc/setup/tests/check-database-connectivity.php | 106-------------------------------------------------------------------------------
Dsrc/setup/tests/check-doctrine.php | 94-------------------------------------------------------------------------------
Dsrc/setup/tests/check-permissions.php | 43-------------------------------------------
Dsrc/setup/tests/check-php-settings.php | 100-------------------------------------------------------------------------------
Dsrc/setup/tests/check-twig.php | 35-----------------------------------
Dsrc/setup/themes/images/partkeepr/boundlist/trigger-arrow.png | 0
Dsrc/setup/themes/images/partkeepr/box/corners-blue.gif | 0
Dsrc/setup/themes/images/partkeepr/box/corners.gif | 0
Dsrc/setup/themes/images/partkeepr/box/l-blue.gif | 0
Dsrc/setup/themes/images/partkeepr/box/l.gif | 0
Dsrc/setup/themes/images/partkeepr/box/r-blue.gif | 0
Dsrc/setup/themes/images/partkeepr/box/r.gif | 0
Dsrc/setup/themes/images/partkeepr/box/tb-blue.gif | 0
Dsrc/setup/themes/images/partkeepr/box/tb.gif | 0
Dsrc/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-disabled-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-large-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-medium-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-disabled-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-small-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/button/arrow-white.gif | 0
Dsrc/setup/themes/images/partkeepr/button/arrow.gif | 0
Dsrc/setup/themes/images/partkeepr/button/btn-arrow.gif | 0
Dsrc/setup/themes/images/partkeepr/button/btn-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/button/btn.gif | 0
Dsrc/setup/themes/images/partkeepr/button/group-cs.gif | 0
Dsrc/setup/themes/images/partkeepr/button/group-lr.gif | 0
Dsrc/setup/themes/images/partkeepr/button/group-tb.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-b-noline.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-b.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-bo.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-light.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-noline.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow-o.gif | 0
Dsrc/setup/themes/images/partkeepr/button/s-arrow.gif | 0
Dsrc/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.png | 0
Dsrc/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.png | 0
Dsrc/setup/themes/images/partkeepr/dd/drop-add.gif | 0
Dsrc/setup/themes/images/partkeepr/dd/drop-no.gif | 0
Dsrc/setup/themes/images/partkeepr/dd/drop-yes.gif | 0
Dsrc/setup/themes/images/partkeepr/editor/tb-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/form/checkbox.gif | 0
Dsrc/setup/themes/images/partkeepr/form/checkbox.png | 0
Dsrc/setup/themes/images/partkeepr/form/clear-trigger.gif | 0
Dsrc/setup/themes/images/partkeepr/form/clear-trigger.png | 0
Dsrc/setup/themes/images/partkeepr/form/date-trigger.gif | 0
Dsrc/setup/themes/images/partkeepr/form/date-trigger.png | 0
Dsrc/setup/themes/images/partkeepr/form/error-tip-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/form/exclamation.gif | 0
Dsrc/setup/themes/images/partkeepr/form/radio.gif | 0
Dsrc/setup/themes/images/partkeepr/form/radio.png | 0
Dsrc/setup/themes/images/partkeepr/form/reload-trigger.png | 0
Dsrc/setup/themes/images/partkeepr/form/search-trigger.gif | 0
Dsrc/setup/themes/images/partkeepr/form/search-trigger.png | 0
Dsrc/setup/themes/images/partkeepr/form/spinner-small.gif | 0
Dsrc/setup/themes/images/partkeepr/form/spinner.gif | 0
Dsrc/setup/themes/images/partkeepr/form/spinner.png | 0
Dsrc/setup/themes/images/partkeepr/form/text-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/form/trigger-square.gif | 0
Dsrc/setup/themes/images/partkeepr/form/trigger-tpl.gif | 0
Dsrc/setup/themes/images/partkeepr/form/trigger.gif | 0
Dsrc/setup/themes/images/partkeepr/form/trigger.png | 0
Dsrc/setup/themes/images/partkeepr/grid/arrow-left-white.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/arrow-right-white.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/cell-special-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/cell-special-bg.png | 0
Dsrc/setup/themes/images/partkeepr/grid/cell-special-selected-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/cell-special-selected-bg.png | 0
Dsrc/setup/themes/images/partkeepr/grid/checked.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/col-move-bottom.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/col-move-top.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/column-header-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/column-header-bg.png | 0
Dsrc/setup/themes/images/partkeepr/grid/column-header-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/column-header-over-bg.png | 0
Dsrc/setup/themes/images/partkeepr/grid/columns.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.png | 0
Dsrc/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.png | 0
Dsrc/setup/themes/images/partkeepr/grid/dirty.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/done.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/drop-no.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/drop-yes.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/footer-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-blue-hd.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-blue-split.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-hrow.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-loading.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-split.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid-vista-hd.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid3-hd-btn.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid3-hrow-over.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid3-hrow.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/grid3-rowheader.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/group-by.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/group-collapse.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/group-expand-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/group-expand.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hd-pop.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-asc.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-desc.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-lock.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-lock.png | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-unlock.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/hmenu-unlock.png | 0
Dsrc/setup/themes/images/partkeepr/grid/invalid_line.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/loading.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/mso-hd.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/nowait.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-first-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-first.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-last-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-last.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-next-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-next.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-prev-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/page-prev.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/pick-button.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/property-cell-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/property-cell-selected-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/refresh-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/refresh.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/row-check-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/row-expand-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/row-over.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/row-sel.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/sort-hd.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/sort_asc.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/sort_asc.png | 0
Dsrc/setup/themes/images/partkeepr/grid/sort_desc.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/sort_desc.png | 0
Dsrc/setup/themes/images/partkeepr/grid/unchecked.gif | 0
Dsrc/setup/themes/images/partkeepr/grid/wait.gif | 0
Dsrc/setup/themes/images/partkeepr/layout/mini-bottom.gif | 0
Dsrc/setup/themes/images/partkeepr/layout/mini-left.gif | 0
Dsrc/setup/themes/images/partkeepr/layout/mini-right.gif | 0
Dsrc/setup/themes/images/partkeepr/layout/mini-top.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/checked.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/group-checked.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/item-over-disabled.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/item-over.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/menu-item-active-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/menu-item-active-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/menu-item-active-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/menu-parent.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/menu.gif | 0
Dsrc/setup/themes/images/partkeepr/menu/unchecked.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-bottom-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-left-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-right-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel-header/panel-header-default-top-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/panel/panel-default-framed-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/panel/panel-default-framed-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/progress/progress-default-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/blue-loading.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/calendar.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/glass-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/hd-sprite.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/icon-error.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/icon-info.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/icon-question.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/icon-warning.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/large-loading.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/left-btn.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/loading-balls.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/right-btn.gif | 0
Dsrc/setup/themes/images/partkeepr/shared/shadow-c.png | 0
Dsrc/setup/themes/images/partkeepr/shared/shadow-lr.png | 0
Dsrc/setup/themes/images/partkeepr/shared/shadow.png | 0
Dsrc/setup/themes/images/partkeepr/shared/warning.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/e-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/e-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/ne-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/ne-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/nw-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/nw-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/s-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/s-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/se-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/se-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/square.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/sw-handle-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/sizer/sw-handle.gif | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-bg.png | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-thumb.gif | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-thumb.png | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-v-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-v-bg.png | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-v-thumb.gif | 0
Dsrc/setup/themes/images/partkeepr/slider/slider-v-thumb.png | 0
Dsrc/setup/themes/images/partkeepr/tab-bar/scroll-left.gif | 0
Dsrc/setup/themes/images/partkeepr/tab-bar/scroll-right.gif | 0
Dsrc/setup/themes/images/partkeepr/tab-bar/tab-bar-default-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-active-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-active-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-active-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-bottom-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-close.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-active-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-active-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-active-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-disabled-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-disabled-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-disabled-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-over-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-over-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-over-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tab/tab-default-top-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/tip/tip-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tip/tip-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/tip/tip-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/toolbar/more.gif | 0
Dsrc/setup/themes/images/partkeepr/toolbar/scroll-left.gif | 0
Dsrc/setup/themes/images/partkeepr/toolbar/scroll-right.gif | 0
Dsrc/setup/themes/images/partkeepr/toolbar/toolbar-default-bg.gif | 0
Dsrc/setup/themes/images/partkeepr/tools/tool-sprite-tpl.gif | 0
Dsrc/setup/themes/images/partkeepr/tools/tool-sprites-dark.gif | 0
Dsrc/setup/themes/images/partkeepr/tools/tool-sprites-light.gif | 0
Dsrc/setup/themes/images/partkeepr/tools/tool-sprites.gif | 0
Dsrc/setup/themes/images/partkeepr/tools/tools-sprites-trans.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/arrows.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-above.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-add.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-append.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-below.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-between.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-no.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-over.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-under.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/drop-yes.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-end-minus-nl.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-end-minus.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-end-plus-nl.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-end-plus.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-end.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-line.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-minus-nl.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-minus.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-plus-nl.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow-plus.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/elbow.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/folder-open.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/folder.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/leaf.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/loading.gif | 0
Dsrc/setup/themes/images/partkeepr/tree/s.gif | 0
Dsrc/setup/themes/images/partkeepr/util/splitter/mini-bottom.gif | 0
Dsrc/setup/themes/images/partkeepr/util/splitter/mini-left.gif | 0
Dsrc/setup/themes/images/partkeepr/util/splitter/mini-right.gif | 0
Dsrc/setup/themes/images/partkeepr/util/splitter/mini-top.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-bottom-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-bottom-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-left-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-left-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-right-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-right-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-top-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window-header/window-header-default-top-sides.gif | 0
Dsrc/setup/themes/images/partkeepr/window/icon-error.gif | 0
Dsrc/setup/themes/images/partkeepr/window/icon-info.gif | 0
Dsrc/setup/themes/images/partkeepr/window/icon-question.gif | 0
Dsrc/setup/themes/images/partkeepr/window/icon-warning.gif | 0
Dsrc/setup/themes/images/partkeepr/window/window-default-corners.gif | 0
Dsrc/setup/themes/images/partkeepr/window/window-default-sides.gif | 0
Aweb/setup/index.html | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/js/Cards/AbstractTestCard.js | 150+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/setup/js/Cards/ConfigDisplayCard.js -> web/setup/js/Cards/ConfigDisplayCard.js | 0
Aweb/setup/js/Cards/ConfigFileActionCard.js | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/js/Cards/ConfigFileModeCard.js | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/setup/js/Cards/ConfigSaveCard.js -> web/setup/js/Cards/ConfigSaveCard.js | 0
Rsrc/setup/js/Cards/DatabaseConnectivityTestCard.js -> web/setup/js/Cards/DatabaseConnectivityTestCard.js | 0
Rsrc/setup/js/Cards/DatabaseParametersCard.MySQL.js -> web/setup/js/Cards/DatabaseParametersCard.MySQL.js | 0
Rsrc/setup/js/Cards/DatabaseParametersCard.PostgreSQL.js -> web/setup/js/Cards/DatabaseParametersCard.PostgreSQL.js | 0
Aweb/setup/js/Cards/DatabaseParametersCard.js | 116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/setup/js/Cards/DatabaseSetupCard.js -> web/setup/js/Cards/DatabaseSetupCard.js | 0
Aweb/setup/js/Cards/PrerequisitesTestCard.js | 17+++++++++++++++++
Aweb/setup/js/PartKeeprSetup.js | 17+++++++++++++++++
Aweb/setup/js/SetupSteps/AdminUserSetup.js | 14++++++++++++++
Rsrc/setup/js/SetupSteps/ConfigFileSetup.js -> web/setup/js/SetupSteps/ConfigFileSetup.js | 0
Rsrc/setup/js/SetupSteps/FootprintSetup.js -> web/setup/js/SetupSteps/FootprintSetup.js | 0
Rsrc/setup/js/SetupSteps/ManufacturerSetup.js -> web/setup/js/SetupSteps/ManufacturerSetup.js | 0
Rsrc/setup/js/SetupSteps/MiscSetup.js -> web/setup/js/SetupSteps/MiscSetup.js | 0
Rsrc/setup/js/SetupSteps/PartCategorySetup.js -> web/setup/js/SetupSteps/PartCategorySetup.js | 0
Rsrc/setup/js/SetupSteps/PartUnitSetup.js -> web/setup/js/SetupSteps/PartUnitSetup.js | 0
Rsrc/setup/js/SetupSteps/SchemaSetup.js -> web/setup/js/SetupSteps/SchemaSetup.js | 0
Rsrc/setup/js/SetupSteps/SiPrefixSetup.js -> web/setup/js/SetupSteps/SiPrefixSetup.js | 0
Rsrc/setup/js/SetupSteps/UnitSetup.js -> web/setup/js/SetupSteps/UnitSetup.js | 0
Aweb/setup/js/SetupTests/AbstractTest.js | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/setup/js/SetupTests/ConfigSaveAction.js -> web/setup/js/SetupTests/ConfigSaveAction.js | 0
Rsrc/setup/js/SetupTests/DatabaseConnectivityTest.js -> web/setup/js/SetupTests/DatabaseConnectivityTest.js | 0
Rsrc/setup/js/SetupTests/FilesystemPermissionTest.js -> web/setup/js/SetupTests/FilesystemPermissionTest.js | 0
Aweb/setup/js/SetupTests/PHPPrerequisitesTest.js | 9+++++++++
Aweb/setup/js/SetupTests/PHPSettingsTest.js | 9+++++++++
Aweb/setup/js/SetupTests/PHPTest.js | 9+++++++++
Rsrc/setup/js/SetupTests/TwigTest.js -> web/setup/js/SetupTests/TwigTest.js | 0
Aweb/setup/js/SetupWizard.js | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/js/TestResultPanel.js | 106+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/js/TestRunner.js | 46++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/js/wizard/BreadCrumbWizard.js | 152+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aweb/setup/tests/check-php-prerequisites.php | 20++++++++++++++++++++
Aweb/setup/tests/check-php.php | 21+++++++++++++++++++++
Aweb/setup/tests/check.php | 26++++++++++++++++++++++++++
469 files changed, 1255 insertions(+), 1390 deletions(-)

diff --git a/app/AppKernel.php b/app/AppKernel.php @@ -83,6 +83,7 @@ class AppKernel extends Kernel } // PartKeepr bundles + $bundles[] = new \PartKeepr\SetupBundle\PartKeeprSetupBundle(); $bundles[] = new PartKeepr\CronLoggerBundle\PartKeeprCronLoggerBundle(); $bundles[] = new PartKeepr\CategoryBundle\PartKeeprCategoryBundle(); $bundles[] = new PartKeepr\UploadedFileBundle\PartKeeprUploadedFileBundle(); diff --git a/app/PartKeeprRequirements.php b/app/PartKeeprRequirements.php @@ -0,0 +1,63 @@ +<?php + +class PartKeeprRequirements extends SymfonyRequirements +{ + /** + * Constructor that initializes the requirements. + */ + public function __construct() + { + parent::__construct(); + + $this->addRequirement( + ini_get("allow_url_fopen") || function_exists("curl_init"), + sprintf('No way to remotely load files detected'), + sprintf('Either set <strong>allow_url_fopen=true</strong> or install the cURL extension')); + + $this->addRequirement( + function_exists("imagecreate"), + sprintf('GD library not found'), + sprintf('Install the GD library extension')); + + try { + $this->is_writable_recursive(realpath(dirname(__FILE__). "/../data/")); + } catch (\Exception $e) { + $this->addRequirement( + false, + sprintf('Directory or file not writable'), + $e->getMessage()); + } + + } + + /** + * Checks if the given directory and all contained files within it is writable by the current user. + * + * @param string $dir The directory to check + */ + public function is_writable_recursive($dir) + { + if (!is_writable($dir)) { + throw new \Exception($dir." is not writable."); + } + + $folder = opendir($dir); + while ($file = readdir($folder)) { + if ($file != '.' && $file != '..') { + if (!is_writable($dir."/".$file)) { + closedir($folder); + throw new \Exception($dir."/".$file." is not writable."); + } else { + if (is_dir($dir."/".$file)) { + if (!$this->is_writable_recursive($dir."/".$file)) { + closedir($folder); + throw new \Exception($dir."/".$file." is not writable."); + } + } + } + } + } + + return true; + } +} diff --git a/app/config/routing.yml b/app/config/routing.yml @@ -26,6 +26,9 @@ PartKeeprPartBundle: _frontend: resource: "@PartKeeprFrontendBundle/Resources/config/routing.yml" +_setup: + resource: "@PartKeeprSetupBundle/Resources/config/routing.yml" + api: resource: "." type: "api" diff --git a/documentation/installation/php56.md b/documentation/installation/php56.md @@ -1,11 +1,3 @@ # PHP 5.6 -Several distributions don't have PHP 5.6 yet. Luckily, there are packages for most distributions. - -## RHEL and CentOS - -You can install PHP 5.6 for RedHat/CentOS using [Webtatic](https://webtatic.com/packages/php56/). - -# Ubuntu 14.04 LTS and 14.10 - -Please use the [PPA for PHP 5.6](https://launchpad.net/~ondrej/+archive/ubuntu/php5-5.6).- \ No newline at end of file +Several distributions don't have PHP 5.6 yet. Luckily, there are packages for [most distributions](https://wiki.partkeepr.org/wiki/KB00003:PHP_Version). diff --git a/src/PartKeepr/SetupBundle/Controller/IndexController.php b/src/PartKeepr/SetupBundle/Controller/IndexController.php @@ -0,0 +1,15 @@ +<?php +namespace PartKeepr\SetupBundle\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\Routing\Annotation\Route; + +class IndexController extends Controller +{ + /** + * @Route("/setup") + */ + public function setupAction () { + return $this->render('PartKeeprSetupBundle::setup.html.twig'); + } +} diff --git a/src/PartKeepr/SetupBundle/PartKeeprSetupBundle.php b/src/PartKeepr/SetupBundle/PartKeeprSetupBundle.php @@ -0,0 +1,9 @@ +<?php +namespace PartKeepr\SetupBundle; + +use Symfony\Component\HttpKernel\Bundle\Bundle; + +class PartKeeprSetupBundle extends Bundle +{ + +} diff --git a/src/PartKeepr/SetupBundle/Resources/config/routing.yml b/src/PartKeepr/SetupBundle/Resources/config/routing.yml @@ -0,0 +1,3 @@ +_setup: + resource: "@PartKeeprSetupBundle/Controller/IndexController.php" + type: annotation diff --git a/src/PartKeepr/SetupBundle/Resources/views/setup.html.twig b/src/PartKeepr/SetupBundle/Resources/views/setup.html.twig @@ -0,0 +1 @@ +asd diff --git a/src/setup/check-php-prerequisites.php b/src/setup/check-php-prerequisites.php @@ -1,31 +0,0 @@ -<?php -/** - * This file does various pre-flight checks in order to make sure the installer can run - * and do additional tests. - * - * The pre-flight check will immediately die if PHP is less than 5.3.0 or json_encode - * doesn't exist. - * - * Each pre-flight check consists of a json array returned in the following format: - * - * error: Either boolean true or false - * message: An error message explaining what the error was - */ - -/* We need at least PHP 5.3.0, bail out if the version is too low */ -if (version_compare(PHP_VERSION, '5.3.0', '<')) { - echo '{"error":true,"message":"You need at least PHP 5.3.0"}'; - exit; -} - -/* json_decode is the most important function, as we communicate via JSON */ -if (!function_exists("json_encode")) { - echo '{"error":true,"message":"Your PHP installation lacks the function json_decode, which is mandatory for PartKeepr."}'; - exit; -} - -$aChecks = array(); - -echo json_encode(array("error" => false)); -exit; -?> diff --git a/src/setup/check-php.php b/src/setup/check-php.php @@ -1,2 +0,0 @@ -/** <?php echo '*'.'/ {"error": false}'; exit; ?> */ -{"error":true,"message":"You don't have PHP installed on your server, or the module is not activated."}- \ No newline at end of file diff --git a/src/setup/css/partkeepr-theme.css b/src/setup/css/partkeepr-theme.css @@ -1 +0,0 @@ -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%}q:before,q:after{content:""}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}*:focus{outline:none}.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-body{color:#000;font-size:12px;font-family:tahoma,arial,verdana,sans-serif}.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-shim{position:absolute;left:0;top:0;overflow:hidden;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0}.x-hide-display{display:none !important}.x-hide-visibility{visibility:hidden !important}.x-item-disabled .x-form-item-label,.x-item-disabled .x-form-field,.x-item-disabled .x-form-cb-label,.x-item-disabled .x-form-trigger{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30);opacity:0.3}.x-ie6 .x-item-disabled{filter:none}.x-hidden,.x-hide-offsets{display:block !important;visibility:hidden !important;position:absolute!important;left:-10000px !important;top:-10000px !important}.x-hide-nosize{height:0!important;width:0!important}.x-masked-relative{position:relative}.x-ie6 .x-masked select,.x-ie6.x-body-masked select{visibility:hidden !important}.x-css-shadow{position:absolute;-webkit-border-radius:5px 5px;-moz-border-radius:5px 5px;-ms-border-radius:5px 5px;-o-border-radius:5px 5px;border-radius:5px 5px}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.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('../themes/images/partkeepr/box/corners.gif')}.x-box-tc{background-image:url('../themes/images/partkeepr/box/tb.gif')}.x-box-tr{background-image:url('../themes/images/partkeepr/box/corners.gif')}.x-box-ml{background-image:url('../themes/images/partkeepr/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/box/r.gif')}.x-box-bl{background-image:url('../themes/images/partkeepr/box/corners.gif')}.x-box-bc{background-image:url('../themes/images/partkeepr/box/tb.gif')}.x-box-br{background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/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('../themes/images/partkeepr/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('../themes/images/partkeepr/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../themes/images/partkeepr/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0px;height:0px}.x-focus-frame{position:absolute;left:0px;top:0px;z-index:100000000;width:0px;height:0px}.x-focus-frame-top,.x-focus-frame-bottom,.x-focus-frame-left,.x-focus-frame-right{position:absolute;top:0px;left:0px}.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{z-index:100;position:absolute;top:0;left:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;width:100%;height:100%;zoom:1;background:#ccc}.x-mask-msg{z-index:20001;position:absolute;top:0;left:0;padding:2px;border:1px solid;border-color:#aaa;background-image:none;background-color:#dbdbdb}.x-mask-msg div{padding:5px 10px 5px 25px;background-image:url('../themes/images/partkeepr/grid/loading.gif');background-repeat:no-repeat;background-position:5px center;cursor:wait;border:1px solid #aeaeae;background-color:#eee;color:#222;font:normal 11px tahoma,arial,verdana,sans-serif}.x-boundlist{border-width:1px;border-style:solid;border-color:#c9a5a4;background:#e1e1e1}.x-boundlist .x-toolbar{border-width:1px 0 0 0}.x-strict .x-ie6 .x-boundlist-list-ct,.x-strict .x-ie7 .x-boundlist-list-ct{position:relative}.x-boundlist-item{padding:2px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;cursor:pointer;cursor:hand;position:relative;border-width:1px;border-style:dotted;border-color:#e1e1e1}.x-boundlist-selected{background:#1c6291;border-color:#206f9e}.x-boundlist-item-over{background:#2070a6;border-color:#247eb3}.x-boundlist-floating{border-top-width:0}.x-boundlist-above{border-top-width:1px;border-bottom-width:1px}.x-btn{display:inline-block;zoom:1;*display:inline;position:relative;cursor:pointer;cursor:hand;white-space:nowrap;vertical-align:middle;background-repeat:no-repeat}.x-btn *{cursor:pointer;cursor:hand}.x-btn em{background-repeat:no-repeat}.x-btn em a{text-decoration:none;display:block;color:inherit;width:100%;zoom:1}.x-btn button{width:100%;display:block;margin:0;padding:0;border:0;background:none;outline:0 none;overflow:hidden;vertical-align:bottom;-webkit-appearance:none}.x-btn button::-moz-focus-inner{border:0;padding:0}.x-btn .x-btn-inner{display:block;white-space:nowrap;background-color:transparent;background-repeat:no-repeat;background-position:left center;overflow:hidden}.x-btn .x-btn-left .x-btn-inner{text-align:left}.x-btn .x-btn-center .x-btn-inner{text-align:center}.x-btn .x-btn-right .x-btn-inner{text-align:right}.x-btn-disabled span{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5}.x-ie6 .x-btn-disabled span,.x-ie7 .x-btn-disabled span{filter:none}.x-ie7 .x-btn-disabled,.x-ie8 .x-btn-disabled{filter:none}.x-ie6 .x-btn-disabled .x-btn-icon,.x-ie7 .x-btn-disabled .x-btn-icon,.x-ie8 .x-btn-disabled .x-btn-icon{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}.x-ie9 .x-btn button{overflow:visible!important}* html .x-ie .x-btn button{width:1px}.x-ie .x-btn button{overflow-x:visible;vertical-align:baseline}.x-strict .x-ie6 .x-btn .x-frame-mc,.x-strict .x-ie7 .x-btn .x-frame-mc{height:100%}.x-btn .x-frame-mc{vertical-align:middle;white-space:nowrap;cursor:pointer}.x-btn-noicon .x-frame-mc{text-align:center}.x-btn-icon-text-left .x-btn-icon{background-position:left center}.x-btn-icon-text-right .x-btn-icon{background-position:right center}.x-btn-icon-text-top .x-btn-icon{background-position:center top}.x-btn-icon-text-bottom .x-btn-icon{background-position:center bottom}.x-btn button,.x-btn a{position:relative}.x-btn button .x-btn-icon,.x-btn a .x-btn-icon{position:absolute;background-repeat:no-repeat}.x-btn-arrow-right{background:transparent no-repeat right center;padding-right:12px}.x-btn-arrow-right .x-btn-inner{padding-right:0 !important}.x-toolbar .x-btn-arrow-right{padding-right:12px}.x-btn-arrow-bottom{background:transparent no-repeat center bottom;padding-bottom:12px}.x-btn-arrow{background-image:url('../themes/images/partkeepr/button/arrow.gif');display:block}.x-btn-split-right,.x-btn-over .x-btn-split-right{background:transparent no-repeat right center;background-image:url('../themes/images/partkeepr/button/s-arrow.gif');padding-right:14px !important}.x-btn-split-bottom,.x-btn-over .x-btn-split-bottom{background:transparent no-repeat center bottom;background-image:url('../themes/images/partkeepr/button/s-arrow-b.gif');padding-bottom:14px}.x-toolbar .x-btn-split-right{background-image:url('../themes/images/partkeepr/button/s-arrow-noline.gif');padding-right:12px !important}.x-toolbar .x-btn-split-bottom{background-image:url('../themes/images/partkeepr/button/s-arrow-b-noline.gif')}.x-btn-split{display:block}.x-item-disabled,.x-item-disabled *{cursor:default}.x-cycle-fixed-width .x-btn-inner{text-align:inherit}.x-btn-over .x-btn-split-right{background-image:url('../themes/images/partkeepr/button/s-arrow-o.gif')}.x-btn-over .x-btn-split-bottom{background-image:url('../themes/images/partkeepr/button/s-arrow-bo.gif')}.x-btn-default-small{border-color:#b9b9b9}.x-btn-default-small{-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-image:none;background-color:#cbcbcb;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-small-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-small-bg.gif');background-color:#cbcbcb}.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-position:1100505px 1000505px}.x-nbr .x-btn-default-small-tl,.x-nbr .x-btn-default-small-bl,.x-nbr .x-btn-default-small-tr,.x-nbr .x-btn-default-small-br,.x-nbr .x-btn-default-small-tc,.x-nbr .x-btn-default-small-bc,.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-small-corners.gif')}.x-nbr .x-btn-default-small-ml,.x-nbr .x-btn-default-small-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-small-mc{padding:0px 0px 0px 0px}.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 .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 4px}.x-btn-default-small-icon button,.x-btn-default-small-icon a,.x-btn-default-small-icon .x-btn-inner,.x-btn-default-small-noicon button,.x-btn-default-small-noicon a,.x-btn-default-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-small-icon button,.x-btn-default-small-icon a{padding:0}.x-btn-default-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-small-icon-text-left button,.x-btn-default-small-icon-text-left a{height:16px}.x-btn-default-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-small-icon-text-right button,.x-btn-default-small-icon-text-right a{height:16px}.x-btn-default-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px !important}.x-btn-default-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-small-icon-text-right .x-btn-icon{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{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-top .x-btn-icon{width:16px}.x-btn-default-small-icon-text-bottom .x-btn-inner{padding-bottom:20px}.x-btn-default-small-icon-text-bottom .x-btn-icon{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-small-over{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-small-focus{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-small-menu-active,.x-btn-default-small-pressed{border-color:#b5abab;background-image:none;background-color:#bebebe;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-small-disabled{border-color:#d2d2d2;background-image:none;background-color:#e7e7e7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e7e7), color-stop(48%, #e1e1e1), color-stop(52%, #cacaca), color-stop(100%, #cfcfcf));background-image:-webkit-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-moz-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-o-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf)}.x-btn-default-small-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-small-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-small-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-small-over .x-frame-tl,.x-nbr .x-btn-default-small-over .x-frame-bl,.x-nbr .x-btn-default-small-over .x-frame-tr,.x-nbr .x-btn-default-small-over .x-frame-br,.x-nbr .x-btn-default-small-over .x-frame-tc,.x-nbr .x-btn-default-small-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-small-over-corners.gif')}.x-nbr .x-btn-default-small-over .x-frame-ml,.x-nbr .x-btn-default-small-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-small-over-sides.gif')}.x-nbr .x-btn-default-small-over .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-small-over-bg.gif')}.x-nbr .x-btn-default-small-focus .x-frame-tl,.x-nbr .x-btn-default-small-focus .x-frame-bl,.x-nbr .x-btn-default-small-focus .x-frame-tr,.x-nbr .x-btn-default-small-focus .x-frame-br,.x-nbr .x-btn-default-small-focus .x-frame-tc,.x-nbr .x-btn-default-small-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-small-focus-corners.gif')}.x-nbr .x-btn-default-small-focus .x-frame-ml,.x-nbr .x-btn-default-small-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-small-focus-sides.gif')}.x-nbr .x-btn-default-small-focus .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-small-focus-bg.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-small-menu-active .x-frame-br,.x-nbr .x-btn-default-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-small-pressed .x-frame-tl,.x-nbr .x-btn-default-small-pressed .x-frame-bl,.x-nbr .x-btn-default-small-pressed .x-frame-tr,.x-nbr .x-btn-default-small-pressed .x-frame-br,.x-nbr .x-btn-default-small-pressed .x-frame-tc,.x-nbr .x-btn-default-small-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-small-pressed-corners.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-small-pressed .x-frame-ml,.x-nbr .x-btn-default-small-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-small-pressed-sides.gif')}.x-nbr .x-btn-default-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-small-pressed .x-frame-mc{background-color:#bebebe;background-image:url('../themes/images/partkeepr/btn/btn-default-small-pressed-bg.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-tl,.x-nbr .x-btn-default-small-disabled .x-frame-bl,.x-nbr .x-btn-default-small-disabled .x-frame-tr,.x-nbr .x-btn-default-small-disabled .x-frame-br,.x-nbr .x-btn-default-small-disabled .x-frame-tc,.x-nbr .x-btn-default-small-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-small-disabled-corners.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-ml,.x-nbr .x-btn-default-small-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-small-disabled-sides.gif')}.x-nbr .x-btn-default-small-disabled .x-frame-mc{background-color:#e7e7e7;background-image:url('../themes/images/partkeepr/btn/btn-default-small-disabled-bg.gif')}.x-nlg .x-btn-default-small{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-small-bg.gif')}.x-nlg .x-btn-default-small-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-small-over-bg.gif')}.x-nlg .x-btn-default-small-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-small-focus-bg.gif')}.x-nlg .x-btn-default-small-menu-active,.x-nlg .x-btn-default-small-pressed{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-small-pressed-bg.gif')}.x-nlg .x-btn-default-small-disabled{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-small-disabled-bg.gif')}.x-btn-default-medium{border-color:#b9b9b9}.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:#cbcbcb;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-medium-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-bg.gif');background-color:#cbcbcb}.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-position:1100303px 1000303px}.x-nbr .x-btn-default-medium-tl,.x-nbr .x-btn-default-medium-bl,.x-nbr .x-btn-default-medium-tr,.x-nbr .x-btn-default-medium-br,.x-nbr .x-btn-default-medium-tc,.x-nbr .x-btn-default-medium-bc,.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-corners.gif')}.x-nbr .x-btn-default-medium-ml,.x-nbr .x-btn-default-medium-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-sides.gif');background-position:0 0}.x-nbr .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 .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a,.x-btn-default-medium-icon .x-btn-inner,.x-btn-default-medium-noicon button,.x-btn-default-medium-noicon a,.x-btn-default-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-medium-icon button,.x-btn-default-medium-icon a{padding:0}.x-btn-default-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-medium-icon-text-left button,.x-btn-default-medium-icon-text-left a{height:24px}.x-btn-default-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-medium-icon-text-right button,.x-btn-default-medium-icon-text-right a{height:24px}.x-btn-default-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px !important}.x-btn-default-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-medium-icon-text-right .x-btn-icon{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{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-top .x-btn-icon{width:24px}.x-btn-default-medium-icon-text-bottom .x-btn-inner{padding-bottom:28px}.x-btn-default-medium-icon-text-bottom .x-btn-icon{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-medium-over{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-medium-focus{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-medium-menu-active,.x-btn-default-medium-pressed{border-color:#b5abab;background-image:none;background-color:#bebebe;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-medium-disabled{border-color:#d2d2d2;background-image:none;background-color:#e7e7e7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e7e7), color-stop(48%, #e1e1e1), color-stop(52%, #cacaca), color-stop(100%, #cfcfcf));background-image:-webkit-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-moz-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-o-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf)}.x-btn-default-medium-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-medium-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-medium-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-medium-over .x-frame-tl,.x-nbr .x-btn-default-medium-over .x-frame-bl,.x-nbr .x-btn-default-medium-over .x-frame-tr,.x-nbr .x-btn-default-medium-over .x-frame-br,.x-nbr .x-btn-default-medium-over .x-frame-tc,.x-nbr .x-btn-default-medium-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-over-corners.gif')}.x-nbr .x-btn-default-medium-over .x-frame-ml,.x-nbr .x-btn-default-medium-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-over-sides.gif')}.x-nbr .x-btn-default-medium-over .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-over-bg.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-tl,.x-nbr .x-btn-default-medium-focus .x-frame-bl,.x-nbr .x-btn-default-medium-focus .x-frame-tr,.x-nbr .x-btn-default-medium-focus .x-frame-br,.x-nbr .x-btn-default-medium-focus .x-frame-tc,.x-nbr .x-btn-default-medium-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-focus-corners.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-ml,.x-nbr .x-btn-default-medium-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-focus-sides.gif')}.x-nbr .x-btn-default-medium-focus .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-focus-bg.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-medium-pressed .x-frame-br,.x-nbr .x-btn-default-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-medium-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-pressed-corners.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-medium-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-pressed-sides.gif')}.x-nbr .x-btn-default-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-medium-pressed .x-frame-mc{background-color:#bebebe;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-pressed-bg.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-medium-disabled .x-frame-br,.x-nbr .x-btn-default-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-medium-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-disabled-corners.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-medium-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-medium-disabled-sides.gif')}.x-nbr .x-btn-default-medium-disabled .x-frame-mc{background-color:#e7e7e7;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-disabled-bg.gif')}.x-nlg .x-btn-default-medium{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-bg.gif')}.x-nlg .x-btn-default-medium-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-over-bg.gif')}.x-nlg .x-btn-default-medium-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-focus-bg.gif')}.x-nlg .x-btn-default-medium-menu-active,.x-nlg .x-btn-default-medium-pressed{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-pressed-bg.gif')}.x-nlg .x-btn-default-medium-disabled{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-medium-disabled-bg.gif')}.x-btn-default-large{border-color:#b9b9b9}.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:#cbcbcb;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-large-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-large-bg.gif');background-color:#cbcbcb}.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-position:1100303px 1000303px}.x-nbr .x-btn-default-large-tl,.x-nbr .x-btn-default-large-bl,.x-nbr .x-btn-default-large-tr,.x-nbr .x-btn-default-large-br,.x-nbr .x-btn-default-large-tc,.x-nbr .x-btn-default-large-bc,.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-large-corners.gif')}.x-nbr .x-btn-default-large-ml,.x-nbr .x-btn-default-large-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-large-sides.gif');background-position:0 0}.x-nbr .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 .x-btn-inner{font-size:11px;font-weight:normal;font-family:tahoma,arial,verdana,sans-serif;color:#333;background-repeat:no-repeat;padding:0 3px}.x-btn-default-large-icon button,.x-btn-default-large-icon a,.x-btn-default-large-icon .x-btn-inner,.x-btn-default-large-noicon button,.x-btn-default-large-noicon a,.x-btn-default-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-large-icon button,.x-btn-default-large-icon a{padding:0}.x-btn-default-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-large-icon-text-left button,.x-btn-default-large-icon-text-left a{height:32px}.x-btn-default-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-large-icon-text-right button,.x-btn-default-large-icon-text-right a{height:32px}.x-btn-default-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px !important}.x-btn-default-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-large-icon-text-right .x-btn-icon{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{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-top .x-btn-icon{width:32px}.x-btn-default-large-icon-text-bottom .x-btn-inner{padding-bottom:36px}.x-btn-default-large-icon-text-bottom .x-btn-icon{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-large-over{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-large-focus{border-color:#cbb8b8;background-image:none;background-color:#efd5d8;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-large-menu-active,.x-btn-default-large-pressed{border-color:#b5abab;background-image:none;background-color:#bebebe;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-large-disabled{border-color:#d2d2d2;background-image:none;background-color:#e7e7e7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e7e7), color-stop(48%, #e1e1e1), color-stop(52%, #cacaca), color-stop(100%, #cfcfcf));background-image:-webkit-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-moz-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:-o-linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf);background-image:linear-gradient(top, #e7e7e7,#e1e1e1 48%,#cacaca 52%,#cfcfcf)}.x-btn-default-large-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-large-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-large-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-large-over .x-frame-tl,.x-nbr .x-btn-default-large-over .x-frame-bl,.x-nbr .x-btn-default-large-over .x-frame-tr,.x-nbr .x-btn-default-large-over .x-frame-br,.x-nbr .x-btn-default-large-over .x-frame-tc,.x-nbr .x-btn-default-large-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-large-over-corners.gif')}.x-nbr .x-btn-default-large-over .x-frame-ml,.x-nbr .x-btn-default-large-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-large-over-sides.gif')}.x-nbr .x-btn-default-large-over .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-large-over-bg.gif')}.x-nbr .x-btn-default-large-focus .x-frame-tl,.x-nbr .x-btn-default-large-focus .x-frame-bl,.x-nbr .x-btn-default-large-focus .x-frame-tr,.x-nbr .x-btn-default-large-focus .x-frame-br,.x-nbr .x-btn-default-large-focus .x-frame-tc,.x-nbr .x-btn-default-large-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-large-focus-corners.gif')}.x-nbr .x-btn-default-large-focus .x-frame-ml,.x-nbr .x-btn-default-large-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-large-focus-sides.gif')}.x-nbr .x-btn-default-large-focus .x-frame-mc{background-color:#efd5d8;background-image:url('../themes/images/partkeepr/btn/btn-default-large-focus-bg.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-large-menu-active .x-frame-br,.x-nbr .x-btn-default-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-large-pressed .x-frame-tl,.x-nbr .x-btn-default-large-pressed .x-frame-bl,.x-nbr .x-btn-default-large-pressed .x-frame-tr,.x-nbr .x-btn-default-large-pressed .x-frame-br,.x-nbr .x-btn-default-large-pressed .x-frame-tc,.x-nbr .x-btn-default-large-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-large-pressed-corners.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-large-pressed .x-frame-ml,.x-nbr .x-btn-default-large-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-large-pressed-sides.gif')}.x-nbr .x-btn-default-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-large-pressed .x-frame-mc{background-color:#bebebe;background-image:url('../themes/images/partkeepr/btn/btn-default-large-pressed-bg.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-tl,.x-nbr .x-btn-default-large-disabled .x-frame-bl,.x-nbr .x-btn-default-large-disabled .x-frame-tr,.x-nbr .x-btn-default-large-disabled .x-frame-br,.x-nbr .x-btn-default-large-disabled .x-frame-tc,.x-nbr .x-btn-default-large-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-large-disabled-corners.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-ml,.x-nbr .x-btn-default-large-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-large-disabled-sides.gif')}.x-nbr .x-btn-default-large-disabled .x-frame-mc{background-color:#e7e7e7;background-image:url('../themes/images/partkeepr/btn/btn-default-large-disabled-bg.gif')}.x-nlg .x-btn-default-large{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-large-bg.gif')}.x-nlg .x-btn-default-large-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-large-over-bg.gif')}.x-nlg .x-btn-default-large-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-large-focus-bg.gif')}.x-nlg .x-btn-default-large-menu-active,.x-nlg .x-btn-default-large-pressed{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-large-pressed-bg.gif')}.x-nlg .x-btn-default-large-disabled{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-large-disabled-bg.gif')}.x-btn-default-toolbar-small{border-color:#b9b9b9}.x-btn-default-toolbar-small{-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-image:none;background-color:#c7c7c7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-toolbar-small-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-bg.gif');background-color:#c7c7c7}.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;background-position:1100505px 1000505px}.x-nbr .x-btn-default-toolbar-small-tl,.x-nbr .x-btn-default-toolbar-small-bl,.x-nbr .x-btn-default-toolbar-small-tr,.x-nbr .x-btn-default-toolbar-small-br,.x-nbr .x-btn-default-toolbar-small-tc,.x-nbr .x-btn-default-toolbar-small-bc,.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-corners.gif')}.x-nbr .x-btn-default-toolbar-small-ml,.x-nbr .x-btn-default-toolbar-small-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-sides.gif');background-position:0 0}.x-nbr .x-btn-default-toolbar-small-mc{padding:0px 0px 0px 0px}.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;background-repeat:no-repeat;padding:0 4px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a,.x-btn-default-toolbar-small-icon .x-btn-inner,.x-btn-default-toolbar-small-noicon button,.x-btn-default-toolbar-small-noicon a,.x-btn-default-toolbar-small-noicon .x-btn-inner{height:16px;line-height:16px}.x-btn-default-toolbar-small-icon button,.x-btn-default-toolbar-small-icon a{padding:0}.x-btn-default-toolbar-small-icon .x-btn-inner{width:16px;padding:0}.x-btn-default-toolbar-small-icon .x-btn-icon{width:16px;height:16px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-small-icon-text-left button,.x-btn-default-toolbar-small-icon-text-left a{height:16px}.x-btn-default-toolbar-small-icon-text-left .x-btn-inner{height:16px;line-height:16px;padding-left:20px}.x-btn-default-toolbar-small-icon-text-left .x-btn-icon{width:16px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-small-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-left .x-btn-icon{height:16px}.x-btn-default-toolbar-small-icon-text-right button,.x-btn-default-toolbar-small-icon-text-right a{height:16px}.x-btn-default-toolbar-small-icon-text-right .x-btn-inner{height:16px;line-height:16px;padding-right:20px !important}.x-btn-default-toolbar-small-icon-text-right .x-btn-icon{width:16px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-small-icon-text-right .x-btn-icon{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{width:auto;height:16px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-top .x-btn-icon{width:16px}.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{width:auto;height:16px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-small-icon-text-bottom .x-btn-icon{width:16px}.x-btn-default-toolbar-small-over{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-small-focus{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-small-menu-active,.x-btn-default-toolbar-small-pressed{border-color:#8f8f8f;background-image:none;background-color:#c1c1c1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-toolbar-small-disabled{border-color:transparent;background-image:none;background-color:transparent}.x-btn-default-toolbar-small-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-toolbar-small-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-toolbar-small-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-over .x-frame-br,.x-nbr .x-btn-default-toolbar-small-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-over-corners.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-over-sides.gif')}.x-nbr .x-btn-default-toolbar-small-over .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-over-bg.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-small-focus .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-small-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-small-pressed .x-frame-mc{background-color:#c1c1c1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-small-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-small{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-bg.gif')}.x-nlg .x-btn-default-toolbar-small-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-over-bg.gif')}.x-nlg .x-btn-default-toolbar-small-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/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-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-bg.gif')}.x-btn-default-toolbar-medium{border-color:#b9b9b9}.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-image:none;background-color:#c7c7c7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-toolbar-medium-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-bg.gif');background-color:#c7c7c7}.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;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-medium-tl,.x-nbr .x-btn-default-toolbar-medium-bl,.x-nbr .x-btn-default-toolbar-medium-tr,.x-nbr .x-btn-default-toolbar-medium-br,.x-nbr .x-btn-default-toolbar-medium-tc,.x-nbr .x-btn-default-toolbar-medium-bc,.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-ml,.x-nbr .x-btn-default-toolbar-medium-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-sides.gif');background-position:0 0}.x-nbr .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;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a,.x-btn-default-toolbar-medium-icon .x-btn-inner,.x-btn-default-toolbar-medium-noicon button,.x-btn-default-toolbar-medium-noicon a,.x-btn-default-toolbar-medium-noicon .x-btn-inner{height:24px;line-height:24px}.x-btn-default-toolbar-medium-icon button,.x-btn-default-toolbar-medium-icon a{padding:0}.x-btn-default-toolbar-medium-icon .x-btn-inner{width:24px;padding:0}.x-btn-default-toolbar-medium-icon .x-btn-icon{width:24px;height:24px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-medium-icon-text-left button,.x-btn-default-toolbar-medium-icon-text-left a{height:24px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-inner{height:24px;line-height:24px;padding-left:28px}.x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{width:24px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-left .x-btn-icon{height:24px}.x-btn-default-toolbar-medium-icon-text-right button,.x-btn-default-toolbar-medium-icon-text-right a{height:24px}.x-btn-default-toolbar-medium-icon-text-right .x-btn-inner{height:24px;line-height:24px;padding-right:28px !important}.x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{width:24px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-medium-icon-text-right .x-btn-icon{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{width:auto;height:24px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-top .x-btn-icon{width:24px}.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{width:auto;height:24px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-medium-icon-text-bottom .x-btn-icon{width:24px}.x-btn-default-toolbar-medium-over{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-medium-focus{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-medium-menu-active,.x-btn-default-toolbar-medium-pressed{border-color:#8f8f8f;background-image:none;background-color:#c1c1c1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-toolbar-medium-disabled{border-color:transparent;background-image:none;background-color:transparent}.x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-toolbar-medium-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-over-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-over-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-over .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-focus .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-medium-pressed .x-frame-mc{background-color:#c1c1c1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-medium-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-medium{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-over-bg.gif')}.x-nlg .x-btn-default-toolbar-medium-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/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-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-bg.gif')}.x-btn-default-toolbar-large{border-color:#b9b9b9}.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-image:none;background-color:#c7c7c7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-btn-default-toolbar-large-mc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-bg.gif');background-color:#c7c7c7}.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;background-position:1100303px 1000303px}.x-nbr .x-btn-default-toolbar-large-tl,.x-nbr .x-btn-default-toolbar-large-bl,.x-nbr .x-btn-default-toolbar-large-tr,.x-nbr .x-btn-default-toolbar-large-br,.x-nbr .x-btn-default-toolbar-large-tc,.x-nbr .x-btn-default-toolbar-large-bc,.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-corners.gif')}.x-nbr .x-btn-default-toolbar-large-ml,.x-nbr .x-btn-default-toolbar-large-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-sides.gif');background-position:0 0}.x-nbr .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;background-repeat:no-repeat;padding:0 3px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a,.x-btn-default-toolbar-large-icon .x-btn-inner,.x-btn-default-toolbar-large-noicon button,.x-btn-default-toolbar-large-noicon a,.x-btn-default-toolbar-large-noicon .x-btn-inner{height:32px;line-height:32px}.x-btn-default-toolbar-large-icon button,.x-btn-default-toolbar-large-icon a{padding:0}.x-btn-default-toolbar-large-icon .x-btn-inner{width:32px;padding:0}.x-btn-default-toolbar-large-icon .x-btn-icon{width:32px;height:32px;top:0;left:0;bottom:0;right:0}.x-btn-default-toolbar-large-icon-text-left button,.x-btn-default-toolbar-large-icon-text-left a{height:32px}.x-btn-default-toolbar-large-icon-text-left .x-btn-inner{height:32px;line-height:32px;padding-left:36px}.x-btn-default-toolbar-large-icon-text-left .x-btn-icon{width:32px;height:auto;top:0;left:0;bottom:0;right:auto}.x-ie6 .x-btn-default-toolbar-large-icon-text-left .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-left .x-btn-icon{height:32px}.x-btn-default-toolbar-large-icon-text-right button,.x-btn-default-toolbar-large-icon-text-right a{height:32px}.x-btn-default-toolbar-large-icon-text-right .x-btn-inner{height:32px;line-height:32px;padding-right:36px !important}.x-btn-default-toolbar-large-icon-text-right .x-btn-icon{width:32px;height:auto;top:0;left:auto;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-right .x-btn-icon,.x-quirks .x-btn-default-toolbar-large-icon-text-right .x-btn-icon{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{width:auto;height:32px;top:0;left:0;bottom:auto;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-top .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-top .x-btn-icon{width:32px}.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{width:auto;height:32px;top:auto;left:0;bottom:0;right:0}.x-ie6 .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon,.x-quirks .x-ie .x-btn-default-toolbar-large-icon-text-bottom .x-btn-icon{width:32px}.x-btn-default-toolbar-large-over{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-large-focus{border-color:#999;background-image:none;background-color:#eccfd1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #fafafa), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #fafafa,#c7c7c7);background-image:-moz-linear-gradient(top, #fafafa,#c7c7c7);background-image:-o-linear-gradient(top, #fafafa,#c7c7c7);background-image:linear-gradient(top, #fafafa,#c7c7c7)}.x-btn-default-toolbar-large-menu-active,.x-btn-default-toolbar-large-pressed{border-color:#8f8f8f;background-image:none;background-color:#c1c1c1;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c7c7c7), color-stop(100%, #cccccc));background-image:-webkit-linear-gradient(top, #c7c7c7,#cccccc);background-image:-moz-linear-gradient(top, #c7c7c7,#cccccc);background-image:-o-linear-gradient(top, #c7c7c7,#cccccc);background-image:linear-gradient(top, #c7c7c7,#cccccc)}.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background-color:transparent}.x-btn-default-toolbar-large-disabled .x-btn-inner{color:#333 !important}.x-ie .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#595959 !important}.x-ie6 .x-btn-default-toolbar-large-disabled .x-btn-inner{color:#8c8c8c !important}.x-nbr .x-btn-default-toolbar-large-over .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-over .x-frame-br,.x-nbr .x-btn-default-toolbar-large-over .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-over .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-over-corners.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-over .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-over-sides.gif')}.x-nbr .x-btn-default-toolbar-large-over .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-over-bg.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-br,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-focus-corners.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-focus-sides.gif')}.x-nbr .x-btn-default-toolbar-large-focus .x-frame-mc{background-color:#eccfd1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-focus-bg.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-br,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-bc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-br,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-corners.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mr,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-sides.gif')}.x-nbr .x-btn-default-toolbar-large-menu-active .x-frame-mc,.x-nbr .x-btn-default-toolbar-large-pressed .x-frame-mc{background-color:#c1c1c1;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bl,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tr,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-br,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-tc,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-corners.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-ml,.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-sides.gif')}.x-nbr .x-btn-default-toolbar-large-disabled .x-frame-mc{background-color:transparent}.x-nlg .x-btn-default-toolbar-large{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-bg.gif')}.x-nlg .x-btn-default-toolbar-large-over{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-over-bg.gif')}.x-nlg .x-btn-default-toolbar-large-focus{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/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-repeat:repeat-x;background-image:url('../themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-bg.gif')}.x-btn-default-toolbar-small-disabled,.x-btn-default-toolbar-medium-disabled,.x-btn-default-toolbar-large-disabled{border-color:transparent;background-image:none;background:transparent}.x-btn-group{position:relative;overflow:hidden}.x-btn-group-body{position:relative;zoom:1;padding:0 1px}.x-btn-group-body .x-table-layout-cell{vertical-align:top}.x-btn-group-header-text{white-space:nowrap}.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-nlg .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:0px;-moz-border-radius:0px;-ms-border-radius:0px;-o-border-radius:0px;border-radius:0px;background-color:transparent;background-position:1000202px 1000202px}.x-nbr .x-btn-group-default-framed-tl,.x-nbr .x-btn-group-default-framed-bl,.x-nbr .x-btn-group-default-framed-tr,.x-nbr .x-btn-group-default-framed-br,.x-nbr .x-btn-group-default-framed-tc,.x-nbr .x-btn-group-default-framed-bc,.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn-group/btn-group-default-framed-corners.gif')}.x-nbr .x-btn-group-default-framed-ml,.x-nbr .x-btn-group-default-framed-mr{zoom:1;background-image:url('../themes/images/partkeepr/btn-group/btn-group-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-btn-group-default-framed-mc{padding:0px 0px 0px 0px}.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{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}.x-btn-group-header-default-framed{margin:2px 2px 0 2px}.x-btn-group-header-body-default-framed{padding:1px 0;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-text-default-framed{font:normal 11px tahoma,arial,verdana,sans-serif;color:#3e6aaa}.x-datepicker{border:1px solid #363232;background-color:#fff;position:relative}.x-datepicker a{-moz-outline:0 none;outline:0 none;color:#4c3635;text-decoration:none;border-width:0}.x-datepicker-inner,.x-datepicker-inner td,.x-datepicker-inner th{border-collapse:separate}.x-datepicker-header{position:relative;height:26px;background-image:none;background-color:#404040;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #484747), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #484747,#363636);background-image:-moz-linear-gradient(top, #484747,#363636);background-image:-o-linear-gradient(top, #484747,#363636);background-image:linear-gradient(top, #484747,#363636)}.x-datepicker-prev,.x-datepicker-next{position:absolute;top:5px;width:18px}.x-datepicker-prev a,.x-datepicker-next a{display:block;width:16px;height:16px;background-position:top;background-repeat:no-repeat;cursor:pointer;text-decoration:none !important;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=70);opacity:0.7}.x-datepicker-prev a:hover,.x-datepicker-next a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.x-datepicker-next{right:5px}.x-datepicker-next a{background-image:url('../themes/images/partkeepr/shared/right-btn.gif')}.x-datepicker-prev{left:5px}.x-datepicker-prev a{background-image:url('../themes/images/partkeepr/shared/left-btn.gif')}.x-item-disabled .x-datepicker-prev a:hover,.x-item-disabled .x-datepicker-next a:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}.x-datepicker-month{padding-top:3px}.x-datepicker-month .x-btn,.x-datepicker-month button,.x-datepicker-month .x-btn-tc,.x-datepicker-month .x-btn-tl,.x-datepicker-month .x-btn-tr,.x-datepicker-month .x-btn-mc,.x-datepicker-month .x-btn-ml,.x-datepicker-month .x-btn-mr,.x-datepicker-month .x-btn-bc,.x-datepicker-month .x-btn-bl,.x-datepicker-month .x-btn-br{background:transparent !important;border-width:0 !important}.x-datepicker-month span{color:#fff !important}.x-datepicker-month .x-btn-split-right{background-image:url('../themes/images/partkeepr/button/s-arrow-light.gif');padding-right:12px}.x-datepicker-next{text-align:right}.x-datepicker-month{text-align:center}.x-datepicker-month button{color:#fff !important}table.x-datepicker-inner{width:100%;table-layout:fixed}table.x-datepicker-inner th{width:25px;height:19px;padding:0;color:#fff;font:normal 10px tahoma,arial,verdana,sans-serif;text-align:right;border-bottom:1px solid #d1b7b7;border-collapse:separate;background-image:none;background-color:#e5d6d6;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2aaad3), color-stop(100%, #2067a3));background-image:-webkit-linear-gradient(top, #2aaad3,#2067a3);background-image:-moz-linear-gradient(top, #2aaad3,#2067a3);background-image:-o-linear-gradient(top, #2aaad3,#2067a3);background-image:linear-gradient(top, #2aaad3,#2067a3);cursor:default}table.x-datepicker-inner th span{display:block;padding-right:7px}table.x-datepicker-inner tr{height:20px}table.x-datepicker-inner td{border:1px solid;height:17px;border-color:#fff;text-align:right;padding:0}table.x-datepicker-inner a{padding-right:4px;display:block;zoom:1;font:normal 11px tahoma,arial,verdana,sans-serif;color:#000;text-decoration:none;text-align:right}table.x-datepicker-inner .x-datepicker-active{cursor:pointer;color:black}table.x-datepicker-inner .x-datepicker-selected a{background:repeat-x left top;background-color:#2aaad3;border:1px solid #2067a3}table.x-datepicker-inner .x-datepicker-selected span{font-weight:bold}table.x-datepicker-inner .x-datepicker-today a{border:1px solid;border-color:darkred}table.x-datepicker-inner .x-datepicker-prevday a,table.x-datepicker-inner .x-datepicker-nextday a{text-decoration:none !important;color:#aaa}table.x-datepicker-inner a:hover,table.x-datepicker-inner .x-datepicker-disabled a:hover{text-decoration:none !important;color:#000;background-color:#2aaad3}table.x-datepicker-inner .x-datepicker-disabled a{cursor:default;background-color:#eee;color:#bbb}.x-datepicker-footer,.x-monthpicker-buttons{position:relative;border-top:1px solid #d1b7b7;background-image:none;background-color:#e5d6d6;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dadada), color-stop(49%, #d1d1d1), color-stop(51%, #cbcbcb), color-stop(100%, #cdcdcd));background-image:-webkit-linear-gradient(top, #dadada,#d1d1d1 49%,#cbcbcb 51%,#cdcdcd);background-image:-moz-linear-gradient(top, #dadada,#d1d1d1 49%,#cbcbcb 51%,#cdcdcd);background-image:-o-linear-gradient(top, #dadada,#d1d1d1 49%,#cbcbcb 51%,#cdcdcd);background-image:linear-gradient(top, #dadada,#d1d1d1 49%,#cbcbcb 51%,#cdcdcd);text-align:center}.x-datepicker-footer .x-btn,.x-monthpicker-buttons .x-btn{position:relative;margin:4px}.x-item-disabled .x-datepicker-inner a:hover{background:none}.x-datepicker .x-monthpicker{position:absolute;left:0;top:0}.x-monthpicker{border:1px solid #363232;background-color:#fff}.x-monthpicker-months,.x-monthpicker-years{float:left;height:167px;width:88px}.x-monthpicker-item{float:left;margin:4px 0 5px 0;font:normal 11px tahoma,arial,verdana,sans-serif;text-align:center;vertical-align:middle;height:18px;width:43px;border:0 none}.x-monthpicker-item a{display:block;margin:0 5px;text-decoration:none;color:#4c3635;border:1px solid #fff;line-height:17px}.x-monthpicker-item a:hover{background-color:#2aaad3}.x-monthpicker-item a.x-monthpicker-selected{background-color:#e5d6d6;border:1px solid #2067a3}.x-monthpicker-months{border-right:1px solid #363232;width:87px}.x-monthpicker-years .x-monthpicker-item{width:44px}.x-monthpicker-yearnav{height:28px}.x-monthpicker-yearnav button{background-image:url('../themes/images/partkeepr/tools/tool-sprites.gif');height:15px;width:15px;padding:0;margin:6px 12px 5px 15px;border:0;outline:0 none}.x-monthpicker-yearnav button::-moz-focus-inner{border:0;padding:0}.x-monthpicker-yearnav-next{background-position:0 -120px}.x-monthpicker-yearnav-next-over{cursor:pointer;cursor:hand;background-position:-15px -120px}.x-monthpicker-yearnav-prev{background-position:0 -105px}.x-monthpicker-yearnav-prev-over{cursor:pointer;cursor:hand;background-position:-15px -105px}.x-monthpicker-small .x-monthpicker-item{margin:2px 0 2px 0}.x-monthpicker-small .x-monthpicker-yearnav{height:23px}.x-monthpicker-small .x-monthpicker-months,.x-monthpicker-small .x-monthpicker-years{height:136px}.x-quirks .x-ie7 .x-monthpicker-buttons .x-btn,.x-quirks .x-ie8 .x-monthpicker-buttons .x-btn{margin-top:2px}.x-quirks .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-ie6 .x-monthpicker-small .x-monthpicker-yearnav button{margin-top:3px;margin-bottom:3px}.x-nlg .x-datepicker-header{background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/datepicker/datepicker-footer-bg.gif');background-repeat:repeat-x;background-position:top left}.x-color-picker{width:144px;height:90px;cursor:pointer}.x-color-picker a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer}.x-color-picker a:hover,.x-color-picker a.x-color-picker-selected{border-color:#8bb8f3;background-color:#deecfd}.x-color-picker em{display:block;border:1px solid #aca899}.x-color-picker em span{cursor:pointer;display:block;height:10px;width:10px;line-height:10px}.x-menu-body{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;background:#f0f0f0 !important;padding:2px}.x-menu-item .x-form-text{user-select:text;-webkit-user-select:text;-o-user-select:text;-ie-user-select:text;-moz-user-select:text;-ie-user-select:text}.x-menu-icon-separator{position:absolute;top:0px;left:27px;z-index:0;border-left:solid 1px #e0e0e0;background-color:#fff;width:2px;overflow:hidden}.x-menu-plain .x-menu-icon-separator{display:none}.x-menu-focus{display:block;position:absolute;top:-10px;left:-10px;width:0px;height:0px}.x-menu-item{white-space:nowrap;overflow:hidden;z-index:1}.x-menu-item-cmp{margin-bottom:1px}.x-menu-item-link{display:block;margin:1px;padding:6px 2px 3px 32px;text-decoration:none !important;line-height:16px;cursor:default}.x-opera .x-menu-item-link{position:relative}.x-menu-item-icon{width:16px;height:16px;position:absolute;top:5px;left:4px;background:no-repeat center center}.x-menu-item-text{font-size:11px;color:#222}.x-menu-item-checked .x-menu-item-icon{background-image:url('../themes/images/partkeepr/menu/checked.gif')}.x-menu-item-checked .x-menu-group-icon{background-image:url('../themes/images/partkeepr/menu/group-checked.gif')}.x-menu-item-unchecked .x-menu-item-icon{background-image:url('../themes/images/partkeepr/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:#fff;margin:2px 0px;overflow:hidden}.x-menu-item-arrow{position:absolute;width:12px;height:9px;top:9px;right:0px;background:no-repeat center center;background-image:url('../themes/images/partkeepr/menu/menu-parent.gif')}.x-menu-item-indent{margin-left:31px}.x-menu-item-active{cursor:pointer}.x-menu-item-active .x-menu-item-link{background-image:none;background-color:#eff1f3;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f8f9fa), color-stop(100%, #e3e7ea));background-image:-webkit-linear-gradient(top, #f8f9fa,#e3e7ea);background-image:-moz-linear-gradient(top, #f8f9fa,#e3e7ea);background-image:-o-linear-gradient(top, #f8f9fa,#e3e7ea);background-image:linear-gradient(top, #f8f9fa,#e3e7ea);margin:0px;border:1px solid #ceb1b1;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.x-menu-item-disabled{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5}.x-ie .x-menu-item-disabled .x-menu-item-icon{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5}.x-ie .x-menu-item-disabled .x-menu-item-text{background-color:transparent}.x-strict .x-ie7m .x-ie .x-menu-icon-separator{width:1px}.x-strict .x-ie7m .x-ie .x-menu-item-separator{height:1px}.x-ie6 .x-menu-item-link,.x-ie7 .x-menu-item-link,.x-quirks .x-ie8 .x-menu-item-link{padding-bottom:2px}.x-nlg .x-menu-item-active .x-menu-item-link{background:#eff1f3 repeat-x left top;background-image:url('../themes/images/partkeepr/menu/menu-item-active-bg.gif')}.x-menu-date-item{border-color:#99BBE8}.x-panel .x-grid-body{background:#fff;border-color:#aaa;border-style:solid;border-width:1px;border-top-color:#c5c5c5}.x-panel .x-grid-header-ct-hidden{visibility:hidden}.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma, arial, helvetica, sans-serif}.x-grid-header-hidden .x-grid-body{border-top-color:#aaa !important}.x-grid-view{overflow:hidden;position:relative}.x-grid-table{table-layout:fixed;border-collapse:separate}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-grid-row .x-grid-table{border-collapse:collapse}.x-grid-locked .x-grid-inner-locked{border-width:0 1px 0 0 !important;border-style:solid}.x-grid-header-ct{cursor:default;zoom:1;padding:0;border:1px solid #aaa;border-bottom-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 0!important}.x-column-header{padding:0;position:absolute;overflow:hidden;border-right:1px solid #c5c5c5;border-left:0 none;border-top:0 none;border-bottom:0 none;text-shadow:0 1px 0 rgba(255,255,255,0.3);color:null;font:normal 11px 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-header{padding:0;border-left-width:0}.x-group-sub-header{background:transparent;border-top:1px solid #c5c5c5;border-left-width:0}.x-column-header-inner{zoom:1;position:relative;white-space:nowrap;line-height:15px;padding:3px 6px 4px}.x-column-header-inner .x-column-header-text{white-space:nowrap}.x-column-header-over,.x-column-header-sort-ASC,.x-column-header-sort-DESC{border-left-color:#b9b9b9;border-right-color:#b9b9b9;background-image:none;background-color:#2373af;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eff1f3), color-stop(100%, #b0bcc5));background-image:-webkit-linear-gradient(top, #eff1f3,#b0bcc5);background-image:-moz-linear-gradient(top, #eff1f3,#b0bcc5);background-image:-o-linear-gradient(top, #eff1f3,#b0bcc5);background-image:linear-gradient(top, #eff1f3,#b0bcc5)}.x-nlg .x-grid-header-ct,.x-nlg .x-column-header{background:repeat-x 0 top;background-image:url('../themes/images/partkeepr/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:#ebf3fd repeat-x 0 top;background-image:url('../themes/images/partkeepr/grid/column-header-over-bg.gif')}.x-column-header-trigger{display:none;height:100%;width:17px;background:no-repeat left center;background-color:#c3daf9;background-image:url('../themes/images/partkeepr/grid/grid3-hd-btn.gif');position:absolute;right:0;top:0;z-index:2;cursor:pointer}.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-right .x-column-header-text{padding-right:0.5ex;margin-right:6px}.x-column-header-align-center{text-align:center}.x-column-header-align-left{text-align:left}.x-column-header-sort-ASC .x-column-header-text{padding-right:16px;background:no-repeat right 2px;background-image:url('../themes/images/partkeepr/grid/sort_asc.png')}.x-column-header-sort-DESC .x-column-header-text{padding-right:16px;background:no-repeat right 2px;background-image:url('../themes/images/partkeepr/grid/sort_desc.png')}.x-grid-row{vertical-align:top}.x-grid-row .x-grid-cell{color:null;font:normal 11px/15px tahoma,arial,verdana,sans-serif;background-color:#fff;border-color:#ededed;border-style:solid;border-top-color:#fafafa;border-width:0}.x-grid-with-row-lines .x-grid-cell{border-width:1px 0}.x-grid-rowwrap-div{border-width:1px 0;border-color:#ededed;border-style:solid;border-top-color:#fafafa;overflow:hidden}.x-grid-row-alt .x-grid-cell,.x-grid-row-alt .x-grid-rowwrap-div{background-color:#fff}.x-grid-row-over .x-grid-cell,.x-grid-row-over .x-grid-rowwrap-div{border-color:#ddd;background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ececec), color-stop(100%, #d5d5d5));background-image:-webkit-linear-gradient(top, #ececec,#d5d5d5);background-image:-moz-linear-gradient(top, #ececec,#d5d5d5);background-image:-o-linear-gradient(top, #ececec,#d5d5d5);background-image:linear-gradient(top, #ececec,#d5d5d5);background-color:#ececec}.x-grid-row-focused .x-grid-cell,.x-grid-row-focused .x-grid-rowwrap-div{border-color:#ddd;background-color:#efefef}.x-grid-row-selected .x-grid-cell,.x-grid-row-selected .x-grid-rowwrap-div{border-style:dotted;border-color:#bbb3b2;color:white;background-color:#2aaad3 !important;background-image:none;background-color:#2aaad3;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2aaad3), color-stop(100%, #2067a3));background-image:-webkit-linear-gradient(top, #2aaad3,#2067a3);background-image:-moz-linear-gradient(top, #2aaad3,#2067a3);background-image:-o-linear-gradient(top, #2aaad3,#2067a3);background-image:linear-gradient(top, #2aaad3,#2067a3)}.x-grid-rowwrap-div .x-grid-cell,.x-grid-rowwrap-div .x-grid-cell-inner{border-width:0;background:transparent}.x-grid-row-body-hidden{display:none}.x-grid-rowbody{font:normal 11px/13px tahoma,arial,verdana,sans-serif;padding:4px}.x-grid-rowbody p{margin:5px 5px 10px 5px}.x-grid-cell{overflow:hidden}.x-grid-cell-inner{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;padding:2px 6px 3px;white-space:nowrap}.x-grid-with-row-lines .x-grid-cell-inner{line-height:13px;padding-bottom:4px}.x-action-col-cell .x-grid-cell-inner{line-height:0;padding:2px}.x-action-col-cell .x-item-disabled{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30);opacity:0.3}.x-grid-with-row-lines .x-action-col-cell .x-grid-cell-inner{padding-top:1px}.x-grid-row .x-grid-cell-special{padding:0;border-right:1px solid #c1c1c1;background-image:none;background-color:#f6f6f6;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #f6f6f6), color-stop(100%, #e9e9e9));background-image:-webkit-linear-gradient(left, #f6f6f6,#e9e9e9);background-image:-moz-linear-gradient(left, #f6f6f6,#e9e9e9);background-image:-o-linear-gradient(left, #f6f6f6,#e9e9e9);background-image:linear-gradient(left, #f6f6f6,#e9e9e9)}.x-grid-row .x-grid-cell-row-checker{vertical-align:middle}.x-ie6 .x-grid-header-row,.x-ie7 .x-grid-header-row,.x-quirks .x-ie8 .x-grid-header-row{position:absolute}.x-grid-row-selected .x-grid-cell-special{border-right:1px solid #d0b1b1;background-image:none;background-color:#2aaad3;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #2aaad3), color-stop(100%, #2699be));background-image:-webkit-linear-gradient(left, #2aaad3,#2699be);background-image:-moz-linear-gradient(left, #2aaad3,#2699be);background-image:-o-linear-gradient(left, #2aaad3,#2699be);background-image:linear-gradient(left, #2aaad3,#2699be)}.x-grid-dirty-cell{background-image:url('../themes/images/partkeepr/grid/dirty.gif');background-position:0 0;background-repeat:no-repeat}.x-grid-cell-selected{background-color:#B8CFEE !important}.x-nlg .x-grid-cell-special{background-repeat:repeat-y;background-position:top right}.x-nlg .x-grid-row .x-grid-cell-special,.x-nlg .x-grid-row-over .x-grid-cell-special{background-image:url('../themes/images/partkeepr/grid/cell-special-bg.gif')}.x-nlg .x-grid-row-focused .x-grid-cell-special,.x-nlg .x-grid-row-selected .x-grid-cell-special{background-image:url('../themes/images/partkeepr/grid/cell-special-selected-bg.gif')}.x-grid-with-col-lines .x-grid-cell{padding-right:0;border-right:1px solid #c1c1c1}.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{padding-left:12px;background-image:url('../themes/images/partkeepr/grid/property-cell-bg.gif');background-repeat:no-repeat;background-position:-16px 2px}.x-grid-with-row-lines.x-property-grid .x-grid-row .x-grid-property-name .x-grid-cell-inner,.x-grid-with-row-lines.x-property-grid .x-grid-row-over .x-grid-property-name .x-grid-cell-inner{background-position:-16px 1px}.x-quirks .x-ie .x-grid-row .x-grid-property-name .x-grid-cell-inner{background-position:-16px 2px}.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-grid-row-body-hidden{display:none}.x-grid-group-collapsed{display:none}.x-grid-view .x-grid-td-expander{vertical-align:top}.x-grid-td-expander{background:repeat-y right transparent}.x-grid-view .x-grid-td-expander .x-grid-cell-inner{padding:0 !important}.x-grid-row-expander{background-image:url('../themes/images/partkeepr/grid/group-collapse.gif');background-color:transparent;width:9px;height:13px;margin-left:3px;background-repeat:no-repeat;background-position:0 -2px}.x-grid-row-collapsed .x-grid-row-expander{background-image:url('../themes/images/partkeepr/grid/group-expand.gif')}.x-grid-resize-marker{position:absolute;z-index:5;top:0;width:1px;background-color:#0f0f0f}.col-move-top,.col-move-bottom{width:9px;height:9px;position:absolute;top:0;line-height:0;font-size:0;overflow:hidden;z-index:20000;background:no-repeat left top transparent}.col-move-top{background-image:url('../themes/images/partkeepr/grid/col-move-top.gif')}.col-move-bottom{background-image:url('../themes/images/partkeepr/grid/col-move-bottom.gif')}.x-tbar-page-number{width:30px}.x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1}.x-grid-group-hd{padding-top:6px}.x-grid-group-hd .x-grid-cell-inner{padding:10px 4px 4px 4px;background:#fff;border-width:0 0 2px 0;border-style:solid;border-color:#b7abab;cursor:pointer}.x-grid-group-hd-collapsible .x-grid-group-title{background:transparent no-repeat 0 -1px;background-image:url('../themes/images/partkeepr/grid/group-collapse.gif');padding:0 0 0 14px}.x-grid-group-title{color:#5c5c5c;font:bold 11px tahoma,arial,verdana,sans-serif}.x-grid-group-hd-collapsed .x-grid-group-title{background-image:url('../themes/images/partkeepr/grid/group-expand.gif')}.x-grid-group-collapsed .x-grid-group-body{display:none}.x-grid-group-collapsed .x-grid-group-title{background-image:url('../themes/images/partkeepr/grid/group-expand.gif')}.x-group-by-icon{background-image:url('../themes/images/partkeepr/grid/group-by.gif')}.x-show-groups-icon{background-image:url('../themes/images/partkeepr/grid/group-by.gif')}.x-column-header-checkbox .x-column-header-inner{padding:0}.x-grid-cell-special .x-grid-cell-inner{padding-left:4px;padding-right:4px}.x-grid-row-checker,.x-column-header-checkbox .x-column-header-text{height:14px;width:14px;line-height:0;background-image:url('../themes/images/partkeepr/grid/unchecked.gif');background-position:-1px -1px;background-repeat:no-repeat;background-color:transparent}.x-column-header-checkbox .x-column-header-text{display:block;margin:0 5px}.x-quirks .x-ie .x-grid-row-checker,.x-quirks .x-ie .x-column-header-checkbox .x-column-header-text,.x-ie7m .x-grid-row-checker,.x-ie7m .x-column-header-checkbox .x-column-header-text{margin-left:3px}.x-grid-hd-checker-on .x-column-header-text{background-image:url('../themes/images/partkeepr/grid/checked.gif')}.x-grid-cell-row-checker .x-grid-cell-inner{padding-top:4px;padding-bottom:2px;line-height:14px}.x-grid-with-row-lines .x-grid-cell-row-checker .x-grid-cell-inner{padding-top:3px}.x-grid-row-checker{margin-left:1px;background-position:50% -2px}.x-grid-row-selected .x-grid-row-checker,.x-grid-row-checked .x-grid-row-checker{background-image:url('../themes/images/partkeepr/grid/checked.gif')}.x-tbar-page-first{background-image:url('../themes/images/partkeepr/grid/page-first.gif') !important}.x-tbar-loading{background-image:url('../themes/images/partkeepr/grid/refresh.gif') !important}.x-tbar-page-last{background-image:url('../themes/images/partkeepr/grid/page-last.gif') !important}.x-tbar-page-next{background-image:url('../themes/images/partkeepr/grid/page-next.gif') !important}.x-tbar-page-prev{background-image:url('../themes/images/partkeepr/grid/page-prev.gif') !important}.x-item-disabled .x-tbar-loading{background-image:url('../themes/images/partkeepr/grid/refresh-disabled.gif') !important}.x-item-disabled .x-tbar-page-first{background-image:url('../themes/images/partkeepr/grid/page-first-disabled.gif') !important}.x-item-disabled .x-tbar-page-last{background-image:url('../themes/images/partkeepr/grid/page-last-disabled.gif') !important}.x-item-disabled .x-tbar-page-next{background-image:url('../themes/images/partkeepr/grid/page-next-disabled.gif') !important}.x-item-disabled .x-tbar-page-prev{background-image:url('../themes/images/partkeepr/grid/page-prev-disabled.gif') !important}.x-hmenu-sort-asc .x-menu-item-icon{background-image:url('../themes/images/partkeepr/grid/hmenu-asc.gif')}.x-hmenu-sort-desc .x-menu-item-icon{background-image:url('../themes/images/partkeepr/grid/hmenu-desc.gif')}.x-hmenu-lock .x-menu-item-icon{background-image:url('../themes/images/partkeepr/grid/hmenu-lock.gif')}.x-hmenu-unlock .x-menu-item-icon{background-image:url('../themes/images/partkeepr/grid/hmenu-unlock.gif')}.x-group-by-icon{background-image:url('../themes/images/partkeepr/grid/group-by.gif')}.x-cols-icon .x-menu-item-icon{background-image:url('../themes/images/partkeepr/grid/columns.gif')}.x-show-groups-icon{background-image:url('../themes/images/partkeepr/grid/group-by.gif')}.x-grid-drop-indicator{position:absolute;height:1px;line-height:0px;background-color:#77BC71;overflow:visible}.x-grid-drop-indicator .x-grid-drop-indicator-left{position:absolute;top:-8px;left:-12px;background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/grid/dd-insert-arrow-left.png');height:16px;width:16px}.x-ie6 .x-grid-drop-indicator-left{background-image:url('../themes/images/partkeepr/grid/dd-insert-arrow-right.gif')}.x-ie6 .x-grid-drop-indicator-right{background-image:url('../themes/images/partkeepr/grid/dd-insert-arrow-left.gif')}.x-grid-editor .x-form-text{padding:0 4px}.x-grid-editor .x-form-cb-wrap{padding-top:3px}.x-grid-row-editor{position:absolute !important;z-index:1;zoom:1;overflow:visible !important}.x-grid-row-editor .x-form-text{padding:0 2px}.x-grid-row-editor .x-form-cb-wrap{padding-top:0}.x-grid-row-editor .x-form-checkbox{margin-left:-4px}.x-grid-row-editor .x-form-display-field{font:normal 11px/15px tahoma,arial,verdana,sans-serif;padding-top:0;padding-left:2px}.x-grid-row-editor .x-panel-body{background-color:#e6e0e0;border-top:1px solid #aaa !important;border-bottom:1px solid #aaa !important}.x-grid-editor .x-form-cb-wrap,.x-grid-row-editor .x-form-cb-wrap{text-align:center}.x-grid-editor .x-form-trigger,.x-grid-row-editor .x-form-trigger{height:19px}.x-grid-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-editor .x-form-trigger-wrap .x-form-spinner-down,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-up,.x-grid-row-editor .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../themes/images/partkeepr/form/spinner-small.gif');height:10px !important}.x-grid-editor .x-form-text,.x-grid-row-editor .x-form-text{font:normal 11px/15px tahoma,arial,verdana,sans-serif;height:18px}.x-border-box .x-grid-editor .x-form-trigger,.x-border-box .x-grid-row-editor .x-form-trigger{height:20px}.x-border-box .x-grid-editor .x-form-text,.x-border-box .x-grid-row-editor .x-form-text{height:20px;padding-bottom:1px}.x-ie .x-grid-editor .x-form-text{padding-left:5px}.x-ie .x-grid-row-editor .x-form-text{padding-left:3px}.x-ie8m .x-grid-editor .x-form-text,.x-ie8m .x-grid-row-editor .x-form-text{padding-top:1px}.x-strict .x-ie6 .x-grid-editor .x-form-text,.x-strict .x-ie6 .x-grid-row-editor .x-form-text,.x-strict .x-ie7 .x-grid-editor .x-form-text,.x-strict .x-ie7 .x-grid-row-editor .x-form-text{height:17px}.x-quirks .x-ie9 .x-grid-editor .x-form-text,.x-quirks .x-ie9 .x-grid-row-editor .x-form-text{line-height:17px}.x-opera .x-grid-editor .x-form-text{padding-left:5px}.x-opera .x-grid-row-editor .x-form-text{padding-left:3px}.x-grid-row-editor-buttons{background-color:#e6e0e0;position:absolute;bottom:-31px;padding:4px;height:32px}.x-strict .x-ie7m .x-grid-row-editor-buttons{width:192px;height:24px}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr,.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br,.x-grid-row-editor-buttons-bc{position:absolute;overflow:hidden}.x-grid-row-editor-buttons-bl,.x-grid-row-editor-buttons-br{width:4px;height:4px;bottom:0px;background-image:url('../themes/images/partkeepr/panel/panel-default-framed-corners.gif')}.x-grid-row-editor-buttons-bl{left:0px;background-position:0px -16px}.x-grid-row-editor-buttons-br{right:0px;background-position:0px -20px}.x-grid-row-editor-buttons-bc{position:absolute;left:4px;bottom:0px;width:192px;height:1px;background-color:#aaa}.x-grid-row-editor-buttons-ml,.x-grid-row-editor-buttons-mr{height:27px;width:1px;top:1px;background-color:#aaa}.x-grid-row-editor-buttons-ml{left:0px}.x-grid-row-editor-buttons-mr{background-position:0px -20px;right:0px}.x-grid-row-editor-errors ul{margin-left:5px}.x-grid-row-editor-errors li{list-style:disc;margin-left:15px}.x-webkit *:focus{outline:none !important}.x-form-item{vertical-align:top;table-layout:fixed}.x-autocontainer-form-item,.x-anchor-form-item,.x-vbox-form-item,.x-checkboxgroup-form-item,.x-table-form-item{margin-bottom:5px}.x-form-layout-table{border-collapse:separate;border-spacing:0 2px}.x-form-item-body{position:relative}.x-form-form-item td{border-top:1px solid transparent}.x-ie6 .x-form-layout-table{border-collapse:collapse;border-spacing:0}.x-ie6 .x-form-form-item td{border-top-width:0}.x-ie6 td.x-form-item-pad{height:5px}.x-editor .x-form-item-body{padding-bottom:0}.x-form-item-label{display:block;padding:3px 0 0;font-size:12px;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default}.x-form-item-label-top{padding:0}.x-form-item-label-right{text-align:right}.x-form-invalid-under{padding:2px 2px 2px 18px;color:#c0272b;font:normal 11px tahoma,arial,verdana,sans-serif;line-height:16px;background:no-repeat 0 2px;background-image:url('../themes/images/partkeepr/form/exclamation.gif')}.x-external-error-icon{position:absolute;right:10px;height:22px}.x-quirks .x-ie .x-external-error-icon{right:0}.x-form-invalid-icon{width:18px;background:no-repeat 2px 3px;background-image:url('../themes/images/partkeepr/form/exclamation.gif');overflow:hidden}.x-form-invalid-icon ul{display:block;width:18px}.x-form-invalid-icon ul li{display:none}.x-form-field,.x-form-display-field{margin:0 0 0 0;font:normal 12px tahoma,arial,verdana,sans-serif;color:#000}.x-form-item-hidden{margin:0}.x-form-text,textarea.x-form-field{padding:1px 3px;background:repeat-x 0 0;border:1px solid;background-color:#fff;background-image:url('../themes/images/partkeepr/form/text-bg.gif');border-color:#b5b8c8}.x-form-text{height:18px;line-height:15px;vertical-align:top;border-radius:5px}.x-ie8m .x-form-text{line-height:15px}.x-border-box .x-form-text{height:22px}textarea.x-form-field{color:#000;overflow:auto;height:auto;line-height:normal;background:repeat-x 0 0;background-color:#fff;background-image:url('../themes/images/partkeepr/form/text-bg.gif');resize:none}.x-border-box textarea.x-form-field{height:auto}.x-safari.x-mac textarea.x-form-field{margin-bottom:-2px}.x-form-focus,textarea.x-form-focus{border-color:#9c9c9c}.x-form-invalid-field,textarea.x-form-invalid-field{background-color:#fff;background-image:url('../themes/images/partkeepr/grid/invalid_line.gif');background-repeat:repeat-x;background-position:bottom;border-color:#c30}.x-form-item{font:normal 12px tahoma,arial,verdana,sans-serif}.x-form-empty-field,textarea.x-form-empty-field{color:gray}.x-webkit .x-form-empty-field{line-height:15px}.x-form-display-field{padding-top:3px}.x-quirks .x-ie9p .x-form-text,.x-ie7m .x-form-text{margin-top:-1px;margin-bottom:-1px}.x-ie .x-form-file{height:23px;line-height:18px;vertical-align:middle}.x-field-default-toolbar .x-form-text{height:18px}.x-border-box .x-field-default-toolbar .x-form-text{height:22px}.x-field-default-toolbar .x-form-item-label-left{padding-left:4px}.x-fieldset{border:1px solid #a0a0a0;padding:10px;margin-bottom:10px;display:block;position:relative}.x-ie .x-fieldset{padding-top:0}.x-ie .x-fieldset .x-fieldset-body{padding-top:10px}.x-fieldset-header-checkbox{line-height:14px}.x-fieldset-header{font:11px/14px bold tahoma,arial,verdana,sans-serif;color:#4c3635;padding:0 3px 1px;overflow:hidden}.x-fieldset-header .x-fieldset-header-text{float:left;padding:1px 0}.x-fieldset-header .x-fieldset-header-text-collapsible{cursor:pointer}.x-fieldset-header .x-form-item,.x-fieldset-header .x-tool{float:left;margin:1px 0 0 0}.x-fieldset-header .x-form-cb-wrap{padding:1px 0;font-size:0;line-height:0}.x-fieldset-with-title .x-fieldset-header-checkbox,.x-fieldset-with-title .x-tool{margin-right: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-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-file-wrap .x-form-text{color:#777}.x-form-file-wrap .x-form-file-btn{overflow:hidden}.x-form-file-wrap .x-form-file-input{position:absolute;top:-4px;right:-2px;height:30px;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0;font-size:100px}.x-form-cb-wrap{padding-top:3px}.x-form-checkbox,.x-form-radio{vertical-align:-1px;width:13px;height:13px;background:no-repeat;background-image:url('../themes/images/partkeepr/form/checkbox.png');overflow:hidden;padding:0;border:0}.x-form-checkbox::-moz-focus-inner,.x-form-radio::-moz-focus-inner{padding:0;border:0}.x-nbr.x-ie .x-form-checkbox,.x-nbr.x-ie .x-form-radio{font-size:0}.x-form-cb-checked .x-form-checkbox,.x-form-cb-checked .x-form-radio{background-position:0 -13px}.x-form-cb-focus{background-position:-13px 0}.x-form-cb-checked .x-form-cb-focus{background-position:-13px -13px}.x-form-radio{background-image:url('../themes/images/partkeepr/form/radio.png')}.x-form-cb-label-before{margin-right:4px}.x-form-cb-label-after{margin-left:4px}.x-form-checkboxgroup-body{padding:1px 4px 1px 4px}.x-form-invalid .x-form-checkboxgroup-body{border:1px solid #c30;background:transparent repeat-x bottom;background-image:url('../themes/images/partkeepr/grid/invalid_line.gif');padding:0 3px 0 3px}.x-check-group-alt{background:#d0d0d0;border-top:1px dotted #afafaf;border-bottom:1px dotted #afafaf}.x-form-check-group-label{color:#333;border-bottom:1px solid #333;margin:0 30px 5px 0;padding:2px}.x-form-trigger-wrap{vertical-align:top}.x-form-trigger{background-image:url('../themes/images/partkeepr/form/trigger.png'),-moz-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/trigger.png'),-webkit-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/trigger.png'),-o-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/trigger.png'),-ms-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/trigger.png'),linear-gradient(top, #dee3e6 0%,#fcfcfd 12%,#ffffff 100%);background-position:0 0;width:17px;height:22px;border:0;cursor:pointer;cursor:hand;overflow:hidden}.x-field-default-toolbar .x-form-trigger{height:21px}.x-border-box .x-field-default-toolbar .x-form-trigger{height:22px}.x-form-trigger-over{background-position:-17px 0;border-bottom-color:#9c9c9c}.x-form-trigger-wrap-focus .x-form-trigger{background-position:-51px 0;border-bottom-color:#9c9c9c}.x-form-trigger-wrap-focus .x-form-trigger-over{background-position:-68px 0;border-bottom-color:null}.x-form-trigger-click,.x-form-trigger-wrap-focus .x-form-trigger-click{background-position:-34px 0;border-bottom-color:null}.x-form-trigger-icon{height:16px;background-repeat:no-repeat;background-position:7px 6px}.x-pickerfield-open .x-form-field{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.x-pickerfield-open-above .x-form-field{-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-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-form-arrow-trigger .x-form-trigger-icon{background-image:url('../themes/images/partkeepr/boundlist/trigger-arrow.png')}.x-form-date-trigger{background-image:url('../themes/images/partkeepr/form/date-trigger.png'),-moz-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/date-trigger.png'),-webkit-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/date-trigger.png'),-o-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/date-trigger.png'),-ms-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/date-trigger.png'),linear-gradient(top, #dee3e6 0%,#fcfcfd 12%,#ffffff 100%)}.x-form-trigger-wrap .x-form-spinner-up,.x-form-trigger-wrap .x-form-spinner-down{background-image:url('../themes/images/partkeepr/form/spinner.png');width:17px !important;height:11px !important;font-size:0}.x-form-trigger-wrap .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-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-up,.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-image:url('../themes/images/partkeepr/form/spinner-small.gif');height:11px !important}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down{background-position:0 -11px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down{background-position:-51px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-over{background-position:-17px -11px}.x-field-default-toolbar .x-form-trigger-wrap-focus .x-form-spinner-down-over{background-position:-68px -11px}.x-field-default-toolbar .x-form-trigger-wrap .x-form-spinner-down-click{background-position:-34px -11px}.x-trigger-noedit{cursor:pointer;cursor:hand}.x-item-disabled .x-trigger-noedit,.x-item-disabled .x-form-trigger{cursor:auto}.x-form-clear-trigger{background-image:url('../themes/images/partkeepr/form/clear-trigger.png'),-moz-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/clear-trigger.png'),-webkit-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/clear-trigger.png'),-o-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/clear-trigger.png'),-ms-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/clear-trigger.png'),linear-gradient(top, #dee3e6 0%,#fcfcfd 12%,#ffffff 100%)}.x-form-search-trigger{background-image:url('../themes/images/partkeepr/form/search-trigger.png'),-moz-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/search-trigger.png'),-webkit-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/search-trigger.png'),-o-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/search-trigger.png'),-ms-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/search-trigger.png'),linear-gradient(top, #dee3e6 0%,#fcfcfd 12%,#ffffff 100%)}.x-form-reload-trigger{background-image:url('../themes/images/partkeepr/form/reload-trigger.png'),-moz-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/reload-trigger.png'),-webkit-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/reload-trigger.png'),-o-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/reload-trigger.png'),-ms-linear-gradient(top, #dee3e6 0%, #fcfcfd 12%, #fff 100%);background-image:url('../themes/images/partkeepr/form/reload-trigger.png'),linear-gradient(top, #dee3e6 0%,#fcfcfd 12%,#ffffff 100%)}.x-quirks .prefixie6 .x-form-trigger-input-cell{height:22px}.x-quirks .prefixie6 .x-field-default-toolbar .x-form-trigger-input-cell{height:22px}.x-html-editor-wrap{border:1px solid #b5b8c8}.x-html-editor-wrap .x-toolbar{border-top-width:0;border-left-width:0;border-right-width:0}.x-html-editor-wrap textarea{background-color:#fff}.x-html-editor-tb .x-btn-text{background:transparent no-repeat;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-bold,.x-menu-item img.x-edit-bold{background-position:0 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-italic,.x-menu-item img.x-edit-italic{background-position:-16px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-underline,.x-menu-item img.x-edit-underline{background-position:-32px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-forecolor,.x-menu-item img.x-edit-forecolor{background-position:-160px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-backcolor,.x-menu-item img.x-edit-backcolor{background-position:-176px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyleft,.x-menu-item img.x-edit-justifyleft{background-position:-112px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifycenter,.x-menu-item img.x-edit-justifycenter{background-position:-128px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-justifyright,.x-menu-item img.x-edit-justifyright{background-position:-144px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertorderedlist,.x-menu-item img.x-edit-insertorderedlist{background-position:-80px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-insertunorderedlist,.x-menu-item img.x-edit-insertunorderedlist{background-position:-96px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-increasefontsize,.x-menu-item img.x-edit-increasefontsize{background-position:-48px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-decreasefontsize,.x-menu-item img.x-edit-decreasefontsize{background-position:-64px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-sourceedit,.x-menu-item img.x-edit-sourceedit{background-position:-192px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tb .x-edit-createlink,.x-menu-item img.x-edit-createlink{background-position:-208px 0;background-image:url('../themes/images/partkeepr/editor/tb-sprite.gif')}.x-html-editor-tip .x-tip-bd .x-tip-bd-inner{padding:5px;padding-bottom:1px}.x-html-editor-tb .x-toolbar{position:static !important}.x-html-editor-tb .x-font-select{font-size:11px}.x-html-editor-wrap textarea{border:0;padding:3px 2px;overflow:auto}.x-panel,.x-plain{overflow:hidden;position:relative}.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-header-horizontal{padding:3px 5px 4px}.x-panel-header-vertical{padding:5px 4px}.x-panel-header-icon,.x-window-header-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px}.x-vertical .x-panel-header-icon,.x-vertical .x-window-header-icon{margin:0 0 4px}.x-panel-header-draggable,.x-panel-header-draggable .x-panel-header-text,.x-window-header-draggable,.x-window-header-draggable .x-window-header-text{cursor:move}.x-panel-ghost,.x-window-ghost{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:0.65;cursor:move}.x-panel-header-horizontal .x-panel-header-body,.x-panel-header-horizontal .x-window-header-body,.x-panel-header-horizontal .x-btn-group-header-body,.x-window-header-horizontal .x-panel-header-body,.x-window-header-horizontal .x-window-header-body,.x-window-header-horizontal .x-btn-group-header-body,.x-btn-group-header-horizontal .x-panel-header-body,.x-btn-group-header-horizontal .x-window-header-body,.x-btn-group-header-horizontal .x-btn-group-header-body{width:100%}.x-panel-header-vertical .x-panel-header-body,.x-panel-header-vertical .x-window-header-body,.x-panel-header-vertical .x-btn-group-header-body,.x-window-header-vertical .x-panel-header-body,.x-window-header-vertical .x-window-header-body,.x-window-header-vertical .x-btn-group-header-body,.x-btn-group-header-vertical .x-panel-header-body,.x-btn-group-header-vertical .x-window-header-body,.x-btn-group-header-vertical .x-btn-group-header-body{height:100%}.x-panel-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-panel-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-panel-header-left .x-vml-base,.x-panel-header-right .x-vml-base{left:-3px !important}.x-panel-body{overflow:hidden;position:relative;font-size:12px}.x-panel-header-vertical .x-surface{padding-left:1px}.x-opera .x-panel-header-vertical .x-surface,.x-strict .x-ie9 .x-panel-header-vertical .x-surface{padding-left:2px}.x-panel-collapsed .x-panel-header-collapsed-border-top{border-bottom-width:1px !important}.x-panel-collapsed .x-panel-header-collapsed-border-right{border-left-width:1px !important}.x-panel-collapsed .x-panel-header-collapsed-border-bottom{border-top-width:1px !important}.x-panel-collapsed .x-panel-header-collapsed-border-left{border-right-width:1px !important}.x-nlg .x-panel-header-vertical .x-frame-mc{background-repeat:repeat-y}.x-panel-default{border-color:#aaa}.x-panel-header-default{font-size:11px;border-color:#aaa;border-width:1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636);-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset}.x-nlg .x-panel-header-default-top{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-top-bg.gif')}.x-nlg .x-panel-header-default-bottom{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-bottom-bg.gif')}.x-nlg .x-panel-header-default-left{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-left-bg.gif')}.x-nlg .x-panel-header-default-right{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-right-bg.gif')}.x-nlg .x-panel-header-default-right{background-position:top right}.x-nlg .x-panel-header-default-bottom{background-position:bottom left}.x-panel-header-text-default{color:#eee;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default{background:#fff;border-color:#aaa;color:#000;border-width:1px;border-style:solid}.x-panel-collapsed .x-window-header-default,.x-panel-collapsed .x-panel-header-default{border-color:#aaa}.x-panel-header-default-vertical{border-color:#aaa}.x-panel-header-default-left,.x-panel-header-default-right{background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.x-panel-collapsed .x-panel-header-default-top{-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;border-bottom-left-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-collapsed .x-panel-header-default-right{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-bottomleft:null;-webkit-border-bottom-left-radius:null;border-bottom-left-radius:null}.x-panel-collapsed .x-panel-header-default-bottom{-moz-border-radius-topleft:null;-webkit-border-top-left-radius:null;border-top-left-radius:null;-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;border-top-right-radius:null}.x-panel-collapsed .x-panel-header-default-left{-moz-border-radius-topright:null;-webkit-border-top-right-radius:null;border-top-right-radius:null;-moz-border-radius-bottomright:null;-webkit-border-bottom-right-radius:null;border-bottom-right-radius:null}.x-panel-header-default-top{-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset}.x-panel-header-default-right{-webkit-box-shadow:#eae8e8 -1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 -1px 0 0px 0 inset;box-shadow:#eae8e8 -1px 0 0px 0 inset}.x-panel-header-default-bottom{-webkit-box-shadow:#eae8e8 0 -1px 0px 0 inset;-moz-box-shadow:#eae8e8 0 -1px 0px 0 inset;box-shadow:#eae8e8 0 -1px 0px 0 inset}.x-panel-header-default-left{-webkit-box-shadow:#eae8e8 1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 1px 0 0px 0 inset;box-shadow:#eae8e8 1px 0 0px 0 inset}.x-panel-header-default-right-tc,.x-panel-header-default-right-mc,.x-panel-header-default-right-bc{background-position:right 0}.x-panel-header-default-bottom-tc,.x-panel-header-default-bottom-mc,.x-panel-header-default-bottom-bc{background-position:0 bottom}.x-panel-default-framed{border-color:#aaa}.x-panel-header-default-framed{font-size:11px;border-color:#aaa;border-width:1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636);-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset}.x-nlg .x-panel-header-default-framed-top{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-top-bg.gif')}.x-nlg .x-panel-header-default-framed-bottom{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-bg.gif')}.x-nlg .x-panel-header-default-framed-left{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-left-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-right-bg.gif')}.x-nlg .x-panel-header-default-framed-right{background-position:top right}.x-nlg .x-panel-header-default-framed-bottom{background-position:bottom left}.x-nbr .x-panel-header-default-framed{background-image:none}.x-strict .x-ie9 .x-panel-header-default-framed-top,.x-nlg.x-opera .x-panel-header-default-framed-top,.x-nlg.x-safari .x-panel-header-default-framed-top{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-top-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-bottom,.x-nlg.x-opera .x-panel-header-default-framed-bottom,.x-nlg.x-safari .x-panel-header-default-framed-bottom{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-bottom-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-left,.x-nlg.x-opera .x-panel-header-default-framed-left,.x-nlg.x-safari .x-panel-header-default-framed-left{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-left-bg.gif')}.x-strict .x-ie9 .x-panel-header-default-framed-right,.x-nlg.x-opera .x-panel-header-default-framed-right,.x-nlg.x-safari .x-panel-header-default-framed-right{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-right-bg.gif')}.x-panel-header-text-default-framed{color:#eee;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;line-height:17px}.x-panel-body-default-framed{background:#dbdbdb;border-color:#aaa;color:#000;border-width:0;border-style:solid}.x-panel-collapsed .x-window-header-default-framed,.x-panel-collapsed .x-panel-header-default-framed{border-color:#aaa}.x-panel-header-default-framed-vertical{border-color:#aaa}.x-panel-header-default-framed-left,.x-panel-header-default-framed-right{background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.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:#dbdbdb}.x-nlg .x-panel-default-framed-mc{background-color:#dbdbdb}.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;background-position:1000404px 1000404px}.x-nbr .x-panel-default-framed-tl,.x-nbr .x-panel-default-framed-bl,.x-nbr .x-panel-default-framed-tr,.x-nbr .x-panel-default-framed-br,.x-nbr .x-panel-default-framed-tc,.x-nbr .x-panel-default-framed-bc,.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel/panel-default-framed-corners.gif')}.x-nbr .x-panel-default-framed-ml,.x-nbr .x-panel-default-framed-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel/panel-default-framed-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .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-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:3px 5px 4px 5px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636)}.x-nlg .x-panel-header-default-framed-top-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-top-bg.gif');background-color:#d3cccc}.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-position:1000404px 1000000px}.x-nbr .x-panel-header-default-framed-top-tl,.x-nbr .x-panel-header-default-framed-top-bl,.x-nbr .x-panel-header-default-framed-top-tr,.x-nbr .x-panel-header-default-framed-top-br,.x-nbr .x-panel-header-default-framed-top-tc,.x-nbr .x-panel-header-default-framed-top-bc,.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-top-ml,.x-nbr .x-panel-header-default-framed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-top-mc{padding:0px 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-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:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.x-nlg .x-panel-header-default-framed-right-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-right-bg.gif');background-color:#d3cccc}.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-position:1000004px 1100400px}.x-nbr .x-panel-header-default-framed-right-tl,.x-nbr .x-panel-header-default-framed-right-bl,.x-nbr .x-panel-header-default-framed-right-tr,.x-nbr .x-panel-header-default-framed-right-br,.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc,.x-nbr .x-panel-header-default-framed-right-ml,.x-nbr .x-panel-header-default-framed-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-right-tc,.x-nbr .x-panel-header-default-framed-right-bc{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .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-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 5px 4px 5px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636)}.x-nlg .x-panel-header-default-framed-bottom-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-bg.gif');background-color:#d3cccc}.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-position:1000000px 1000404px}.x-nbr .x-panel-header-default-framed-bottom-tl,.x-nbr .x-panel-header-default-framed-bottom-bl,.x-nbr .x-panel-header-default-framed-bottom-tr,.x-nbr .x-panel-header-default-framed-bottom-br,.x-nbr .x-panel-header-default-framed-bottom-tc,.x-nbr .x-panel-header-default-framed-bottom-bc,.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-bottom-ml,.x-nbr .x-panel-header-default-framed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-bottom-mc{padding:3px 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-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:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.x-nlg .x-panel-header-default-framed-left-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-left-bg.gif');background-color:#d3cccc}.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-position:1000400px 1100004px}.x-nbr .x-panel-header-default-framed-left-tl,.x-nbr .x-panel-header-default-framed-left-bl,.x-nbr .x-panel-header-default-framed-left-tr,.x-nbr .x-panel-header-default-framed-left-br,.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc,.x-nbr .x-panel-header-default-framed-left-ml,.x-nbr .x-panel-header-default-framed-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-left-tc,.x-nbr .x-panel-header-default-framed-left-bc{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .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-top{-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset}.x-panel-header-default-framed-right{-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset}.x-panel-header-default-framed-bottom{-webkit-box-shadow:#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset;box-shadow:#eae8e8 0 -1px 0px 0 inset,#eae8e8 -1px 0 0px 0 inset,#eae8e8 1px 0 0px 0 inset}.x-panel-header-default-framed-left{-webkit-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 1px 0 0px 0 inset;-moz-box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 1px 0 0px 0 inset;box-shadow:#eae8e8 0 1px 0px 0 inset,#eae8e8 0 -1px 0px 0 inset,#eae8e8 1px 0 0px 0 inset}.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-panel-header-default-framed-collapsed{-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.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:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636)}.x-nlg .x-panel-header-default-framed-collapsed-top-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-bg.gif');background-color:#d3cccc}.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-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-top-tl,.x-nbr .x-panel-header-default-framed-collapsed-top-bl,.x-nbr .x-panel-header-default-framed-collapsed-top-tr,.x-nbr .x-panel-header-default-framed-collapsed-top-br,.x-nbr .x-panel-header-default-framed-collapsed-top-tc,.x-nbr .x-panel-header-default-framed-collapsed-top-bc,.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-top-ml,.x-nbr .x-panel-header-default-framed-collapsed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-top-mc{padding:0px 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-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:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.x-nlg .x-panel-header-default-framed-collapsed-right-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-bg.gif');background-color:#d3cccc}.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-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-right-tl,.x-nbr .x-panel-header-default-framed-collapsed-right-bl,.x-nbr .x-panel-header-default-framed-collapsed-right-tr,.x-nbr .x-panel-header-default-framed-collapsed-right-br,.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc,.x-nbr .x-panel-header-default-framed-collapsed-right-ml,.x-nbr .x-panel-header-default-framed-collapsed-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-right-tc,.x-nbr .x-panel-header-default-framed-collapsed-right-bc{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .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-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:3px 5px 4px 5px;border-width:1px;border-style:solid;background-image:none;background-color:#d3cccc;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(top, #535353,#363636);background-image:-moz-linear-gradient(top, #535353,#363636);background-image:-o-linear-gradient(top, #535353,#363636);background-image:linear-gradient(top, #535353,#363636)}.x-nlg .x-panel-header-default-framed-collapsed-bottom-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif');background-color:#d3cccc}.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-position:1000404px 1000404px}.x-nbr .x-panel-header-default-framed-collapsed-bottom-tl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bl,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tr,.x-nbr .x-panel-header-default-framed-collapsed-bottom-br,.x-nbr .x-panel-header-default-framed-collapsed-bottom-tc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-bc,.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-bottom-ml,.x-nbr .x-panel-header-default-framed-collapsed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif');background-position:0 0}.x-nbr .x-panel-header-default-framed-collapsed-bottom-mc{padding:0px 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-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:#d3cccc;background-image:-webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #535353), color-stop(100%, #363636));background-image:-webkit-linear-gradient(right, #535353,#363636);background-image:-moz-linear-gradient(right, #535353,#363636);background-image:-o-linear-gradient(right, #535353,#363636);background-image:linear-gradient(right, #535353,#363636)}.x-nlg .x-panel-header-default-framed-collapsed-left-mc{background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-bg.gif');background-color:#d3cccc}.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-position:1000404px 1100404px}.x-nbr .x-panel-header-default-framed-collapsed-left-tl,.x-nbr .x-panel-header-default-framed-collapsed-left-bl,.x-nbr .x-panel-header-default-framed-collapsed-left-tr,.x-nbr .x-panel-header-default-framed-collapsed-left-br,.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc,.x-nbr .x-panel-header-default-framed-collapsed-left-ml,.x-nbr .x-panel-header-default-framed-collapsed-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-corners.gif')}.x-nbr .x-panel-header-default-framed-collapsed-left-tc,.x-nbr .x-panel-header-default-framed-collapsed-left-bc{zoom:1;background-image:url('../themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-x}.x-nbr .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-right-tc,.x-panel-header-default-framed-right-mc,.x-panel-header-default-framed-right-bc{background-position:right 0}.x-panel-header-default-framed-bottom-tc,.x-panel-header-default-framed-bottom-mc,.x-panel-header-default-framed-bottom-bc{background-position:0 bottom}.x-panel-header-plain,.x-panel-body-plain{border:0;padding:0}.x-tip{position:absolute;overflow:visible;border-color:#818181}.x-tip .x-tip-header .x-box-item{padding:3px 3px 0}.x-tip .x-tip-header .x-tool{padding:0px 1px 0 0 !important}.x-tip{-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:#c7c7c7;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-tip-mc{background-image:url('../themes/images/partkeepr/tip/tip-bg.gif');background-color:#c7c7c7}.x-nbr .x-tip{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-position:1100303px 1000303px}.x-nbr .x-tip-tl,.x-nbr .x-tip-bl,.x-nbr .x-tip-tr,.x-nbr .x-tip-br,.x-nbr .x-tip-tc,.x-nbr .x-tip-bc,.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../themes/images/partkeepr/tip/tip-corners.gif')}.x-nbr .x-tip-ml,.x-nbr .x-tip-mr{zoom:1;background-image:url('../themes/images/partkeepr/tip/tip-sides.gif');background-position:0 0}.x-nbr .x-tip-mc{padding:0px 0px 0px 0px}.x-strict .x-ie7 .x-tip-tl,.x-strict .x-ie7 .x-tip-bl{position:relative;right:0}.x-tip-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;color:#444;font-size:11px;font-weight:bold}.x-tip-header-draggable .x-tip-header-text{cursor:move}.x-tip-body,.x-form-invalid-tip-body{overflow:hidden;position:relative;padding:3px}.x-tip-header,.x-tip-body,.x-form-invalid-tip-body{color:#444;font-size:11px;font-weight:normal}.x-tip-header a,.x-tip-body a,.x-form-invalid-tip-body a{color:#2a2a2a}.x-tip-anchor{position:absolute;overflow:hidden;height:0;width:0;border-style:solid;border-width:5px;border-color:#818181;zoom:1}.x-border-box .x-tip-anchor{width:10px;height:10px}.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-form-invalid-tip{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}.x-form-invalid-tip-body{background:1px 1px no-repeat;background-image:url('../themes/images/partkeepr/form/exclamation.gif');padding-left:22px}.x-form-invalid-tip-body li{margin-bottom:4px}.x-form-invalid-tip-body li.last{margin-bottom:0}.x-form-invalid-tip-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-image:none;background-color:#fff;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ededed), color-stop(100%, #c7c7c7));background-image:-webkit-linear-gradient(top, #ededed,#c7c7c7);background-image:-moz-linear-gradient(top, #ededed,#c7c7c7);background-image:-o-linear-gradient(top, #ededed,#c7c7c7);background-image:linear-gradient(top, #ededed,#c7c7c7)}.x-nlg .x-form-invalid-tip-default-mc{background-image:url('../themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-bg.gif');background-color:#fff}.x-nbr .x-form-invalid-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;background-position:1100505px 1000505px}.x-nbr .x-form-invalid-tip-default-tl,.x-nbr .x-form-invalid-tip-default-bl,.x-nbr .x-form-invalid-tip-default-tr,.x-nbr .x-form-invalid-tip-default-br,.x-nbr .x-form-invalid-tip-default-tc,.x-nbr .x-form-invalid-tip-default-bc,.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-corners.gif')}.x-nbr .x-form-invalid-tip-default-ml,.x-nbr .x-form-invalid-tip-default-mr{zoom:1;background-image:url('../themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-sides.gif');background-position:0 0}.x-nbr .x-form-invalid-tip-default-mc{padding:0px 0px 0px 0px}.x-strict .x-ie7 .x-form-invalid-tip-default-tl,.x-strict .x-ie7 .x-form-invalid-tip-default-bl{position:relative;right:0}.x-slider{zoom:1}.x-slider-inner{position:relative;left:0;top:0;overflow:visible;zoom:1}.x-slider-focus{position:absolute;left:0;top:0;width:1px;height:1px;line-height:1px;font-size:1px;-moz-outline:0 none;outline:0 none;user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;display:block;overflow:hidden}.x-slider-horz{padding-left:7px;background:transparent no-repeat 0 -24px;width:100%}.x-slider-horz .x-slider-end{padding-right:7px;zoom:1;background:transparent no-repeat right -46px}.x-slider-horz .x-slider-inner{background:transparent repeat-x 0 -2px;height:18px}.x-slider-horz .x-slider-thumb{width:14px;height:15px;margin-left:-7px;position:absolute;left:0;top:1px;background:transparent no-repeat 0 0}.x-slider-horz .x-slider-thumb-over{background-position:-14px -15px}.x-slider-horz .x-slider-thumb-drag{background-position:-28px -30px}.x-slider-vert{padding-top:7px;background:transparent no-repeat -44px 0}.x-slider-vert .x-slider-end{padding-bottom:7px;zoom:1;background:transparent no-repeat -22px bottom;width:22px}.x-slider-vert .x-slider-inner{background:transparent repeat-y 0 0;width:22px}.x-slider-vert .x-slider-thumb{width:15px;height:14px;margin-bottom:-7px;position:absolute;left:3px;bottom:0;background:transparent no-repeat 0 0}.x-slider-vert .x-slider-thumb-over{background-position:-15px -14px}.x-slider-vert .x-slider-thumb-drag{background-position:-30px -28px}.x-slider-horz,.x-slider-horz .x-slider-end,.x-slider-horz .x-slider-inner{background-image:url('../themes/images/partkeepr/slider/slider-bg.png')}.x-slider-horz .x-slider-thumb{background-image:url('../themes/images/partkeepr/slider/slider-thumb.png')}.x-slider-vert,.x-slider-vert .x-slider-end,.x-slider-vert .x-slider-inner{background-image:url('../themes/images/partkeepr/slider/slider-v-bg.png')}.x-slider-vert .x-slider-thumb{background-image:url('../themes/images/partkeepr/slider/slider-v-thumb.png')}.x-ie6 .x-slider-horz,.x-ie6 .x-slider-horz .x-slider-end,.x-ie6 .x-slider-horz .x-slider-inner{background-image:url('../themes/images/partkeepr/slider/slider-bg.gif')}.x-ie6 .x-slider-horz .x-slider-thumb{background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/slider/slider-v-bg.gif')}.x-ie6 .x-slider-vert .x-slider-thumb{background-image:url('../themes/images/partkeepr/slider/slider-v-thumb.gif')}.x-progress{position:relative;border-width:1px;border-style:solid;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;overflow:hidden;height:20px}.x-progress-bar{height:18px;overflow:hidden;position:absolute;width:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;border-right:1px solid;border-top:1px solid}.x-progress-text{overflow:hidden;position:absolute;padding:0 5px;height:18px;font-weight:bold;font-size:11px;line-height:16px;text-align:center}.x-progress-text-back{padding-top:1px}.x-strict .x-ie7m .x-progress{height:18px}.x-progress-default{border-color:#8b8b8b}.x-progress-default .x-progress-bar{border-right-color:#8b8b8b;border-top-color:#cacaca;background-image:none;background-color:#a29292;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c5bbbb), color-stop(50%, #aea0a0), color-stop(51%, #a29292), color-stop(100%, #978484));background-image:-webkit-linear-gradient(top, #c5bbbb,#aea0a0 50%,#a29292 51%,#978484);background-image:-moz-linear-gradient(top, #c5bbbb,#aea0a0 50%,#a29292 51%,#978484);background-image:-o-linear-gradient(top, #c5bbbb,#aea0a0 50%,#a29292 51%,#978484);background-image:linear-gradient(top, #c5bbbb,#aea0a0 50%,#a29292 51%,#978484)}.x-progress-default .x-progress-text{color:#fff}.x-progress-default .x-progress-text-back{color:#585858}.x-nlg .x-progress-default .x-progress-bar{background:repeat-x;background-image:url('../themes/images/partkeepr/progress/progress-default-bg.gif')}.x-toolbar{font-size:11px;border:1px solid;padding:2px 0 2px 2px}.x-toolbar .x-form-item-label{font-size:11px;line-height:15px}.x-toolbar .x-toolbar-item{margin:0 2px 0 0}.x-toolbar .x-toolbar-text{margin-left:4px;margin-right:6px;white-space:nowrap;color:#4c4c4c;line-height:16px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px;font-weight:normal}.x-toolbar .x-toolbar-separator{display:block;font-size:1px;overflow:hidden;cursor:default;border:0}.x-toolbar .x-toolbar-separator-horizontal{margin:0 3px 0 2px;height:14px;width:0px;border-left:1px solid #ff797b;border-right:1px solid #fff}.x-quirks .x-ie .x-toolbar .x-toolbar-separator-horizontal{width:2px}.x-toolbar-footer{background:transparent;border:0px none;margin-top:3px;padding:2px 0 2px 6px}.x-toolbar-footer .x-box-inner{border-width:0}.x-toolbar-footer .x-toolbar-item{margin:0 6px 0 0}.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-top:4px;margin-bottom:6px}.x-toolbar-vertical .x-toolbar-separator-vertical{margin:2px 5px 3px 5px;height:0px;width:10px;line-height:0px;border-top:1px solid #ff797b;border-bottom:1px solid #fff}.x-toolbar-scroller{padding-left:0}.x-toolbar-spacer{width:2px}.x-toolbar-more-icon{background-image:url('../themes/images/partkeepr/toolbar/more.gif') !important;background-position:2px center !important;background-repeat:no-repeat}.x-toolbar-default{border-color:#aaa;background-image:none;background-color:#ddd;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eaeaea), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eaeaea,#dddddd);background-image:-moz-linear-gradient(top, #eaeaea,#dddddd);background-image:-o-linear-gradient(top, #eaeaea,#dddddd);background-image:linear-gradient(top, #eaeaea,#dddddd)}.x-nlg .x-toolbar-default{background-image:url('../themes/images/partkeepr/toolbar/toolbar-default-bg.gif') !important;background-repeat:repeat-x}.x-toolbar-plain{border:0}.x-window{outline:none;overflow:hidden}.x-window .x-window-wrap{position:relative}.x-window-body{position:relative;border-style:solid;overflow:hidden}.x-window-maximized .x-window-wrap .x-window-header{-moz-border-radius:0 !important;-webkit-border-radius:0 !important;-o-border-radius:0 !important;-ms-border-radius:0 !important;-khtml-border-radius:0 !important;border-radius:0 !important}.x-window-header-top{margin-bottom:-2px}.x-window-header-body-horizontal{margin-top:-1px}.x-window-header-bottom{margin-top:-1px;margin-bottom:-1px}.x-window-header-left{margin-right:-1px}.x-window-header-right{margin-left:-1px}.x-window-header-vertical .x-surface{padding-left:1px}.x-window-collapsed .x-window-header-vertical{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-horizontal{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px}.x-window-collapsed .x-window-header-left{padding-right:5px !important;margin-right:0}.x-window-collapsed .x-window-header-right{padding-left:5px !important;margin-left:0}.x-window-collapsed .x-window-header-top{padding-bottom:5px !important;margin-bottom:-1px}.x-window-collapsed .x-window-header-bottom{padding-top:5px !important;margin-top:0}.x-window-header-left .x-vml-base,.x-window-header-right .x-vml-base{left:-3px !important}.x-opera .x-window-header-vertical .x-surface,.x-strict .x-ie9 .x-window-header-vertical .x-surface{padding-left:2px}.x-window-header-text-container{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.x-window-header-text{user-select:none;-o-user-select:none;-ms-user-select:none;-moz-user-select:-moz-none;-webkit-user-select:none;cursor:default;white-space:nowrap}.x-window-default{border-color:#a4a4a4;-webkit-border-radius:5px 5px;-moz-border-radius:5px 5px;-ms-border-radius:5px 5px;-o-border-radius:5px 5px;border-radius:5px 5px;-webkit-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;-moz-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset}.x-window-default{-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: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:1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-default-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000505px}.x-nbr .x-window-default-tl,.x-nbr .x-window-default-bl,.x-nbr .x-window-default-tr,.x-nbr .x-window-default-br,.x-nbr .x-window-default-tc,.x-nbr .x-window-default-bc,.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../themes/images/partkeepr/window/window-default-corners.gif')}.x-nbr .x-window-default-ml,.x-nbr .x-window-default-mr{zoom:1;background-image:url('../themes/images/partkeepr/window/window-default-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-default-mc{padding:0px 0px 0px 0px}.x-strict .x-ie7 .x-window-default-tl,.x-strict .x-ie7 .x-window-default-bl{position:relative;right:0}.x-window-body-default{border-color:#b7abab;border-width:1px;background:#dbdbdb;color:#000}.x-window-header-default{font-size:11px;border-color:#a4a4a4;zoom:1}.x-window-header-text-default{color:#4e2324;font-weight:bold;line-height:17px;font-family:tahoma,arial,verdana,sans-serif;font-size:11px}.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:#cbcbcb}.x-nlg .x-window-header-default-top-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000000px}.x-nbr .x-window-header-default-top-tl,.x-nbr .x-window-header-default-top-bl,.x-nbr .x-window-header-default-top-tr,.x-nbr .x-window-header-default-top-br,.x-nbr .x-window-header-default-top-tc,.x-nbr .x-window-header-default-top-bc,.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-top-corners.gif')}.x-nbr .x-window-header-default-top-ml,.x-nbr .x-window-header-default-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-top-mc{padding:0px 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-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:#cbcbcb}.x-nlg .x-window-header-default-right-mc{background-color:#cbcbcb}.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;background-position:1000005px 1000500px}.x-nbr .x-window-header-default-right-tl,.x-nbr .x-window-header-default-right-bl,.x-nbr .x-window-header-default-right-tr,.x-nbr .x-window-header-default-right-br,.x-nbr .x-window-header-default-right-tc,.x-nbr .x-window-header-default-right-bc,.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-right-corners.gif')}.x-nbr .x-window-header-default-right-ml,.x-nbr .x-window-header-default-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-right-mc{padding:1px 0px 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-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:#cbcbcb}.x-nlg .x-window-header-default-bottom-mc{background-color:#cbcbcb}.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;background-position:1000000px 1000505px}.x-nbr .x-window-header-default-bottom-tl,.x-nbr .x-window-header-default-bottom-bl,.x-nbr .x-window-header-default-bottom-tr,.x-nbr .x-window-header-default-bottom-br,.x-nbr .x-window-header-default-bottom-tc,.x-nbr .x-window-header-default-bottom-bc,.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-bottom-corners.gif')}.x-nbr .x-window-header-default-bottom-ml,.x-nbr .x-window-header-default-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-bottom-mc{padding:0 1px 0px 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-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 0px 5px 4px;border-width:1px 0 1px 1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-header-default-left-mc{background-color:#cbcbcb}.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;background-position:1000500px 1000005px}.x-nbr .x-window-header-default-left-tl,.x-nbr .x-window-header-default-left-bl,.x-nbr .x-window-header-default-left-tr,.x-nbr .x-window-header-default-left-br,.x-nbr .x-window-header-default-left-tc,.x-nbr .x-window-header-default-left-bc,.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-left-corners.gif')}.x-nbr .x-window-header-default-left-ml,.x-nbr .x-window-header-default-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-left-mc{padding:1px 0px 1px 0px}.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-collapsed-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: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 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-header-default-collapsed-top-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-top-tl,.x-nbr .x-window-header-default-collapsed-top-bl,.x-nbr .x-window-header-default-collapsed-top-tr,.x-nbr .x-window-header-default-collapsed-top-br,.x-nbr .x-window-header-default-collapsed-top-tc,.x-nbr .x-window-header-default-collapsed-top-bc,.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-top-corners.gif')}.x-nbr .x-window-header-default-collapsed-top-ml,.x-nbr .x-window-header-default-collapsed-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-top-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-top-mc{padding:0px 1px 0px 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-right{-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: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:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-header-default-collapsed-right-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-right-tl,.x-nbr .x-window-header-default-collapsed-right-bl,.x-nbr .x-window-header-default-collapsed-right-tr,.x-nbr .x-window-header-default-collapsed-right-br,.x-nbr .x-window-header-default-collapsed-right-tc,.x-nbr .x-window-header-default-collapsed-right-bc,.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-right-corners.gif')}.x-nbr .x-window-header-default-collapsed-right-ml,.x-nbr .x-window-header-default-collapsed-right-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-right-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-right-mc{padding:1px 0px 1px 0px}.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-bottom{-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: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 5px 4px 5px;border-width:1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-header-default-collapsed-bottom-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-bottom-tl,.x-nbr .x-window-header-default-collapsed-bottom-bl,.x-nbr .x-window-header-default-collapsed-bottom-tr,.x-nbr .x-window-header-default-collapsed-bottom-br,.x-nbr .x-window-header-default-collapsed-bottom-tc,.x-nbr .x-window-header-default-collapsed-bottom-bc,.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-corners.gif')}.x-nbr .x-window-header-default-collapsed-bottom-ml,.x-nbr .x-window-header-default-collapsed-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-bottom-mc{padding:0px 1px 0px 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-left{-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: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:5px 4px 5px 4px;border-width:1px;border-style:solid;background-color:#cbcbcb}.x-nlg .x-window-header-default-collapsed-left-mc{background-color:#cbcbcb}.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;background-position:1000505px 1000505px}.x-nbr .x-window-header-default-collapsed-left-tl,.x-nbr .x-window-header-default-collapsed-left-bl,.x-nbr .x-window-header-default-collapsed-left-tr,.x-nbr .x-window-header-default-collapsed-left-br,.x-nbr .x-window-header-default-collapsed-left-tc,.x-nbr .x-window-header-default-collapsed-left-bc,.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-left-corners.gif')}.x-nbr .x-window-header-default-collapsed-left-ml,.x-nbr .x-window-header-default-collapsed-left-mr{zoom:1;background-image:url('../themes/images/partkeepr/window-header/window-header-default-collapsed-left-sides.gif');background-position:0 0;background-repeat:repeat-y}.x-nbr .x-window-header-default-collapsed-left-mc{padding:1px 0px 1px 0px}.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-top{-webkit-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;-moz-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset}.x-window-header-default-right{-webkit-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset;-moz-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset;box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset}.x-window-header-default-bottom{-webkit-box-shadow:#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;-moz-box-shadow:#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;box-shadow:#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 -1px 0 0px 0 inset,#e7e2e1 1px 0 0px 0 inset}.x-window-header-default-left{-webkit-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;-moz-box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 1px 0 0px 0 inset;box-shadow:#e7e2e1 0 1px 0px 0 inset,#e7e2e1 0 -1px 0px 0 inset,#e7e2e1 1px 0 0px 0 inset}.x-window-body-plain{background:transparent}.x-message-box .x-window-body{background-color:#cbcbcb;border:none}.x-message-box .x-progress-wrap{margin-top:4px}.x-message-box-icon{width:47px;height:32px}.x-message-box-info,.x-message-box-warning,.x-message-box-question,.x-message-box-error{background:transparent no-repeat top left}.x-message-box .x-msg-box-wait{background-image:url('../themes/images/partkeepr/shared/blue-loading.gif')}.x-message-box-info{background-image:url('../themes/images/partkeepr/shared/icon-info.gif')}.x-message-box-warning{background-image:url('../themes/images/partkeepr/shared/icon-warning.gif')}.x-message-box-question{background-image:url('../themes/images/partkeepr/shared/icon-question.gif')}.x-message-box-error{background-image:url('../themes/images/partkeepr/shared/icon-error.gif')}.x-tab-bar{position:relative;background-color:transparent;background-image:none;background-color:#cecece;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dad9d9), color-stop(100%, #cecece));background-image:-webkit-linear-gradient(top, #dad9d9,#cecece);background-image:-moz-linear-gradient(top, #dad9d9,#cecece);background-image:-o-linear-gradient(top, #dad9d9,#cecece);background-image:linear-gradient(top, #dad9d9,#cecece);font-size:11px}.x-nlg .x-tab-bar{background-image:url('../themes/images/partkeepr/tab-bar/tab-bar-default-bg.gif')}.x-tab-bar-default-plain,.x-nlg .x-tab-bar-default-plain{background:transparent none}.x-tab-bar-body{border-style:solid;border-color:#aaa;position:relative;z-index:2;zoom:1}.x-tab-bar-top .x-tab-bar-body{height:23;border-width:1px 1px 0;padding:1px 0 3px}.x-tab-bar-top .x-tab-bar-strip{top:25px;border-width:1px 1px 0;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body{height:28px}.x-border-box .x-tab-bar-top .x-tab-bar-strip{height:3px}.x-tab-bar-top .x-tab-bar-body-default-plain{height:23;border-width:0;padding:0 0 2px}.x-tab-bar-top .x-tab-bar-strip-default-plain{top:23;border-width:1px 1px 0 1px;height:2px}.x-border-box .x-tab-bar-top .x-tab-bar-body-default-plain{height:25px}.x-border-box .x-tab-bar-top .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-bottom .x-tab-bar-body{height:23;border-width:0 1px 1px;padding:3px 0 1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body .x-box-scroller-right{height:25px}.x-tab-bar-bottom .x-tab-bar-strip{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body{height:28px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip{height:3px}.x-tab-bar-bottom .x-tab-bar-body-default-plain{height:23;border-width:0;padding:3px 0 0}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-inner{position:relative;top:-1px}.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-left,.x-tab-bar-bottom .x-tab-bar-body-default-plain .x-box-scroller-right{height:24px}.x-tab-bar-bottom .x-tab-bar-strip-default-plain{top:0;border-width:0 1px 1px 1px;height:2px}.x-border-box .x-tab-bar-bottom .x-tab-bar-body-default-plain{height:26px}.x-border-box .x-tab-bar-bottom .x-tab-bar-strip-default-plain{height:3px}.x-tab-bar-strip-default,.x-tab-bar-strip-default-plain{font-size:0;line-height:0;position:absolute;z-index:1;border-style:solid;overflow:hidden;border-color:#aaa;background-color:#c7c7c7;zoom:1}.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 3px 0 3px;border-width:1px 1px 0 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(25%, #e4e4e4), color-stop(45%, #eaeaea));background-image:-webkit-linear-gradient(top, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:-moz-linear-gradient(top, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:-o-linear-gradient(top, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:linear-gradient(top, #dddddd,#e4e4e4 25%,#eaeaea 45%)}.x-nlg .x-tab-default-top-mc{background-image:url('../themes/images/partkeepr/tab/tab-default-top-bg.gif');background-color:#eaeaea}.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-position:1100404px 1000000px}.x-nbr .x-tab-default-top-tl,.x-nbr .x-tab-default-top-bl,.x-nbr .x-tab-default-top-tr,.x-nbr .x-tab-default-top-br,.x-nbr .x-tab-default-top-tc,.x-nbr .x-tab-default-top-bc,.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/tab/tab-default-top-corners.gif')}.x-nbr .x-tab-default-top-ml,.x-nbr .x-tab-default-top-mr{zoom:1;background-image:url('../themes/images/partkeepr/tab/tab-default-top-sides.gif');background-position:0 0}.x-nbr .x-tab-default-top-mc{padding:0px 0px 0 0px}.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-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:0 3px 3px 3px;border-width:0 1px 1px 1px;border-style:solid;background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #dddddd), color-stop(25%, #e4e4e4), color-stop(45%, #eaeaea));background-image:-webkit-linear-gradient(bottom, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:-moz-linear-gradient(bottom, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:-o-linear-gradient(bottom, #dddddd,#e4e4e4 25%,#eaeaea 45%);background-image:linear-gradient(bottom, #dddddd,#e4e4e4 25%,#eaeaea 45%)}.x-nlg .x-tab-default-bottom-mc{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-bg.gif');background-color:#eaeaea}.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-position:1100000px 1000404px}.x-nbr .x-tab-default-bottom-tl,.x-nbr .x-tab-default-bottom-bl,.x-nbr .x-tab-default-bottom-tr,.x-nbr .x-tab-default-bottom-br,.x-nbr .x-tab-default-bottom-tc,.x-nbr .x-tab-default-bottom-bc,.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-corners.gif')}.x-nbr .x-tab-default-bottom-ml,.x-nbr .x-tab-default-bottom-mr{zoom:1;background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-sides.gif');background-position:0 0}.x-nbr .x-tab-default-bottom-mc{padding:0 0px 0px 0px}.x-strict .x-ie7 .x-tab-default-bottom-tl,.x-strict .x-ie7 .x-tab-default-bottom-bl{position:relative;right:0}.x-tab{z-index:1;margin:0 0 0 2px;display:inline-block;zoom:1;*display:inline;white-space:nowrap;height:23;border-color:#b5b5b5;cursor:pointer;cursor:hand}.x-tab button{cursor:pointer;cursor:hand}.x-tab em{display:block;padding:0 6px;line-height:1px}.x-tab button{background:none;border:0;padding:0;margin:0;-webkit-appearance:none;font-size:11px;font-weight:bold;font-family:tahoma,arial,verdana,sans-serif;color:#6f6f6f;outline:0 none;overflow-x:visible}.x-tab button::-moz-focus-inner{border:0;padding:0}.x-tab button .x-tab-inner{background-color:transparent;background-repeat:no-repeat;background-position:0 -2px;display:block;text-align:center;white-space:nowrap;text-overflow:ellipsis;-o-text-overflow:ellipsis;overflow:hidden}.x-tab img{display:none}.x-border-box .x-tab-default-top{height:24px}.x-border-box .x-tab-default-bottom{height:24px}* html .x-ie .x-tab button{width:1px}.x-strict .x-ie6 .x-tab .x-frame-mc,.x-strict .x-ie7 .x-tab .x-frame-mc{height:100%}.x-ie .x-tab-active button:active{position:relative;top:-1px;left:-1px}.x-tab-default-top{-webkit-box-shadow:#fff 0 1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;-moz-box-shadow:#fff 0 1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;box-shadow:#fff 0 1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;border-bottom:1px solid #aaa !important}.x-tab-default-top em{padding-bottom:3px}.x-tab-default-top button,.x-tab-default-top .x-tab-inner{height:16px;line-height:16px}.x-safari4 .x-tab-default-top .x-tab-inner,.x-safari5_0 .x-tab-default-top .x-tab-inner{line-height:14px}.x-nbr .x-tab-default-top{border-bottom-width:1px !important}.x-tab-default-top-active{border-bottom-color:#c7c7c7 !important}.x-tab-default-bottom{-webkit-box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;-moz-box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;border-top:1px solid #aaa !important;-webkit-box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;-moz-box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset;box-shadow:#fff 0 -1px 0px 0 inset,#fff -1px 0 0px 0 inset,#fff 1px 0 0px 0 inset}.x-tab-default-bottom em{padding-top:3px}.x-tab-default-bottom button,.x-tab-default-bottom .x-tab-inner{height:16px;line-height:16px}.x-nbr .x-tab-default-bottom{border-top-width:1px !important}.x-tab-default-bottom-active{border-top-color:#c7c7c7 !important}.x-tab-default-disabled{cursor:default;border-color:#c9c2c2;background-image:none;background-color:#e3d9d9;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e3d9d9), color-stop(100%, #eedddd));background-image:-webkit-linear-gradient(top, #e3d9d9,#eedddd);background-image:-moz-linear-gradient(top, #e3d9d9,#eedddd);background-image:-o-linear-gradient(top, #e3d9d9,#eedddd);background-image:linear-gradient(top, #e3d9d9,#eedddd)}.x-tab-default-disabled button{color:#c3b3b3 !important}.x-tab-icon-text-left .x-tab-inner{padding-left:20px}.x-tab button{position:relative}.x-tab-icon{position:absolute;background-repeat:no-repeat;background-position:0 -1px;top:0;left:0;right:auto;bottom:0;width:18px;height:18px}.x-strict .x-ie8 .x-tab button,.x-strict .x-ie9 .x-tab button{overflow-y:visible}.x-tab-default-disabled .x-tab-icon{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5}.x-tab-noicon .x-tab-icon{display:none}.x-tab-top-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e6e6), color-stop(25%, #eeeaea), color-stop(45%, #f2eeee));background-image:-webkit-linear-gradient(top, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-moz-linear-gradient(top, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-o-linear-gradient(top, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:linear-gradient(top, #e7e6e6,#eeeaea 25%,#f2eeee 45%)}.x-tab-bottom-over{background-image:none;background-color:#f2eeee;background-image:-webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e7e6e6), color-stop(25%, #eeeaea), color-stop(45%, #f2eeee));background-image:-webkit-linear-gradient(bottom, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-moz-linear-gradient(bottom, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:-o-linear-gradient(bottom, #e7e6e6,#eeeaea 25%,#f2eeee 45%);background-image:linear-gradient(bottom, #e7e6e6,#eeeaea 25%,#f2eeee 45%)}.x-tab-active{z-index:3}.x-tab-active button{color:#333;color:white;text-shadow:0 0 1px #000}.x-tab-top-active{background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2aaad3), color-stop(100%, #2067a3));background-image:-webkit-linear-gradient(top, #2aaad3,#2067a3);background-image:-moz-linear-gradient(top, #2aaad3,#2067a3);background-image:-o-linear-gradient(top, #2aaad3,#2067a3);background-image:linear-gradient(top, #2aaad3,#2067a3)}.x-tab-bottom-active{background-image:none;background-color:#eaeaea;background-image:-webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #2aaad3), color-stop(100%, #2067a3));background-image:-webkit-linear-gradient(bottom, #2aaad3,#2067a3);background-image:-moz-linear-gradient(bottom, #2aaad3,#2067a3);background-image:-o-linear-gradient(bottom, #2aaad3,#2067a3);background-image:linear-gradient(bottom, #2aaad3,#2067a3)}.x-tab-disabled{border-color:#c9c2c2}.x-tab-disabled button{color:#c3b3b3}.x-tab-top-disabled{background-image:none;background:transparent;background-image:none;background-color:#e3d9d9;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e3d9d9), color-stop(100%, #eedddd));background-image:-webkit-linear-gradient(top, #e3d9d9,#eedddd);background-image:-moz-linear-gradient(top, #e3d9d9,#eedddd);background-image:-o-linear-gradient(top, #e3d9d9,#eedddd);background-image:linear-gradient(top, #e3d9d9,#eedddd)}.x-tab-bottom-disabled{background-image:none;background:transparent;background-image:none;background-color:#e3d9d9;background-image:-webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, #e3d9d9), color-stop(100%, #eedddd));background-image:-webkit-linear-gradient(bottom, #e3d9d9,#eedddd);background-image:-moz-linear-gradient(bottom, #e3d9d9,#eedddd);background-image:-o-linear-gradient(bottom, #e3d9d9,#eedddd);background-image:linear-gradient(bottom, #e3d9d9,#eedddd)}.x-nlg .x-tab-top{background-image:url('../themes/images/partkeepr/tab/tab-default-top-bg.gif')}.x-nlg .x-tab-bottom{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-bg.gif')}.x-nlg .x-tab-top-over{background-image:url('../themes/images/partkeepr/tab/tab-default-top-over-bg.gif')}.x-nlg .x-tab-bottom-over{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-over-bg.gif')}.x-nlg .x-tab-top-active{background-image:url('../themes/images/partkeepr/tab/tab-default-top-active-bg.gif')}.x-nlg .x-tab-bottom-active{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-active-bg.gif')}.x-nlg .x-tab-top-disabled{background-image:url('../themes/images/partkeepr/tab/tab-default-top-disabled-bg.gif') !important}.x-nlg .x-tab-bottom-disabled{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-disabled-bg.gif') !important}.x-tab-closable em{padding-right:14px}.x-tab-close-btn{position:absolute;top:2px;right:2px;width:11px;height:11px;font-size:0;line-height:0;text-indent:-999px;background:no-repeat;background-image:url('../themes/images/partkeepr/tab/tab-default-close.gif');filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}.x-nbr .x-tab-close-btn{top:0px;right:0px}a.x-tab-close-btn:hover{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.x-tab-default-disabled a.x-tab-close-btn{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30);opacity:0.3}.x-nbr .x-tab-top-over .x-frame-tl,.x-nbr .x-tab-top-over .x-frame-bl,.x-nbr .x-tab-top-over .x-frame-tr,.x-nbr .x-tab-top-over .x-frame-br,.x-nbr .x-tab-top-over .x-frame-tc,.x-nbr .x-tab-top-over .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-top-over-corners.gif')}.x-nbr .x-tab-top-over .x-frame-ml,.x-nbr .x-tab-top-over .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-top-over-sides.gif')}.x-nbr .x-tab-top-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-top-over-bg.gif')}.x-nbr .x-tab-bottom-over .x-frame-tl,.x-nbr .x-tab-bottom-over .x-frame-bl,.x-nbr .x-tab-bottom-over .x-frame-tr,.x-nbr .x-tab-bottom-over .x-frame-br,.x-nbr .x-tab-bottom-over .x-frame-tc,.x-nbr .x-tab-bottom-over .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-over-corners.gif')}.x-nbr .x-tab-bottom-over .x-frame-ml,.x-nbr .x-tab-bottom-over .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-over-sides.gif')}.x-nbr .x-tab-bottom-over .x-frame-mc{background-color:#f2eeee;background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-over-bg.gif')}.x-nbr .x-tab-top-active .x-frame-tl,.x-nbr .x-tab-top-active .x-frame-bl,.x-nbr .x-tab-top-active .x-frame-tr,.x-nbr .x-tab-top-active .x-frame-br,.x-nbr .x-tab-top-active .x-frame-tc,.x-nbr .x-tab-top-active .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-top-active-corners.gif')}.x-nbr .x-tab-top-active .x-frame-ml,.x-nbr .x-tab-top-active .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-top-active-sides.gif')}.x-nbr .x-tab-top-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-top-active-bg.gif')}.x-nbr .x-tab-bottom-active .x-frame-tl,.x-nbr .x-tab-bottom-active .x-frame-bl,.x-nbr .x-tab-bottom-active .x-frame-tr,.x-nbr .x-tab-bottom-active .x-frame-br,.x-nbr .x-tab-bottom-active .x-frame-tc,.x-nbr .x-tab-bottom-active .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-active-corners.gif')}.x-nbr .x-tab-bottom-active .x-frame-ml,.x-nbr .x-tab-bottom-active .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-active-sides.gif')}.x-nbr .x-tab-bottom-active .x-frame-mc{background-color:#eaeaea;background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-active-bg.gif')}.x-nbr .x-tab-top-disabled .x-frame-tl,.x-nbr .x-tab-top-disabled .x-frame-bl,.x-nbr .x-tab-top-disabled .x-frame-tr,.x-nbr .x-tab-top-disabled .x-frame-br,.x-nbr .x-tab-top-disabled .x-frame-tc,.x-nbr .x-tab-top-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-top-disabled-corners.gif')}.x-nbr .x-tab-top-disabled .x-frame-ml,.x-nbr .x-tab-top-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-top-disabled-sides.gif')}.x-nbr .x-tab-top-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-top-disabled-bg.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-tl,.x-nbr .x-tab-bottom-disabled .x-frame-bl,.x-nbr .x-tab-bottom-disabled .x-frame-tr,.x-nbr .x-tab-bottom-disabled .x-frame-br,.x-nbr .x-tab-bottom-disabled .x-frame-tc,.x-nbr .x-tab-bottom-disabled .x-frame-bc{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-disabled-corners.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-ml,.x-nbr .x-tab-bottom-disabled .x-frame-mr{background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-disabled-sides.gif')}.x-nbr .x-tab-bottom-disabled .x-frame-mc{background-repeat:repeat-x;background-image:url('../themes/images/partkeepr/tab/tab-default-bottom-disabled-bg.gif')}.x-autowidth-table table.x-grid-table{table-layout:auto;width:auto!important}.x-tree-no-lines .x-tree-elbow{background-color:transparent}.x-tree-no-lines .x-tree-elbow-end{background-color:transparent}.x-tree-no-lines .x-tree-elbow-line{background-color:transparent}.x-tree-arrows .x-tree-elbow-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-plus{background:transparent no-repeat 0 0}.x-tree-arrows .x-tree-elbow-end-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow-minus{background:transparent no-repeat -16px 0}.x-tree-arrows .x-tree-elbow{background-color:transparent !important}.x-tree-arrows .x-tree-elbow-end{background-color:transparent !important}.x-tree-arrows .x-tree-elbow-line{background-color:transparent !important}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-32px 0}.x-tree-arrows .x-tree-expander-over .x-tree-elbow-minus,.x-tree-arrows .x-tree-expander-over .x-tree-elbow-end-minus{background-position:-48px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-position:-16px 0}.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-plus,.x-tree-arrows .x-grid-tree-node-expanded .x-tree-expander-over .x-tree-elbow-end-plus{background-position:-48px 0}.x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer}.x-tree-lines .x-tree-elbow{background-image:url('../themes/images/partkeepr/tree/elbow.gif')}.x-tree-lines .x-tree-elbow-end{background-image:url('../themes/images/partkeepr/tree/elbow-end.gif')}.x-tree-lines .x-tree-elbow-plus{background-image:url('../themes/images/partkeepr/tree/elbow-plus.gif')}.x-tree-lines .x-tree-elbow-end-plus{background-image:url('../themes/images/partkeepr/tree/elbow-end-plus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-plus{background-image:url('../themes/images/partkeepr/tree/elbow-minus.gif')}.x-tree-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../themes/images/partkeepr/tree/elbow-end-minus.gif')}.x-tree-lines .x-tree-elbow-line{background-image:url('../themes/images/partkeepr/tree/elbow-line.gif')}.x-tree-no-lines .x-tree-elbow-plus,.x-tree-no-lines .x-tree-elbow-end-plus{background-image:url('../themes/images/partkeepr/tree/elbow-plus-nl.gif')}.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-plus,.x-tree-no-lines .x-grid-tree-node-expanded .x-tree-elbow-end-plus{background-image:url('../themes/images/partkeepr/tree/elbow-end-minus-nl.gif')}.x-tree-arrows .x-tree-elbow-plus,.x-tree-arrows .x-tree-elbow-minus,.x-tree-arrows .x-tree-elbow-end-plus,.x-tree-arrows .x-tree-elbow-end-minus{background-image:url('../themes/images/partkeepr/tree/arrows.gif')}.x-tree-icon{margin:2px 3px 0 0}.x-grid-with-row-lines .x-tree-icon{margin-top:1px}.x-tree-elbow,.x-tree-elbow-end,.x-tree-elbow-plus,.x-tree-elbow-end-plus,.x-tree-elbow-empty,.x-tree-elbow-line{height:20px;width:16px}.x-grid-with-row-lines .x-tree-elbow,.x-grid-with-row-lines .x-tree-elbow-end,.x-grid-with-row-lines .x-tree-elbow-plus,.x-grid-with-row-lines .x-tree-elbow-end-plus,.x-grid-with-row-lines .x-tree-elbow-empty,.x-grid-with-row-lines .x-tree-elbow-line{height:19px;background-position:0 -1px}.x-tree-icon-leaf{width:16px;background-image:url('../themes/images/partkeepr/tree/leaf.gif')}.x-tree-icon-parent{width:16px;background-image:url('../themes/images/partkeepr/tree/folder.gif')}.x-grid-tree-node-expanded .x-tree-icon-parent{background-image:url('../themes/images/partkeepr/tree/folder-open.gif')}.x-grid-rowbody{padding:0}.x-grid-cell-treecolumn .x-grid-cell-inner{padding:0;line-height:19px}.x-grid-with-row-lines .x-grid-cell-treecolumn .x-grid-cell-inner{line-height:17px}.x-tree-panel .x-grid-cell-inner{cursor:pointer}.x-tree-panel .x-grid-cell-inner img{display:inline-block;vertical-align:top}.x-ie .x-tree-panel .x-tree-elbow,.x-ie .x-tree-panel .x-tree-elbow-end,.x-ie .x-tree-panel .x-tree-elbow-plus,.x-ie .x-tree-panel .x-tree-elbow-end-plus,.x-ie .x-tree-panel .x-tree-elbow-empty,.x-ie .x-tree-panel .x-tree-elbow-line{vertical-align:-6px}.x-grid-editor-on-text-node .x-form-text{padding-left:1px;padding-right:1px}.x-ie .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-opera .x-grid-editor-on-text-node .x-form-text{padding-left:2px;padding-right:2px}.x-tree-checkbox{margin:4px 3px 0 0;display:inline-block;vertical-align:top;width:13px;height:13px;background:no-repeat;background-image:url('../themes/images/partkeepr/form/checkbox.png');overflow:hidden;padding:0;border:0}.x-tree-checkbox::-moz-focus-inner{padding:0;border:0}.x-grid-with-row-lines .x-tree-checkbox{margin-top:3px}.x-tree-checkbox-checked{background-position:0 -13px}.x-tree-drop-ok-append .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/tree/drop-append.gif')}.x-tree-drop-ok-above .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/tree/drop-above.gif')}.x-tree-drop-ok-below .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/tree/drop-below.gif')}.x-tree-drop-ok-between .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/tree/drop-between.gif')}.x-grid-tree-loading .x-tree-icon{background-image:url('../themes/images/partkeepr/tree/loading.gif')}.x-tree-ddindicator{height:1px;border-width:1px 0px 0px;border-style:dotted;border-color:green}.x-grid-tree-loading span{font-style:italic;color:#444444}.x-tree-animator-wrap{overflow:hidden}.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-viewport,.x-viewport body{margin:0;padding:0;border:0 none;overflow:hidden;height:100%;position:static}.x-dd-drag-proxy{z-index:1000000!important}.x-dd-drag-repair .x-dd-drag-ghost{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=60);opacity:0.6}.x-dd-drag-repair .x-dd-drop-icon{display:none}.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}.x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1}.x-view-selector{position:absolute;left:0;top:0;width:0;background-color:#c3daf9;border:1px dotted #3399bb;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;zoom:1}.x-dd-drop-nodrop .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/dd/drop-no.gif')}.x-dd-drop-ok .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/dd/drop-yes.gif')}.x-dd-drop-ok-add .x-dd-drop-icon{background-image:url('../themes/images/partkeepr/dd/drop-add.gif')}.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}.x-collapsed .x-resizable-handle{display:none}.x-resizable-handle-east{width:6px;height:100%;right:0;top:0}.x-resizable-over .x-resizable-handle-east{cursor:e-resize}.x-resizable-handle-south{width:100%;height:6px;left:0;bottom:0}.x-resizable-over .x-resizable-handle-south{cursor:s-resize}.x-resizable-handle-west{width:6px;height:100%;left:0;top:0}.x-resizable-over .x-resizable-handle-west{cursor:w-resize}.x-resizable-handle-north{width:100%;height:6px;left:0;top:0}.x-resizable-over .x-resizable-handle-north{cursor:n-resize}.x-resizable-handle-southeast{width:6px;height:6px;right:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southeast{cursor:se-resize}.x-resizable-handle-northwest{width:6px;height:6px;left:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northwest{cursor:nw-resize}.x-resizable-handle-northeast{width:6px;height:6px;right:0;top:0;z-index:101}.x-resizable-over .x-resizable-handle-northeast{cursor:ne-resize}.x-resizable-handle-southwest{width:6px;height:6px;left:0;bottom:0;z-index:101}.x-resizable-over .x-resizable-handle-southwest{cursor:sw-resize}.x-ie .x-resizable-handle-east{margin-right:-1px}.x-ie .x-resizable-handle-south{margin-bottom:-1px}.x-resizable-over .x-resizable-handle,.x-resizable-pinned .x-resizable-handle{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);opacity:1}.x-window .x-window-handle{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0}.x-window-collapsed .x-window-handle{display:none}.x-resizable-proxy{border:1px dashed #3b5a82;position:absolute;left:0;top:0;overflow:hidden;z-index:50000}.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}.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;background-image:url('../themes/images/partkeepr/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-position:top;background-image:url('../themes/images/partkeepr/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('../themes/images/partkeepr/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('../themes/images/partkeepr/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('../themes/images/partkeepr/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('../themes/images/partkeepr/sizer/sw-handle.gif')}.x-splitter .x-collapse-el{position:absolute;cursor:pointer;background-color:transparent;background-repeat:no-repeat !important}.x-layout-split-left,.x-layout-split-right{top:50%;margin-top:-17px;width:5px;height:35px}.x-layout-split-top,.x-layout-split-bottom{left:50%;width:35px;height:5px;margin-left:-17px}.x-layout-split-left{background:no-repeat top right;background-image:url('../themes/images/partkeepr/util/splitter/mini-left.gif')}.x-layout-split-right{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-right.gif')}.x-layout-split-top{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-top.gif')}.x-layout-split-bottom{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-left{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-right.gif')}.x-splitter-collapsed .x-layout-split-right{background:no-repeat top right;background-image:url('../themes/images/partkeepr/util/splitter/mini-left.gif')}.x-splitter-collapsed .x-layout-split-top{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-bottom.gif')}.x-splitter-collapsed .x-layout-split-bottom{background:no-repeat top left;background-image:url('../themes/images/partkeepr/util/splitter/mini-top.gif')}.x-splitter-horizontal{cursor:e-resize;cursor:row-resize;font-size:1px}.x-splitter-vertical{cursor:e-resize;cursor:col-resize;font-size:1px}.x-splitter-collapsed{cursor:default}.x-splitter-active{z-index:4;font-size:1px;background-color:#b4b4b4;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:0.8}.x-splitter-active .x-collapse-el{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=30);opacity:0.3}.x-proxy-el{position:absolute;background:#b4b4b4;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);opacity:0.8}.x-docked{position:absolute !important;z-index:1}.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-box-inner{overflow:hidden;zoom:1;position:relative;left:0;top:0}.x-box-item{position:absolute !important;left:0;top:0}.x-rtl .x-box-item{right:0;left:auto}.x-box-layout-ct,.x-border-layout-ct{overflow:hidden;zoom:1}.x-border-layout-ct{background-color:#dbdbdb;position:relative}.x-overflow-hidden{overflow:hidden !important}.x-inline-children>*{display:inline-block !important}.x-abs-layout-ct{position:relative}.x-abs-layout-item{position:absolute !important}.x-fit-item{position:relative}.x-border-region-slide-in{z-index:5}.x-region-collapsed-placeholder{z-index:4}.x-accordion-hd .x-panel-header-text{color:#000;font-weight:normal}.x-accordion-hd{background:#d9e7f8 !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 .x-tool-collapse-top,.x-accordion-hd .x-tool-collapse-right,.x-accordion-hd .x-tool-collapse-bottom,.x-accordion-hd .x-tool-collapse-left{background-position:0 -255px}.x-accordion-hd .x-tool-expand-top,.x-accordion-hd .x-tool-expand-right,.x-accordion-hd .x-tool-expand-bottom,.x-accordion-hd .x-tool-expand-left{background-position:0 -240px}.x-accordion-hd .x-tool-over .x-tool-collapse-top,.x-accordion-hd .x-tool-over .x-tool-collapse-right,.x-accordion-hd .x-tool-over .x-tool-collapse-bottom,.x-accordion-hd .x-tool-over .x-tool-collapse-left{background-position:-15px -255px}.x-accordion-hd .x-tool-over .x-tool-expand-top,.x-accordion-hd .x-tool-over .x-tool-expand-right,.x-accordion-hd .x-tool-over .x-tool-expand-bottom,.x-accordion-hd .x-tool-over .x-tool-expand-left{background-position:-15px -240px}.x-accordion-hd{border-width:1px 0 1px 0 !important;padding:4px 5px 5px 5px;border-top-color:#e8e8e8 !important}.x-accordion-body{border-width:0 !important}.x-accordion-hd-sibling-expanded{border-top-color:#aaa !important;-webkit-box-shadow:inset 0 1px 0 0 #e8e8e8;-moz-box-shadow:inset 0 1px 0 0 #e8e8e8;box-shadow:inset 0 1px 0 0 #e8e8e8}.x-accordion-hd-last-collapsed{border-bottom-color:#d9e7f8 !important}.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{position:relative;background-repeat:repeat-x;overflow:hidden}.x-box-scroller-left{float:left;height:100%;z-index:5}.x-box-scroller-left .x-toolbar-scroll-left,.x-box-scroller-left .x-tabbar-scroll-left{width:18px;position:relative;cursor:pointer;height:23;background:transparent no-repeat -18px 0;background-image:url('../themes/images/partkeepr/tab-bar/scroll-left.gif')}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled,.x-box-scroller-left .x-tabbar-scroll-left-disabled{background-position:-18px 0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;cursor:default}.x-box-scroller-left .x-toolbar-scroll-left{background-image:url('../themes/images/partkeepr/toolbar/scroll-left.gif');background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left-hover{background-position:0 0}.x-box-scroller-left .x-toolbar-scroll-left-disabled{background-position:-14px 0}.x-box-scroller-left .x-toolbar-scroll-left{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-horizontal-box-overflow-body{float:left}.x-box-scroller-right{float:right;height:100%;z-index:5}.x-box-scroller-right .x-toolbar-scroll-right,.x-box-scroller-right .x-tabbar-scroll-right{width:18px;position:relative;cursor:pointer;height:23;background:transparent no-repeat 0 0;background-image:url('../themes/images/partkeepr/tab-bar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-18px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled,.x-box-scroller-right .x-tabbar-scroll-right-disabled{background-position:0 0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);opacity:0.5;cursor:default}.x-box-scroller-right .x-toolbar-scroll-right{background-image:url('../themes/images/partkeepr/toolbar/scroll-right.gif')}.x-box-scroller-right .x-toolbar-scroll-right-hover{background-position:-14px 0}.x-box-scroller-right .x-toolbar-scroll-right-disabled{background-position:0 0}.x-box-scroller-right .x-toolbar-scroll-right{width:14px;height:22px;border-bottom:1px solid #8db2e3}.x-box-scroller-top .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-top .x-menu-scroll-top{background:transparent no-repeat center center;background-image:url('../themes/images/partkeepr/layout/mini-top.gif');height:8px;cursor:pointer}.x-box-scroller-bottom .x-box-scroller{line-height:0;font-size:0}.x-box-scroller-bottom .x-menu-scroll-bottom{background:transparent no-repeat center center;background-image:url('../themes/images/partkeepr/layout/mini-bottom.gif');height:8px;cursor:pointer}.x-box-menu-right{float:right;padding-right:2px}.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-tool{height:15px}.x-tool img{overflow:hidden;width:15px;height:15px;cursor:pointer;background-color:transparent;background-repeat:no-repeat;background-image:url('../themes/images/partkeepr/tools/tool-sprites.gif');margin:0}.x-panel-header-horizontal .x-tool,.x-window-header-horizontal .x-tool{margin-left:2px}.x-panel-header-vertical .x-tool,.x-window-header-vertical .x-tool{margin-top:2px}.x-panel-header-vertical .x-tool-top,.x-window-header-vertical .x-tool-top{margin:0 0 4px}.x-tool-placeholder{visibility:hidden}.x-tool-toggle{background-position:0 -60px}.x-tool-over .x-tool-toggle{background-position:-15px -60px}.x-panel-collapsed .x-tool-toggle,.x-fieldset-collapsed .x-tool-toggle{background-position:0 -75px}.x-panel-collapsed .x-tool-over .x-tool-toggle,.x-fieldset-collapsed .x-tool-over .x-tool-toggle{background-position:-15px -75px}.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-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-help{background-position:0 -300px}.x-tool-save{background-position:0 -285px}.x-tool-search{background-position:0 -270px}.x-tool-minus{background-position:0 -255px}.x-tool-plus{background-position:0 -240px}.x-tool-refresh{background-position:0 -225px}.x-tool-up{background-position:0 -210px}.x-tool-down{background-position:0 -195px}.x-tool-collapse{background-position:0 -345px}.x-tool-expand{background-position:0 -330px}.x-tool-print{background-position:0 -315px}.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-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-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-horizontal-scroller-present .x-grid-body{border-bottom-width:0px}.x-vertical-scroller-present .x-grid-body{border-right-width:0px}.x-scroller{overflow:hidden}.x-scroller-vertical{border:1px solid #aaa;border-top-color:#c5c5c5}.x-scroller-horizontal{border:1px solid #aaa}.x-vertical-scroller-present .x-scroller-horizontal{border-right-width:0px}.x-scroller-ct{overflow:hidden;position:absolute;margin:0;padding:0;border:none;left:0px;top:0px;box-sizing:content-box !important;-ms-box-sizing:content-box !important;-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important}.x-scroller-vertical .x-scroller-ct{overflow-y:scroll}.x-scroller-horizontal .x-scroller-ct{overflow-x:scroll}.x-html html,.x-html address,.x-html blockquote,.x-html body,.x-html dd,.x-html div,.x-html dl,.x-html dt,.x-html fieldset,.x-html form,.x-html frame,.x-html frameset,.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html noframes,.x-html ol,.x-html p,.x-html ul,.x-html center,.x-html dir,.x-html hr,.x-html menu,.x-html pre{display:block}.x-html li{display:list-item;list-style:disc}.x-html head{display:none}.x-html table{display:table}.x-html tr{display:table-row}.x-html thead{display:table-header-group}.x-html tbody{display:table-row-group}.x-html tfoot{display:table-footer-group}.x-html col{display:table-column}.x-html colgroup{display:table-column-group}.x-html td,.x-html th{display:table-cell}.x-html caption{display:table-caption}.x-html th{font-weight:bolder;text-align:center}.x-html caption{text-align:center}.x-html body{margin:8px}.x-html h1{font-size:2em;margin:.67em 0}.x-html h2{font-size:1.5em;margin:.75em 0}.x-html h3{font-size:1.17em;margin:.83em 0}.x-html h4,.x-html p,.x-html blockquote,.x-html ul,.x-html fieldset,.x-html form,.x-html ol,.x-html dl,.x-html dir,.x-html menu{margin:1.12em 0}.x-html h5{font-size:.83em;margin:1.5em 0}.x-html h6{font-size:.75em;margin:1.67em 0}.x-html h1,.x-html h2,.x-html h3,.x-html h4,.x-html h5,.x-html h6,.x-html b,.x-html strong{font-weight:bolder}.x-html blockquote{margin-left:40px;margin-right:40px}.x-html i,.x-html cite,.x-html em,.x-html var,.x-html address{font-style:italic}.x-html pre,.x-html tt,.x-html code,.x-html kbd,.x-html samp{font-family:monospace}.x-html pre{white-space:pre}.x-html button,.x-html textarea,.x-html input,.x-html select{display:inline-block}.x-html big{font-size:1.17em}.x-html small,.x-html sub,.x-html sup{font-size:.83em}.x-html sub{vertical-align:sub}.x-html sup{vertical-align:super}.x-html table{border-spacing:2px}.x-html thead,.x-html tbody,.x-html tfoot{vertical-align:middle}.x-html td,.x-html th{vertical-align:inherit}.x-html s,.x-html strike,.x-html del{text-decoration:line-through}.x-html hr{border:1px inset}.x-html ol,.x-html ul,.x-html dir,.x-html menu,.x-html dd{margin-left:40px}.x-html ul,.x-html menu,.x-html dir{list-style-type:disc}.x-html ol{list-style-type:decimal}.x-html ol ul,.x-html ul ol,.x-html ul ul,.x-html ol ol{margin-top:0;margin-bottom:0}.x-html u,.x-html ins{text-decoration:underline}.x-html br:before{content:"\A"}.x-html :before,.x-html :after{white-space:pre-line}.x-html center{text-align:center}.x-html :link,.x-html :visited{text-decoration:underline}.x-html :focus{outline:invert dotted thin}.x-html BDO[DIR="ltr"]{direction:ltr;unicode-bidi:bidi-override}.x-html BDO[DIR="rtl"]{direction:rtl;unicode-bidi:bidi-override}.x-toolbar-mainmenu{background-image:none;background-color:#ececec;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2aaad3), color-stop(100%, #2067a3));background-image:-webkit-linear-gradient(top, #2aaad3,#2067a3);background-image:-moz-linear-gradient(top, #2aaad3,#2067a3);background-image:-o-linear-gradient(top, #2aaad3,#2067a3);background-image:linear-gradient(top, #2aaad3,#2067a3)}.x-toolbar-mainmenu .x-btn-default-toolbar-small{border:0 !important;background:none;box-shadow:none}.x-toolbar-mainmenu .x-btn-default-toolbar-small .x-btn-inner{color:white;font-weight:bold;text-shadow:0 0 1px #000}.x-toolbar-mainmenu .x-btn-over{background-image:none;background-color:#2aaad3;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #68c4e1), color-stop(100%, #388ed8));background-image:-webkit-linear-gradient(top, #68c4e1,#388ed8);background-image:-moz-linear-gradient(top, #68c4e1,#388ed8);background-image:-o-linear-gradient(top, #68c4e1,#388ed8);background-image:linear-gradient(top, #68c4e1,#388ed8)}.x-toolbar-mainmenu .x-btn-menu-active{background-image:none;background-color:#2aaad3;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #68c4e1), color-stop(100%, #388ed8));background-image:-webkit-linear-gradient(top, #68c4e1,#388ed8);background-image:-moz-linear-gradient(top, #68c4e1,#388ed8);background-image:-o-linear-gradient(top, #68c4e1,#388ed8);background-image:linear-gradient(top, #68c4e1,#388ed8)}.x-toolbar-mainmenu .x-btn-default-toolbar-small .x-btn-arrow{background-image:url(../themes/images/partkeepr/button/arrow-white.gif)}.x-btn-default-toolbar-small{padding:3px}.x-panel-header-default .x-panel-header-text{text-shadow:1px 1px 0px black}.x-accordion-hd{text-shadow:clear}.x-panel-header-default{box-shadow:none}.x-panel-header-default-top{box-shadow:none;-webkit-box-shadow:none}.x-panel-header-default-framed-top{box-shadow:none;-webkit-box-shadow:none}.partkeepr-logo{color:white !important;font-weight:bold;font-style:italic;font-family:'Ubuntu', sans-serif !important;text-shadow:0px -1px 0px #374683;font-size:24px !important}.partkeepr-logo-align{margin-right:1px;text-align:right}.x-tab-default-icon-text-left em{margin-left:-4px} diff --git a/src/setup/index.php b/src/setup/index.php @@ -1,71 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> - <title>PartKeepr Setup</title> - - <link href='http://fonts.googleapis.com/css?family=Ubuntu:400,700italic' rel='stylesheet' type='text/css'> - - <!-- Include the ExtJS CSS Theme --> - <link rel="stylesheet" type="text/css" href="css/partkeepr-theme.css"/> - - <link rel="stylesheet" type="text/css" href="resources/css/setup.css"/> - <link href="js/wizard/resources/css/ext-ux-wiz.css" rel="stylesheet" type="text/css" /> - - <!-- Include the ExtJS JavaScript Library --> - <script type="text/javascript" src="extjs/ext-all-debug.js"></script> - - - <!-- Include the Ext.ux.Wizard Library --> - <script type="text/javascript" src="js/wizard/Ext.ux.Wizard.CardLayout.js"></script> - <script type="text/javascript" src="js/wizard/Ext.ux.Wizard.Card.js"></script> - <script type="text/javascript" src="js/wizard/Ext.ux.Wizard.Header.js"></script> - <script type="text/javascript" src="js/wizard/Ext.ux.Wizard.js"></script> - - <!-- Note that the files here are not minified to make debugging easier --> - <script type="text/javascript" src="js/SetupWizard.js"></script> - - <script type="text/javascript" src="js/TestResultPanel.js"></script> - <script type="text/javascript" src="js/TestRunner.js"></script> - - <script type="text/javascript" src="js/Cards/AbstractTestCard.js"></script> - <script type="text/javascript" src="js/Cards/PrerequisitesTestCard.js"></script> - <script type="text/javascript" src="js/Cards/DatabaseParametersCard.js"></script> - <script type="text/javascript" src="js/Cards/DatabaseParametersCard.MySQL.js"></script> - <script type="text/javascript" src="js/Cards/DatabaseParametersCard.PostgreSQL.js"></script> - <script type="text/javascript" src="js/Cards/DatabaseConnectivityTestCard.js"></script> - <script type="text/javascript" src="js/Cards/DatabaseSetupCard.js"></script> - <script type="text/javascript" src="js/Cards/ConfigFileModeCard.js"></script> - <script type="text/javascript" src="js/Cards/ConfigFileActionCard.js"></script> - <script type="text/javascript" src="js/Cards/ConfigSaveCard.js"></script> - <script type="text/javascript" src="js/Cards/ConfigDisplayCard.js"></script> - - <script type="text/javascript" src="js/SetupTests/AbstractTest.js"></script> - <script type="text/javascript" src="js/SetupTests/PHPTest.js"></script> - <script type="text/javascript" src="js/SetupTests/PHPPrerequisitesTest.js"></script> - <script type="text/javascript" src="js/SetupTests/DoctrineTest.js"></script> - <script type="text/javascript" src="js/SetupTests/TwigTest.js"></script> - <script type="text/javascript" src="js/SetupTests/DatabaseConnectivityTest.js"></script> - <script type="text/javascript" src="js/SetupTests/PHPSettingsTest.js"></script> - <script type="text/javascript" src="js/SetupTests/FilesystemPermissionTest.js"></script> - - <script type="text/javascript" src="js/SetupTests/ConfigSaveAction.js"></script> - - <script type="text/javascript" src="js/SetupSteps/SchemaSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/AdminUserSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/ManufacturerSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/PartCategorySetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/PartUnitSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/SiPrefixSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/UnitSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/FootprintSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/ConfigFileSetup.js"></script> - <script type="text/javascript" src="js/SetupSteps/MiscSetup.js"></script> - - <script type="text/javascript" src="js/PartKeeprSetup.js"></script> - </head> - <body> - </body> -</html> - - \ No newline at end of file diff --git a/src/setup/js/Cards/AbstractTestCard.js b/src/setup/js/Cards/AbstractTestCard.js @@ -1,133 +0,0 @@ -/** - * This class represents an abstract test card. The purpose of this card is to run - * specific tests, display the test results and offer a "re-test" button which the - * user can click in order to perform the tests. - * - * Additionally, the "next" button of the wizward will be disabled if the test fails. - */ -Ext.define('PartKeeprSetup.AbstractTestCard', { - extend: 'Ext.ux.wizard.Card', - - /** - * Contains the test results for this card - * @var PartKeeprSetup.TestResultPanel - */ - testResultPanel: null, - - /** - * Contains the initially hidden "Re-test" button to re-trigger the tests. - */ - retestButton: null, - - /** - * Contains the test which will be run - * @var array - */ - tests: null, - - /** - * Text which will be shown above the test result panel. - * @var string - */ - cardMessage: null, - - /** - * Various Style Settings - */ - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - autoScroll: true, - rerunTestText: "Re-run checks", - - /** - * Inits the component - */ - initComponent: function () { - this.testResultPanel = Ext.create("PartKeeprSetup.TestResultPanel"); - this.testResultPanel.on("test-error", this.onTestError, this); - - this.retestButton = Ext.create("Ext.button.Button", { - text: this.rerunTestText, - hidden: true - }); - - this.retestButton.on("click", this.retest, this); - - this.items = [{ - border: false, - bodyStyle: 'background:none;padding-bottom: 10px;', - html: this.cardMessage - }, - this.testResultPanel, - this.retestButton ]; - - this.tests = new Array(); - - this.testRunner = Ext.create("PartKeeprSetup.TestRunner"); - this.testRunner.on("success", this.onTestSuccessful, this); - - this.setupTests(); - this.callParent(); - this.on("activate", this.onActivate, this); - }, - - /** - * Re-runs the configured tests and hides the Re-test button, - * because we don't know if the tests will be successful. - */ - retest: function () { - this.retestButton.hide(); - this.runTests(); - }, - /** - * Called when an error occurs. Shows the "re-test" button - * and disables the "next" button. - */ - onTestError: function () { - this.retestButton.show(); - this.ownerCt.ownerCt.nextButton.setDisabled(true); - }, - /** - * Called when all tests are successful. Hides the "re-test" - * button and enables the "next" button. - */ - onTestSuccessful: function () { - this.retestButton.hide(); - this.ownerCt.ownerCt.nextButton.setDisabled(false); - }, - /** - * Invokes the test runner with all configured tests - */ - runTests: function () { - this.testResultPanel.clear(); - - // We need to clone the test array, because we wouldn't be able to run all tests twice - var clonedTests = this.tests.slice(0); - this.testRunner.run(clonedTests, this.testResultPanel); - - }, - /** - * When the card is activated, automatically invoke all tests. - */ - onActivate: function () { - this.ownerCt.ownerCt.nextButton.setDisabled(true); - this.retestButton.hide(); - - this.runTests(); - }, - /** - * This method needs to be overridden by subclasses. Subclasses - * need to append tests to the "tests" array, e.g. - * - * var j = Ext.create("PartKeeprSetup.FilesystemPermissionTest"); - * j.callback = this.testResultPanel; - * this.tests.push(j); - * - */ - setupTests: function () { - window.alert("The method setupTests() need to be overridden in a subclass!"); - } -}); - diff --git a/src/setup/js/Cards/ConfigFileActionCard.js b/src/setup/js/Cards/ConfigFileActionCard.js @@ -1,51 +0,0 @@ -/** - * This card executes the chosen configuration file mode. - */ -Ext.define('PartKeeprSetup.ConfigFileActionCard', { - extend: 'Ext.ux.wizard.Card', - - /** - * Various Style Settings - */ - title: 'Configuration File', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - id: 'config-action-card', - autoScroll: true, - mode: null, - layout: 'card', - - /** - * Inits the component - */ - initComponent: function () { - this.items = [ - this.createSaveCard(), - this.createDisplayCard() - ]; - - this.callParent(); - this.on("activate", this.onActivate, this); - }, - createSaveCard: function () { - return Ext.create("PartKeeprSetup.ConfigSaveCard", { - itemId: 'card-action-save' - }); - }, - createDisplayCard: function () { - return Ext.create("PartKeeprSetup.ConfigDisplayCard", { - itemId: 'card-action-display' - }); - }, - /** - * Gets called when the card is activated - */ - onActivate: function () { - this.getLayout().setActiveItem('card-action-' + Ext.getCmp("config-mode-card").mode); - this.getLayout().activeItem.fireEvent("activateCard"); - // Disable the "next" button, this needs to get enabled by the database cards - this.ownerCt.ownerCt.nextButton.setDisabled(true); - } -});- \ No newline at end of file diff --git a/src/setup/js/Cards/ConfigFileModeCard.js b/src/setup/js/Cards/ConfigFileModeCard.js @@ -1,90 +0,0 @@ -/** - * This card manages the config file creation. - */ -Ext.define('PartKeeprSetup.ConfigFileModeCard', { - extend: 'Ext.ux.wizard.Card', - - /** - * Various Style Settings - */ - title: 'Configuration File', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - id: 'config-mode-card', - autoScroll: true, - mode: null, - - /** - * Inits the component - */ - initComponent: function () { - - this.saveOption = Ext.create("Ext.form.field.Radio", { - name: 'configfilemode', - inputValue: 'save', - boxLabel: 'Save', - listeners: { - scope: this, - change: this.setConfigFileMode - } - }); - - this.displayOption = Ext.create("Ext.form.field.Radio", { - name: 'configfilemode', - inputValue: 'display', - boxLabel: 'Display', - listeners: { - scope: this, - change: this.setConfigFileMode - } - }); - - this.items = [{ - xtype: 'displayfield', - value: 'PartKeepr needs a configuration file to operate. Please choose how to proceed:', - style: 'margin-bottom: 20px;' - }, - this.saveOption, - { - xtype: 'displayfield', - value: 'Attempts to save the configuration file. The configuration file may not exist, and it must be' + - 'writable by your web server.', - style: 'margin-left: 17px; margin-bottom: 5px;' - - }, - this.displayOption, - { - xtype: 'displayfield', - value: 'Displays the configuration file, so you can use copy and paste.', - style: 'margin-left: 17px; margin-bottom: 5px;' - }]; - - this.callParent(); - this.on("activate", this.onActivate, this); - }, - setConfigFileMode: function () { - if (this.saveOption.getValue()) { - this.mode = "save"; - } - - if (this.displayOption.getValue()) { - this.mode = "display"; - } - - this.ownerCt.ownerCt.nextButton.setDisabled(false); - }, - /** - * Gets called when the card is activated - */ - onActivate: function () { - // Disable the "next" button, this needs to get enabled by the database cards - if (this.saveOption.getValue() || this.displayOption.getValue()) { - this.ownerCt.ownerCt.nextButton.setDisabled(false); - } else { - this.ownerCt.ownerCt.nextButton.setDisabled(true); - } - - } -});- \ No newline at end of file diff --git a/src/setup/js/Cards/DatabaseParametersCard.js b/src/setup/js/Cards/DatabaseParametersCard.js @@ -1,116 +0,0 @@ -/** - * This card displays the database parameters. - * - * This card supports multiple database types along with their special parameters. - */ -Ext.define('PartKeeprSetup.DatabaseParametersCard', { - extend: 'Ext.ux.wizard.Card', - - /** - * Various Style Settings - */ - title: 'Database Parameters', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - id: 'database-parameters-card', - autoScroll: true, - - /** - * Inits the component - */ - initComponent: function () { - - this.createDatabaseDropdown(); - - this.databaseSettings = Ext.create("Ext.panel.Panel", { - layout: 'card', - border: false, - bodyStyle: { - background: "none" - }, - items: [{ - border: false, - bodyStyle: { - background: "none" - }, - html: 'Please select a database driver' - }, - Ext.create("PartKeeprSetup.DatabaseParametersCard.MySQL", { paramsheet: this }), - Ext.create("PartKeeprSetup.DatabaseParametersCard.PostgreSQL", { paramsheet: this }) - ] - }); - - this.items = [{ - border: false, - bodyStyle: 'background:none;padding-bottom: 10px;', - html: 'Please enter your database parameters below:' - }, - this.databaseDropdown, - this.databaseSettings - ]; - - this.callParent(); - this.on("activate", this.onActivate, this); - }, - /** - * Creates the dropdown with all available database types. - */ - createDatabaseDropdown: function () { - var databaseTypes = Ext.create('Ext.data.Store', { - fields: ['type', 'name'], - data : [ - {"type":"mysql", "name":"MySQL"}, - {"type":"postgresql", "name":"PostgreSQL"} - ] - }); - - this.databaseDropdown = Ext.create('Ext.form.ComboBox', { - labelWidth: 120, - fieldLabel: 'Database Type', - store: databaseTypes, - queryMode: 'local', - displayField: 'name', - valueField: 'type', - triggerAction: 'all', - editable: false - }); - - this.databaseDropdown.on("select", this.onDriverSelect, this); - - }, - /** - * This method is a callback from the database dropdown and displays - * the correct database settings page. - */ - onDriverSelect: function (a,r) { - if (r.length == 1) { - switch (r[0].get("type")) { - case "mysql": - this.databaseSettings.layout.setActiveItem(1); - break; - case "postgresql": - this.databaseSettings.layout.setActiveItem(2); - break; - default: - this.databaseSettings.layout.setActiveItem(0); - break; - } - } else { - this.databaseSettings.layout.setActiveItem(0); - } - - this.ownerCt.ownerCt.nextButton.setDisabled(true); - }, - /** - * Gets called when the card is activated - */ - onActivate: function () { - // Disable the "next" button, this needs to get enabled by the database cards - this.ownerCt.ownerCt.nextButton.setDisabled(true); - - // Manually fire the activate event, in case the user switched cards back/forth. - this.databaseSettings.layout.getActiveItem().fireEvent("activate"); - } -}); diff --git a/src/setup/js/Cards/PrerequisitesTestCard.js b/src/setup/js/Cards/PrerequisitesTestCard.js @@ -1,20 +0,0 @@ -/** - * This card runs the prequisites test to make sure basic things like PHP and Doctrine are installed and configured. - */ -Ext.define('PartKeeprSetup.PrerequisitesTestCard', { - extend: 'PartKeeprSetup.AbstractTestCard', - - cardMessage: "Setup now checks if your server is capable of running PartKeepr.", - title: 'Checking prerequisites', - /** - * Sets up all tests - */ - setupTests: function () { - this.tests.push(new PartKeeprSetup.PHPTest()); - this.tests.push(new PartKeeprSetup.PHPPrerequisitesTest()); - this.tests.push(new PartKeeprSetup.PHPSettingsTest()); - this.tests.push(new PartKeeprSetup.DoctrineTest()); - this.tests.push(new PartKeeprSetup.TwigTest()); - this.tests.push(new PartKeeprSetup.FilesystemPermissionTest()); - } -}); diff --git a/src/setup/js/PartKeeprSetup.js b/src/setup/js/PartKeeprSetup.js @@ -1,13 +0,0 @@ -Ext.application({ - name: 'PartKeeprSetup', - launch: function() { - this.createLayout(); - }, - /** - * Creates the main viewport - */ - createLayout: function () { - var wizard = Ext.create("PartKeeprSetup.SetupWizard"); - wizard.show(); - } -});- \ No newline at end of file diff --git a/src/setup/js/SetupSteps/AdminUserSetup.js b/src/setup/js/SetupSteps/AdminUserSetup.js @@ -1,14 +0,0 @@ -/** - * Creates the administrative user - */ -Ext.define('PartKeeprSetup.AdminUserSetup', { - extend: 'PartKeeprSetup.AbstractTest', - url: 'setup.php', - name: "Database", - message: "Setting up the admin user", - - onBeforeRunTest: function () { - this.params = Ext.getCmp("database-parameters-card").dbparams; - this.params.step = "adminuser"; - } -});- \ No newline at end of file diff --git a/src/setup/js/SetupTests/AbstractTest.js b/src/setup/js/SetupTests/AbstractTest.js @@ -1,115 +0,0 @@ -/** - * Represents a test. - * - * Calls a specific PHP file on the server via AJAX and interprets the response. - */ -Ext.define('PartKeeprSetup.AbstractTest', { - mixins: { - observable: 'Ext.util.Observable' - }, - - /** - * Defines the URL to call - */ - url: 'check.php', - - /** - * Defines if the call was successful or not. - */ - success: false, - - /** - * Defines the callback. This needs to be an object which implements the "appendTestResult" method. - */ - callback: null, - - /** - * Defines the name of this test. - */ - name: null, - - /** - * Defines any warnings for the test. - */ - warnings: null, - - /** - * Defines additional parameters which are to be sent with the request. The format is an object, - * e.g. - * { - * username: "foo", - * password: "bar" - * } - * - * - */ - params: null, - - /** - * Constructs the test - */ - constructor: function (config) { - this.mixins.observable.constructor.call(this, config); - - this.addEvents("complete"); - }, - /** - * Runs a given test, and processes the response - */ - run: function () { - this.onBeforeRunTest(); - - this.callback.outputTestMessage(this); - Ext.Ajax.request({ - url: this.url, - success: this.onSuccess, - scope: this, - params: this.params, - timeout: 120000 - }); - }, - - /** - * Callback for the Ext.Ajax.request method. Decodes the response, sets the object parameters, fires the "complete" - * event and calls back the test result panel. - * - * @param response - */ - onSuccess: function (response) { - var obj; - - try { - obj = Ext.decode(response.responseText); - } catch (exception) { - obj = {}; - obj.error = true; - obj.message = "Invalid Response from server: "+response.responseText; - } - - - if (obj.error === false) { - this.success = true; - } else { - this.success = false; - this.errorMessage = obj.message; - } - - if (obj.warnings) { - this.warnings = obj.warnings; - } - - if (this.callback) { - this.callback.appendTestResult(this); - } - - if (this.success) { - this.fireEvent("complete", this); - } - }, - /** - * Gets called prior test execution. Most tests won't use this, but some tests need to inject parameters. - */ - onBeforeRunTest: function () { - return; - } -});- \ No newline at end of file diff --git a/src/setup/js/SetupTests/DoctrineTest.js b/src/setup/js/SetupTests/DoctrineTest.js @@ -1,9 +0,0 @@ -/** - * Tests is doctrine is installed correctly on the server - */ -Ext.define('PartKeeprSetup.DoctrineTest', { - extend: 'PartKeeprSetup.AbstractTest', - url: 'tests/check-doctrine.php', - name: "PHP", - message: "Testing for Doctrine ORM" -});- \ No newline at end of file diff --git a/src/setup/js/SetupTests/PHPPrerequisitesTest.js b/src/setup/js/SetupTests/PHPPrerequisitesTest.js @@ -1,9 +0,0 @@ -/** - * Tests if the most important PHP prerequisites are met (e.g. json_encode). - */ -Ext.define('PartKeeprSetup.PHPPrerequisitesTest', { - extend: 'PartKeeprSetup.AbstractTest', - url: 'check-php-prerequisites.php', - name: "PHP", - message: "Testing for PHP prerequisites" -});- \ No newline at end of file diff --git a/src/setup/js/SetupTests/PHPSettingsTest.js b/src/setup/js/SetupTests/PHPSettingsTest.js @@ -1,9 +0,0 @@ -/** - * Tests if the PHP configuration is OK. - */ -Ext.define('PartKeeprSetup.PHPSettingsTest', { - extend: 'PartKeeprSetup.AbstractTest', - url: 'tests/check-php-settings.php', - name: "PHP", - message: "Testing for correct PHP settings" -});- \ No newline at end of file diff --git a/src/setup/js/SetupTests/PHPTest.js b/src/setup/js/SetupTests/PHPTest.js @@ -1,9 +0,0 @@ -/** - * A minimalistic PHP check to make sure PHP is installed on the server and activated as PHP module. - */ -Ext.define('PartKeeprSetup.PHPTest', { - extend: 'PartKeeprSetup.AbstractTest', - url: 'check-php.php', - name: "PHP", - message: "Testing for PHP" -});- \ No newline at end of file diff --git a/src/setup/js/SetupWizard.js b/src/setup/js/SetupWizard.js @@ -1,124 +0,0 @@ -Ext.define('PartKeeprSetup.SetupWizard', { - extend: 'Ext.ux.Wizard', - - /** - * The wizard's window shouldn't have a close button - */ - closable: false, - - /** - * Title. Ovbiously. - */ - title: 'PartKeepr Setup', - - /** - * Some style settings for the individual cards - */ - cardPanelConfig: { - defaults: { - baseCls: 'x-small-editor', - bodyStyle: 'padding:10px 15px 5px 10px;background-color:#F6F6F6;', - border: false - }, - layout: 'card' - }, - - /** - * Configure the header - */ - includeHeaderPanel: true, - headConfig: { - headerPosition: 'bottom', - position: 'top', - cls: "x-setup-header", - height: 120, - stepText: '' - }, - - /** - * The width and height of the window, in pixels - */ - width: 800, - height: 500, - - - /** - * Initializes the component - */ - initComponent: function () { - this.cards = this.setupCards(); - this.callParent(); - - this.headPanel.show(); - }, - /** - * Sets up all cards - * @returns {Array} - */ - setupCards: function () { - var cards = new Array(); - - cards.push(Ext.create('Ext.ux.wizard.Card', { - title: 'Welcome', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - items: [{ - border: false, - bodyStyle: 'background:none;', - html: 'This wizard guides you through the setup of <b>PartKeepr</b>.<br/><br/>Note that you can '+ - 're-start setup any time, even if you already have an existing database. No existing data will '+ - 'be overwritten.' - }] - })); - - cards.push(Ext.create("PartKeeprSetup.PrerequisitesTestCard")); - cards.push(Ext.create("PartKeeprSetup.DatabaseParametersCard")); - cards.push(Ext.create("PartKeeprSetup.DatabaseConnectivityTestCard")); - cards.push(Ext.create("PartKeeprSetup.DatabaseSetupCard")); - - cards.push(Ext.create("PartKeeprSetup.ConfigFileModeCard")); - cards.push(Ext.create("PartKeeprSetup.ConfigFileActionCard")); - - cards.push(Ext.create('Ext.ux.wizard.Card', { - title: 'Cron Setup', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - items: [{ - border: false, - bodyStyle: 'background:none;', - autoScroll: true, - html: "Please set up the following cronjobs:<br/><br/><code>"+ - "0 0,12 * * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/CreateStatisticSnapshot.php<br/>"+ - "0 0,6,12,18 * * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/UpdatePartCacheData.php<br/>"+ - "0 0 */2 * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/CheckForUpdates.php<br/>"+ - "0 0 */2 * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/UpdateTipsOfTheDay.php<br/>"+ - "</code><br/>If you cannot run cronjobs (e.g. you are on Windows), you can disable the "+ - "cronjobs by adding the following line to your config.php file:<br/><br/>"+ - '<code>Configuration::setOption("partkeepr.cronjobs.disablecheck", true);</code>' - }] - })); - - cards.push(Ext.create('Ext.ux.wizard.Card', { - title: 'Setup Complete', - showTitle: true, - titleCls: '', - titleStyle: 'font-size: 2.5em;line-height: 30px;', - cls: 'x-partkeepr-setup-basecard', - items: [{ - border: false, - bodyStyle: 'background:none;', - autoScroll: true, - html: "<b>PartKeepr is now set-up.</b><br/><br/>"+ - "If possible, set your web server's document root to the <b>frontend</b> directory.<br/><br/>"+ - "To open PartKeepr, open the 'frontend' directory using your browser.<br/><br/>"+ - "The default username/password combination is <b>admin/admin</b>" - }] - })); - - return cards; - } -});- \ No newline at end of file diff --git a/src/setup/js/TestResultPanel.js b/src/setup/js/TestResultPanel.js @@ -1,63 +0,0 @@ -/** - * Provides a simple panel where tests can be displayed including their status. - */ -Ext.define('PartKeeprSetup.TestResultPanel', { - extend: 'Ext.panel.Panel', - - /** - * Initializes the component. - */ - initComponent: function () { - this.addEvents("test-error"); - this.callParent(); - }, - - /** - * Clears the result output panel. - */ - clear: function () { - this.removeAll(true); - }, - - outputTestMessage: function (test) { - var cmp = this.add({ - border: false, - html: test.message +'...<img src="resources/images/ajax-loader.gif" align="absbottom"/>' - }); - - test.outputCmp = cmp; - }, - /** - * Appends the specific test to the output panel, - * and fires the error event if an error occured. - * - * @param test PartKeeprSetup.AbstractTest - */ - appendTestResult: function (test) { - var response; - - if (test.success) { - response = '<b style="color: green;">OK</b>'; - } else { - response = '<b style="color: red;">Error</b><br/><br>'+test.errorMessage; - this.fireEvent("test-error"); - } - - if (test.warnings instanceof Array && test.warnings.length > 0) { - response += '<br/><div style="margin-left: 10px;">'; - - for (var i=0;i<test.warnings.length;i++) { - response += "<i>"+test.warnings[i]+"</i><br/>"; - } - - response += "</div><br/>"; - } - - test.outputCmp.body.replaceWith({ - border: false, - html: test.message +"..."+response - }); - - test.outputCmp.doLayout(); - } -});- \ No newline at end of file diff --git a/src/setup/js/TestRunner.js b/src/setup/js/TestRunner.js @@ -1,48 +0,0 @@ -/** - * Implements a sequential test runner, which waits for previous tests to complete. - * - * This is used with asynchronous tests. - */ -Ext.define('PartKeeprSetup.TestRunner', { - extend: 'Ext.util.Observable', - - /** - * Initialize the component - */ - initComponent: function () { - this.addEvents("success"); - - this.callParent(); - }, - /** - * Runs the given tests. Each test must fire the "complete" event in - * order to be runable. - * - * @param tests An array of tests - */ - run: function (tests, callback) { - test = tests.shift(); - this.tests = tests; - - if (!test) { - this.fireEvent("success"); - return; - } - - test.callback = callback; - - /** - * We re-assign the event handler on each cycle due to the asynchronous nature of the ajax requests. - */ - test.on("complete", this.onTestComplete, this); - test.run(); - }, - /** - * Callback when the test is complete - * @param test The test which was run - */ - onTestComplete: function (test) { - test.un(this.onTestComplete); - this.run(this.tests, test.callback); - } -});- \ No newline at end of file diff --git a/src/setup/resources/css/setup.css b/src/setup/resources/css/setup.css @@ -1,10 +0,0 @@ -.x-setup-header { - background-image: url(../setup_header.jpg); - background-repeat: no-repeat; - border-bottom: 3px solid #aaaaaa !important; -} - -.x-partkeepr-setup-basecard .x-panel-header-body { - height: 30px; -} - diff --git a/src/setup/resources/images/ajax-loader.gif b/src/setup/resources/images/ajax-loader.gif Binary files differ. diff --git a/src/setup/resources/setup_header.jpg b/src/setup/resources/setup_header.jpg Binary files differ. diff --git a/src/setup/setup.php b/src/setup/setup.php @@ -1,50 +0,0 @@ -<?php -namespace PartKeepr\Setup; - -use PartKeepr\PartKeepr, - PartKeepr\Setup\Setup, - PartKeepr\Util\SerializableException; - -set_error_handler(create_function('$a, $b, $c, $d', 'throw new ErrorException($b, 0, $a, $c, $d);'), E_ALL); - - -include("../src/backend/PartKeepr/PartKeepr.php"); -PartKeepr::initializeClassLoaders(); - -try { - Setup::setDatabaseConfigurationFromRequest(); -} catch (\Exception $e) { - echo json_encode(array("error" => true, "message" => $e->getMessage())); - exit; -} - -PartKeepr::initializeDoctrine(); - -$setup = new Setup(); - -try { - /** - * Workaround for the footprint setup to allow long downloads pass through - */ - if ($_REQUEST["step"] == "footprint") { - @set_time_limit(0); - } - $result = $setup->runStep($_REQUEST["step"]); - - //var_dump($result); - - if ($result !== null) { - $aResult = array_merge($result, array("error" => false)); - echo json_encode($aResult); - } else { - echo json_encode(array("error" => false)); - } - -} catch (SerializableException $e) { - $error = $e->serialize(); - $error["error"] = true; - echo json_encode($error); -} catch (\Exception $e) { - echo json_encode(array("error" => true, "message" => "An unexpected error occured during installation. The error message was:<br/><code>".$e->getMessage()."</code> and happened in <code>".$e->getFile().":".$e->getLine()."</code>" )); - exit; -} diff --git a/src/setup/tests/check-database-connectivity.php b/src/setup/tests/check-database-connectivity.php @@ -1,105 +0,0 @@ -<?php -/** - * Tests the connection to the database. - */ -include("../../src/backend/PartKeepr/PartKeepr.php"); - -use Doctrine\Common\ClassLoader; -use PartKeepr\PartKeepr, - PartKeepr\Setup\Setup, - PartKeepr\Setup\SchemaSetup; - -PartKeepr::initializeClassLoaders(); - -$config = new \Doctrine\DBAL\Configuration(); - -/** - * Test if the requested driver is available - */ - -$drivers = PDO::getAvailableDrivers(); - -$bDriverAvailable = false; - -if (!in_array($_REQUEST["driver"], $drivers)) { - echo json_encode(array("error" => true, "message" => "The requested driver isn't installed as PHP pdo module. Please install the PDO driver for PHP.")); - exit; -} - -/** - * Check which driver we are going to use, and set the connection parameters accordingly. - */ -try { - $onnectionOptions = Setup::setDatabaseConfigurationFromRequest(); - $connectionOptions = PartKeepr::createConnectionOptionsFromConfig(); -} catch (\Exception $e) { - echo json_encode(array("error" => true, "message" => $e->getMessage())); - exit; -} - -$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionOptions, $config); - -try { - $conn->connect(); -} catch (\PDOException $e) { - $additionalMessage = getPlatformSpecificErrorMessage($_REQUEST["driver"], $e->getCode()); - - echo json_encode(array("error" => true, "message" => "There was an error connecting to the database:<br/><code>".$e->getMessage()."</code>".$additionalMessage)); - exit; -} catch (\Exception $e) { - echo json_encode(array("error" => true, "message" => "An unknown error occured. The error is: <code>".$e->getMessage()."</code>")); - exit; -} - -/* Run additional tests */ -switch ($_REQUEST["driver"]) { - case "mysql": - performAdditionalMySQLTests($conn, $_REQUEST["dbname"]); - break; -} - -function performAdditionalMySQLTests ($connection, $dbname) { - if (!SchemaSetup::mysqlHasUTF8Encoding($connection, $dbname)) { - echo json_encode(array("error" => true, "message" => "Your database doesn't have the proper encoding. Please change it using the following SQL statement: <br/><br/><code>ALTER DATABASE ".$dbname." CHARACTER SET utf8;</code>")); - exit; - } - -} -echo json_encode(array("error" => false)); - -/** - * Returns error messages for a specific platform and PDOException code - * @param string $platform - * @param int $code - * @return An error message, or "" if no message is available. - */ -function getPlatformSpecificErrorMessage($platform, $code) { - switch ($platform) { - case "mysql": - return getMySQLSpecificErrorMessage($code); - break; - default: - return ""; - } -} - -/** - * Returns error messages for a specific PDOException code. - * @param int $code - * @return An error message, or "" if no message is available. - */ -function getMySQLSpecificErrorMessage ($code) { - switch ($code) { - case 1044: - return "<br/><br/>You need to grant permissions to the database, or you haven't created the database yet."; - break; - case 1045: - return "<br/><br/>It seems that you have mistyped your username or password."; - break; - case 2013: - return "<br/><br/>This error is an indication that the database host you have specified is not reachable, or that your database runs on a different port."; - break; - default: - return ""; - } -}- \ No newline at end of file diff --git a/src/setup/tests/check-doctrine.php b/src/setup/tests/check-doctrine.php @@ -1,94 +0,0 @@ -<?php -@include_once 'Doctrine/Common/ClassLoader.php'; - -$aWarnings = array(); - -/** - * Check if the Doctrine Common classloader can be loaded - */ -$installDoctrineError = "Doctrine needs to be installed and in the PHP include_path. "; -$installDoctrineError .= "You can install doctrine on most unix systems using: <br/>"; -$installDoctrineError .= "<br/><code>pear channel-discover pear.symfony.com<br/>"; -$installDoctrineError .= "pear channel-discover pear.doctrine-project.org<br/>"; -$installDoctrineError .= "pear install pear.doctrine-project.org/DoctrineORM</code><br/>"; - -if (!class_exists("\\Doctrine\\Common\ClassLoader")) { - $installDoctrineError .= "<small>Doctrine\\Common\\ClassLoader was not found</small>"; - echo json_encode(array("error" => true, "message" => $installDoctrineError)); - exit; -} - -/** - * Register the DoctrineORM classloader - */ -use Doctrine\Common\ClassLoader; - -$ormClassLoader = new ClassLoader('Doctrine\ORM'); -$ormClassLoader->register(); - -$commonClassLoader = new ClassLoader('Doctrine\Common'); -$commonClassLoader->register(); - -$sfClassLoader = new ClassLoader('Symfony'); -$sfClassLoader->register(); - -$doctrineClassLoader = new ClassLoader('Doctrine'); -$doctrineClassLoader->register(); - - -/** - * Check if we can load the Doctrine\ORM\Version class. If we can't load the class, then something is wrong; - * the most likely cause is that the user has DoctrineCommon installed, but is missing DoctrineORM. - */ -if (!$ormClassLoader->canLoadClass("Doctrine\\ORM\\Version")) { - $installDoctrineError .= "<small>The classloader can't load Doctrine\\ORM\\Version</small>"; - echo json_encode(array("error" => true, "message" => $installDoctrineError)); - exit; -} - -/** - * Check for the correct DoctrineORM version. We only support Doctrine 2.1.0 or higher. - */ -if (\Doctrine\ORM\Version::compare("2.2.0") > 0) { - $versionInvalidMessage = "DoctrineORM is installed, but needs to be at Version 2.2.0 or higher. "; - $versionInvalidMessage .= "Please run pear upgrade-all to bring your packages up-to-date."; - - echo json_encode(array("error" => true, "message" => $versionInvalidMessage)); - exit; - -} - -/** - * Check for the Symfony YAML component. This component is required to parse YAML files and is used during installation - * of footprints. - */ -if (!$doctrineClassLoader->canLoadClass("Doctrine\\Symfony\\Component\\Yaml\\Yaml")) { - - $yamlErrorMessage = "The YAML component of symfony is not installed. This component is required; please install "; - $yamlErrorMessage .= "it using:<br/><br/>"; - $yamlErrorMessage .= "<code>pear install pear.doctrine-project.org/DoctrineSymfonyYaml</code><br/><br/>"; - $yamlErrorMessage .= "If you are getting the error:<br/><br/><code>doctrine/DoctrineSymfonyYaml is already "; - $yamlErrorMessage .= "installed and is the same as the released version</code><br/><br/>"; - $yamlErrorMessage .= "please REINSTALL the package using<br/><br/><code>pear uninstall "; - $yamlErrorMessage .= "doctrine/DoctrineSymfonyYaml<br/>pear install doctrine/DoctrineSymfonyYaml</code>"; - - echo json_encode(array("error" => true, "message" => $yamlErrorMessage)); - exit; -} - -/** - * Check for the Symfony Console component. - * of footprints. - */ -if (!$doctrineClassLoader->canLoadClass("Doctrine\\Symfony\\Component\\Console\\Command\\Command")) { - - $consoleErrorMessage = "The Console component of symfony is not installed. This component is required; please install "; - $consoleErrorMessage .= "it using:<br/><br/>"; - $consoleErrorMessage .= "<code>pear install pear.doctrine-project.org/DoctrineSymfonyConsole</code><br/><br/>"; - - echo json_encode(array("error" => true, "message" => $consoleErrorMessage)); - exit; -} - -echo json_encode(array("error" => false, "warnings" => $aWarnings)); -exit; diff --git a/src/setup/tests/check-permissions.php b/src/setup/tests/check-permissions.php @@ -1,42 +0,0 @@ -<?php -$dataDir = dirname(dirname(dirname(__FILE__)))."/data"; - -try { - is_writable_recursive($dataDir); -} catch (\Exception $e) { - echo json_encode(array("error" => true, "message" => $e->getMessage() . "<br/>Please adjust the filesystem permissions so that your webserver can write into that directory.")); - exit; -} - -/** - * Checks if the given directory and all contained files within it is writable by the current user. - * @param string $dir The directory to check - */ -function is_writable_recursive($dir) -{ - if (!is_writable($dir)) { - throw new \Exception($dir ." is not writable."); - } - - $folder = opendir($dir); - while($file = readdir( $folder )) { - if($file != '.' && $file != '..') { - if (!is_writable( $dir."/".$file )) { - closedir($folder); - throw new \Exception($dir."/".$file." is not writable."); - } else { - if (is_dir($dir."/".$file)) { - if (!is_writable_recursive($dir."/".$file)) { - closedir($folder); - throw new \Exception($dir."/".$file." is not writable."); - } - } - } - } - } - - return true; -} - -echo json_encode(array("error" => false)); -exit;- \ No newline at end of file diff --git a/src/setup/tests/check-php-settings.php b/src/setup/tests/check-php-settings.php @@ -1,99 +0,0 @@ -<?php -/* - * Check if safe_mode is active. If yes, bail out, as safe_mode is unsupported, deprecated with PHP 5.3.0 and will - * most likely be obsoleted with PHP 5.4.0. - */ -if (ini_get("safe_mode")) { - $errorMessage = "PHP safe_mode is active. This feature is deprecated as of PHP 5.3.0 and causes problems of any "; - $errorMessage .= "kind. Please disable it by setting safe_mode=off in your php.ini file (don't forget to restart "; - $errorMessage .= "your web server afterwards)"; - - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -if (ini_get("magic_quotes_gpc")) { - $errorMessage = "PHP magic_quotes_gpc is active. PartKeepr won't work with magic_quotes_gpc. "; - $errorMessage .= "Please disable it by setting magic_quotes_gpc=off in your php.ini file (don't forget to restart "; - $errorMessage .= "your web server afterwards)"; - - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check if allow_url_fopen is enabled. This is required for downloading files due to lazyness (another solution, - * like cURL, needs to be implemented). - */ -if (ini_get("allow_url_fopen") == false) { - $errorMessage = "PHP allow_url_fopen is set to off. Right now, we require that it is set to ON. "; - $errorMessage .= "Please set<br/><code>allow_url_fopen = On</code> in your php.ini file. "; - $errorMessage .= "Don't forget to restart your web server afterwards."; - - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check for the cURL extension. - */ -if (!function_exists("curl_init")) { - $errorMessage = "You are missing the curl-library for PHP. Please install and activate it."; - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check for the fileinfo extension. - */ -if (!class_exists("\\finfo")) { - $errorMessage = "You are missing the fileinfo-library for PHP. Please install and activate it."; - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check for the imagemagick extension. - */ -if (!class_exists("\\Imagick")) { - $errorMessage = "You are missing the Imagick library for PHP. Please install and activate it."; - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check for the gd extension. -*/ -if (!function_exists("imagecreate")) { - $errorMessage = "You are missing the GD library for PHP. Please install and activate it."; - echo json_encode(array("error" => true, "message" => $errorMessage)); - exit; -} - -/* - * Check if the timezone settings are valid. - */ -if (!isTimezoneSetAndValid()) { - $errorMessage = "The PHP timezone (%s) is not set or invalid. Please set the correct timezone in your"; - $errorMessage .= " php.ini file (don't forget to restart the web server afterwards)"; - - echo json_encode(array("error" => true, "message" => sprintf($errorMessage, ini_get("date.timezone")))); - exit; -} - -echo json_encode(array("error" => false)); -exit; - -/** - * Checks if the timezone is set and valid. - * - * @param none - * @return bool True if the timezone is set and valid, false otherwise. - */ -function isTimezoneSetAndValid () { - if (ini_get("date.timezone") == "") { - return false; - } - - return @date_default_timezone_set(ini_get("date.timezone")); -}- \ No newline at end of file diff --git a/src/setup/tests/check-twig.php b/src/setup/tests/check-twig.php @@ -1,35 +0,0 @@ -<?php -@include_once 'Twig/Autoloader.php'; - -$aWarnings = array(); - -/** - * Check if the Doctrine Common classloader can be loaded - */ -$installTwigError = "Twig needs to be installed and in the PHP include_path. "; -$installTwigError .= "You can install twig on most unix systems using: <br/>"; -$installTwigError .= "<br/><code>pear channel-discover pear.twig-project.org<br/>"; -$installTwigError .= "pear install twig/Twig</code><br/>"; - -if (!class_exists("\\Twig_Autoloader")) { - $installTwigError .= "<small>Twig_Autoloader was not found</small>"; - echo json_encode(array("error" => true, "message" => $installTwigError)); - exit; -} - -\Twig_Autoloader::register(); - - -/* - * Check for supported twig versions - */ -if (version_compare("1.6.0", \Twig_Environment::VERSION) > 0) { - $versionInvalidMessage = "Twig is installed, but needs to be at Version 1.6.0 or higher. "; - $versionInvalidMessage .= "Please run pear upgrade-all to bring your packages up-to-date."; - - echo json_encode(array("error" => true, "message" => $versionInvalidMessage)); - exit; - -} -echo json_encode(array("error" => false, "warnings" => $aWarnings)); -exit; diff --git a/src/setup/themes/images/partkeepr/boundlist/trigger-arrow.png b/src/setup/themes/images/partkeepr/boundlist/trigger-arrow.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/corners-blue.gif b/src/setup/themes/images/partkeepr/box/corners-blue.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/corners.gif b/src/setup/themes/images/partkeepr/box/corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/l-blue.gif b/src/setup/themes/images/partkeepr/box/l-blue.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/l.gif b/src/setup/themes/images/partkeepr/box/l.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/r-blue.gif b/src/setup/themes/images/partkeepr/box/r-blue.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/r.gif b/src/setup/themes/images/partkeepr/box/r.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/tb-blue.gif b/src/setup/themes/images/partkeepr/box/tb-blue.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/box/tb.gif b/src/setup/themes/images/partkeepr/box/tb.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-corners.gif b/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-corners.gif b/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-sides.gif b/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-notitle-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-sides.gif b/src/setup/themes/images/partkeepr/btn-group/btn-group-default-framed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-large-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-large-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-medium-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-medium-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-small-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-small-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-large-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-medium-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-focus-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-bg.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-corners.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-pressed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-sides.gif b/src/setup/themes/images/partkeepr/btn/btn-default-toolbar-small-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/arrow-white.gif b/src/setup/themes/images/partkeepr/button/arrow-white.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/arrow.gif b/src/setup/themes/images/partkeepr/button/arrow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/btn-arrow.gif b/src/setup/themes/images/partkeepr/button/btn-arrow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/btn-sprite.gif b/src/setup/themes/images/partkeepr/button/btn-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/btn.gif b/src/setup/themes/images/partkeepr/button/btn.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/group-cs.gif b/src/setup/themes/images/partkeepr/button/group-cs.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/group-lr.gif b/src/setup/themes/images/partkeepr/button/group-lr.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/group-tb.gif b/src/setup/themes/images/partkeepr/button/group-tb.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-b-noline.gif b/src/setup/themes/images/partkeepr/button/s-arrow-b-noline.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-b.gif b/src/setup/themes/images/partkeepr/button/s-arrow-b.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-bo.gif b/src/setup/themes/images/partkeepr/button/s-arrow-bo.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-light.gif b/src/setup/themes/images/partkeepr/button/s-arrow-light.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-noline.gif b/src/setup/themes/images/partkeepr/button/s-arrow-noline.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow-o.gif b/src/setup/themes/images/partkeepr/button/s-arrow-o.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/button/s-arrow.gif b/src/setup/themes/images/partkeepr/button/s-arrow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.gif b/src/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.png b/src/setup/themes/images/partkeepr/datepicker/datepicker-footer-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.gif b/src/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.png b/src/setup/themes/images/partkeepr/datepicker/datepicker-header-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/dd/drop-add.gif b/src/setup/themes/images/partkeepr/dd/drop-add.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/dd/drop-no.gif b/src/setup/themes/images/partkeepr/dd/drop-no.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/dd/drop-yes.gif b/src/setup/themes/images/partkeepr/dd/drop-yes.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/editor/tb-sprite.gif b/src/setup/themes/images/partkeepr/editor/tb-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-corners.gif b/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-bg.gif b/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-corners.gif b/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-sides.gif b/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-default-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-sides.gif b/src/setup/themes/images/partkeepr/form-invalid-tip/form-invalid-tip-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/checkbox.gif b/src/setup/themes/images/partkeepr/form/checkbox.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/checkbox.png b/src/setup/themes/images/partkeepr/form/checkbox.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/clear-trigger.gif b/src/setup/themes/images/partkeepr/form/clear-trigger.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/clear-trigger.png b/src/setup/themes/images/partkeepr/form/clear-trigger.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/date-trigger.gif b/src/setup/themes/images/partkeepr/form/date-trigger.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/date-trigger.png b/src/setup/themes/images/partkeepr/form/date-trigger.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/error-tip-corners.gif b/src/setup/themes/images/partkeepr/form/error-tip-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/exclamation.gif b/src/setup/themes/images/partkeepr/form/exclamation.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/radio.gif b/src/setup/themes/images/partkeepr/form/radio.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/radio.png b/src/setup/themes/images/partkeepr/form/radio.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/reload-trigger.png b/src/setup/themes/images/partkeepr/form/reload-trigger.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/search-trigger.gif b/src/setup/themes/images/partkeepr/form/search-trigger.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/search-trigger.png b/src/setup/themes/images/partkeepr/form/search-trigger.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/spinner-small.gif b/src/setup/themes/images/partkeepr/form/spinner-small.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/spinner.gif b/src/setup/themes/images/partkeepr/form/spinner.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/spinner.png b/src/setup/themes/images/partkeepr/form/spinner.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/text-bg.gif b/src/setup/themes/images/partkeepr/form/text-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/trigger-square.gif b/src/setup/themes/images/partkeepr/form/trigger-square.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/trigger-tpl.gif b/src/setup/themes/images/partkeepr/form/trigger-tpl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/trigger.gif b/src/setup/themes/images/partkeepr/form/trigger.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/form/trigger.png b/src/setup/themes/images/partkeepr/form/trigger.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/arrow-left-white.gif b/src/setup/themes/images/partkeepr/grid/arrow-left-white.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/arrow-right-white.gif b/src/setup/themes/images/partkeepr/grid/arrow-right-white.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/cell-special-bg.gif b/src/setup/themes/images/partkeepr/grid/cell-special-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/cell-special-bg.png b/src/setup/themes/images/partkeepr/grid/cell-special-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/cell-special-selected-bg.gif b/src/setup/themes/images/partkeepr/grid/cell-special-selected-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/cell-special-selected-bg.png b/src/setup/themes/images/partkeepr/grid/cell-special-selected-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/checked.gif b/src/setup/themes/images/partkeepr/grid/checked.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/col-move-bottom.gif b/src/setup/themes/images/partkeepr/grid/col-move-bottom.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/col-move-top.gif b/src/setup/themes/images/partkeepr/grid/col-move-top.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/column-header-bg.gif b/src/setup/themes/images/partkeepr/grid/column-header-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/column-header-bg.png b/src/setup/themes/images/partkeepr/grid/column-header-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/column-header-over-bg.gif b/src/setup/themes/images/partkeepr/grid/column-header-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/column-header-over-bg.png b/src/setup/themes/images/partkeepr/grid/column-header-over-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/columns.gif b/src/setup/themes/images/partkeepr/grid/columns.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.gif b/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.png b/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-left.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.gif b/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.png b/src/setup/themes/images/partkeepr/grid/dd-insert-arrow-right.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/dirty.gif b/src/setup/themes/images/partkeepr/grid/dirty.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/done.gif b/src/setup/themes/images/partkeepr/grid/done.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/drop-no.gif b/src/setup/themes/images/partkeepr/grid/drop-no.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/drop-yes.gif b/src/setup/themes/images/partkeepr/grid/drop-yes.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/footer-bg.gif b/src/setup/themes/images/partkeepr/grid/footer-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-blue-hd.gif b/src/setup/themes/images/partkeepr/grid/grid-blue-hd.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-blue-split.gif b/src/setup/themes/images/partkeepr/grid/grid-blue-split.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-hrow.gif b/src/setup/themes/images/partkeepr/grid/grid-hrow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-loading.gif b/src/setup/themes/images/partkeepr/grid/grid-loading.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-split.gif b/src/setup/themes/images/partkeepr/grid/grid-split.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid-vista-hd.gif b/src/setup/themes/images/partkeepr/grid/grid-vista-hd.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid3-hd-btn.gif b/src/setup/themes/images/partkeepr/grid/grid3-hd-btn.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid3-hrow-over.gif b/src/setup/themes/images/partkeepr/grid/grid3-hrow-over.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid3-hrow.gif b/src/setup/themes/images/partkeepr/grid/grid3-hrow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/grid3-rowheader.gif b/src/setup/themes/images/partkeepr/grid/grid3-rowheader.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/group-by.gif b/src/setup/themes/images/partkeepr/grid/group-by.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/group-collapse.gif b/src/setup/themes/images/partkeepr/grid/group-collapse.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/group-expand-sprite.gif b/src/setup/themes/images/partkeepr/grid/group-expand-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/group-expand.gif b/src/setup/themes/images/partkeepr/grid/group-expand.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hd-pop.gif b/src/setup/themes/images/partkeepr/grid/hd-pop.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-asc.gif b/src/setup/themes/images/partkeepr/grid/hmenu-asc.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-desc.gif b/src/setup/themes/images/partkeepr/grid/hmenu-desc.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-lock.gif b/src/setup/themes/images/partkeepr/grid/hmenu-lock.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-lock.png b/src/setup/themes/images/partkeepr/grid/hmenu-lock.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-unlock.gif b/src/setup/themes/images/partkeepr/grid/hmenu-unlock.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/hmenu-unlock.png b/src/setup/themes/images/partkeepr/grid/hmenu-unlock.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/invalid_line.gif b/src/setup/themes/images/partkeepr/grid/invalid_line.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/loading.gif b/src/setup/themes/images/partkeepr/grid/loading.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/mso-hd.gif b/src/setup/themes/images/partkeepr/grid/mso-hd.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/nowait.gif b/src/setup/themes/images/partkeepr/grid/nowait.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-first-disabled.gif b/src/setup/themes/images/partkeepr/grid/page-first-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-first.gif b/src/setup/themes/images/partkeepr/grid/page-first.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-last-disabled.gif b/src/setup/themes/images/partkeepr/grid/page-last-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-last.gif b/src/setup/themes/images/partkeepr/grid/page-last.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-next-disabled.gif b/src/setup/themes/images/partkeepr/grid/page-next-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-next.gif b/src/setup/themes/images/partkeepr/grid/page-next.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-prev-disabled.gif b/src/setup/themes/images/partkeepr/grid/page-prev-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/page-prev.gif b/src/setup/themes/images/partkeepr/grid/page-prev.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/pick-button.gif b/src/setup/themes/images/partkeepr/grid/pick-button.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/property-cell-bg.gif b/src/setup/themes/images/partkeepr/grid/property-cell-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/property-cell-selected-bg.gif b/src/setup/themes/images/partkeepr/grid/property-cell-selected-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/refresh-disabled.gif b/src/setup/themes/images/partkeepr/grid/refresh-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/refresh.gif b/src/setup/themes/images/partkeepr/grid/refresh.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/row-check-sprite.gif b/src/setup/themes/images/partkeepr/grid/row-check-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/row-expand-sprite.gif b/src/setup/themes/images/partkeepr/grid/row-expand-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/row-over.gif b/src/setup/themes/images/partkeepr/grid/row-over.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/row-sel.gif b/src/setup/themes/images/partkeepr/grid/row-sel.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/sort-hd.gif b/src/setup/themes/images/partkeepr/grid/sort-hd.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/sort_asc.gif b/src/setup/themes/images/partkeepr/grid/sort_asc.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/sort_asc.png b/src/setup/themes/images/partkeepr/grid/sort_asc.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/sort_desc.gif b/src/setup/themes/images/partkeepr/grid/sort_desc.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/sort_desc.png b/src/setup/themes/images/partkeepr/grid/sort_desc.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/unchecked.gif b/src/setup/themes/images/partkeepr/grid/unchecked.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/grid/wait.gif b/src/setup/themes/images/partkeepr/grid/wait.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/layout/mini-bottom.gif b/src/setup/themes/images/partkeepr/layout/mini-bottom.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/layout/mini-left.gif b/src/setup/themes/images/partkeepr/layout/mini-left.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/layout/mini-right.gif b/src/setup/themes/images/partkeepr/layout/mini-right.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/layout/mini-top.gif b/src/setup/themes/images/partkeepr/layout/mini-top.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/checked.gif b/src/setup/themes/images/partkeepr/menu/checked.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/group-checked.gif b/src/setup/themes/images/partkeepr/menu/group-checked.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/item-over-disabled.gif b/src/setup/themes/images/partkeepr/menu/item-over-disabled.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/item-over.gif b/src/setup/themes/images/partkeepr/menu/item-over.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/menu-item-active-bg.gif b/src/setup/themes/images/partkeepr/menu/menu-item-active-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/menu-item-active-corners.gif b/src/setup/themes/images/partkeepr/menu/menu-item-active-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/menu-item-active-sides.gif b/src/setup/themes/images/partkeepr/menu/menu-item-active-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/menu-parent.gif b/src/setup/themes/images/partkeepr/menu/menu-parent.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/menu.gif b/src/setup/themes/images/partkeepr/menu/menu.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/menu/unchecked.gif b/src/setup/themes/images/partkeepr/menu/unchecked.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-bottom-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-bottom-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-bottom-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-bottom-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-left-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-right-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-collapsed-top-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-left-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-right-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-corners.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-sides.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-framed-top-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-left-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-left-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-right-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-right-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel-header/panel-header-default-top-bg.gif b/src/setup/themes/images/partkeepr/panel-header/panel-header-default-top-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel/panel-default-framed-corners.gif b/src/setup/themes/images/partkeepr/panel/panel-default-framed-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/panel/panel-default-framed-sides.gif b/src/setup/themes/images/partkeepr/panel/panel-default-framed-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/progress/progress-default-bg.gif b/src/setup/themes/images/partkeepr/progress/progress-default-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/blue-loading.gif b/src/setup/themes/images/partkeepr/shared/blue-loading.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/calendar.gif b/src/setup/themes/images/partkeepr/shared/calendar.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/glass-bg.gif b/src/setup/themes/images/partkeepr/shared/glass-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/hd-sprite.gif b/src/setup/themes/images/partkeepr/shared/hd-sprite.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/icon-error.gif b/src/setup/themes/images/partkeepr/shared/icon-error.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/icon-info.gif b/src/setup/themes/images/partkeepr/shared/icon-info.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/icon-question.gif b/src/setup/themes/images/partkeepr/shared/icon-question.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/icon-warning.gif b/src/setup/themes/images/partkeepr/shared/icon-warning.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/large-loading.gif b/src/setup/themes/images/partkeepr/shared/large-loading.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/left-btn.gif b/src/setup/themes/images/partkeepr/shared/left-btn.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/loading-balls.gif b/src/setup/themes/images/partkeepr/shared/loading-balls.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/right-btn.gif b/src/setup/themes/images/partkeepr/shared/right-btn.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/shadow-c.png b/src/setup/themes/images/partkeepr/shared/shadow-c.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/shadow-lr.png b/src/setup/themes/images/partkeepr/shared/shadow-lr.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/shadow.png b/src/setup/themes/images/partkeepr/shared/shadow.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/shared/warning.gif b/src/setup/themes/images/partkeepr/shared/warning.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/e-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/e-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/e-handle.gif b/src/setup/themes/images/partkeepr/sizer/e-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/ne-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/ne-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/ne-handle.gif b/src/setup/themes/images/partkeepr/sizer/ne-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/nw-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/nw-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/nw-handle.gif b/src/setup/themes/images/partkeepr/sizer/nw-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/s-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/s-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/s-handle.gif b/src/setup/themes/images/partkeepr/sizer/s-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/se-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/se-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/se-handle.gif b/src/setup/themes/images/partkeepr/sizer/se-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/square.gif b/src/setup/themes/images/partkeepr/sizer/square.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/sw-handle-dark.gif b/src/setup/themes/images/partkeepr/sizer/sw-handle-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/sizer/sw-handle.gif b/src/setup/themes/images/partkeepr/sizer/sw-handle.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-bg.gif b/src/setup/themes/images/partkeepr/slider/slider-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-bg.png b/src/setup/themes/images/partkeepr/slider/slider-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-thumb.gif b/src/setup/themes/images/partkeepr/slider/slider-thumb.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-thumb.png b/src/setup/themes/images/partkeepr/slider/slider-thumb.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-v-bg.gif b/src/setup/themes/images/partkeepr/slider/slider-v-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-v-bg.png b/src/setup/themes/images/partkeepr/slider/slider-v-bg.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-v-thumb.gif b/src/setup/themes/images/partkeepr/slider/slider-v-thumb.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/slider/slider-v-thumb.png b/src/setup/themes/images/partkeepr/slider/slider-v-thumb.png Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab-bar/scroll-left.gif b/src/setup/themes/images/partkeepr/tab-bar/scroll-left.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab-bar/scroll-right.gif b/src/setup/themes/images/partkeepr/tab-bar/scroll-right.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab-bar/tab-bar-default-bg.gif b/src/setup/themes/images/partkeepr/tab-bar/tab-bar-default-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-active-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-bottom-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-bottom-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-close.gif b/src/setup/themes/images/partkeepr/tab/tab-default-close.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-active-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-active-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-active-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-active-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-active-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-active-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-disabled-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-over-bg.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-over-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-over-corners.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-over-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-over-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-over-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tab/tab-default-top-sides.gif b/src/setup/themes/images/partkeepr/tab/tab-default-top-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tip/tip-bg.gif b/src/setup/themes/images/partkeepr/tip/tip-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tip/tip-corners.gif b/src/setup/themes/images/partkeepr/tip/tip-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tip/tip-sides.gif b/src/setup/themes/images/partkeepr/tip/tip-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/toolbar/more.gif b/src/setup/themes/images/partkeepr/toolbar/more.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/toolbar/scroll-left.gif b/src/setup/themes/images/partkeepr/toolbar/scroll-left.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/toolbar/scroll-right.gif b/src/setup/themes/images/partkeepr/toolbar/scroll-right.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/toolbar/toolbar-default-bg.gif b/src/setup/themes/images/partkeepr/toolbar/toolbar-default-bg.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tools/tool-sprite-tpl.gif b/src/setup/themes/images/partkeepr/tools/tool-sprite-tpl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tools/tool-sprites-dark.gif b/src/setup/themes/images/partkeepr/tools/tool-sprites-dark.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tools/tool-sprites-light.gif b/src/setup/themes/images/partkeepr/tools/tool-sprites-light.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tools/tool-sprites.gif b/src/setup/themes/images/partkeepr/tools/tool-sprites.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tools/tools-sprites-trans.gif b/src/setup/themes/images/partkeepr/tools/tools-sprites-trans.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/arrows.gif b/src/setup/themes/images/partkeepr/tree/arrows.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-above.gif b/src/setup/themes/images/partkeepr/tree/drop-above.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-add.gif b/src/setup/themes/images/partkeepr/tree/drop-add.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-append.gif b/src/setup/themes/images/partkeepr/tree/drop-append.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-below.gif b/src/setup/themes/images/partkeepr/tree/drop-below.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-between.gif b/src/setup/themes/images/partkeepr/tree/drop-between.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-no.gif b/src/setup/themes/images/partkeepr/tree/drop-no.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-over.gif b/src/setup/themes/images/partkeepr/tree/drop-over.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-under.gif b/src/setup/themes/images/partkeepr/tree/drop-under.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/drop-yes.gif b/src/setup/themes/images/partkeepr/tree/drop-yes.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-end-minus-nl.gif b/src/setup/themes/images/partkeepr/tree/elbow-end-minus-nl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-end-minus.gif b/src/setup/themes/images/partkeepr/tree/elbow-end-minus.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-end-plus-nl.gif b/src/setup/themes/images/partkeepr/tree/elbow-end-plus-nl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-end-plus.gif b/src/setup/themes/images/partkeepr/tree/elbow-end-plus.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-end.gif b/src/setup/themes/images/partkeepr/tree/elbow-end.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-line.gif b/src/setup/themes/images/partkeepr/tree/elbow-line.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-minus-nl.gif b/src/setup/themes/images/partkeepr/tree/elbow-minus-nl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-minus.gif b/src/setup/themes/images/partkeepr/tree/elbow-minus.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-plus-nl.gif b/src/setup/themes/images/partkeepr/tree/elbow-plus-nl.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow-plus.gif b/src/setup/themes/images/partkeepr/tree/elbow-plus.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/elbow.gif b/src/setup/themes/images/partkeepr/tree/elbow.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/folder-open.gif b/src/setup/themes/images/partkeepr/tree/folder-open.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/folder.gif b/src/setup/themes/images/partkeepr/tree/folder.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/leaf.gif b/src/setup/themes/images/partkeepr/tree/leaf.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/loading.gif b/src/setup/themes/images/partkeepr/tree/loading.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/tree/s.gif b/src/setup/themes/images/partkeepr/tree/s.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/util/splitter/mini-bottom.gif b/src/setup/themes/images/partkeepr/util/splitter/mini-bottom.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/util/splitter/mini-left.gif b/src/setup/themes/images/partkeepr/util/splitter/mini-left.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/util/splitter/mini-right.gif b/src/setup/themes/images/partkeepr/util/splitter/mini-right.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/util/splitter/mini-top.gif b/src/setup/themes/images/partkeepr/util/splitter/mini-top.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-bottom-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-bottom-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-bottom-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-bottom-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-bottom-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-left-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-right-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-collapsed-top-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-left-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-left-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-left-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-left-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-right-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-right-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-right-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-right-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-top-corners.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-top-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window-header/window-header-default-top-sides.gif b/src/setup/themes/images/partkeepr/window-header/window-header-default-top-sides.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/icon-error.gif b/src/setup/themes/images/partkeepr/window/icon-error.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/icon-info.gif b/src/setup/themes/images/partkeepr/window/icon-info.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/icon-question.gif b/src/setup/themes/images/partkeepr/window/icon-question.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/icon-warning.gif b/src/setup/themes/images/partkeepr/window/icon-warning.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/window-default-corners.gif b/src/setup/themes/images/partkeepr/window/window-default-corners.gif Binary files differ. diff --git a/src/setup/themes/images/partkeepr/window/window-default-sides.gif b/src/setup/themes/images/partkeepr/window/window-default-sides.gif Binary files differ. diff --git a/web/setup/index.html b/web/setup/index.html @@ -0,0 +1,57 @@ +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> + <title>PartKeepr Setup</title> + + <link href='http://fonts.googleapis.com/css?family=Ubuntu:400,700italic' rel='stylesheet' type='text/css'> + <link rel="stylesheet" href="../js/packages/extjs6/build/classic/theme-classic/resources/theme-classic-all.css"/> + <link rel="stylesheet" href="../atelierspierrot/famfamfam-silk-sprite/silk-icons-sprite.css"/> + + <script type="text/javascript" src="../js/packages/extjs6/build/ext-all-debug.js"></script> + + <!-- Include the Ext.ux.Wizard Library --> + <script type="text/javascript" src="js/wizard/BreadCrumbWizard.js"></script> + + <!-- Note that the files here are not minified to make debugging easier --> + <script type="text/javascript" src="js/SetupWizard.js"></script> + + <script type="text/javascript" src="js/TestResultPanel.js"></script> + <script type="text/javascript" src="js/TestRunner.js"></script> + + <script type="text/javascript" src="js/Cards/AbstractTestCard.js"></script> + <script type="text/javascript" src="js/Cards/PrerequisitesTestCard.js"></script> + <script type="text/javascript" src="js/Cards/DatabaseParametersCard.js"></script> + <script type="text/javascript" src="js/Cards/DatabaseParametersCard.MySQL.js"></script> + <script type="text/javascript" src="js/Cards/DatabaseParametersCard.PostgreSQL.js"></script> + <script type="text/javascript" src="js/Cards/DatabaseConnectivityTestCard.js"></script> + <script type="text/javascript" src="js/Cards/DatabaseSetupCard.js"></script> + <script type="text/javascript" src="js/Cards/ConfigFileModeCard.js"></script> + <script type="text/javascript" src="js/Cards/ConfigFileActionCard.js"></script> + <script type="text/javascript" src="js/Cards/ConfigSaveCard.js"></script> + <script type="text/javascript" src="js/Cards/ConfigDisplayCard.js"></script> + + <script type="text/javascript" src="js/SetupTests/AbstractTest.js"></script> + <script type="text/javascript" src="js/SetupTests/PHPTest.js"></script> + <script type="text/javascript" src="js/SetupTests/PHPPrerequisitesTest.js"></script> + <script type="text/javascript" src="js/SetupTests/TwigTest.js"></script> + <script type="text/javascript" src="js/SetupTests/DatabaseConnectivityTest.js"></script> + <script type="text/javascript" src="js/SetupTests/PHPSettingsTest.js"></script> + <script type="text/javascript" src="js/SetupTests/FilesystemPermissionTest.js"></script> + + <script type="text/javascript" src="js/SetupTests/ConfigSaveAction.js"></script> + + <script type="text/javascript" src="js/SetupSteps/SchemaSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/AdminUserSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/ManufacturerSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/PartCategorySetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/PartUnitSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/SiPrefixSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/UnitSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/FootprintSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/ConfigFileSetup.js"></script> + <script type="text/javascript" src="js/SetupSteps/MiscSetup.js"></script> + + <script type="text/javascript" src="js/PartKeeprSetup.js"></script> +</head> +</html> diff --git a/web/setup/js/Cards/AbstractTestCard.js b/web/setup/js/Cards/AbstractTestCard.js @@ -0,0 +1,150 @@ +/** + * This class represents an abstract test card. The purpose of this card is to run + * specific tests, display the test results and offer a "re-test" button which the + * user can click in order to perform the tests. + * + * Additionally, the "next" button of the wizward will be disabled if the test fails. + */ +Ext.define('PartKeeprSetup.AbstractTestCard', { + extend: 'Ext.Container', + + /** + * Contains the test results for this card + * @var PartKeeprSetup.TestResultPanel + */ + testResultPanel: null, + + /** + * Contains the initially hidden "Re-test" button to re-trigger the tests. + */ + retestButton: null, + + /** + * Contains the test which will be run + * @var array + */ + tests: null, + + /** + * Text which will be shown above the test result panel. + * @var string + */ + cardMessage: null, + + /** + * Various Style Settings + */ + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + autoScroll: true, + rerunTestText: "Re-run checks", + layout: { + type: 'vbox', + align: 'stretch' + }, + /** + * Inits the component + */ + initComponent: function () + { + this.testResultPanel = Ext.create("PartKeeprSetup.TestResultPanel", { + flex: 1 + }); + this.testResultPanel.on("test-error", this.onTestError, this); + + this.retestButton = Ext.create("Ext.button.Button", { + text: this.rerunTestText, + hidden: true, + height: 20 + }); + + this.retestButton.on("click", this.retest, this); + + this.items = [ + { + border: false, + height: 20, + bodyStyle: 'background:none;padding-bottom: 10px;', + html: this.cardMessage + }, + this.testResultPanel, + this.retestButton + ]; + + this.tests = new Array(); + + this.testRunner = Ext.create("PartKeeprSetup.TestRunner"); + this.testRunner.on("success", this.onTestSuccessful, this); + + this.setupTests(); + this.callParent(); + this.on("activate", this.onActivate, this); + }, + + /** + * Re-runs the configured tests and hides the Re-test button, + * because we don't know if the tests will be successful. + */ + retest: function () + { + this.retestButton.hide(); + this.runTests(); + }, + /** + * Called when an error occurs. Shows the "re-test" button + * and disables the "next" button. + */ + onTestError: function () + { + this.retestButton.show(); + Ext.ComponentQuery.query('#nextBtn')[0].disable(); + }, + /** + * Called when all tests are successful. Hides the "re-test" + * button and enables the "next" button. + */ + onTestSuccessful: function () + { + this.retestButton.hide(); + + Ext.ComponentQuery.query('#nextBtn')[0].enable(); + }, + /** + * Invokes the test runner with all configured tests + */ + runTests: function () + { + this.testResultPanel.clear(); + + // We need to clone the test array, because we wouldn't be able to run all tests twice + var clonedTests = this.tests.slice(0); + this.testRunner.run(clonedTests, this.testResultPanel); + + }, + /** + * When the card is activated, automatically invoke all tests. + */ + onActivate: function () + { + Ext.ComponentQuery.query('#nextBtn')[0].disable(); + this.retestButton.hide(); + + this.runTests(); + }, + /** + * This method needs to be overridden by subclasses. Subclasses + * need to append tests to the "tests" array, e.g. + * + * var j = Ext.create("PartKeeprSetup.FilesystemPermissionTest"); + * j.callback = this.testResultPanel; + * this.tests.push(j); + * + */ + setupTests: function () + { + window.alert("The method setupTests() need to be overridden in a subclass!"); + } +}); + diff --git a/src/setup/js/Cards/ConfigDisplayCard.js b/web/setup/js/Cards/ConfigDisplayCard.js diff --git a/web/setup/js/Cards/ConfigFileActionCard.js b/web/setup/js/Cards/ConfigFileActionCard.js @@ -0,0 +1,51 @@ +/** + * This card executes the chosen configuration file mode. + */ +Ext.define('PartKeeprSetup.ConfigFileActionCard', { + extend: 'Ext.form.Panel', + + /** + * Various Style Settings + */ + title: 'Configuration File', + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + id: 'config-action-card', + autoScroll: true, + mode: null, + layout: 'card', + + /** + * Inits the component + */ + initComponent: function () { + this.items = [ + this.createSaveCard(), + this.createDisplayCard() + ]; + + this.callParent(); + this.on("activate", this.onActivate, this); + }, + createSaveCard: function () { + return Ext.create("PartKeeprSetup.ConfigSaveCard", { + itemId: 'card-action-save' + }); + }, + createDisplayCard: function () { + return Ext.create("PartKeeprSetup.ConfigDisplayCard", { + itemId: 'card-action-display' + }); + }, + /** + * Gets called when the card is activated + */ + onActivate: function () { + this.getLayout().setActiveItem('card-action-' + Ext.getCmp("config-mode-card").mode); + this.getLayout().activeItem.fireEvent("activateCard"); + // Disable the "next" button, this needs to get enabled by the database cards + this.ownerCt.ownerCt.nextButton.setDisabled(true); + } +}); diff --git a/web/setup/js/Cards/ConfigFileModeCard.js b/web/setup/js/Cards/ConfigFileModeCard.js @@ -0,0 +1,90 @@ +/** + * This card manages the config file creation. + */ +Ext.define('PartKeeprSetup.ConfigFileModeCard', { + extend: 'Ext.form.Panel', + + /** + * Various Style Settings + */ + title: 'Configuration File', + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + id: 'config-mode-card', + autoScroll: true, + mode: null, + + /** + * Inits the component + */ + initComponent: function () { + + this.saveOption = Ext.create("Ext.form.field.Radio", { + name: 'configfilemode', + inputValue: 'save', + boxLabel: 'Save', + listeners: { + scope: this, + change: this.setConfigFileMode + } + }); + + this.displayOption = Ext.create("Ext.form.field.Radio", { + name: 'configfilemode', + inputValue: 'display', + boxLabel: 'Display', + listeners: { + scope: this, + change: this.setConfigFileMode + } + }); + + this.items = [{ + xtype: 'displayfield', + value: 'PartKeepr needs a configuration file to operate. Please choose how to proceed:', + style: 'margin-bottom: 20px;' + }, + this.saveOption, + { + xtype: 'displayfield', + value: 'Attempts to save the configuration file. The configuration file may not exist, and it must be' + + 'writable by your web server.', + style: 'margin-left: 17px; margin-bottom: 5px;' + + }, + this.displayOption, + { + xtype: 'displayfield', + value: 'Displays the configuration file, so you can use copy and paste.', + style: 'margin-left: 17px; margin-bottom: 5px;' + }]; + + this.callParent(); + this.on("activate", this.onActivate, this); + }, + setConfigFileMode: function () { + if (this.saveOption.getValue()) { + this.mode = "save"; + } + + if (this.displayOption.getValue()) { + this.mode = "display"; + } + + this.ownerCt.ownerCt.nextButton.setDisabled(false); + }, + /** + * Gets called when the card is activated + */ + onActivate: function () { + // Disable the "next" button, this needs to get enabled by the database cards + if (this.saveOption.getValue() || this.displayOption.getValue()) { + this.ownerCt.ownerCt.nextButton.setDisabled(false); + } else { + this.ownerCt.ownerCt.nextButton.setDisabled(true); + } + + } +}); diff --git a/src/setup/js/Cards/ConfigSaveCard.js b/web/setup/js/Cards/ConfigSaveCard.js diff --git a/src/setup/js/Cards/DatabaseConnectivityTestCard.js b/web/setup/js/Cards/DatabaseConnectivityTestCard.js diff --git a/src/setup/js/Cards/DatabaseParametersCard.MySQL.js b/web/setup/js/Cards/DatabaseParametersCard.MySQL.js diff --git a/src/setup/js/Cards/DatabaseParametersCard.PostgreSQL.js b/web/setup/js/Cards/DatabaseParametersCard.PostgreSQL.js diff --git a/web/setup/js/Cards/DatabaseParametersCard.js b/web/setup/js/Cards/DatabaseParametersCard.js @@ -0,0 +1,116 @@ +/** + * This card displays the database parameters. + * + * This card supports multiple database types along with their special parameters. + */ +Ext.define('PartKeeprSetup.DatabaseParametersCard', { + extend: 'Ext.form.Panel', + + /** + * Various Style Settings + */ + title: 'Database Parameters', + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + id: 'database-parameters-card', + autoScroll: true, + + /** + * Inits the component + */ + initComponent: function () { + + this.createDatabaseDropdown(); + + this.databaseSettings = Ext.create("Ext.panel.Panel", { + layout: 'card', + border: false, + bodyStyle: { + background: "none" + }, + items: [{ + border: false, + bodyStyle: { + background: "none" + }, + html: 'Please select a database driver' + }, + Ext.create("PartKeeprSetup.DatabaseParametersCard.MySQL", { paramsheet: this }), + Ext.create("PartKeeprSetup.DatabaseParametersCard.PostgreSQL", { paramsheet: this }) + ] + }); + + this.items = [{ + border: false, + bodyStyle: 'background:none;padding-bottom: 10px;', + html: 'Please enter your database parameters below:' + }, + this.databaseDropdown, + this.databaseSettings + ]; + + this.callParent(); + this.on("activate", this.onActivate, this); + }, + /** + * Creates the dropdown with all available database types. + */ + createDatabaseDropdown: function () { + var databaseTypes = Ext.create('Ext.data.Store', { + fields: ['type', 'name'], + data : [ + {"type":"mysql", "name":"MySQL"}, + {"type":"postgresql", "name":"PostgreSQL"} + ] + }); + + this.databaseDropdown = Ext.create('Ext.form.ComboBox', { + labelWidth: 120, + fieldLabel: 'Database Type', + store: databaseTypes, + queryMode: 'local', + displayField: 'name', + valueField: 'type', + triggerAction: 'all', + editable: false + }); + + this.databaseDropdown.on("select", this.onDriverSelect, this); + + }, + /** + * This method is a callback from the database dropdown and displays + * the correct database settings page. + */ + onDriverSelect: function (a,r) { + if (r.length == 1) { + switch (r[0].get("type")) { + case "mysql": + this.databaseSettings.layout.setActiveItem(1); + break; + case "postgresql": + this.databaseSettings.layout.setActiveItem(2); + break; + default: + this.databaseSettings.layout.setActiveItem(0); + break; + } + } else { + this.databaseSettings.layout.setActiveItem(0); + } + + this.ownerCt.ownerCt.nextButton.setDisabled(true); + }, + /** + * Gets called when the card is activated + */ + onActivate: function () { + // Disable the "next" button, this needs to get enabled by the database cards + this.ownerCt.ownerCt.nextButton.setDisabled(true); + + // Manually fire the activate event, in case the user switched cards back/forth. + this.databaseSettings.layout.getActiveItem().fireEvent("activate"); + } +}); diff --git a/src/setup/js/Cards/DatabaseSetupCard.js b/web/setup/js/Cards/DatabaseSetupCard.js diff --git a/web/setup/js/Cards/PrerequisitesTestCard.js b/web/setup/js/Cards/PrerequisitesTestCard.js @@ -0,0 +1,17 @@ +/** + * This card runs the prequisites test to make sure basic things like PHP and Doctrine are installed and configured. + */ +Ext.define('PartKeeprSetup.PrerequisitesTestCard', { + extend: 'PartKeeprSetup.AbstractTestCard', + + cardMessage: "Setup now checks if your server is capable of running PartKeepr.", + breadCrumbTitle: 'Checking prerequisites', + /** + * Sets up all tests + */ + setupTests: function () { + this.tests.push(new PartKeeprSetup.PHPTest()); + this.tests.push(new PartKeeprSetup.PHPPrerequisitesTest()); + this.tests.push(new PartKeeprSetup.PHPSettingsTest()); + } +}); diff --git a/web/setup/js/PartKeeprSetup.js b/web/setup/js/PartKeeprSetup.js @@ -0,0 +1,17 @@ +Ext.application({ + name: 'PartKeeprSetup', + launch: function() { + this.createLayout(); + }, + /** + * Creates the main viewport + */ + createLayout: function () { + var win = Ext.create("Ext.window.Window", { + layout: "fit", + items: Ext.create("PartKeeprSetup.SetupWizard") + }); + + win.show(); + } +}); diff --git a/web/setup/js/SetupSteps/AdminUserSetup.js b/web/setup/js/SetupSteps/AdminUserSetup.js @@ -0,0 +1,14 @@ +/** + * Creates the administrative user + */ +Ext.define('PartKeeprSetup.AdminUserSetup', { + extend: 'PartKeeprSetup.AbstractTest', + url: 'setup.php', + name: "Database", + message: "Setting up the admin user", + + onBeforeRunTest: function () { + this.params = Ext.getCmp("database-parameters-card").dbparams; + this.params.step = "adminuser"; + } +}); diff --git a/src/setup/js/SetupSteps/ConfigFileSetup.js b/web/setup/js/SetupSteps/ConfigFileSetup.js diff --git a/src/setup/js/SetupSteps/FootprintSetup.js b/web/setup/js/SetupSteps/FootprintSetup.js diff --git a/src/setup/js/SetupSteps/ManufacturerSetup.js b/web/setup/js/SetupSteps/ManufacturerSetup.js diff --git a/src/setup/js/SetupSteps/MiscSetup.js b/web/setup/js/SetupSteps/MiscSetup.js diff --git a/src/setup/js/SetupSteps/PartCategorySetup.js b/web/setup/js/SetupSteps/PartCategorySetup.js diff --git a/src/setup/js/SetupSteps/PartUnitSetup.js b/web/setup/js/SetupSteps/PartUnitSetup.js diff --git a/src/setup/js/SetupSteps/SchemaSetup.js b/web/setup/js/SetupSteps/SchemaSetup.js diff --git a/src/setup/js/SetupSteps/SiPrefixSetup.js b/web/setup/js/SetupSteps/SiPrefixSetup.js diff --git a/src/setup/js/SetupSteps/UnitSetup.js b/web/setup/js/SetupSteps/UnitSetup.js diff --git a/web/setup/js/SetupTests/AbstractTest.js b/web/setup/js/SetupTests/AbstractTest.js @@ -0,0 +1,128 @@ +/** + * Represents a test. + * + * Calls a specific PHP file on the server via AJAX and interprets the response. + */ +Ext.define('PartKeeprSetup.AbstractTest', { + mixins: { + observable: 'Ext.util.Observable' + }, + + /** + * Defines the URL to call + */ + url: 'tests/check.php', + + /** + * Defines if the call was successful or not. + */ + success: false, + + /** + * Defines the callback. This needs to be an object which implements the "appendTestResult" method. + */ + callback: null, + + /** + * Defines the name of this test. + */ + name: null, + + resultMessage: "", + + message: "", + errors: [], + + /** + * Defines any warnings for the test. + */ + warnings: null, + + /** + * Defines additional parameters which are to be sent with the request. The format is an object, + * e.g. + * { + * username: "foo", + * password: "bar" + * } + * + * + */ + params: null, + + /** + * Constructs the test + */ + constructor: function (config) + { + this.mixins.observable.constructor.call(this, config); + + //this.addEvents("complete"); + }, + /** + * Runs a given test, and processes the response + */ + run: function () + { + this.onBeforeRunTest(); + + this.callback.outputTestMessage(this); + Ext.Ajax.request({ + url: this.url, + success: this.onSuccess, + scope: this, + params: this.params, + timeout: 120000 + }); + }, + + /** + * Callback for the Ext.Ajax.request method. Decodes the response, sets the object parameters, fires the "complete" + * event and calls back the test result panel. + * + * @param response + */ + onSuccess: function (response) + { + var obj; + + try { + obj = Ext.decode(response.responseText); + } catch (exception) { + obj = {}; + obj.success = false; + obj.message = "Invalid Response from server"; + obj.errors = ["Invalid Response from server", response.responseText]; + } + + + if (obj.success === false) { + if (Ext.isArray(obj.errors)) { + this.errors = obj.errors; + } else { + this.errors = []; + } + + this.success = false; + } else { + this.success = true; + } + + this.resultMessage = obj.message; + + if (this.callback) { + this.callback.appendTestResult(this); + } + + if (this.success) { + this.fireEvent("complete", this); + } + }, + /** + * Gets called prior test execution. Most tests won't use this, but some tests need to inject parameters. + */ + onBeforeRunTest: function () + { + return; + } +}); diff --git a/src/setup/js/SetupTests/ConfigSaveAction.js b/web/setup/js/SetupTests/ConfigSaveAction.js diff --git a/src/setup/js/SetupTests/DatabaseConnectivityTest.js b/web/setup/js/SetupTests/DatabaseConnectivityTest.js diff --git a/src/setup/js/SetupTests/FilesystemPermissionTest.js b/web/setup/js/SetupTests/FilesystemPermissionTest.js diff --git a/web/setup/js/SetupTests/PHPPrerequisitesTest.js b/web/setup/js/SetupTests/PHPPrerequisitesTest.js @@ -0,0 +1,9 @@ +/** + * Tests if the most important PHP prerequisites are met (e.g. json_encode). + */ +Ext.define('PartKeeprSetup.PHPPrerequisitesTest', { + extend: 'PartKeeprSetup.AbstractTest', + url: 'tests/check-php-prerequisites.php', + name: "PHP", + message: "Testing for PHP prerequisites" +}); diff --git a/web/setup/js/SetupTests/PHPSettingsTest.js b/web/setup/js/SetupTests/PHPSettingsTest.js @@ -0,0 +1,9 @@ +/** + * Tests if the PHP configuration is OK. + */ +Ext.define('PartKeeprSetup.PHPSettingsTest', { + extend: 'PartKeeprSetup.AbstractTest', + url: 'tests/check.php', + name: "PHP", + message: "Testing for correct PHP settings" +}); diff --git a/web/setup/js/SetupTests/PHPTest.js b/web/setup/js/SetupTests/PHPTest.js @@ -0,0 +1,9 @@ +/** + * A minimalistic PHP check to make sure PHP is installed on the server and activated as PHP module. + */ +Ext.define('PartKeeprSetup.PHPTest', { + extend: 'PartKeeprSetup.AbstractTest', + url: 'tests/check-php.php', + name: "PHP", + message: "Testing for PHP" +}); diff --git a/src/setup/js/SetupTests/TwigTest.js b/web/setup/js/SetupTests/TwigTest.js diff --git a/web/setup/js/SetupWizard.js b/web/setup/js/SetupWizard.js @@ -0,0 +1,121 @@ +Ext.define('PartKeeprSetup.SetupWizard', { + extend: 'Ext.ux.BreadCrumbWizard', + + /** + * The wizard's window shouldn't have a close button + */ + closable: false, + + /** + * Title. Ovbiously. + */ + title: 'PartKeepr Setup', + + /** + * Some style settings for the individual cards + */ + cardPanelConfig: { + defaults: { + baseCls: 'x-small-editor', + bodyStyle: 'padding:10px 15px 5px 10px;background-color:#F6F6F6;', + border: false + }, + layout: 'card' + }, + + /** + * Configure the header + */ + includeHeaderPanel: true, + headConfig: { + headerPosition: 'bottom', + position: 'top', + cls: "x-setup-header", + height: 120, + stepText: '' + }, + + /** + * The width and height of the window, in pixels + */ + width: 800, + height: 500, + + + /** + * Initializes the component + */ + initComponent: function () { + this.items = this.setupCards(); + this.callParent(); + }, + /** + * Sets up all cards + * @returns {Array} + */ + setupCards: function () { + var cards = new Array(); + + cards.push(Ext.create('Ext.form.Panel', { + breadCrumbTitle: 'Welcome', + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + items: [{ + border: false, + bodyStyle: 'background:none;', + html: 'This wizard guides you through the setup of <b>PartKeepr</b>.<br/><br/>Note that you can '+ + 're-start setup any time, even if you already have an existing database. No existing data will '+ + 'be overwritten.' + }] + })); + + cards.push(Ext.create("PartKeeprSetup.PrerequisitesTestCard")); + cards.push(Ext.create("PartKeeprSetup.DatabaseParametersCard")); + cards.push(Ext.create("PartKeeprSetup.DatabaseConnectivityTestCard")); + cards.push(Ext.create("PartKeeprSetup.DatabaseSetupCard")); + + cards.push(Ext.create("PartKeeprSetup.ConfigFileModeCard")); + cards.push(Ext.create("PartKeeprSetup.ConfigFileActionCard")); + + cards.push(Ext.create('Ext.form.Panel', { + title: 'Cron Setup', + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + items: [{ + border: false, + bodyStyle: 'background:none;', + autoScroll: true, + html: "Please set up the following cronjobs:<br/><br/><code>"+ + "0 0,12 * * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/CreateStatisticSnapshot.php<br/>"+ + "0 0,6,12,18 * * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/UpdatePartCacheData.php<br/>"+ + "0 0 */2 * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/CheckForUpdates.php<br/>"+ + "0 0 */2 * * /usr/bin/php &lt;path-to-partkeepr&gt;/cronjobs/UpdateTipsOfTheDay.php<br/>"+ + "</code><br/>If you cannot run cronjobs (e.g. you are on Windows), you can disable the "+ + "cronjobs by adding the following line to your config.php file:<br/><br/>"+ + '<code>Configuration::setOption("partkeepr.cronjobs.disablecheck", true);</code>' + }] + })); + + cards.push(Ext.create('Ext.form.Panel', { + title: 'Setup Complete', + showTitle: true, + titleCls: '', + titleStyle: 'font-size: 2.5em;line-height: 30px;', + cls: 'x-partkeepr-setup-basecard', + items: [{ + border: false, + bodyStyle: 'background:none;', + autoScroll: true, + html: "<b>PartKeepr is now set-up.</b><br/><br/>"+ + "If possible, set your web server's document root to the <b>frontend</b> directory.<br/><br/>"+ + "To open PartKeepr, open the 'frontend' directory using your browser.<br/><br/>"+ + "The default username/password combination is <b>admin/admin</b>" + }] + })); + + return cards; + } +}); diff --git a/web/setup/js/TestResultPanel.js b/web/setup/js/TestResultPanel.js @@ -0,0 +1,106 @@ +/** + * Provides a simple panel where tests can be displayed including their status. + */ +Ext.define('PartKeeprSetup.TestResultPanel', { + extend: 'Ext.grid.Panel', + + hideHeaders: true, + + store: { + fields: [ + { + name: 'name', + type: 'string' + }, { + name: 'success', + type: 'boolean' + + }, { + name: 'message', + type: 'string' + }, { + name: 'errors', + type: 'string' + }] + }, + columns: [ + { + flex: 1, + dataIndex: 'name' + }, { + width: 30, + dataIndex: 'success', + renderer: function (val) + { + if (val) { + return '<span title="OK" style="vertical-align: top;" class="web-icon accept"></span>'; + } else { + return '<span title="Error" style="vertical-align: top;" class="web-icon cancel"></span>'; + } + } + }, { + flex: 2, + dataIndex: 'message' + },{ + flex: 0.5, + xtype: 'widgetcolumn', + dataIndex: 'success', + widget: { + hidden: true, + xtype: 'button', + defaultBindProperty: "hidden", + text: "Show details", + handler: function(widgetColumn) { + var record = widgetColumn.getWidgetRecord(); + Ext.Msg.alert("Error Details", record.get("errors")); + } + } + } + ], + /** + * Initializes the component. + */ + initComponent: function () + { + this.callParent(); + }, + + /** + * Clears the result output panel. + */ + clear: function () + { + + this.store.removeAll(); + }, + + outputTestMessage: function (test) + { + this.store.add({ + name: test.message, + success: true + }); + }, + /** + * Appends the specific test to the output panel, + * and fires the error event if an error occured. + * + * @param test PartKeeprSetup.AbstractTest + */ + appendTestResult: function (test) + { + var rec = this.store.findRecord("name", test.message); + + if (rec !== null) { + rec.set("success", test.success); + rec.set("message", test.resultMessage); + rec.set("errors", test.errors.join("<br/>")); + } + + rec.commit(); + + if (!test.success) { + this.fireEvent("test-error"); + } + } +}); diff --git a/web/setup/js/TestRunner.js b/web/setup/js/TestRunner.js @@ -0,0 +1,46 @@ +/** + * Implements a sequential test runner, which waits for previous tests to complete. + * + * This is used with asynchronous tests. + */ +Ext.define('PartKeeprSetup.TestRunner', { + extend: 'Ext.util.Observable', + + /** + * Initialize the component + */ + initComponent: function () { + this.callParent(); + }, + /** + * Runs the given tests. Each test must fire the "complete" event in + * order to be runable. + * + * @param tests An array of tests + */ + run: function (tests, callback) { + test = tests.shift(); + this.tests = tests; + + if (!test) { + this.fireEvent("success"); + return; + } + + test.callback = callback; + + /** + * We re-assign the event handler on each cycle due to the asynchronous nature of the ajax requests. + */ + test.on("complete", this.onTestComplete, this); + test.run(); + }, + /** + * Callback when the test is complete + * @param test The test which was run + */ + onTestComplete: function (test) { + test.un(this.onTestComplete); + this.run(this.tests, test.callback); + } +}); diff --git a/web/setup/js/wizard/BreadCrumbWizard.js b/web/setup/js/wizard/BreadCrumbWizard.js @@ -0,0 +1,152 @@ +/** + * BreadCrumbWizard for ExtJS 4.x, a container that acts as wizard. + * It also has breadcrumbs at the top to help navigating between views. + * + * The BreadCrumbWizard is based on the Extjs Container, so that it can be nested directly in the page or in a pop up window. + * The child views can still be declared in the items config, and internally it will use card layout to switch between them. + * The child views need one extra field 'breadCrumbTitle' to set the text be displayed in the bread crumb. + * + * The BreadCrumbWizard will fire three events {'validate','submit','close'} + * The 'validate' event will be fired when leaving from the current view, so validation code can be put in the listener. + * The 'submit' event will be fired when submit button in the last view is clicked, and the submit data is collected by calling getSubmitData on all child views. + * Feel free to add/override the getSubmitData method in each view component. + * + * @author: twinssbc + * @version 1.0.1 + * @requires BreadCrumbWizard.css + * @xtype breadcrumbwizard + */ +Ext.define('Ext.ux.BreadCrumbWizard', { + extend: 'Ext.container.Container', + alias: ['widget.breadcrumbwizard'], + layout: { + type: 'vbox', + align: 'stretch' + }, + defaults: { + cls: 'x-wizard-component' + }, + initComponent: function () { + var me = this, + breadCrumbComponents = [], + cardItems = [], + index, + childView; + + me.currentIndex = 0; + for (index = 0; index < me.items.length; index += 1) { + childView = me.items[index]; + breadCrumbComponents.push({ + xtype: 'button', + cls: 'x-wizard-breadcrumb', + disabledCls: 'wizard-breadcrumb-disabled', + overCls: 'wizard-breadcrumb-over', + pressedCls: 'wizard-breadcrumb-pressed', + enableToggle: true, + toggleGroup: 'breadCrumbGroup', + allowDepress: false, + disabled: index !== 0, + pressed: index === 0, + index: index, + text: childView.breadCrumbTitle, + listeners: { + toggle: { + fn: function (button, pressed) { + if (pressed) { + this.switchView(button.index); + } + }, + scope: me + } + } + }); + cardItems.push(childView); + } + + me.breadCrumbContainer = Ext.create('widget.container', { + layout: 'hbox', + items: breadCrumbComponents + }); + me.cardContainer = Ext.create('widget.container', { + layout: 'card', + flex: 1, + items: cardItems + }); + me.items = [ + me.breadCrumbContainer, + me.cardContainer, + { + xtype: 'container', + layout: { + type: 'hbox', + pack: 'end' + }, + defaults: { + xtype: 'button', + cls: 'x-wizard-navigation' + }, + items: [ + { + text: 'Next', + itemId: 'nextBtn', + handler: me.onNext, + scope: me + }, + { + text: 'Cancel', + itemId: 'cancelBtn', + handler: me.onClose, + scope: me + } + ] + } + ]; + + me.callParent(); + }, + switchView: function (index) { + var nextBtn = this.down('#nextBtn'), + childViewCount = this.cardContainer.items.getCount(); + if (index < childViewCount) { + this.cardContainer.getLayout().setActiveItem(index); + this.currentIndex = index; + + if (index === childViewCount - 1) { + nextBtn.setText('Submit'); + } else { + nextBtn.setText('Next'); + } + } else { + throw new Error('Invalid view index: ' + index); + } + }, + onNext: function () { + var me = this, + nextBreadCrumbButton, + currentIndex = me.currentIndex, + childViews = me.cardContainer.items, + currentView = childViews.getAt(currentIndex); + + if (this.fireEvent('validate', me, currentView) !== false) { + if (currentIndex < childViews.getCount() - 1) { + nextBreadCrumbButton = me.breadCrumbContainer.items.getAt(currentIndex + 1); + nextBreadCrumbButton.enable(); + nextBreadCrumbButton.toggle(); + } else { + me.fireEvent('submit', me, me.getSubmitData()); + } + } + }, + onClose: function () { + this.fireEvent('close', this); + }, + getSubmitData: function () { + var submitData = {}; + this.cardContainer.items.each(function (childView) { + if (childView.getSubmitData) { + Ext.merge(submitData, childView.getSubmitData()); + } + }); + return submitData; + } +}); diff --git a/web/setup/tests/check-php-prerequisites.php b/web/setup/tests/check-php-prerequisites.php @@ -0,0 +1,20 @@ +<?php +/** + * This file does various pre-flight checks in order to make sure the installer can run + * and do additional tests. + * + * The pre-flight check will immediately die if json_encode/json_decode functions don't exist. + */ + +/* json_encode/json_decode are the most important function, as we communicate via JSON */ +if (!function_exists("json_encode") || !function_exists("json_decode")) { + echo '{"success":false,"message":"Your PHP installation lacks the JSON functions, which is mandatory for PartKeepr.",'; + echo '"errors":["In order to run PartKeepr, you need to have the PHP JSON module activated. '; + echo '<a target=\"_blank\" href=\"https://wiki.partkeepr.org/wiki/KB00002:JSON_Functions\">Read more…</a>"]}'; + exit; +} + +$aChecks = array(); + +echo json_encode(array("success" => true, "message" => "JSON functions present")); +exit; diff --git a/web/setup/tests/check-php.php b/web/setup/tests/check-php.php @@ -0,0 +1,21 @@ +/** +<?php +echo '*/'; +if (version_compare(phpversion(), "5.6.0", "<")) { + echo '{"success": false, "message": "PHP Version '.phpversion().' is too old, minimum required version is PHP 5.6.",'; + echo '"errors": ["Your PHP Version is too old. The minimum required version is 5.6.0. '; + echo '<a target=\"_blank\" href=\"https://wiki.partkeepr.org/wiki/KB00003:PHP_Version\">Read more…</a>"]}'; +} else { + echo '{"success": true, "message": "PHP Version '.phpversion().' found"}'; +} +exit; +?> +*/ +{ + "success": false, + "message": "You don't have PHP installed on your server, or the module is not activated.", + "errors": + [ + "In order to run PartKeepr, you need to have the PHP module activated on your web server. <a target=\"_blank\" href=\"https://wiki.partkeepr.org/wiki/KB00001:PHP_Module\">Read more…</a>" + ] +} diff --git a/web/setup/tests/check.php b/web/setup/tests/check.php @@ -0,0 +1,26 @@ +<?php + +require_once dirname(__FILE__).'/../../../app/SymfonyRequirements.php'; +require_once dirname(__FILE__).'/../../../app/PartKeeprRequirements.php'; + +$partKeeprRequirements = new PartKeeprRequirements(); +$iniPath = $partKeeprRequirements->getPhpIniConfigPath(); + +$errors = array(); +$success = true; + +foreach ($partKeeprRequirements->getRequirements() as $req) { + /** + * @var Requirement $req + */ + if (!$req->isFulfilled()) { + $success = false; + $errors[] = "<b>".$req->getTestMessage()."</b><br/>".$req->getHelpHtml()."<br/>"; + } +} + +if ($success === false) { + $errors[] = "The php.ini file used: ".get_cfg_var("cfg_file_path"); + $errors[] = '<a target="_blank" href="https://wiki.partkeepr.org/wiki/KB00004:Symfony2 Requirements">Read more…</a>'; +} +echo json_encode(array("success" => $success, "message" => "Symfony2 Requirements", "errors" => $errors));